| 2022-04-27
敏捷软件开发理念已成为大型和小型组织的流行选择。敏捷的迭代、增量、灵活、轻量级和协作方法代表了对传统开发实践的重大背离,但已被证明对许多开发团队非常有效。 源自敏捷(尤其是极端编程方法)的想法之一是测试驱动开发的概念。以下是测试驱动开发的含义和代表,以及它在当今组织中的实施方式。
什么是测试驱动开发?
顾名思义,测试驱动开发 (TDD) 指的是一种软件开发风格,其中单元测试在代码之前一个一个地编写。然后开发的软件刚好足以通过序列中的最新测试。一旦软件通过了这个测试用例,开发人员就会制定一个新的测试,然后编码-测试周期就会继续。
使用 TDD 的程序员经常称赞它能够快速检测错误并提供对程序当前状态和行为的洞察力。TDD 将代码库视为一组小的、模块化的、可组合的单元。这意味着重构程序或添加新功能要容易得多,因为测试将立即检测到更改期间引入的任何错误。
但是,TDD 是耗时的,只有在整个开发过程中广泛使用软件单元测试时才值得。此外,对于需要进行功能测试来评估应用程序在生产中的性能的情况,单独的 TDD 是不够的。
了解有关软件测试中最佳行业估计技术的更多信息,请参阅我们的博客文章。
TDD 和行为驱动开发有什么区别?
正如敏捷催生了 TDD 一样,TDD 也是行为驱动开发 (BDD)理念的基础。在 BDD 中,开发人员和其他利益相关者描述他们打算如何让应用程序在生产中运行,然后在开发软件时考虑这些行为。然后将这些预期行为转换为验证测试,以确保软件按照规范执行。
与 TDD 一样,BDD 强调渐进式、增量式的开发方法。然而,开发人员的任务不是通过“多一个测试”,而是构建“多一个功能”。在 BDD 中,开发人员的首要任务始终是实现软件在当前状态下尚未完成的最重要的事情。
今天如何实施 TDD?
在现代软件开发公司中,TDD 通常使用自动化单元测试框架来实现,这些框架很容易集成到流行的集成开发环境 (IDE) 中。
现代 TDD 还受益于各种工具和技术,这些工具和技术使开发更容易并有助于维护项目的完整性。例如,可以使用 JaCoCo、Atlassian Clover 和 Cobertura 等代码覆盖工具来确保自动化软件单元测试套件正确测试整个代码库。持续集成工具(例如 Jenkins 和 Bamboo)是开发人员验证其代码是否最新且无缺陷的必需品。
最后的想法
测试驱动开发与传统的软件开发瀑布模型明显不同,在传统瀑布模型中,所有测试仅在开发完成后进行。然而,当被合适的团队使用时,TDD 不仅是一种可行的替代方案,而且可以在速度、效率和生产力方面带来巨大的收益。
原文链接:https://fortegrp.com/test-driven-development-why-and-how/