测试是任何软件开发项目中最重要的步骤之一。 如果跳过此过程,则结果可能是灾难性的-对项目和公司而言。 但是什么时候应该对软件进行测试? 在项目完成后进行测试似乎是合乎逻辑的。 但是,经典测试过程的功能是有限的。 如果您先编写代码,然后再测试实现,则可能会遇到一些问题,即过度研发,设计偏离,可测试性问题。 幸运的是,有一种方法可以应对这些挑战,它被称为–测试驱动开发。
TDD是测试驱动开发的缩写,它指的是设计范例,其中软件组件测试用于指导整个开发过程。 要了解TDD的工作原理,首先,最好定义其重要概念之一-单元测试。
单元测试 是一种将代码分解成小的独立单元的方法。 单元测试的主要目的是独立评估每个组件的行为,以验证它们是否正常运行。 单元测试通常由开发人员执行,但也可以由质量经理执行。 一些软件开发人员认为单元测试是浪费时间,但是实践表明情况恰恰相反。
在系统测试, 集成测试 和Beta测试阶段, 忽略单元测试会导致更高的错误修复成本 。 同时,单元测试允许在开发生命周期的早期阶段检测错误和错误,从而在将来节省您的时间和金钱。
测试驱动开发是一种软件开发技术,其中单元测试是最重要的问题。 简而言之,测试驱动的开发都与“测试优先”方法有关,这意味着测试是在代码实现之前编写的。 无论是谈论python中的测试驱动开发还是java中的测试驱动开发,TDD编程实践始终旨在编写有效的干净代码。
我们可以将TDD视为一种设计策略。 因为测试是首先编写的,所以要测试的组件的接口在存在之前已经被使用。 因此,开发人员应尽快获得有关设计可用性的反馈。
TDD的三个原则:
每个阶段是什么意思?
在TDD中,在实现实际功能之前就编写了功能的单元测试。 由于缺少功能,因此测试失败。 由于错误通常在IDE中标记为红色,因此测试驱动开发的这一阶段称为“红色”。
在第二阶段,开发人员编写足以使测试通过的代码。 由于绿色表示成功,因此该阶段称为“绿色”。 绿阶段不需要优化。 下一个任务是重构代码。 重构阶段的主要思想是使代码更好,尤其是消除代码重复。 重复这些阶段,直到修复了错误,代码具有所需的功能并且没有测试失败为止。
TDD似乎很难遵循,但是您付出的额外努力将为您的项目带来很多好处。 有关TDD影响 的研究 表明,这种做法有助于将软件缺陷减少40%到60%。 对于想要将更好的产品推向市场的企业主来说,TDD的一大优势是 质量保证 ,可以在持续的过程中得到保证。
显然,通过从代码的第一行进行连续测试,错误和意外事件的发生可能性较小。 在质量方面,进一步的优势包括更多的深思熟虑的代码以及无需运行整个程序即可测试某些功能的能力,这对于大型项目而言非常重要。
您发现错误的时间越晚,错误将给您带来更多的损失。 最重要的是,TDD是一个很好的机会,可以快速检测到错误和崩溃并立即解决问题。 如果以后发现错误,则可以减少繁琐调试的后续成本。 此外,TDD有助于降低支持和缺陷管理领域的成本。 专家强调,TDD提供了绝佳的机会来缩短学习代码行为所需的时间和成本。 使用TDD时,您还可以指望减少计划外成本。
如果您在开发期间不使用测试,则最终用户可能是第一个面临软件缺陷的用户。 因此,除了修复错误的成本外,您还可能失去客户的信任。 另一方面,TDD使您可以避免这些问题。 测试驱动的开发还有助于优化开发人员的工作。 如果出现问题,程序员会立即知道出了点问题,因为应用程序没有通过测试。 这使开发人员可以专注于代码的特定部分,而不必考虑整个系统的后果。
TDD也可以用作改进纸质文档的工具。 对于程序员来说,书面测试比数百页的需求更有意义。 可以说,测试充当了客户愿景与程序员必须做的事情之间的沟通桥梁。
使用TDD方法有很多优点,从有机会尽早解决bug到不太明显的bug,例如有机会确保客户长期满意。 即使不应将TDD视为旨在解决任何开发问题的灵丹妙药,但如果要节省资源并优化软件项目的工作流程,则应考虑使用此选项。
原文转自:https://www.maiyewang.com/archives/86325