7.3.4 实验分析

更新于 2026年10月10日 版权声明
7.3.4 实验分析

1.测试用例集

本书实验从软件基础设施库(Software-artifact Infrastructure Repository,SIR)中选取了8个C语言被测程序。实验程序的相关信息如表7-2所示。其中前7个规模较小的实验程序由西门子研究实验室编写,space是一个ADL语言解释器,它是由欧洲航天局研发的规模较大的程序。

表7-2 被测程序信息

图示

由于8个被测程序的测试用例池中包含大量的冗余测试用例,所以在实验准备阶段从测试用例池中选取了一个冗余度相对较小的测试用例集作为实验的测试用例集,选取的准则是使实验的测试用例集的语句覆盖率达到用例池的最大语句覆盖率。

2.实验设计和结果分析

(1)实验一:探究迭代次数对本书测试用例排序算法的影响

这个实验主要是为了探究一定粒子群大小下不同的迭代次数对基于多种群粒子群算法的多目标测试用例排序算法的影响。实验设定的单个种群规模为50,副粒子群为4个,分别对测试程序记录不同迭代次数下得到的Pareto最优解集。实验过程中会对被测程序尽可能迭代多次,使得非支配最优解集趋于稳定状态。8个被测程序不同迭代次数下得到的Pareto最优解的分布如图7-4所示。图7-4中横坐标表示测试用例序列的有效执行时间,单位为秒(s),纵坐标表示测试用例序列的平均语句覆盖率APSC。图7-4中的每一个点代表一个最优非支配解。

图示

图示(https://www.daowen.com)

图7-4 被测程序在不同迭代次数下最优解的分布

由图7-4可以看出,在粒子群数量和规模一定的情况下,随着本书提出的多目标测试用例排序算法的迭代次数不断增加,测试用例优先级排序的非支配解集逐渐趋于最优,并且在一定的迭代次数后,非支配解集趋于稳定,不再发生显著的变化。另外,对于规模较小的被测程序,在测试用例优先级排序过程中,结果收敛速度较快,一般需要较少的迭代次数,非支配最优解集便会趋于稳定;对于规模较大的被测程序,结果收敛速度较慢,得到稳定的非支配最优解集所需的迭代次数较多。

被测程序的规模会影响最优解集达到稳定所需的迭代次数的原因是,被测程序的规模越大,测试用例集的规模也就越大,对应的算法中粒子多样性也就越丰富,需要遍历的粒子状态范围也就越大,所以非支配最优解集达到稳定状态所需的迭代次数也就越多。

(2)实验二:基于多种群协同粒子群算法的测试用例优先级排序与基于单种群粒子群算法的测试用例优先级排序

这个实验是为了通过与基于单种群粒子群算法(PSO)的测试用例优先级排序算法的对比,验证本书提出了基于多种群协同粒子群算法(MPPSO)的测试用例优先级排序算法的有效性。本实验设定的单个种群规模为50,副粒子群为4个,迭代次数为200。基于单种群粒子群算法的测试用例优先级排序参照文献[13]中的方法实现。实验过程中会分别对测试程序采用多种群协同粒子群算法和单种群粒子群算法进行测试用例优先级排序,并比较最终得到的Pareto最优解集。8个被测程序在两种算法下得到的Pareto最优解的分布如图7-5所示。

由图7-5可以看出,针对一定规模的测试程序,当测试用例优先级排序的非支配最优解集达到稳定时,基于多种群协同粒子群算法的测试用例优先级排序算法得到的非支配最优解集要明显优于基于单种群粒子群算法的测试用例优先级排序算法。本书所采用的多种群协同粒子群算法能够在一定程度上减少粒子多样性的丢失,全局寻优能力较强,能够得到更优的测试用例优先级排序的非支配最优解集。

图示

图示

图7-5 被测程序在不同算法下的最优解分布

↑上一章 ↓下一章
关注公众号获取验证码
复制内容需要验证码(7.99元/天)