欢迎来到天天文库
浏览记录
ID:5719733
大小:99.50 KB
页数:4页
时间:2017-12-23
《浅谈软件开发各阶段的自动化测试技术(51testing投稿)》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、浅谈软件开发各阶段的自动化测试技术作者:茹炳晟摘要:本文根据软件开发的生命周期,依次探讨了各个软件开发阶段的自动化测试技术以及各阶段典型的测试框架与工具。使读者对软件开发各个阶段的“自动化测试”建立起全局的概念,并了解各阶段的主流测试框架与工具。关键字:自动化测试、测试框架、单元测试、集成测试、确认测试软件测试领域很多人都在谈论软件自动化测试,视乎自动化测试在软件测试领域是一个很时髦的词。但是绝大部分人对于自动化测试的认识还只是停留在GUI功能测试自动化的层面。其实自动化测试本身可以根据软件生命周期的不同阶段而
2、分为多个层面,在每个层面,“自动化”一词将具有完全不同的内涵,下面将依次根据软件开发生命周期的各个阶段,与大家分享一下各个层面的“自动化”测试的内涵以及在各层面常用的自动化测试技术与测试框架。(注:以下内容部分节选自本人作为51testing专家的答疑活动,可以参考http://bbs.51testing.com/thread-313165-1-1.html)。一.单元测试阶段的自动化测试技术首先,在单元测试阶段,有所谓的单元测试自动化,可能很多人认为单元测试先天就是自动化的,因为单元测试会根据软件详细设计采用
3、边界值等价类方法设计测试用例,然后以测试代码实现后再统一以自动化的方式执行。这个观点非常正确,但是这仅仅是一部分,并没有完整地描述单元测试阶段“自动化”的内涵。从比较广义的层面上讲,单元测试阶段的“自动化”内涵不是仅仅指测试用例执行的自动化,还应该包含以下五个方面的内容:(1)单元测试用例框架代码生成的自动化。比如以下图片所示的部分框架代码就应该由工具自动生成,而不是由单元测试的开发者手工去写。单元测试开发者应该把更多的精力放在测试数据的选择与设计上,从而较大程度地提高单元测试用例的质量和用例的开发效率。(2)
4、部分测试数据的自动化生成。这个主要是指工具能够根据不同变量类型自动生成测试输入数据。这个很多人都比较难以理解,因为工具是不明白代码逻辑的,它如何根据不同变量类型来生成合适的测试输入数据,并且去判断预计的测试结果呢?其实,举个例子可能就很容易明白了。比如某个被测函数的原型是voidfun(int*p,shortb),那么测试数据自动生成技术就会为int*p自动生成空的和非空的两个指针p去分别执行函数voidfun(int*p,shortb),并观察函数的执行情况,如果函数内部没有对空指针进行防护,那么fun的调用
5、必定产生异常,从而发现函数的设计缺陷。同样的,对于shortb会自动生成超出short范围的b去测试函数fun的行为。(3)自动桩代码的生成。这个是指工具可以根据对被测试代码的扫描分析,自动为被测函数内部调用的其他函数生成可编程的桩代码,并提供基于测试用例的桩代码管理机制。此时,单元测试开发者只需重点关注桩代码内的具体逻辑实现即可。当然必要的时候,工具应该可以实现“抽桩”以适应后续的代码级软件集成测试的需求。(4)被测代码的自动化静态分析。静态分析主要指代码的静态扫描,以识别出违反编码规则或编码风格的代码行。通
6、常这部分工作是结合项目具体的编码规则和编码风格,由工具通过内建规则和用户自定义规则自动化地完成被测代码的静态分析。严格意义上讲,静态分析不属于单元测试的范畴,但实际上这个工作很多情况下是在单元测试阶段完成的,所以这里我也把它归入到了单元测试自动化的范畴。(5)测试覆盖率的自动统计与分析。单元测试用例执行结束后,工具应该可以自动统计各种测试覆盖率,包括代码行覆盖率、分支覆盖率、MC/DC覆盖率等,以此体现单元测试用例集合整体的充分性和完备性,并以此为依据增补适当的测试用例以提高测试覆盖率。接下来列举几个满足或部分
7、满足以上特点的典型的单元测试框架或工具。以C/C++为例,比较主流的测试工具有C++Test和VisualUnit,以JAVA为例有JUnit和TestNG。其中C++Test是Parasoft针对C/C++的一款自动化单元测试工具,同时也能通过“抽桩”技术而较好地应用于软件代码级集成测试阶段。VisualUnit是KaileSoft推出的国产C/C++单元测试工具,创新提出了一些全新的概念,我个人觉得还是值得推荐的。JUnit就不多介绍了,它是一个开放源代码的Java测试框架,广泛应用于Java代码的单元测试
8、,另外根据JUnit的设计思想也陆续出现了一系列的XUnit框架,其中比较著名的有NUnit(针对.NET的单元测试)、CPPUnit(针对C++的单元测试)、DUnit(针对Dephi的单元测试)、PHPUnit(针对PHP的单元测试)等。TestNG(TestNextGeneration)是下一代的Java单元测试框架,它是基于J2SE5.0的注释(Annotations)特性的而
此文档下载收益归作者所有