7.4.5 实验分析
1.测试用例集
本节实验从SIR中选取了5个C语言被测程序,分别是flex、grep、space、schedule和printtokens。程序中包含源代码、测试用例集、注入的故障点、运行的脚本等内容,本节选用测试点为开发者注入的故障点,并写脚本获得测试用例的执行时间作为成本,具体内容如表7-3所示。
表7-3 测试程序

由于5个被测程序的测试用例池中包含大量的冗余测试用例,所以在实验准备阶段从测试用例池中选取了一个冗余度相对较小的测试用例集作为实验的测试用例集。
本节主要从以下两个方向讨论测试用例优先级相关问题。
①Pareto最优解集的分布情况。
②对APTC指标的优劣进行分析。
2.实验设计和结果分析
本书算法的参数设置为种群数100,克隆群体数为50,α为0.8,γ为1.5,迭代次数为100。测试程序中flex、grep、schedule和printtokens选择了50个测试用例,space选择了200个测试用例。本书复现了多目标粒子群算法的测试用例优先级排序算法(Additional-Particle Swarm Optimization,A-PSO)[15],该算法实现了一种多目标粒子群算法来解决测试用例优先级排序问题,将排序问题转化为有向图,并对粒子采用了序列编码来表示测试用例的排序,同时为了解决易陷入局部最优问题引入了Additional策略。(https://www.daowen.com)
(1)问题一
为了验证AIBAT得到的Pareto解集的质量,用AIBAT与对比算法来对测试用例集进行排序,并把二者所得的解集进行比较。二者的Pareto解集分布如图7-12所示。其中,横坐标代表EET,纵坐标代表APTC,图中·表示用AIBAT得到的Pareto解集,★表示用A-PSO得到的Pareto解集。

图7-12 Pareto解集
比较图7-12中不同程序的实验结果,可以看出用AIBAT算法得到的结果总体上更偏向于左上方,即解收益型优化目标APTC较大,这代表AIBAT算法可以更快地检测到被测程序的测试点,消费型优化目标EET较小,代表经过排序后的测试用例可以更快地覆盖所有测试点,所以整体解和分布是优于A-PSO算法的。总体来说,AIBAT算法得到的解能在更短的时间内更高效地得到较高的测试点覆盖率。
(2)问题二
缺陷检测速率如图7-13所示。其中,横坐标为不同的TCP问题求解方法,纵坐标为APTC评价指标。

图7-13 缺陷检测速率
分析一下本节算法和对比算法求出来的不同测试程序的APTC指标,图7-13中主要体现了两种信息,分别是范围和均值。首先看范围,由于不同的测试用例集大小、覆盖率等环境不同,可以看出经过排序后的解集中,APTC的数量范围等没有明显的规律,例如,在flex、grep和space 3个被测程序中,APTC的范围和波动较大,而在schedule和printtokens测试程序中,APTC的范围与波动较小,这与测试用例集有关。但是从均值上来看,本书提出的算法均值普遍高于A-PSO算法,因此在这个方面,本节提出的算法具有更好的求解能力。