本文共 1320 字,大约阅读时间需要 4 分钟。
测试驱动开发(TDD)是敏捷开发中的核心实践之一,其核心思想是通过测试推进开发工作,表现为“测试代码优先于业务代码”。与传统的“先编码、后测试”模式不同,TDD强调在编程之前先编写测试脚本或设计测试用例,被称为“测试优先的编程”(Test-First Programming)。
单元测试驱动开发(UTDD)
在代码层次上,UTDD要求在编码之前写测试脚本。这种方法可以称为“测试优先的编码”,其核心流程是:验收测试驱动开发(ATDD)
在业务层次上,ATDD要求在需求分析时就确定需求(如用户故事)的验收标准,即“验收测试驱动开发”。这种方法强调通过测试确保需求的实现。传统编码方式存在以下问题:
UTDD 的优势包括:
不过,UTDD 也存在一些挑战:
先写测试代码,并执行,得到失败结果
例如,编写一个测试用例,验证某个功能的输入输出。写实现代码让测试通过
仅关注需求的输入输出,编写最简单满足需求的代码。重构代码,并保证测试通过
在测试通过的基础上,优化代码结构,消除代码中的坏味道。反复实行上述步骤,确保每次开发都伴随测试,从失败到成功再到优化。
需求: 当输入值大于等于0时返回true,当输入值小于0时返回false。
先写测试代码
编写一个单元测试,用1作为输入,验证返回值是否为true。写实现代码
编写一个方法,直接返回输入大于等于0的结果。优化代码
通过条件判断优化代码,确保逻辑简洁。测试与优化
不断测试和优化,确保代码质量和可维护性。除非为了使一个失败的 unit test 通过,否则不允许编写任何产品代码
测试是首要任务,任何编码都不能影响测试结果。在一个单元测试中,只允许编写刚好能够导致失败的内容
包括编译错误等。只在测试全部通过的前提下重构或开始新的功能
保证开发的稳定性和质量。验收测试驱动开发(ATDD)
在需求分析时就确定需求的验收标准,通过测试确保需求实现。行为驱动开发(BDD)
是ATDD的一种落地方式,通过具体的GWT格式(Given-When-Then)表达验收标准。需求实例化(RBE)
基于BDD进一步明确需求,确保开发、测试和产品经理之间的统一理解。通过以上方法,开发、测试和产品团队可以高度协作,减少误解和偏差,提升项目质量。
转载地址:http://wtmo.baihongyu.com/