如果您需要软件并且需要快速,那么测试驱动开发(TDD)可能是解决方案。 TDD致力于快速将软件从计算机推向市场,是当今顶级软件开发和软件测试公司正在使用的最有效方法之一。
什么是测试驱动开发?
敏捷性和速度是赋予测试驱动开发运动力量的两个概念。 但是什么是TDD,流程如何运作?
测试驱动的开发是一个软件开发过程,其重点是在开发人员编写实际代码之前为软件测试编写测试 。 目的是使开发人员专注于代码的用途并确保其功能。
![测试驱动开发](https://i-blog.csdnimg.cn/blog_migrate/d0d5f4c9fbda3a42541ffeff2e85d972.png)
运作方式如下:
- 每个测试驱动的开发周期都始于编写测试以查看软件是否可以运行。 该测试基于软件的功能,要求和规格。
- 接下来,开发人员运行测试以确保其适当性和有效性。 在此阶段,测试应该失败,这意味着它可以工作并且不会显示出假阳性结果。
- 一旦建立了足够的测试,开发人员便会继续编写代码。 在此阶段,代码可能还不够完善,但必须通过测试才能继续前进。 这就是为什么此测试阶段必不可少的原因。
- 一旦一段代码通过测试,就可以进行重构。 这是代码清理阶段,其中删除重复项,正确命名所有代码元素(对象,类,模块,变量,方法等),并添加所有必需的新功能。
- 完成此过程后,开发人员可以重新启动该循环以进行编码改进,添加新功能或修复任何编码错误。
简而言之,测试驱动的开发关注于代码是否完成了应做的工作。 如果有效,请转到下一个阶段,否则请重写。 概念就是这么简单。
TDD是如何发明的?
现代TDD的原型是在1960年代发明的。 该技术的“重新发现”归功于一位肯特·贝克(Kent Beck)的美国软件工程师。 贝克还是敏捷软件开发的创始人之一,也是《 敏捷宣言》的签署人。
早在2002年,贝克(Beck)就在他的《测试驱动开发:范例》一书中向世界介绍了TDD的概念。
虽然一般来说不是一个新主意,但是Beck声称TDD是“有效的干净代码”,着眼于模型的简单性和消除了传统软件开发方法附带的代码不起作用的担忧。
TDD与传统测试之间的差异
让我们比较一下。
传统测试 | 测试驱动的开发 |
最后测试的方法,其中开发人员创建代码,但保留测试直到开发过程结束。 | 一种测试优先的方法,其中开发人员或测试自动化工程师首先创建测试,然后开发人员进行编码以满足测试的要求。 |
专注于代码正确性,但可能无法检测到所有编码缺陷。 | 然后,测试将进行重构,直到代码通过测试为止;直到代码满足功能为止,然后继续进行测试,并减少系统中的错误数量。 |
线性过程。 (设计代码测试) | 循环过程。 (测试代码重构) |
测试驱动开发的好处
测试驱动开发的支持者可以在快速开发代码时提高其速度,敏捷性和功能。 但是,这些并不是唯一的优点。 开发系统还:
- 保持代码简单,有用且切合实际,使所有相关人员的过程更加轻松。
- 有助于查明由于严格测试而导致的错误和其他代码缺陷,因此开发人员可以准确地知道问题出在哪里。 这样可以减少(但不会否定)最终测试时间。
- 允许开发人员查看实际的代码,采用用户的观点并对最终用户产生同情。 因此,代码可以更好地反映用户的需求。
- 巩固了项目的目的和目标,从抽象的想法到精确的目标,鼓励开发人员专注于他们真正需要做的事情。
测试驱动开发的缺点
![测试驱动开发](https://i-blog.csdnimg.cn/blog_migrate/0638af73bd9a97ff637bcc4914e62d6c.png)
但是,使用测试驱动的开发方法存在一些缺点。 让我们来看看:
- 尽管声称TDD比传统编码过程快,但最初该过程可能很慢。 但是,随着时间的推移, 生产率将大大提高 。
- 开发人员可能过于专注于一两个编码问题,而看不到全局。 尝试修复错误时,这一点尤其重要。
- 开发足够的初始测试(尤其是对于创新软件)存在一些问题,因为测试开发人员应该几乎完全知道他们想要从代码中获得什么。
- 这种方法不允许在初始设计中进行大量更改,否则,这将增加TDD流程的执行时间。
您应该在软件开发中使用测试驱动的方法吗?
与所有业务决策一样,选择采用测试驱动的开发方法是公司特定的决策。 如果您正在考虑使用测试驱动的方法,则应首先确保TDD适合您的业务。
首先,这将取决于您团队的需求和经验。 由于TDD是一种快节奏的敏捷方法,因此您需要确保它们已准备好应对挑战。 另外,您可以求助于质量保证咨询以帮助您采用这种方法。
也就是说,测试驱动的开发可能是将您的产品尽快从代码行转换为可用于市场的产品的绝佳方法。
翻译自: https://www.javacodegeeks.com/2019/03/essentials-test-driven-development.html