回归测试用例选择方法探讨
2017-03-17张蕊薛黎魏晓
张蕊++薛黎++魏晓
摘 要
回归测试是软件测试的一种重要部分,回归测试中测试用例集的选择关系到软件最终的质量和项目开销。文章在分析了回归测试中测试用例选择策略的基础上,提出了一种新的测试用例选择策略,从程序改进的代码依赖入手,通过分配风险因子给出测试用例选择的权重,从而选择恰当的测试用例集,进行回归测试,取得了良好的实验结果。
【关键词】软件工程 回归测试 测试用例
1 引言
回归测试是指修改了旧代码后,重新进行测试以确认修改没有引入新的错误或导致其他代码产生错误。回归测试是软件测试中一项操作频繁并且花费巨大的阶段。由于程序版本不断更迭,导致測试用例的数量也在不断增多,有研究表明,回归测试的开销在整个软件测试中占有很大的比重。回归测试大多要通过两种方式去执行:一类借助于工具完成自动化测试,一类是手动完成。从回归测试的计划和策略上讲,一般有以下两种方法,全部执行或者部分执行。执行全部测试的开销很大,在项目中很难做到,部分执行时,测试的效率和质量会因为用例的选择不同而差别很大。对于测试用例的选择,目前常用的方法是按照测试用例的优先级进行。测试用例优先级技术着重于研究回归测试中测试用例选择策略的问题。这种技术认为,不同测试用例对于测试目标的覆盖不同,因此将不同的测试用例进行比较和排序,然后优先执行相对重要的测试用例。研究人员通过实验表明,按照优先级选择测试用例可以很好地提高回归测试的效率,能够以尽量小的开销完成预期的覆盖率。
2 基于风险的权重分配模型
基于风险的权重分配模型在进行测试用例优先级分析时引入风险分析,给不同测试用例分配风险因子,进行权重计算。对于程序,不同的改到所带来的风险是不一样的,分析出改动所带来的风险以后,在易出错的地方进行回归测试以保证原有的功能没有被新的变化影响。影响产品质量的权重参数很多,在本文提到的模型中,主要考虑功能的依赖关系,功能的复杂度,需求变更等方面。
在设计测试用例时,将测试用例和与之关联的功能特性之间的关系形成二维表格放入数据库中,表结构如表1所示,其中,bug数目会随着动态测试过程进行记录。
2.1 权重设计
影响产品质量的权重参数很多,在本文提到的模型中,主要考虑功能的依赖关系,功能的复杂度,需求变更等方面。创建一个影响回归测试的功能特性矩阵列出所有的特征和功能。
D表示新特性将对已有功能造成直接影响;
I表示新特性对已有功能存在间接影响,如表2所示。
2.2 权重计算
对于每一个测试用例来说,其权重等于与之关联的程序模块乘以收到的影响加上曾经检查出的bug总数
WTCi=Funci*Inf+bug
3 算法策略
执行回归测试,首先提供被新功能或有依赖关系的改动直接影响的区域。
将改动区域与对应的测试用例放入列表
把上个开发阶段发现的问题填入表格中。
然后计算每个测试用例的权重,按照权重从大到小依次排列。
然后选择权重最大的测试用例,并将其覆盖的功能特性从列表中删除,循环此过程,直到列表为空。
最后,依次执行选中的测试用例。
4 实验
在资源充足的情况下,假如开发修改了文件Func3里面的代码,根据上面的表格TC2,TC3是和Func3有关联的测试用例,可以挑出TC2,TC3执行测试。
当func3函数有修改,可以挑出TC1,TC2,TC3执行测试。
当资源不够充足时,按照模WTC2>WTC3,WTC1=0。选择TC2执行测试。
5 结束语
要实现有效的回归测试,必须解决回归测试中的两个主要问题:
(1)测试用例的优化选择;
(2)覆盖率分析。
前者决定了回归测试的效率,好的测试用例的选择可以用少量的测试用例准确地覆盖新版本中尽可能多的改动。后者是度量测试的重要指标,通过达到良好的测试覆盖率,保证了回归测试的质量。
本文正是通过讨论如何优化选择测试用例,用最小的代价达到最大的覆盖率,从而找到回归测试的有效解决方案。测试用例优化选择可以有效地解决现有测试用例的覆盖问题,但在实际测试过程中,我们仍然发现存在着覆盖不全的问题,需要进行进一步的研究。
作者单位
上海应用技术学院计算机与信息工程学院 上海市 201418