自从我的软件工程之旅开始以来,我的脑海中就没有几个关键问题,特别是关于测试策略
让我详细说明最后一点,在传统设置中,当我们先编写代码然后对其进行测试时,其想法只是将一些测试与新编写的代码相关联。我的测试策略过去是由代码驱动的,例如在单元测试中,所有的模拟对象、服务、数据集、断言都像我的代码一样编写。本质上,代码被认为优于测试。
我需要考虑功能/代码和测试套件以及单独的实体来改变这种方法,然后我遇到了 测试驱动开发(TDD)。
什么是 TDD?
根据维基百科 , 测试驱动开发 ( TDD ) 是一个软件开发过程,依赖于在软件完全开发之前将软件需求转换为测试用例,并通过针对所有测试用例重复测试软件来跟踪所有软件开发。这与首先开发软件和稍后创建测试用例相反。
简单来说,TDD 是一种软件开发策略,其中应用程序中的每个新功能都由为其编写的测试用例套件驱动。测试套件是在实际功能之前编写的,它不仅确保了代码的正确性,而且间接地发展了应用程序的设计和架构。
实施 TDD:红绿重构周期
让我们考虑一个简单的例子,一个新的特性来实现对输入字段的验证,其中某些字符集是不允许的
第 1 步:在这个阶段它会失败——RED
在这一步中,我们将针对我们即将实现的用户场景编写一个测试套件,在这一阶段,我们将编写一个测试套件,考虑到与它对应的生产代码已经存在。
果然测试失败了:
第 2 步:代码可能很难看,但它可以工作! - 绿色
在这个阶段,我们将编写一个简单的解决方案,使测试通过,我们被允许违反最佳实践,甚至重复代码。
第 3 步:提高效率和可读性——重构
在这个阶段,我们将通过重写和重构现有代码来展示我们的编程技能,同时确保所有测试保持绿色。
我的观点:
TDD 不是我们需要首先学习的框架/技术堆栈,而是我们可以在团队文化中采用的一种行为。
以下是我在接受 TDD 后的一些重要收获:
奖励:TDD 和配对
我们可以利用结对编程和 TDD 的潜力来进一步提高可交付成果的质量。这将确保在全面的测试用例集以及代码和设计质量方面的最佳输出。带有结对编程的 TDD 可以通过多种方式完成:
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明
本文链接:https://www.qanswer.top/11896/20380405