`
kuwoleft
  • 浏览: 1068412 次
文章分类
社区版块
存档分类
最新评论

首次尝试测试驱动开发的体会

 
阅读更多

测试驱动开发的定义

最近在学习《重构》,里面强调,实施重构的一个前提是,必须建立一个可靠的测试环境。里面还提到了测试驱动开发,以及测试驱动开发的好处。正好最近在开发一个小的项目,所以便在这个项目中尝试了一下测试驱动开发,感觉不错,这里分享一下我的体会。

我开发使用的是C++,我使用的测试框架是Google的c++开源测试框架gtest。另外Google也有一个mock的开源框架gmock,可以和gtest一起使用。至于gtest的使用,可以参照我以前转载的一个系列文章:玩转Google开源C++单元测试框架Google Test系列(gtest)

首先谈一下测试框架gtest。总体感觉gtest使用起来还算比较方便的,而且他们能够自动运行所有的测试用例,这一点非常重要。在《玩转Google开源C++单元测试框架Google Test系列(gtest) 》这个系列的文章中,没有看到测试框架对private方法测试的描述。后来我看了一下官方网站的说明,它是支持的。另外,这个测试框架的一个不好的地方就是,它主要是通过检查函数返回值来判断测试成功或失败的,对于返回值为void的方法,要判断执行成功与失败,则非常的不方便,有的时候,根本无法判断。不过从总体上来看,这个测试框架还是比较不错的。

其次那,谈一下测试驱动开发带来的好处。

1、提高软件质量。毋容置疑,有单元测试保障的软件产品质量肯定要比没有经过单元测试的软件产品质量要好。

2、开发速度。测试驱动开发主张在编码之前首先编写测试代码,这种做法会降低编码的速度。但是在整个软件开发过程中,编码所占用的时间是很少的,我们大部分的时间在调试,定位bug,修改bug。测试驱动对开发速度的提升在于,它可以减少后者的时间,从而在整体上提升开发速度。

3、重构。构建一个可靠的测试环境,可以让我们大胆的进行重构,而不用担心会引入潜伏下来的bug。

4、增量开发。使用测试驱动开发,我们可以实现软件产品的增量开发,而不用担心增量开发会对原有的功能造成破坏。

5、促进优良的设计:低耦合,高内聚。测试驱动开发一个非常重要的好处就是它可以促进优良的设计。糟糕的设计,一般情况会非常难以进行测试。测试驱动有助于促进低耦合,高内聚的设计,因为这样的设计才会易于测试。

6、真正实现面向接口编程。

7、避免过度设计。当你构建好测试用例后,也就提供了一个完成设计的目标:让所有的测试用例测试通过。这样可以避免过度设计。

虽然测试驱动开发有这么多的好处,但是要在研发人员的推行这个开发方式,面临的挑战还是非常大的,毕竟它带来的是一种全新的开发思路和模式。不过我相信,只要开发人员乐于去尝试这种开发方式,他一定会喜欢上它的。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics