CN117234957B - 一种基于改进萤火虫算法的测试用例优先级排序方法 - Google Patents
一种基于改进萤火虫算法的测试用例优先级排序方法 Download PDFInfo
- Publication number
- CN117234957B CN117234957B CN202311524229.0A CN202311524229A CN117234957B CN 117234957 B CN117234957 B CN 117234957B CN 202311524229 A CN202311524229 A CN 202311524229A CN 117234957 B CN117234957 B CN 117234957B
- Authority
- CN
- China
- Prior art keywords
- firefly
- fireflies
- test case
- iteration
- absolute brightness
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 241000254158 Lampyridae Species 0.000 title claims abstract description 253
- 238000012360 testing method Methods 0.000 title claims abstract description 113
- 238000000034 method Methods 0.000 title claims abstract description 70
- 238000012163 sequencing technique Methods 0.000 claims abstract description 18
- 239000011159 matrix material Substances 0.000 claims abstract description 7
- 230000008569 process Effects 0.000 claims description 27
- 230000003044 adaptive effect Effects 0.000 claims description 13
- 230000035772 mutation Effects 0.000 claims description 13
- 238000004364 calculation method Methods 0.000 claims description 11
- 238000010521 absorption reaction Methods 0.000 claims description 8
- 230000002068 genetic effect Effects 0.000 claims description 8
- 238000013461 design Methods 0.000 claims description 7
- NAWXUBYGYWOOIX-SFHVURJKSA-N (2s)-2-[[4-[2-(2,4-diaminoquinazolin-6-yl)ethyl]benzoyl]amino]-4-methylidenepentanedioic acid Chemical compound C1=CC2=NC(N)=NC(N)=C2C=C1CCC1=CC=C(C(=O)N[C@@H](CC(=C)C(O)=O)C(O)=O)C=C1 NAWXUBYGYWOOIX-SFHVURJKSA-N 0.000 claims description 6
- 229940022353 herceptin Drugs 0.000 claims description 6
- 238000013507 mapping Methods 0.000 claims description 6
- 238000012913 prioritisation Methods 0.000 claims description 5
- 241000894007 species Species 0.000 claims description 3
- 238000013522 software testing Methods 0.000 abstract description 4
- 230000006870 function Effects 0.000 description 24
- 238000001514 detection method Methods 0.000 description 11
- 238000002474 experimental method Methods 0.000 description 8
- 230000007547 defect Effects 0.000 description 7
- 230000000694 effects Effects 0.000 description 5
- 230000000052 comparative effect Effects 0.000 description 4
- 230000002596 correlated effect Effects 0.000 description 2
- 230000000875 corresponding effect Effects 0.000 description 2
- 241001055367 Dario Species 0.000 description 1
- 230000006978 adaptation Effects 0.000 description 1
- 238000007792 addition Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000001276 controlling effect Effects 0.000 description 1
- 230000008303 genetic mechanism Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Landscapes
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明公开了一种基于改进萤火虫算法的测试用例优先级排序方法,属于软件测试领域,包括如下步骤:步骤1、获取源代码、测试用例集和回归测试历史结果;步骤2、借助gcov工具建立用例‑模块覆盖矩阵;步骤3、使用改进后的萤火虫算法对测试用例集进行排序,最终输出最优的测试用例排序序列。本发明改进的萤火虫算法能够有效地解决测试用例优先级排序问题,提高软件测试的效率。
Description
技术领域
本发明属于软件测试领域,具体涉及一种基于改进萤火虫算法的测试用例优先级排序方法。
背景技术
测试用例优先级排序是对已有的测试用例进行排序,使优先级高的测试用例先于优先级低的测试用例执行,提高软件故障检测的能力。启发式算法一直是测试用例优先级排序问题研究的热点,例如,Dario等人使用改进的遗传算法进行回归测试用例优先级排序;张卫祥等人使用蚁群算法对测试用例进行排序,提出了测试用例吸引度的概念,基于吸引度来定义测试用例之间的距离,具有较好的全局寻优能力;刘音等人使用改进的遗传算法进行回归测试用例优先级排序,在遗传算法中引入禁忌搜索方法,增强排序的局部搜索能力,利用多个目标函数对测试用例进行排序,提高回归测试的效率;Khatibsyarbini等人使用萤火虫算法进行排序,目标是在早期最大限度地检测故障。yang等人受萤火虫吸引行为的启发,于2008年提出萤火虫算法。该算法因控制参数少、计算能力高、易于实现等优势,在旅行商问题、背包问题等领域有广泛应用,在回归测试用例优先级排序中也有应用。
但现有基于萤火虫算法的测试用例优先级排序方法存在目标函数考虑因素单一的问题,仅仅以缺陷检测百分比或者用例执行时间计算,目标单一,实际上,在回归测试中,模块覆盖率、时间成本等均是重要的影响因素,模块检测覆盖率和测试用例次序是正相关的,而时间成本测试用例次序是负相关的,如何合理融合不同目标的因素设计目标函数对萤火虫算法的执行效率至关重要。此外,现有基于萤火虫算法的测试用例优先级排序方法大多采用全吸引模型,缺陷检测效率低,且存在后期收敛速度慢且时间复杂度高的问题。
发明内容
为了解决上述问题,本发明提出了一种基于改进萤火虫算法的测试用例优先级排序方法,首先设计融合时间成本和执行效率的新的目标函数;其次,在基本萤火虫算法中引入精英策略和遗传机制,设计新的位置更新公式,并采用改进的萤火虫算法解决测试用例优先级排序问题。
本发明的技术方案如下:
一种基于改进萤火虫算法的测试用例优先级排序方法,包括如下步骤:
步骤1、获取源代码、测试用例集和回归测试历史结果;
步骤2、借助gcov工具建立用例-模块覆盖矩阵;
步骤3、使用改进后的萤火虫算法对测试用例集进行排序,最终输出最优的测试用例排序序列。
进一步地,步骤1中,将测试用例集定义为,/>是测试用例总个数,/>表示第/>个测试用例;
所述步骤2中,使用gcov工具,输入源代码和测试用例集,分析提取每个测试用例的代码模块覆盖率,建立用例-模块覆盖矩阵:
(1);
其中,表示第/>个测试用例对于第/>个模块的模块覆盖率;/>表示模块总个数。
进一步地,步骤3的具体过程如下:
步骤3.1、初始化萤火虫数目、位置维度/>、最大迭代次数/>、光强吸收系数/>;位置维度对应测试用例个数;
步骤3.2、随机初始化只萤火虫的位置,分别计算每一只萤火虫的绝对亮度/>;
步骤3.3、选择最大绝对亮度为标准对所有萤火虫进行排序,将前只萤火虫划为精英种群/>,剩余萤火虫则归为普通种群/>;
步骤3.4、根据精英种群和普通种群的位置更新公式分别更新每只萤火虫的位置,再根据更新的位置计算每只萤火虫的绝对亮度;
步骤3.5、对两个种群分别执行选择、交叉、变异和逆转操作,更新萤火虫位置,再根据更新的位置计算每只萤火虫的绝对亮度;
步骤3.6、进行终止条件判断,若达到最大迭代次数,则转到步骤3.7;若未达到最大迭代次数,返回步骤3.3,迭代次数加一;
步骤3.7、输出萤火虫绝对亮度值最优的萤火虫位置向量对应的路径,位置向量表示的用例顺序即为最优的测试用例排序序列。
进一步地,步骤3.2的具体过程如下:
步骤3.2.1、对只萤火虫的初始位置进行整数编码,使用random.shuffle函数给出每只萤火虫的初始位置,构建/>只萤火虫的位置矩阵/>;
(2);
(3);
其中,表示第/>只萤火虫的位置,/>表示第/>只萤火虫的位置中第/>位测试用例的序号;
步骤3.2.2、融合有效执行时间和平均模块覆盖率设计目标函数:
(4);
其中,为目标函数;/>和/>为不同的权重系数,/>且;/>为测试用例序列的平均模块覆盖率,使用公式(5)计算;/>为萤火虫个体表示序列的有效执行时间,即首次达到最大模块覆盖率时执行测试用例所花费的时间,使用公式(6)计算;/>表示执行第/>个测试用例时消耗的时间;
(5);
其中,表示首个覆盖第/>个模块的测试用例在该用例排序中所处的次序;
(6);
其中,表示首次达到最大模块覆盖率时执行测试用例的个数;/>表示首次达到最大模块覆盖率时执行测试用例的序号;/>表示执行第/>个测试用例时消耗的时间;
步骤3.2.3、以目标函数值代表萤火虫的绝对亮度,建立第只萤火虫绝对亮度和目标函数之间的联系,即:
(7);
其中,表示第/>只萤火虫的绝对亮度;/>表示第/>只萤火虫的目标函数。
进一步地,步骤3.4的具体过程如下:
步骤3.4.1、对于精英种群,所有萤火虫均只被最亮萤火虫吸引,使用公式(8)更新萤火虫个体的位置:
(8);
式中,、/>均表示萤火虫的序号;/>为精英种群中第/>只萤火虫第/>次迭代后的位置;/>为自适应惯性权重系数,使用公式(9)计算;/>为精英种群中第/>只萤火虫第/>次迭代后的位置;/>为第/>只萤火虫对第/>只萤火虫的吸引度,使用公式(10)计算;表示精英种群中第/>只萤火虫第/>次迭代后的位置,第/>只萤火虫为最亮萤火虫;/>为自适应步长因子,使用公式(12)计算;/>为随机干扰项,/>;
(9);
其中,为第/>次迭代后的自适应惯性权重系数;/>为最大自适应惯性权重系数;/>为最小自适应惯性权重系数;/>为最大迭代次数;
(10);
其中,表示第/>只萤火虫的绝对亮度;/>为光强吸收系数;/>为第/>只萤火虫和第/>只萤火虫之间的笛卡尔距离,计算公式如下:
(11);
式中,为第/>只萤火虫位置;/>为第/>只萤火虫位置;/>为位置维度的序号,/>为位置维度;/>为第/>只萤火虫第/>维的值;/>为第/>只萤火虫第/>维的值;
设计步长调整计算公式如下:
(12);
式中,为第/>次迭代后的自适应步长因子;/>为调整阈值;
步骤3.4.2、普通种群中的萤火虫首先向精英种群靠拢,被精英种群中最亮的萤火虫吸引,同时被普通种群中的萤火虫吸引,随机被一只亮度高于自身的萤火虫吸引,位置更新公式如下:
(13);
式中,为普通种群中第/>次迭代后第/>只萤火虫的位置;/>为普通种群中第/>次迭代后第/>只萤火虫的位置;/>表示萤火虫的序号,/>从亮度高于第/>只萤火虫的萤火虫中随机选取;/>为第/>只萤火虫对第/>只萤火虫的吸引度,使用公式(10)计算,计算时代入第/>只萤火虫的绝对亮度和第/>只萤火虫和第/>只萤火虫之间的笛卡尔距离;为普通种群中第/>次迭代后第/>只萤火虫的位置;
步骤3.4.3、在两个种群中均引入突变算子,计算公式如下:
(14);
式中,为种群中第/>次迭代后第/>只萤火虫的位置;/>为种群中第/>次迭代后第/>只萤火虫的位置;/>为吸引度,使用公式(15)计算;/>为赫维赛德函数,使用公式(16)计算;/>表示突变概率,使用公式(17)计算;/>、/>分别表示从整个种群中随机选取的两只萤火虫/>、/>第/>次迭代后的位置;
(15);
其中,、/>分别为萤火虫/>、/>对第/>只萤火虫的吸引度;
(16);
(17);
其中,表示赫维赛德函数的自变量;
步骤3.4.4、使用公式(4)-公式(7)计算位置更新后每只萤火虫的绝对亮度。
进一步地,步骤3.5的具体过程如下:
步骤3.5.1、引入遗传算法中的选择操作,依次从精英种群中以设定的概率选择部分个体执行步骤3.5.2-步骤3.5.5;
步骤3.5.2、从精英种群中随机选取6个个体,两两分组作为父代,随机选取1-2个位置选取一个长度相等片段进行交叉操作,对于两个待交换片段中不相同的数字,定义一对一映射,采用部分映射消除维数冲突矛盾;比较新个体和父代萤火虫的绝对亮度,当得到的新个体绝对亮度高于父代萤火虫时,更新绝对亮度最弱的萤火虫位置,否则萤火虫位置不变;
步骤3.5.3、从精英种群中随机选取4个个体,每个个体随机选取2个位置进行位置互换,当变异得到的新个体绝对亮度高于原来的萤火虫时,萤火虫位置更新,否则萤火虫位置不变;
步骤3.5.4、从精英种群中随机选取4个个体,随机选取长度为的片段进行逆转,当逆转得到的新个体绝对亮度高于原来的萤火虫时,萤火虫位置更新,否则萤火虫位置不变;
步骤3.5.5、使用公式(4)-公式(7)计算位置更新后每只萤火虫的绝对亮度。
本发明所带来的有益技术效果:针对现有的测试用例优先级排序方法存在的目标函数考虑因素单一问题,从时间和覆盖两个角度出发,融合有效执行时间和平均模块覆盖率设计目标函数,使排序后的用例能够更快的检测出程序故障;针对现有萤火虫算法存在易陷入局部最优的问题,引入精英策略,将种群划分为精英种群和普通种群,分别改进两个种群的位置更新公式,精英种群主要负责全局搜索,普通种群向精英种群靠拢,并不断进行局部搜索;针对现有萤火虫算法后期收敛速度慢问题,改进位置更新公式中的步长因子,设计自适应步长因子,前期设置较大的固定值,扩大搜索范围,增加种群多样性,后期步长因子随迭代次数逐渐减小,缩小搜索范围,加快收敛,寻找最优解;引入遗传算法中的选择、交叉、变异和逆转操作,增加种群多样性,加快寻找最优解的速度。本发明改进的萤火虫算法能够有效地解决测试用例优先级排序问题,提高软件测试的效率。
附图说明
图1为本发明基于改进萤火虫算法的测试用例优先级排序方法的流程图。
图2为本发明实验中未排序的测试用例序列APFD值。
图3为本发明实验中采用基于改进萤火虫算法排序后的测试用例序列APFD值。
具体实施方式
下面结合附图以及具体实施方式对本发明作进一步详细说明:
如图1所示,一种基于改进萤火虫算法的测试用例优先级排序方法,包括如下步骤:
步骤1、获取源代码、测试用例集和回归测试历史结果;将测试用例集定义为,/>是测试用例总个数,/>表示第/>个测试用例。其中,源代码和测试用例集用于步骤2分析代码模块覆盖率,回顾测试历史结果用于分析改进萤火虫算法中萤火虫个体表示序列的有效执行时间。
步骤2、使用gcov工具,输入源代码和测试用例集,分析提取每个测试用例的代码模块覆盖率,建立用例-模块覆盖矩阵:
(1);
其中,表示第/>个测试用例对于第/>个模块的模块覆盖率;/>表示模块总个数。
步骤3、使用改进后的萤火虫算法对测试用例集进行排序,最终输出最优的测试用例排序序列。步骤3的具体过程如下:
步骤3.1、初始化萤火虫数目、位置维度/>、最大迭代次数/>、光强吸收系数/>;位置维度对应测试用例个数,即/>,有多少个用例,维度就设置多少;
步骤3.2、随机初始化只萤火虫的位置,分别计算每一只萤火虫的绝对亮度/>;具体过程如下:
步骤3.2.1、对只萤火虫的初始位置进行整数编码,使用random.shuffle函数给出每只萤火虫的初始位置,构建/>只萤火虫的位置矩阵/>;
(2);
(3);
其中,表示第/>只萤火虫的位置,/>表示第/>只萤火虫的位置中第/>位测试用例的序号,/>,任意/>不重复;
步骤3.2.2、在回归测试执行过程中,测试时间和测试有效性是需要着重考虑的两个方面。因此,从时间和覆盖角度出发,融合有效执行时间和平均模块覆盖率设计目标函数:
(4);
其中,为目标函数;/>和/>为不同的权重系数,/>且;/>为测试用例序列的平均模块覆盖率,使用公式(5)计算;/>为萤火虫个体表示序列的有效执行时间,即首次达到最大模块覆盖率时执行测试用例所花费的时间,使用公式(6)计算;/>表示执行第/>个测试用例时消耗的时间;
(5);
其中表示首个覆盖第/>个模块的测试用例在该用例排序中所处的次序;
(6);
其中,表示首次达到最大模块覆盖率时执行测试用例的个数;/>表示首次达到最大模块覆盖率时执行测试用例的序号;/>表示执行第/>个测试用例时消耗的时间;
步骤3.2.3、以目标函数值代表萤火虫的绝对亮度,建立第只萤火虫绝对亮度和目标函数之间的联系,即:
(7);
其中,表示第/>只萤火虫的绝对亮度;/>表示第/>只萤火虫的目标函数。
步骤3.3、选择最大绝对亮度为标准对所有萤火虫进行排序,将前只萤火虫划为精英种群/>,剩余萤火虫则归为普通种群/>;
步骤3.4、根据精英种群和普通种群的位置更新公式分别更新每只萤火虫的位置,再根据更新的位置计算每只萤火虫的绝对亮度;
在基本萤火虫算法中,引入精英策略,分别修改精英种群和普通种群中萤火虫的位置更新公式。
步骤3.4.1、对于精英种群,所有萤火虫均只被最亮萤火虫吸引,使用公式(8)更新萤火虫个体的位置:
(8);
式中,、/>均表示萤火虫的序号;/>为精英种群中第/>只萤火虫第/>次迭代后的位置;/>为自适应惯性权重系数,使用公式(9)计算;/>为精英种群中第/>只萤火虫第/>次迭代后的位置;/>为第/>只萤火虫对第/>只萤火虫的吸引度,使用公式(10)计算;表示精英种群中第/>只萤火虫第/>次迭代后的位置,第/>只萤火虫为最亮萤火虫;/>为自适应步长因子,使用公式(12)计算;/>为随机干扰项,/>;
(9);
其中,为第/>次迭代后的自适应惯性权重系数;/>为最大自适应惯性权重系数;/>为最小自适应惯性权重系数;/>为最大迭代次数,由对数函数特点可知,前期/>值较大,种群全局搜索能力较强,随着迭代次数增加,后期萤火虫逐步聚集在最优值附近后,值可以迅速减小,增强种群的局部搜索能力,加快收敛速度;
(10);
其中,表示第/>只萤火虫的绝对亮度;/>为光强吸收系数;/>为第/>只萤火虫和第/>只萤火虫之间的笛卡尔距离,计算公式如下:
(11);
式中,为第/>只萤火虫位置;/>为第/>只萤火虫位置;/>为位置维度的序号,/>为位置维度;/>为第/>只萤火虫第/>维的值;/>为第/>只萤火虫第/>维的值;
自适应步长因子用来控制搜索范围,/>越大,搜索范围越大。在萤火虫算法中,前期需要较大的搜索范围来增加种群的多样性,帮助寻找最优解,避免陷入局部最优;后期则需要聚焦在较小的搜索范围内加快收敛,寻找最优解,因此,设计步长调整计算公式如下:
(12);
式中,为第/>次迭代后的自适应步长因子;/>为调整阈值。
步骤3.4.2、普通种群中的萤火虫首先向精英种群靠拢,被精英种群中最亮的萤火虫吸引,同时被普通种群中的萤火虫吸引,随机被一只亮度高于自身的萤火虫吸引,位置更新公式如下:
(13);
式中,为普通种群中第/>次迭代后第/>只萤火虫的位置;/>为普通种群中第/>次迭代后第/>只萤火虫的位置;/>表示萤火虫的序号,/>从亮度高于第/>只萤火虫的萤火虫中随机选取;/>为第/>只萤火虫对第/>只萤火虫的吸引度,使用公式(10)计算,计算时代入第/>只萤火虫的绝对亮度和第/>只萤火虫和第/>只萤火虫之间的笛卡尔距离;为普通种群中第/>次迭代后第/>只萤火虫的位置;
步骤3.4.3、为了丰富种群的多样性,降低陷入局部最优的概率,在两个种群中均引入突变算子,计算公式如下:
(14);
式中,为种群中第/>次迭代后第/>只萤火虫的位置;/>为种群中第/>次迭代后第/>只萤火虫的位置;/>为吸引度,使用公式(15)计算;/>为赫维赛德函数,使用公式(16)计算;/>表示突变概率,使用公式(17)计算;/>、/>分别表示从整个种群中随机选取的两只萤火虫/>、/>第/>次迭代后的位置;
(15);
其中,、/>分别为萤火虫/>、/>对第/>只萤火虫的吸引度;
(16);
(17);
其中,表示赫维赛德函数的自变量;
步骤3.4.4、使用公式(4)-(7)计算位置更新后每只萤火虫的绝对亮度,更新过程中,萤火虫位置改变即用例顺序改变,测试用例序列的平均模块覆盖率和有效执行时间也改变;
步骤3.5、对两个种群分别执行选择、交叉、变异和逆转操作,更新萤火虫位置,再根据更新的位置计算每只萤火虫的绝对亮度;具体过程如下:
步骤3.5.1、引入遗传算法中的选择操作,依次从精英种群中以设定的概率选择部分个体执行步骤3.5.2-步骤3.5.5;
步骤3.5.2、从精英种群中随机选取6个个体,两两分组作为父代,随机选取1-2个位置选取一个长度相等片段进行交叉操作,对于两个待交换片段中不相同的数字,定义一对一映射,采用部分映射消除维数冲突矛盾;比较新个体和父代萤火虫的绝对亮度,当得到的新个体绝对亮度高于父代萤火虫时,更新绝对亮度最弱的萤火虫位置,否则萤火虫位置不变;
步骤3.5.3、从精英种群中随机选取4个个体,每个个体随机选取2个位置进行位置互换,当变异得到的新个体绝对亮度高于原来的萤火虫时,萤火虫位置更新,否则萤火虫位置不变;
步骤3.5.4、从精英种群中随机选取4个个体,随机选取长度为的片段进行逆转,当逆转得到的新个体绝对亮度高于原来的萤火虫时,萤火虫位置更新,否则萤火虫位置不变;
步骤3.5.5、使用公式(4)-(7)计算位置更新后每只萤火虫的绝对亮度。
步骤3.6、进行终止条件判断,若达到最大迭代次数,则转到步骤3.7;若未达到最大迭代次数,返回步骤3.3,迭代次数加一;
步骤3.7、输出萤火虫绝对亮度值(即目标函数值)最优的萤火虫位置向量对应的路径,位置向量表示的用例顺序即为最优的测试用例排序序列。
为了证明本发明的可行性与优越性,进行了2次对比实验。
对比实验1选取SRI数据集,验证本发明方法有效的提高了回归测试效率,以下为对比实验1的具体内容:实验环境配置:windows10操作系统、Intel(R) Core(TM) i5-11300H @ 3.10GHz、 python3.9。对比实验1根据输入的用例集合用例-模块覆盖矩阵、用例执行时间、萤火虫数目、位置维度/>、最大迭代次数/>、光强吸收系数/>,按照步骤3输出排序后的用例序列。对比实验1中,萤火虫数目/>、最大迭代次数/>、光强吸收系数/>。执行排序后的用例集合,通过缺陷检测率平均百分比(Average Percentageof Fault Detection,APFD)评估平均缺陷检测率,计算公式为:
(18);
其中,表示程序中缺陷的个数。/>表示首个检测到缺陷/>的测试用例在本次执行序列中的位置编号。APFD的取值范围为/>,其值越高表示测试用例检测程序缺陷的速度越快,排序效果越好。
使用本发明方法对项目transfer的测试用例集进行排序,排序后的测试用例集合,测试用例排序前与排序后的错误检测率分别如图2和图3所示,通过计算得出,排序前的测试用例集APFD为63%,排序后的测试用例集APFD为86%。由此可以说明,本发明方法提高用例错误检测速度上取得不错的效果。
对比实验2:为了检验本发明方法的效果,共选取了八个程序大于1kb的C语言项目,实验数据信息如表1所示;
表1 实验数据信息;
。
取基本萤火虫算法、刘音等人提出的改进遗传算法、Khatibsyarbini等人提出的多目标萤火虫算法与本发明方法进行比较,实验结果如表2所示:
表2 算法对比结果;
。
根据表2可以看出,本发明改进的萤火虫算法在APFD (缺陷检测率平均百分比)上和执行时间上对比现有的萤火虫算法,确实有不同程度的改进,所以认为本发明所提出的方法能够更早的发现程序错误,排序效果较好。
当然,上述说明并非是对本发明的限制,本发明也并不仅限于上述举例,本技术领域的技术人员在本发明的实质范围内所做出的变化、改型、添加或替换,也应属于本发明的保护范围。
Claims (3)
1.一种基于改进萤火虫算法的测试用例优先级排序方法,其特征在于,包括如下步骤:
步骤1、获取源代码、测试用例集和回归测试历史结果;
步骤2、借助gcov工具建立用例-模块覆盖矩阵;
步骤3、使用改进后的萤火虫算法对测试用例集进行排序,最终输出最优的测试用例排序序列;具体过程如下:
步骤3.1、初始化萤火虫数目、位置维度/>、最大迭代次数/>、光强吸收系数/>;位置维度对应测试用例个数;
步骤3.2、随机初始化只萤火虫的位置,分别计算每一只萤火虫的绝对亮度/>;具体过程如下:
步骤3.2.1、对只萤火虫的初始位置进行整数编码,使用random.shuffle函数给出每只萤火虫的初始位置,构建/>只萤火虫的位置矩阵/>;
(2);
(3);
其中,表示第/>只萤火虫的位置,/>表示第/>只萤火虫的位置中第/>位测试用例的序号;
步骤3.2.2、融合有效执行时间和平均模块覆盖率设计目标函数:
(4);
其中,为目标函数;/>和/>为不同的权重系数,/>且/>;为测试用例序列的平均模块覆盖率,使用公式(5)计算;/>为萤火虫个体表示序列的有效执行时间,即首次达到最大模块覆盖率时执行测试用例所花费的时间,使用公式(6)计算;/>表示执行第/>个测试用例时消耗的时间;
(5);
其中,表示首个覆盖第/>个模块的测试用例在该用例排序中所处的次序;
(6);
其中,表示首次达到最大模块覆盖率时执行测试用例的个数;/>表示首次达到最大模块覆盖率时执行测试用例的序号;/>表示执行第/>个测试用例时消耗的时间;
步骤3.2.3、以目标函数值代表萤火虫的绝对亮度,建立第只萤火虫绝对亮度和目标函数之间的联系,即:
(7);
其中,表示第/>只萤火虫的绝对亮度;/>表示第/>只萤火虫的目标函数;
步骤3.3、选择最大绝对亮度为标准对所有萤火虫进行排序,将前只萤火虫划为精英种群/>,剩余萤火虫则归为普通种群/>;
步骤3.4、根据精英种群和普通种群的位置更新公式分别更新每只萤火虫的位置,再根据更新的位置计算每只萤火虫的绝对亮度;具体过程如下:
步骤3.4.1、对于精英种群,所有萤火虫均只被最亮萤火虫吸引,使用公式(8)更新萤火虫个体的位置:
(8);
式中,、/>均表示萤火虫的序号;/>为精英种群中第/>只萤火虫第/>次迭代后的位置;/>为自适应惯性权重系数,使用公式(9)计算;/>为精英种群中第/>只萤火虫第/>次迭代后的位置;/>为第/>只萤火虫对第/>只萤火虫的吸引度,使用公式(10)计算;/>表示精英种群中第/>只萤火虫第/>次迭代后的位置,第/>只萤火虫为最亮萤火虫;/>为自适应步长因子,使用公式(12)计算;/>为随机干扰项,/>;
(9);
其中,为第/>次迭代后的自适应惯性权重系数;/>为最大自适应惯性权重系数;为最小自适应惯性权重系数;/>为最大迭代次数;
(10);
其中,表示第/>只萤火虫的绝对亮度;/>为光强吸收系数;/>为第/>只萤火虫和第/>只萤火虫之间的笛卡尔距离,计算公式如下:
(11);
式中,为第/>只萤火虫位置;/>为第/>只萤火虫位置;/>为位置维度的序号,/>为位置维度;/>为第/>只萤火虫第/>维的值;/>为第/>只萤火虫第/>维的值;
设计步长调整计算公式如下:
(12);
式中,为第/>次迭代后的自适应步长因子;/>为调整阈值;
步骤3.4.2、普通种群中的萤火虫首先向精英种群靠拢,被精英种群中最亮的萤火虫吸引,同时被普通种群中的萤火虫吸引,随机被一只亮度高于自身的萤火虫吸引,位置更新公式如下:
(13);
式中,为普通种群中第/>次迭代后第/>只萤火虫的位置;/>为普通种群中第/>次迭代后第/>只萤火虫的位置;/>表示萤火虫的序号,/>从亮度高于第/>只萤火虫的萤火虫中随机选取;/>为第/>只萤火虫对第/>只萤火虫的吸引度,使用公式(10)计算,计算时代入第/>只萤火虫的绝对亮度和第/>只萤火虫和第/>只萤火虫之间的笛卡尔距离;/>为普通种群中第/>次迭代后第/>只萤火虫的位置;
步骤3.4.3、在两个种群中均引入突变算子,计算公式如下:
(14);
式中,为种群中第/>次迭代后第/>只萤火虫的位置;/>为种群中第/>次迭代后第/>只萤火虫的位置;/>为吸引度,使用公式(15)计算;/>为赫维赛德函数,使用公式(16)计算;/>表示突变概率,使用公式(17)计算;/>、/>分别表示从整个种群中随机选取的两只萤火虫/>、/>第/>次迭代后的位置;
(15);
其中,、/>分别为萤火虫/>、/>对第/>只萤火虫的吸引度;
(16);
(17);
其中,表示赫维赛德函数的自变量;
步骤3.4.4、使用公式(4)-公式(7)计算位置更新后每只萤火虫的绝对亮度;
步骤3.5、对两个种群分别执行选择、交叉、变异和逆转操作,更新萤火虫位置,再根据更新的位置计算每只萤火虫的绝对亮度;
步骤3.6、进行终止条件判断,若达到最大迭代次数,则转到步骤3.7;若未达到最大迭代次数,返回步骤3.3,迭代次数加一;
步骤3.7、输出萤火虫绝对亮度值最优的萤火虫位置向量对应的路径,位置向量表示的用例顺序即为最优的测试用例排序序列。
2.根据权利要求1所述基于改进萤火虫算法的测试用例优先级排序方法,其特征在于,所述步骤1中,将测试用例集定义为,/>是测试用例总个数,/>表示第/>个测试用例;
所述步骤2中,使用gcov工具,输入源代码和测试用例集,分析提取每个测试用例的代码模块覆盖率,建立用例-模块覆盖矩阵:
(1);
其中,表示第/>个测试用例对于第/>个模块的模块覆盖率;/>表示模块总个数。
3.根据权利要求1所述基于改进萤火虫算法的测试用例优先级排序方法,其特征在于,所述步骤3.5的具体过程如下:
步骤3.5.1、引入遗传算法中的选择操作,依次从精英种群中以设定的概率选择部分个体执行步骤3.5.2-步骤3.5.5;
步骤3.5.2、从精英种群中随机选取6个个体,两两分组作为父代,随机选取1-2个位置选取一个长度相等片段进行交叉操作,对于两个待交换片段中不相同的数字,定义一对一映射,采用部分映射消除维数冲突矛盾;比较新个体和父代萤火虫的绝对亮度,当得到的新个体绝对亮度高于父代萤火虫时,更新绝对亮度最弱的萤火虫位置,否则萤火虫位置不变;
步骤3.5.3、从精英种群中随机选取4个个体,每个个体随机选取2个位置进行位置互换,当变异得到的新个体绝对亮度高于原来的萤火虫时,萤火虫位置更新,否则萤火虫位置不变;
步骤3.5.4、从精英种群中随机选取4个个体,随机选取长度为的片段进行逆转,当逆转得到的新个体绝对亮度高于原来的萤火虫时,萤火虫位置更新,否则萤火虫位置不变;
步骤3.5.5、使用公式(4)-公式(7)计算位置更新后每只萤火虫的绝对亮度。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311524229.0A CN117234957B (zh) | 2023-11-16 | 2023-11-16 | 一种基于改进萤火虫算法的测试用例优先级排序方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311524229.0A CN117234957B (zh) | 2023-11-16 | 2023-11-16 | 一种基于改进萤火虫算法的测试用例优先级排序方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117234957A CN117234957A (zh) | 2023-12-15 |
CN117234957B true CN117234957B (zh) | 2024-02-06 |
Family
ID=89093420
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311524229.0A Active CN117234957B (zh) | 2023-11-16 | 2023-11-16 | 一种基于改进萤火虫算法的测试用例优先级排序方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117234957B (zh) |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109271320A (zh) * | 2017-11-07 | 2019-01-25 | 西安邮电大学 | 一种上位多目标测试用例优先级排序方法 |
CN110059015A (zh) * | 2019-04-28 | 2019-07-26 | 西安邮电大学 | 种群进化多目标测试用例优先级排序方法 |
WO2019216975A1 (en) * | 2018-05-07 | 2019-11-14 | Strong Force Iot Portfolio 2016, Llc | Methods and systems for data collection, learning, and streaming of machine signals for analytics and maintenance using the industrial internet of things |
CN111367790A (zh) * | 2020-02-14 | 2020-07-03 | 重庆邮电大学 | 一种基于混合模型的元启发式测试用例排序方法 |
CN113419947A (zh) * | 2021-06-02 | 2021-09-21 | 山东科技大学 | 一种基于改进蚁群算法的回归测试用例优先级排序方法 |
CN113538125A (zh) * | 2021-06-29 | 2021-10-22 | 百维金科(上海)信息科技有限公司 | 一种基于萤火虫算法优化Hopfield神经网络的风险评级方法 |
DE202023103073U1 (de) * | 2023-06-05 | 2023-06-20 | Fuad Alhosban | Ein System zur Segmentierung synthetischer Bilder unter Verwendung einer Glühwürmchen-Technik auf Basis des Absorptionskoeffizienten |
CN116633830A (zh) * | 2023-05-25 | 2023-08-22 | 哈尔滨工业大学 | 一种基于萤火虫算法的种子变异操作调度方法 |
-
2023
- 2023-11-16 CN CN202311524229.0A patent/CN117234957B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109271320A (zh) * | 2017-11-07 | 2019-01-25 | 西安邮电大学 | 一种上位多目标测试用例优先级排序方法 |
WO2019216975A1 (en) * | 2018-05-07 | 2019-11-14 | Strong Force Iot Portfolio 2016, Llc | Methods and systems for data collection, learning, and streaming of machine signals for analytics and maintenance using the industrial internet of things |
CN112703457A (zh) * | 2018-05-07 | 2021-04-23 | 强力物联网投资组合2016有限公司 | 用于使用工业物联网进行数据收集、学习和机器信号流传输实现分析和维护的方法和系统 |
CN110059015A (zh) * | 2019-04-28 | 2019-07-26 | 西安邮电大学 | 种群进化多目标测试用例优先级排序方法 |
CN111367790A (zh) * | 2020-02-14 | 2020-07-03 | 重庆邮电大学 | 一种基于混合模型的元启发式测试用例排序方法 |
CN113419947A (zh) * | 2021-06-02 | 2021-09-21 | 山东科技大学 | 一种基于改进蚁群算法的回归测试用例优先级排序方法 |
CN113538125A (zh) * | 2021-06-29 | 2021-10-22 | 百维金科(上海)信息科技有限公司 | 一种基于萤火虫算法优化Hopfield神经网络的风险评级方法 |
CN116633830A (zh) * | 2023-05-25 | 2023-08-22 | 哈尔滨工业大学 | 一种基于萤火虫算法的种子变异操作调度方法 |
DE202023103073U1 (de) * | 2023-06-05 | 2023-06-20 | Fuad Alhosban | Ein System zur Segmentierung synthetischer Bilder unter Verwendung einer Glühwürmchen-Technik auf Basis des Absorptionskoeffizienten |
Non-Patent Citations (5)
Title |
---|
Test Case Prioritization Using Firefly Algorithm for Software Testing;Khatibsyarbini et al.;《IEEE Access》;全文 * |
基于多种群进化算法的测试用例优先级排序研究;张娜;胡国亨;金瑜婷;史佳炳;包晓安;;浙江理工大学学报(自然科学版)(第02期);全文 * |
基于精英个体划分的变步长萤火虫算法的特征选择方法;刘磊;罗蓉;尹胜;;重庆邮电大学学报(自然科学版)(第02期);全文 * |
萤火虫算法在测试用例集约简中的应用;宫云战 等;《 哈尔滨工程大学学报》;第41卷(第4期);全文 * |
软件测试用例生成与优先排序技术研究;周正鑫;《中国优秀硕士学位论文全文数据库 信息科技辑》;第2020 年卷(第05期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN117234957A (zh) | 2023-12-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Silver et al. | Planning with learned object importance in large problem instances using graph neural networks | |
CN107590073B (zh) | 基于路径覆盖软件测试的测试用例自动生成方法 | |
Stanley et al. | Evolving neural networks through augmenting topologies | |
Corne et al. | Evolutionary algorithms | |
CN110389819B (zh) | 一种计算密集型批处理任务的调度方法和系统 | |
CN108053119A (zh) | 一种求解零等待流水车间调度问题的改进粒子群优化算法 | |
CN109271320B (zh) | 一种上位多目标测试用例优先级排序方法 | |
CN113656156A (zh) | 一种基于禁忌搜索算法和遗传算法结合的调度优化方法 | |
CN111709526A (zh) | 一种基于多因子迁移学习的多模多目标演化算法 | |
Zhang et al. | On test case prioritization using ant colony optimization algorithm | |
CN114841581A (zh) | 基于gep-vns进化动态作业车间调度规则中的特征选择方法 | |
CN117234957B (zh) | 一种基于改进萤火虫算法的测试用例优先级排序方法 | |
CN113743566A (zh) | 产品拆卸序列优化方法、装置、计算机设备和存储介质 | |
Zdánský et al. | Combination genetic/tabu search algorithm for hybrid flowshops optimization | |
CN117521788A (zh) | 一种具有双参考向量引导的多模态多目标进化方法 | |
CN111352650B (zh) | 一种基于insga-ii的软件模块化多目标优化方法及系统 | |
CN110955702A (zh) | 一种基于改进遗传算法的模式数据挖掘方法 | |
CN112183817A (zh) | 一种柔性车间调度方法 | |
Huang et al. | An improved biogeography-based optimization algorithm for flow shop scheduling problem | |
CN110598833A (zh) | 一种分组进化的高维粒子群寻优方法 | |
Yang et al. | A particle swarm optimization-based approach with local search for predicting protein folding | |
Liu | A fast and elitist multi-objective particle swarm algorithm: NSPSO | |
Carvalho et al. | Multi-objective Flexible Job-Shop scheduling problem with DIPSO: More diversity, greater efficiency | |
Lin et al. | Automatic selection of GCC optimization options using a gene weighted genetic algorithm | |
CN113487031A (zh) | 一种基于改进模拟退火融合遗传算法的多无人机任务分配方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |