为什么要推行测试驱动开发?

小编 199

测试驱动开发的基本流程是:1.编写测试;2.运行测试;3.验证测试;4.补充代码;5.重构代码。测试驱动开发的基本思路就是先进行测试代码的编写,然后通过编写使测试通过的功能代码,从而实现以测试驱动整个开发进程。

1.编写测试

测试驱动开发编写功能之前,要先编写对应的测试代码,这样做的目的是明确对应模块或函数的功能和需求,从而提高程序内聚度,降低耦合度。

2.运行测试

在没有编写源代码的时候,测试无法正常进行。但我们也可以尝试运行测试代码,检查测试框架是否被成功导入,测试代码是否存在编译错误。在没有其他问题的情况下,运行测试代码只有一个错误为对应的测试函数未定义。

3.验证测试

使用最少的代码让失败的测试先跑起来,这一点是需要重点强调的。极力强调这一点的原因是,这样的做法可以验证测试工具是否正常工作,且排除了新测试存在缺陷始终通过的可能性。

在预期中,该测试就是失败的结果,得到预期的结果,让开发者对测试框架增加信心。

4.补充代码

接下来的工作就是完成代码的编写,实现测试的需求,通过相应的测试以及原有的测试。通过测试则说明新代码符合测试要求且不会破坏原有的功能。

5.重构代码

重构代码其实就是消除重复设计,优化设计结构。重构以后的代码仍然符合测试的要求,但是达到了提升代码质量,却不改变外部功能的要求。

延伸阅读

为什么推行测试驱动开发?

测试驱动开发(Test-Driven Development)简称TDD,是敏捷开发中的一项核心实践和技术,也是一种设计方法论。TDD的核心思想是先写测试用例,然后通过测试来推动整个开发的进行,包括接口的设计,代码的编写和重构。

推行测试驱动开发的原因如下:

名列前茅,TDD有一个显而易见的好处就是编码阶段,通过单元测试验证我们的代码,可以方便的进行本地自测,提高代码的质量。《重构》中Matin Flower就说:一套测试就是一个强大的bug侦测机,能够大大缩减查找bug所需的时间。

第二,TDD最大的好处还在于它不只是覆盖编码阶段,还对设计阶段产生重大影响。因为要提前写测试用例,意味着我们需要从接口调用方的角度使用我们定义的接口,这种角色的换位会让我们更好的设计出面向用户的友好接口。并且,为了能够单元测试该接口,在接口设计上还会考虑到接口的可测性,逼迫我们设计出可测性良好的接口。其实遵循比较好的设计原则的代码都具备较好的测试性。比如比较高的内聚性,尽量依赖于接口等。

第三,TDD在重构阶段特别的重要。Matin Flower在他的《重构》书中强调:重构的名列前茅步,就是检查自己是否有一套可靠的测试集。可见TDD对重构有多重要。它给重构带来极大的信心,特别是面对一个庞大而复杂的遗留系统。

第四,TDD鼓励最小化的修改,小步前进。有了单元测试,意味着反馈非常的快,当我们做了一小部的修改后就立即跑一下单元测试验证一下是否成功,如果成功就继续下一个功能重构,通过每一个小的重构保证最后大的重构的完成,可以极大的提高重构的效率和重构的质量。相对于一次修改200行代码再跑不过定位问题,显然前者要简单的多。

回复

我来回复
  • 暂无回复内容

注册PingCode 在线客服
站长微信
站长微信
电话联系

400-800-1024

工作日9:30-21:00在线

分享本页
返回顶部