方法不等于方法学。
无论哪本书上都指明了TDD不是方法学,著名的<<测试驱动开发>>一书的作者Kent Beck 也是这样定位它的。
下面,是较科学的态度来看待TDD目前的状况:
软件的开发方法中的测试方法学,应该包括完整的理论,而目前的TDD本身只是还只能是一个开发方法。如果要使用TDD成为开发方法学,那么要至少包括以下内容:
1、可测性设计理论及实践
2、扫描和边界扫描的相关测试理论
3、情境测试理论:如随机和伪随机的测试理论及实践
4、生成代码结构及其生成序列之间的关系的测试,包括软件逻辑构造控制与监测
5、内部建立自测试理论的实践方案
6、专用环境测试设计方法:指明专门的框架与平台下的测试解决方案。
7、软件设计模型验证原理及工具
8、软件各类制品测试方案及计划模板(至少要有35种基本制品测试计划)
9、切入代码内部的触发性测试代码的设计
......................................
TDD目前还只是在编写代码中起得了作用,在软件从开始到完工之后,包括软件后期的安排,都没有完整的理论,目前它的影响还仅仅在Code之中。
XP是不是方法学?
根据敏捷中的定义:角色(Roles)、个性(Personality)、技能(Skills)、团队(Teams)、技术(Techniques)、活动(Activities)、过程(Process)、工件(Work products)、里程碑(Milestones)、标准(Standards)、质量(Quality)、工具(Tools)、团队价值(Team Values)。
这些的综合构成,才称之为方法学。XP符合,所以它是,TDD是XP中实践中的一个,XP中的每个实践一样重要,不能说TDD最重要,也不能说结对最不重要,因为XP中强调所有的实践才叫做XP,因为所有的实践才能够包括上述元素。
如果要使用XP,前提就是你要保证你能够实现XP中的所有实践。