微软最近发布了测试驱动开发的方案(点击这里)。这些方案与Visual Studio 2005 Team System的使用密不可分。老实说,我对他们试图去把他们自己的工具与TDD(译注1)绑定起来并不觉得什么。他们是个商业机构,而这就是一种商业行为。让我觉得什么的,是他们如此完全的曲解了TDD,甚至反其道而行之。如果工具不支持TDD(它的确不能)的话,他们不应该声明它能够。
在最近一篇blog(译注:此篇已翻译为中文)中我描述了TDD,做为三项紧密相连的规则之一,它强调创建单元测试和产品代码之间的非常紧凑地迭代。而微软的定义将其描述成一种瀑布式:
- 分析需求,产生一个单元测试列表
- 用设计工具设计类
- 用设计工具生成单元测试代码
- 实现设计并使单元测试通过
Micheal Feather(译注2)的blog中给予了评论,我觉得还是过于温和了。我认为微软应该收回这些方案,而且试着去找出一些这个工具能真正支持TDD的方法。只是因为他们的工具只能按照那样来支持,就把TDD重新定义成为一种瀑布式的,这对这个行业来说是没有多大帮助的,况且大多数程序员都已经清楚地意识到了这一点。如果微软想赢得更多程序员的青睐,他们最好试着去找出行业的真实取向,而不是让行业去迎合这个工具。恕我直言,他们应该认真的去借鉴Eclipse,和IntelliJ == 尤其是IntelliJ。
底线:我们不需要一些帮助我们更好的去做瀑布式开发的工具。我们不需要一些过程空洞,而且用14个线性步骤来描述一些不是却声明是TDD的指导方案。我们不必一定靠Visual Studio。我们需要Microsoft提供的是他们可以不要再谈论什么了,聆听吧。
译注:
1,TDD,全称是测试驱动开发,一种典型的敏捷开发方法。
2,Micheal Feather,敏捷社区的活跃分子,Object Mentor的一员。
(原文链接网址:http://www.butunclebob.com/ArticleS.UncleBob.MsTdd; Robert C. Martin的英文blog网址:http://www.butunclebob.com/ArticleS.UncleBob)
作者简介:Robert C. Martin是Object Mentor公司总裁,面向对象设计、模式、UML、敏捷方法学和极限编程领域内的资深顾问。他不仅是Jolt获奖图书《敏捷软件开发:原则、模式与实践》(中文版)(《敏捷软件开发》(英文影印版))的作者,还是畅销书Designing Object-Oriented C++ Applications Using the Booch Method的作者。Martin是Pattern Languages of Program Design 3和More C++ Gems的主编,并与James Newkirk合著了XP in Practice。他是国际程序员大会上著名的发言人,并在C++ Report杂志担任过4年的编辑。
分享到:
相关推荐
java测试源码 tdd-java-ch02-example-junit Reference:
**测试驱动开发(TDD)概述** 测试驱动开发(Test-Driven Development,简称TDD)是一种软件开发方法,强调在编写任何实际代码之前先编写测试用例。这种方法由Kent Beck在其2003年的著作《Test-Driven Development:...
### TDD-LTE信令详解知识点 #### 一、概述 TDD-LTE(Time Division Duplexing - Long Term Evolution)是一种基于时分双工技术的4G移动通信标准,其核心在于支持灵活的频谱分配,适用于非对称业务需求。在TDD-LTE...
根据提供的文档信息,我们可以归纳出一系列与(TDD) Technical Design Document模版相关的关键知识点: ### 一、概览 #### 1.1 目的 技术设计文档(TDD)模版是为IDA项目定制的一份指导性文档,旨在帮助项目中的...
这种设计大大减少了传输延迟,尤其适用于时分双工(TDD)系统。 #### 工作带宽与系统参数 - **带宽自适应**:NR支持带宽自适应功能,允许不同能力的用户设备(UE)在同一个小区内工作。例如,窄带UE可以在大带宽...
kata-tdd-1-BINH-NGUYEN-VAN kata 首先,我们必须安装grunt插件以帮助运行此演示: 1.打开命令行 2.转到目录:“ kata-tdd-1-BINH-NGUYEN-VAN” 3.键入命令:npm install 4.运行命令:grunt serve 问题 Q1:在...
**TDD单元测试详解** 测试驱动开发(Test-Driven Development,简称TDD)是一种软件开发方法,它强调在编写实际代码之前先编写测试用例。这种方法由Kent Beck在其著作《Test-Driven Development: By Example》中...
- **历史背景**: TDD起源于20世纪90年代,作为极限编程(Extreme Programming, XP)的一部分被提出,旨在提高代码质量和开发效率。 - **核心理念**: TDD的核心在于通过不断的测试来指导开发流程,使得开发出的软件...
#### 11. 并发测试与LoadRunner - **并发测试**是指在系统中同时发起多个请求以模拟多个用户操作。 - **LoadRunner中实现并发**: - **设置并发用户数量**:定义最大并发用户数。 - **使用集合点**:控制用户同时...
3GPP频段信息是指在3GPP标准框架下定义的一系列用于移动通信系统的频率划分,这些频段被广泛应用于各种移动通信网络之中,如2G、3G、4G乃至5G网络。 #### 二、3GPP频段分类与支持设备 3GPP频段根据其工作方式大致...
java源码测试 tdd-java-ch06-tic-tac-toe-mongo-my-version Reference: 测试步骤 启动 MongoDB ./run_mongoDB.sh 启动测试 gradle clean test 关闭 MongoDB docker rm -f mongoDB >/dev/null 2>&1
课程的核心内容包括TypeScript、测试驱动开发(TDD)、领域驱动设计(DDD)、清洁架构以及SOLID原则。以下是对这些知识点的详细说明: **TypeScript** TypeScript是JavaScript的一个超集,它引入了静态类型系统、...
标题 "tdd-java-ch09-feature-toggle:Java测试驱动开发第9章" 指向的是一个关于使用Java进行测试驱动开发(TDD)的项目,特别关注的是“功能切换”(feature toggle)这一概念。在软件开发中,功能切换是一种策略,...
- **驱动**:兼容RIL驱动(Android 4.x~11.x)、USB RNDIS驱动(Windows 7/8/8.1/10, Linux 2.6~5.14)、GNSS驱动(Android 4.x~11.x)、USB ECM驱动(Linux 2.6~5.14)及USB转串口驱动(Windows 7/8/8.1/10, Linux...
- **频谱灵活性**: 支持非成对频谱,适用于不同国家和地区频谱资源的差异。 - **高效率**: 上下行传输灵活调整,更适合非对称业务需求。 - **国际标准**: 由全球主要企业及运营商共同参与制定,确保技术的通用性...
测试驱动开发(Test-Driven Development,简称TDD)是一种软件开发方法,强调在编写实际功能代码之前,先编写测试用例。这种方法的核心理念是“先写测试,再写代码”。TDD通过引入测试来引导软件设计,使得开发过程...
### 知识点一:测试驱动开发(TDD)在程序开发中的应用 #### 1.1 测试驱动开发概述 测试驱动开发(Test-Driven Development, TDD)是一种软件开发方法论,它要求开发者先编写测试代码,再编写能够通过这些测试的业务...
kata-tdd-1-Luong-Thanh-Danh 卡塔 设置环境: 安装 Node.js 在 安装 Karma,一个测试运行器 推荐的方法是在项目目录中本地安装 Karma(以及项目需要的所有插件)。 安装业力: $ npm install karma --save-dev...
- **使用实体框架进行数据访问** (第11章): - **实体框架简介**: 实体框架(Entity Framework)是Microsoft提供的ORM(Object-Relational Mapping)工具。 - **ORM概念**: ORM是一种编程技术,用于将关系型数据库中的...