Page 83 - 《软件学报》2021年第9期
P. 83
钱忠胜 等:面向关键字流图的相似程序间测试用例的重用 2707
用例具有更好的重用效果.
接下来,为了证明相似程序间测试数据是否可以相互引用,实验将测试冒泡排序已经生成的测试用例重用
到快速排序的测试用例生成中.此外,进一步证明相似程序间测试用例重用的有效性.实验另外选取了两组典型
基准程序和 5 组工业程序作为实验对象,分别将传统算法和本文方法利用到这些程序的测试用例生成中.实验
对象的基本信息见表 11.
Table 11 Basic information of experimental subjects
表 11 实验对象的基本信息
程序编号 程序名称 函数个数 代码行数 程序相似度(%) 被测程序
PG1(https://www.cnblogs.com/morethink/
p/8419151.html) Bubble sorting 1 13 80 Quick sorting
PG2 Quick sorting 1 18
PG3 [2] Sumday 1 22
PG4 Test-interval 1 31 75 Sumday
PG5(https://blog.csdn.net/wwwliuzhi/ Triangle 1 15
article/details/78544093) 74 E-triangle
PG6 E-triangle 1 20
PG7(https://github.com/finnfu/stepcount) Calculator1 18 286 73 Calculator1
PG8 Calculator2 20 341
PG9(https://github.com/vencc/game) Gobang_algorithm1 6 265 79 Gobang_algorithm1
PG10 Gobang_algorithm2 5 227
PG11(明日科技编著:《java 项目开发 ABS_check1 13 209
实战入门》,吉林大学出版社,2017 年) 97 ABS_check2
PG12 ABS_check2 15 228
PG13 [2] tcas1 8 138
PG14 tcas2 10 172 76 tcas1
PG15 [2] repalce1 21 516
PG16 repalce2 18 446 82 repalce1
PG17 Calculator1 18 286 36 Calculator1
PG18 Gobang_algorithm1 6 265
PG19 Calculator1 18 286 23 测试用例无法共享
PG20 ABS_check1 13 209
PG21 Gobang_algorithm1 6 265 35
PG22 ABS_check1 13 209 测试用例无法共享
说明:表中前 8 组中,同组程序出处来源相同.
[2]
第 2 组基准程序的 PG3 被广泛应用于验不同测试数据生成方法的有效性 ,PG4 是测试两个时间之间间隔
多少天的函数,测试该函数与 PG3 函数输入的参数类型皆为年月日的形式;PG5 函数验证输入的 3 个数是否能
组成三角形,PG6 函数在此基础上验证三角形是否是等腰或者等边三角形;工业程序 PG7 和 PG8 摘选自 Github
网站不同作者编写的实现计算器功能的程序;PG7 和 PG8 实现的功能相同,但编写方式和使用的函数存在不同,
故将 PG7 和 PG8 作为实验对象.
PG9 是五子棋游戏的赢棋算法,PG10 是在 PG9 基础上做了一定的删减,去掉了悔棋功能.PG11 是通讯录系
统个人信息的校验算法.PG12 增加了办公室电话的校验功能.本节对 PG9 和 PG11 两个工业程序做了不同维护
类型的修改,用来验证本文方法是否适应于回归测试.回归测试是确认修改程序是否引入新的错误或导致其他
代码产生错误 [29] .
统计数据表明:回归测试占了软件测试总预算的 80%,软件维护阶段总费用 50%以上.尽管回归测试的代价
如此之高,但它却是不可或缺的测试 [30,31] .回归测试中有效地利用已经生成的测试数据,近几年得到普遍的关
[2]
注.程序 PG13 和 PG15 来源于 SIR 测试平台的西门子测试程序集 ,常作为程序测试的实验对象.PG14 和 PG16
是采用不同方法对 PG13 和 PG15 更新后的程序.该组程序能够验证相似程序间测试用例的重用效果,还能够验
证本文方法是否适合程序的回归测试.
为了验证不相似程序之间测试用例的重用效果,实验还补充了 3 组实验(见表 11 的最后 3 组),将不相似程
序 PG7,PG9 和 PG11 的适应度较高的测试用例相互引用.对于程序功能规模差距较大的程序,其测试用例共用
的可能性较小.其中,程序 ABS_check1 的测试用例无法与程序 Calculator1 和 Gobang_algorithm1 的测试用例完