助力开发新方式之测试驱动开发

测试驱动开发(TDD)就是在开发功能代码之前,先编写测试代码,然后只编写使测试通过的功能代码,从而以测试来驱动整个开发过程的进行。这也是极限编程的一个重要组成部分。其思想过程如下图。看起来简单,但实践起来却是不似看起来那么简单了。

TDD

  1. 根据一个feature,分解功能,先编写针对这个功能的测试,然后运行测试,结果为red。
  2. 根据测试代码的要求,编写功能代码,然后使得功能代码能够通过测试,得到green。
  3. 根据需要重构功能代码,出现red,继续改进,得到green。

如此采用TDD的开发模式,好处也是满多的,在vonbros的实践中,主要体现在如下几点:

首先:有助于编写简洁可用和高质量的代码。由于是基于测试的,所以各个功能块会尽可能的小,便于测试,从而使得代码具有比较高的灵活性和健壮性。

其次,对于代码的重构,是非常有帮助的。特别是大型的项目,重构往往就意味着引入更多的bug,但是TDD则可以很好的避免这些问题,凡事测试通过的,基本可以认为是没有问题的,能够快速的响应客户的变化,从而达到加速开发的目的。

再次,TDD对于持续集成、持续发布的重要行。对于CI环境,测试是其基本,而TDD则很好的解决了这个问题。

当然,我们在享受着这些好处的同时,我们也遇到过很多问题。比如,大家的思想如何统一到TDD上,特别是对于很多不喜欢写测试、甚至不知道如何写测试案例的同学来说,真的是一个比较艰苦的过程。另外,在不断的实践过程中,也会发现有时测试比功能还要难写,有时甚至遇到不知道该如何来写这个测试。但是在不断的实践和积累后,TDD的好处也就慢慢的显示出来了。

在Vonbros,对于REST这样的架构,假设是PHP+Web+App的方式。PHP语言端,当前有比较多的成熟的测试框架,比如phpunit、Codeception等,都可以帮助我们很好的实现单元测试、API测试等。Web端,对于JS的代码,可以通过mocha等测试框架实现单元测试,通过mock的方式,实现对后台的api访问的测试,从而实现前后台分离开发、分开测试,对于APP的开发,比如apple上,可以通过xcode自带的测试工具来实现单元测试、UI测试。对于网站整体性的测试,通过selenium来实现。

TDD在Vonbros的实践下来,关键就是“重在坚持”。

《助力开发新方式之测试驱动开发》有1个想法

发表评论

电子邮件地址不会被公开。 必填项已用*标注