【IT168 技术文章】
1引言
最近几年,软件测试在国内越来越受到重视,因为大家逐渐认识到了软件测试对于保证软件质量的重要性。随着对软件测试重视的提高,国内软件测试技术的发展也很快,逐渐从过去手工作坊式的测试向测试工程化的方向发展。
要真正实现软件测试的工程化,其基础之一就是要有一大批支持软件测试工程化的工具。因此,软件测试工具对于实现软件测试的工程化来说至关重要。本文就从如何进一步提高软件测试质量和效率的角度出发,讨论测试工具在软件测试过程中的应用。
2为什么要引入测试工具
在测试过程中引入测试工具能给我们带来以下的好处。
2.1提高工作效率
这是引入测试工具给我们带来的一个显著好处。那些固定的、重复性的工作,可以由测试工具来完成,这样就使得测试人员能有更多的时间来计划测试过程,设计测试用例,使测试进行的更加完善。
2.2保证测试的准确性
测试是需要投入大量的时间和精力的,人工进行测试时,经常会犯一些人为的错误,而工具的特点恰恰能保证测试的准确性,防止人为疏忽造成的错误。
2.3执行困难的测试工作
有一些测试工作,人工进行是很困难的。有的是因为进行起来较为复杂,有的是因为测试环境难以实现。测试工具可以执行一些通过手工难于执行,或者是无法执行的测试。
3测试工具在软件测试过程中的具体应用
在这一部分,我们讨论测试工具在测试过程中的具体应用。
现在的测试工具很多,基本上覆盖了各个测试阶段。按照工具所完成的任务,可以分为以下几大类:测试设计工具、静态分析工具、单元测试工具、功能测试工具、性能测试工具、测试过程管理工具。下面,我们就针对每一类工具展开介绍。
3.1测试设计工具
测试设计工具,更完整的名称应该是测试用例设计工具,是一种帮助我们设计测试用例的软件工具。
设计测试用例是一项智力性的活动,工具如何能够代替呢?确实是这样,但仔细思考一下我们就会发现,很多设计测试用例的原则、方法是固定的,比如等价类划分、边界值分析、因果图等等,这些成型的方法,很适合通过软件工具来实现。
测试用例设计工具按照生成测试用例时数据输入内容的不同,可以分为:基于程序代码的测试用例设计工具和基于需求说明的测试用例设计工具。下面分别对这两类工具进行介绍。
3.1.1基于程序代码的测试用例设计工具
基于程序代码的测试用例设计工具是一种白盒工具,它读入程序代码文件,通过分析代码的内部结构,产生测试的输入数据。这种工具一般应用在单元测试中,针对的是函数、类这样的测试对象。由于这种工具与代码的联系很紧密,所以,一种工具只能针对某一种(些)编程语言。
这类工具的局限性是——只能产生测试的输入数据,而不能产生输入数据后的预期结果,这个局限也是由这类工具生成测试用例的机理所决定的。所以,基于程序代码的测试用例设计工具所生成的测试用例,还不能称之为真正意义上的测试用例。不过即使这样,这种工具仍然为我们设计单元测试的测试用例提供了很大便利。
3.1.2基于需求说明的测试用例设计工具
这种测试用例设计工具,依据软件的需求说明,生成基于功能需求的测试用例。这种工具所生成的测试用例既包括了测试输入数据,也包括预期结果,是真正完整的测试用例。
使用这种测试用例设计工具生成测试用例时,需要人工的事先将软件的功能需求转化为工具可以理解的文件格式,再以这个文件作为输入,通过工具生成测试用例。在使用这种测试用例设计工具来生成测试用例时,需求说明的质量是很重要的。
由于这种测试用例设计工具是基于功能需求的,所以可用来设计任何语言、任何平台的任何应用系统的测试用例。
我们来看一个这类工具的例子——SoftTest。在使用SoftTest生成测试用例时,先将软件功能需求转化为文本形式的因果图,然后让SoftTest读入,SoftTest会根据因果图自动生成测试用例。在这个过程中,工具的使用者只需要完成由功能需求到因果图的转化,至于如何使用因果图来生成测试用例,则完全由Softtest完成。
所有测试用例设计工具都依赖于生成测试用例的算法,工具比使用相同算法的测试人员设计的测试用例更彻底、更精确,这方面工具有优势。但人工设计测试用例时,可以考虑附加测试,可以对遗漏的需求进行补充,这些是工具无法做到的。所以,测试用例设计工具并不能完全代替测试工程师来设计测试用例。使用这些工具的同时,再人工的检查、补充一部分测试用例,会取得比较好的效果。