浅谈测试驱动开发与GOOGLE TEST

来源:互联网 发布:淘宝折叠桌子 编辑:程序博客网 时间:2024/04/29 06:53

首先什么是测试驱动开发:测试驱动开发(Test-Driven Development)是以测试作为开发过程那个的中心,它要求在编写任何产品代码之前,首先编写用于定义产品代码行为的测试,而编写的产品代码又要以使测试通过为目标。测试驱动开发要求测试可以完全自动化地运行,在对代码进行重构前后必须运行测试。

测试开发是一种编程技术,是一种开发方式,它要求:

1.你要维护一套详尽的程序员测试集。

2.除非存在相关测试,否则不编写任何产品代码。

3.首先编写测试。

4.由测试决定需要编写什么样的代码。

总的来说就是先写测试再写代码,这是一种完全不一样的开发方式。而这种开发方式的目标则是:Clean Code That Works.这句话的含义是,事实上我们只做两件事情:让代码奏效(Work)和让代码洁净(Clean),前者是把事情做对,后者是把事情做好。想想看,其实我们平时所做的所有工作,除去无用的工作和错误的工作以外,真正正确的工作,并且是真正有意义的工作,其实也就只有两大类:增加功能和提升设计,而TDD正是在这个原则上产生的。

测试驱动开发的步骤:

编写TestCase-->实现TestCase-->重构     

(不可运行) (可运行) (重构)

测试驱动开发两条简单的规则:

1.只有自动测试失败时,我们才重写代码

2.消除重复设计,优化设计结构

测试驱动开发的优点:

1.完工时完工。表明我可以很清楚的看到自己的这段工作已经结束了,而传统的方式很难知道什么时候编码工作结束了。

2.全面正确的认识代码和利用代码,而传统的方式没有这个机会。

3.为利用你成果的人提供Sample,无论它是要利用你的源代码,还是直接重用你提供的组件。

4.开发小组间降低了交流成本,提高了相互信赖程度。

5.避免了过渡设计。

6.系统可以与详尽的测试集一起发布,从而对程序的将来版本的修改和扩展提供方便。

TDD给了我们自信,让我们今天的问题今天解决,明天的问题明天解决,今天不能解决明天的问题,因为明天的问题还没有出现(没有TestCase),除非有TestCase否则我决不写任何代码;明天也不必担心今天的问题,只要我亮了绿灯。

 

GOOGLE TESTGOOGLE推出的开源C++单元测试框架,而单元测试的好处是不言而喻,并且越来越多的开发人员开始关注和使用单元测试。GOOGLE TEST提供了非常完善的功能,并且简单易用,而且是免费且开源的。

GOOGLE TEST的官方网站是:http://code.google.com/p/googletest/

官方的使用文档:http://code.google.com/p/googletest/wiki/GoogleTestPrimer

http://code.google.com/p/googletest/wiki/GoogleTestAdvancedGuide

官方实例:http://code.google.com/p/googletest/wiki/GoogleTestSamples

当然很多朋友并不喜欢看一大堆的英文文档,我在这里推荐一篇很不错的中文资料

http://www.cnblogs.com/coderzh/archive/2009/04/06/1426755.html,这篇文章非常适合没有接触过GOOGLE TEST而又不想看英文文档的初学者。

    总的来说测试驱动开发这种开发方式和我们传统的开发方式有着很大的不同,这使得很多人无法适应很使用它,很多传统开发思维方式根深蒂固的人从思想上很难转过来,但是我觉得即使无法转变思维方式来进行开发,我们依然可以从测试驱动开发上学到很多有用的东西,比如说代码的重构,以及如何让代码洁净,如何提高代码的可读性等。

 

原创粉丝点击