6.3.2 实验分析
1.实验环境
实验环境为64位操作系统,基于x64的处理器i5-8250U,系统版本为Windows 10,主频为1.6 GHz,运行内存为8.00G DDR4-2400,编程语言为Python 3.9.0。在每个被测程序的测试用例集约简中,运用ALO算法执行20次,对每次蚁狮种群迭代100次的结果进行分析处理。
2.测试用例集
本次实验的被测程序是智能电表程序中的5个模块代码,为不同的被测程序准备了不同规模的测试用例集,可实现分支全覆盖,具体信息如表6-7所示。
表6-7 被测程序信息

3.实验问题
实验旨在研究以下几个问题。
①算法在降低测试开销方面的能力。
测试开销的降低是提高回归测试效率最直接的表现。采用约简集测试开销(ECRS)表示约简效果[16],公式如下。
![]()
式中,ci代表第i个测试用例的开销,约简后ECRS越小,约简效果越好。
②算法在不同规模的测试用例集约简中的探究。
③算法在不同智能电表被测程序中测试用例集约简中的探究。
以上述问题为基准,本书设计了如下实验。首先对智能电表程序的测试需求进行提取,本次实验选择的是智能电表项目中的5个模块代码程序,为不同的模块代码程序准备了不同规模的测试用例集。本次实验的测试开销用的是每个测试用例所能覆盖被测程序的分支数量。
4.实验探究
本书实验对测试程序分别进行如下操作:在保证和全集覆盖率相同的情况下,分别在原测试用例集中随机选择100、200、500、1 000以及全集组成新的测试用例集,进行约简。本书复现了基于FA的测试用例集约简算法[18]、贪心算法和GRE算法,分别对选择的5个智能电表模块程序的测试用例集进行约简,统计出了4个算法中表现最优的次数和ECRS。实验结果如表6-8所示,后面的分析都是基于表6-8的。(https://www.daowen.com)
表6-8 约简后测试用例集最优次数以及对应的ECRS

注:ECRS为算法执行20次后的平均值。
5.实验结果分析
(1)问题一
本书通过与FA、GRE和贪心算法的实验结果进行对比,一方面,将4种算法约简后的ECRS分别进行统计,如图6-7(a)所示,得到ECRS的均值分别为120.618、122.718、124.27和125.068,ALO算法对测试用例集约简后的结果比FA减少1.71%,比GRE算法减少2.94%,比贪心算法减少3.56%;另一方面,从最优约简次数进行统计,如图6-7(b)所示,4种算法在对相同的测试用例集进行约简后达到最优的次数分别为362次、155次、73次、27次。从两方面均可以看出,ALO算法的约简效果更优。
(2)问题二

图6-7 4种算法的最优约简次数和ECRS对比
本书通过从5个被测程序的原测试用例集中随机生成规模100、200、500、1 000和全集的测试用例集进行约简,其中ALO算法进行测试用例集约简后得到最优子集的次数分别为58、73、77、74和80,占比分别为49.15%、59.34%、65.81%、56.49%和62.5%,可以看出,在4种算法中,随着测试用例集的规模增大,ALO算法的约简效果越来越好,具体数据如表6-9所示。
表6-9 不同规模下的最优次数

(3)问题三
本书通过对5个不同的被测程序的实验结果进行统计,得到如表6-10所示的数据。在5个被测程序中,ALO算法的最优次数占比分别为60%、48.48%、67.6%、68.1%、52.38%,由此可以看出基于ALO的优化算法在不同的被测程序中都有着不错的表现,该ALO算法在测试用例集约简问题上有着良好的鲁棒性。
表6-10 不同被测程序下的最优次数
