在软件发布之前,几乎每个功能都会创建并测试测试用例,如果测试失败,则编写新代码(或重写或修补)以通过测试并使代码流畅且无错误。
测试驱动开发 (TDD) 从设计和开发应用程序中的每个小功能的测试开始。如果自动化测试失败,TDD 框架会指示开发人员编写新代码。这种方法避免了代码重复。一个完整的TDD模块是测试驱动开发。
测试驱动开发 (TDD) 起源于更大的软件设计范例极限编程 (XP) 的一部分,它是敏捷软件开发方法的一部分。
TDD 的简单概念是在编写新代码之前(开发之前)编写并修复失败的测试。这有助于避免代码重复,因为我们一次只编写少量代码来通过测试。 (测试只不过是我们必须测试才能满足的需求条件)。
测试驱动开发是在应用程序实际开发之前开发和运行自动化测试的过程。因此,TDD 有时也称为测试优先开发。
TDD 方法的阶段
在编写任何新代码之前,程序员必须首先创建一个失败的单元 垃圾邮件数据 测试。然后,一个程序员(或一对或一群)创建足够的代码来满足该需求。一旦测试通过,程序员就可以通过改进来重构项目,而无需改变行为。
虽然 TDD 专注于单元级程序员交互,但也有其他流行的方法,例如验收测试驱动开发 (ATDD) 或行为驱动开发 (BDD),它们专注于客户可以理解的测试。
这些方法包括在编码前创建真实示例作为工程人员和客户之间的协作测试,以及在编码后运行测试以证明代码已实现。提前了解测试可以提高首次质量。 ATDD 和 BDD 要求开发人员、测试人员和业务人员在创建代码之前共同设想和讨论软件及其含义。
TDD 的优点
测试驱动开发可以比旧方法在更短的时间内生成高质量的应用程序。成功实施 TDD 需要开发人员和测试人员对应用程序及其功能在现实世界中的使用方式有准确的预期。
TDD 的副作用是创建回归测试套件,可以减少人工测试, 禁止与陌生人接触 更早地发现问题,从而更快地找到解决方案。 TDD 的方法论特性确保了比传统阶段性代码周期 > 测试 > 修复 > 重新测试更高的首次覆盖率和质量。由于测试是在设计周期的早期进行的,因此减少了后期调试所花费的时间和金钱。
预期效益:
- 以初始开发工作量略有增加为代价显著降低缺陷率
- 项目最后阶段工作量的减少足以抵消间接成本的增加。
- TDD 可以提高代码的设计质量,并且总体上可以提高“内部”或技术质量的程度,例如通过提高一致性和连接性指标。
TDD 的缺点
TDD 需要相当的技能才能成功,特别是在单位级别。许多 007 數據 遗留系统在构建时并没有考虑单元测试,因此无法隔离组件进行测试。
此外,许多程序员缺乏隔离和创建干净代码的技能。所有团队成员都必须创建并维护单元测试,否则它们很快就会变得过时。而研究 TDD 的组织必须投入时间,现在放慢一点速度,以便以后加快速度。
最终,与任何方法一样,TDD 的最终结果仅取决于所使用的测试、测试的执行准确度以及它们如何复制最终产品用户遇到的情况。