计算机应用   2016, Vol. 36 Issue (9): 2492-2496  DOI: 10.11772/j.issn.1001-9081.2016.09.2492
0

引用本文 

王曙燕, 温春琰, 孙家泽. 基于自适应粒子群优化算法的测试数据扩增方法[J]. 计算机应用, 2016, 36(9): 2492-2496.DOI: 10.11772/j.issn.1001-9081.2016.09.2492.
WANG Shuyan, WEN Chunyan, SUN Jiaze. Test data augmentation method based on adaptive particle swarm optimization algorithm[J]. Journal of Computer Applications, 2016, 36(9): 2492-2496. DOI: 10.11772/j.issn.1001-9081.2016.09.2492.

基金项目

陕西省自然科学基金资助项目(2015JM6359);西安市科技计划项目(CXY1516(4));陕西省教育厅自然科学基金资助项目(15JK1672,15JK1678);陕西省工业攻关项目(2016GY-089)

通信作者

温春琰(1991-), 男, 河南南阳人, 硕士研究生, 主要研究方向:软件设计与测试、数据挖掘, wency_mail@163.com

作者简介

王曙燕(1964-), 女, 陕西西安人, 教授, 博士, CCF会员, 主要研究方向:软件测试、数据挖掘、智能信息处理;
孙家泽(1980-), 男, 陕西西安人, 副教授, 博士, CCF会员, 主要研究方向:软件测试、数据挖掘、智能信息处理

文章历史

收稿日期:2016-01-27
修回日期:2016-03-07
基于自适应粒子群优化算法的测试数据扩增方法
王曙燕, 温春琰, 孙家泽    
西安邮电大学 计算机学院, 西安 710061
摘要: 针对在回归测试中原有测试数据集往往难以满足新版本软件测试需求的问题,提出一种基于自适应粒子群算法(APSO)的测试数据扩增方法。首先,根据原有测试数据在新版本程序上的穿越路径与目标路径的相似度,在原有的测试数据集中选择合适的测试数据,作为初始种群的进化个体;然后,利用初始测试数据的穿越路径与目标路径的不同子路径,确定造成两者路径偏离的输入分量;最后,根据路径相似度构建适应度函数,利用APSO操作输入分量,生成新的测试数据。该方法针对四个基准程序与基于遗传算法(GA)和随机法的测试数据扩增方法相比,测试数据扩增效率分别平均提高了约56%和81%。实验结果表明,所提方法在回归测试方面有效地提高了测试数据扩增的效率,增强了其稳定性。
关键词: 回归测试    目标路径    测试数据扩增    路径相似度    粒子群优化算法    
Test data augmentation method based on adaptive particle swarm optimization algorithm
WANG Shuyan, WEN Chunyan, SUN Jiaze     
School of Computer Science and Technology, Xi'an University of Posts and Telecommunications, Xi'an Shaanxi 710061, China
Background: This work is partially supported by the Science Foundation of Shaanxi Province (2015JM6359), the Science and Technology Project Foundation of Xi'an City (CXY1516 (4)), the Science Foundation of Education Ministry of Shaanxi Province (15JK1672, 15JK1678), the Industrial Research Project of Shaanxi Province (2016GY-089)
WANG Shuyan, born in 1964, Ph. D., professor. Her research interests include software testing, data mining, intelligent information processing
WEN Cunyan, born in 1991, M. S. candidate. His research interests include software design and testing, data mining
SUN Jiaze, born in 1980, Ph. D., associate professor. His research interests include software testing, data mining, intelligent information processing
Abstract: It is difficult for the original test data to meet the requirements of the new version of software testing in regression testing, thus a new test data augmentation method based on Adaptive Particle Swarm Optimization (APSO) algorithm was proposed to solve the problem. Firstly, according to the similarity between the cross path and the target path of the original test data in the new version of the program, the appropriate test data in the original test data was chosen as evolutionary individual of initial population. Secondly, taking advantage of different sub-paths of the cross path of initial test data and target path, the input component which caused deviation between them was confirmed. Finally, the fitness function was created according to the path similarity, and the new data was generated by using the APSO algorithm to operate the input component. Compared with the genetic algorithm based and random algorithm based test data augmentation methods on four benchmark programs, the augmentation efficiency of the proposed method was improved on average by approximately 56% and 81% respectively. The experimental results show that the proposed method can effectively increase the efficiency and improve the stability of test data augmentation in regression testing.
Key words: regression testing    target path    test data augmentation    path similarity    Particle Swarm Optimization (PSO) algorithm    
0 引言

在回归测试的过程中,测试人员通过重新测试新版本软件,以验证新版本软件没有被加入新的错误或引起其他代码产生错误[1]。为了覆盖软件的修改和新增部分,需要对原有测试数据集进行扩增。与传统的测试数据生成相比,测试数据扩增在对比软件新旧版本、分析软件修改影响的基础上,针对软件变化产生新的测试数据,以提高软件的测试效率。

在现有的测试数据扩增方法中,Santelices等[2]利用控制流图和数据依赖图,结合符号执行进行分析,提出了测试数据集扩增需要满足链需求和状态需求;Qi等[3]将PIE (Propagation-Infection-Execution)模型[4]引入到测试数据扩增方法中,在路径引导过程中通过符号执行和CEPT(Change Effect Propagation Tree)[5]发现变量在修改后未被执行和执行后是否发生变化,以确保扩增的测试数据能够影响输出结果;Xu等[6]将Concolic Testing技术引入到测试数据扩增方法中,根据软件的演化信息选择有利于覆盖目标路径的测试数据,利用已有测试用例结合实体测试和符号测试产生新的测试数据。

在上述的方法中,Santelices等[2]和Qi等[3]提出的方法没有考虑已有测试数据的利用,而Xu等[6]的方法仅对测试数据的数量进行了缩减,并不能保证筛选出的测试数据的质量。针对上述问题,巩敦卫等[7]采用遗传算法(Genetic Algorithm, GA)进行测试数据扩增,合理地利用了已有的测试数据形成初始进化种群,有效提高了测试数据的生成效率;但是并没有将GA中起核心作用的交叉算子与程序演化信息相结合,降低了遗传算法全局搜索的能力。

粒子群优化(Particle Swarm Optimization, PSO)算法作为一种简单高效的智能计算方法,在很多领域取得了成功,但在测试数据扩增中的应用还未见公开文献的报道。本文研究采用自适应粒子群优化(Adaptive Particle Swarm Optimization, APSO)算法结合软件演化信息进行测试数据扩增,利用测试数据的穿越路径与目标路径的相似度矩阵选择原有的测试数据集,避免了GA的交叉和变异操作,自适应地调整了算法的搜索过程,作用于穿越路径与目标路径的偏移分量,以期增强其全局搜索能力,提高其收敛速度。

1 回归测试数据集扩增的数学模型 1.1 基本概念

定义1  测试数据集扩增。设程序PP′为P的新版本程序,TP的测试数据集, 通过利用已执行测试数据信息和程序演化信息生成新测试数据集T′,使得T′中的测试数据可以覆盖P′的修改和新增部分,TT′满足演化软件的测试需求。

定义2  路径。记新版本程序P′包含的路径为p1, p2, …, pmm是新版本程序P′包含的路径个数,路径pi穿越的节点序列为ni1, ni2, …, ni|pi|(1≤im),|pi|为路径pi的节点个数。

定义3  目标路径。记已有测试数据集T包含的测试数据为t1, t2, …, tn,测试数据集T在新版本程序P′中穿越的路径为p′(t1), p′(t2), …, p′(tn),则目标路径为:

$ P{'_{{\rm{target}}}} = \left\{ {p{'_1},p{'_2} \cdots p{'_m}} \right\} - \left\{ {p'\left( {{\boldsymbol{t}_1}} \right),p'\left( {{\boldsymbol{t}_2}} \right), \cdots p'\left( {{\boldsymbol{t}_n}} \right)} \right\} $ (1)

定义4  路径相似度。对于程序P′的路径pipj穿越的节点序列分别为ni1, ni2, …, ni|pi|nj1, nj2, …, nj|pj|,记路径pipj穿越的相同节点个数记为Nsame,则路径pi相对于pj的路径相似度记为S(pi, pj),可表示为:

$ S\left( {p{'_i},p{'_j}} \right) = {N_{{\rm{same}}}}/\left| {p{'_j}} \right| $ (2)

其中,Nsame=|pipj|。

路径相似度可以从侧面衡量两条路径之间的相关度,反映了两条路径之间的相似程度。在程序中,前面的节点往往对后面的节点存在占优关系[8],所以路径pi相对于pj的路径相似度可以通过计算路径pipj的节点满足程度得到。由式(2)可以看出0≤S(pi, pj)≤1,S(pi, pj)越大,这两条路径相同的节点越多,当S(pi, pj)=1时,路径pipj为相同路径。例如,有3条路径p0:n0, n1, n2, n4, n5p1:n0, n1, n2, n3, n4, n5p2:n0, n2, n3, n4, n5;则,|p0p1|=5,S(p0, p1)≈0.83;|p0p2|=4,S(p0, p2)≈0.8。

1.2 测试数据集扩增数学模型

基于以上分析,测为:对于新版本程序P′,以测试数据t作为程序P′的输入,执行的路径记为p′(t),若存在目标路径pi*Ptarget(0≤i≤|Ptarget|),使得p′(t)与pi的路径相似度S(p′(t), pi*)=1,则路径p′(t)与pi为相同路径,那么t即为覆盖目标路径pi*的期望测试数据。

这样一来,回归测试的测试数据扩增问题就转化为求取路径相似度S(p′(t), pi*)最大值问题。对于所有目标路径Ptarget而言,生成覆盖目标路径p1*, p2*, …, p|ptarget|*的测试数据问题,就可以转化为求取S(p′(t), p1*), S(p′(t), p2*), …,S(p′(t), p|ptarget|*)的最大值问题,其数学模型为:

$ \begin{array}{l} \;\;\;\;\max \left( {{f_1}\left( \boldsymbol{t} \right),{f_2}\left( \boldsymbol{t} \right), \cdots {f_s}\left( \boldsymbol{t} \right)} \right)\\ {\rm{s}}{\rm{.t}}{\rm{.}}\;\;\;\;\boldsymbol{t} \in D \end{array} $ (3)

其中:1≤isfi(t)=S(p′(t), pi*),s=|Ptarget|,D为程序P′的输入域。

2 回归测试数据集扩增方法 2.1 初始种群选择

如何利用已有的测试数据生成新的测试数据,是回归测试数据扩增的关键问题。Bueno等[9]提出具有相似穿越路径的两个测试数据也有一定的相似性,采用相似的已有测试数据作为初始种群进行测试数据扩增,可以大幅度减少测试数据的生成个数,所以,利用已有测试数据进行测试数据扩增是非常必要的。

在程序中,以已有测试数据集t1, t2, …, tm作为输入在新版本程序P′运行后,产生的执行路径为p′(t1), p′(t2), …, p′(tm),根据式(2)计算已有测试数据的执行路径与目标路径Ptarget的相似度sij=S(p′(ti), pj*),可以得到如下的相似度矩阵M:

$ \boldsymbol{M} = \left[ {\begin{array}{*{20}{c}} {{s_{11}}}&{{s_{12}}}& \cdots &{{s_{1n}}}\\ {{s_{21}}}&{{s_{22}}}& \cdots &{{s_{2n}}}\\ \vdots & \vdots &{}& \vdots \\ {{s_{m1}}}&{{s_{m2}}}& \cdots &{{s_{mn}}} \end{array}} \right] $ (4)

其中,m为测试数据集T在程序P′上的穿越路径的个数,n=|Ptarget|,sij为测试数据ti的穿越路径p(ti)与目标路径pj*(pj*Ptarget)的相似度S(p(ti), pj*),若存在k∈{1, 2, …, m},使得${s_{kj}} \ge \frac{1}{m}\sum\limits_{i = 1}^m {{s_{ij}}} $,则选择第k行对应的测试数据tk作为测试数据扩增的初始测试数据,会非常有利于生成覆盖目标路径pj*的测试数据。

2.2 自适应粒子群算法

目前,关于粒子群算法与其改进算法在进化方程中都包含了位置矢量x和速度矢量v, 而在回归测试数据扩增的过程中,往往很难依靠经验来设定粒子的速度阈值。利用胡旺等[10]提出的算法,只需要考虑x的直接变化,使粒子的位置x逼近当前问题的最优解x*,其进化方程为:

$ \boldsymbol{x}_i^{t + 1} = w\boldsymbol{x}_i^t + {c_1}{r_1}\left( {{\boldsymbol{x}_{id}} - \boldsymbol{x}_i^t} \right) + {c_2}{r_2}\left( {{\boldsymbol{x}_{{\rm{gd}}}} - \boldsymbol{x}_i^t} \right) $ (5)

其中:xitxit+1为第tt+1代种群中第i个粒子的位置;pid为个体最优,pgd为全局最优;w为惯性权重;c1c2为学习因子;r1r2为服从U(0, 1)分布的独立随机变量。

改进后的进化方程去掉了粒子速度概念,惯性权重w直接作用于粒子位置,因此惯性权重w对算法的收敛速度和精度起到决定性的作用。实验表明,当w较大时,有利于跳出局部的最优值,这时便于全局搜索;当w较小时,则有利于算法局部搜索。

因此,在粒子群算法的迭代过程中,本文利用文献[11]提出的方法,利用粒子聚集度自适应地调整惯性权重w,建立APSO。其中,粒子聚集度δ的计算公式为:

$ \delta = \left| {{f_{\rm{g}}} - f{'_{{\rm{avg}}}}} \right| $ (6)

其中:fg为种群的全局最优解;favg为种群粒子的平均适应值;favg通过种群中适应值不小于favg的粒子适应值再次平均得到。

根据上述提出的自适应调整方案,结合本文的适应度函数,惯性权重w随着粒子的适应值和聚集度进行自适应调整的方法如下:

1) 若f(xi)>favg,则认为xi比较接近最优解,惯性权重w应越小:

$ w = {w_{\max }} - \frac{{\left( {{w_{\max }} - {w_{\min }}} \right)\left| {f\left( {{\boldsymbol{x}_i}} \right) - f{'_{{\rm{avg}}}}} \right|}}{{\left| {f\left( {{\boldsymbol{x}_i}} \right) - f{'_{{\rm{avg}}}}} \right|}} $ (7)

2) 若favgf(xi)≤favg,则认为该粒子的状况相对普通,w会随着迭代次数的增加,在搜索解的过程中非线性地逐渐减小,利用余弦定理可以很好地描述:

$ w = {w_{\min }} + \left( {{w_{\max }} - {w_{\min }}} \right)\frac{1}{2}\left( {1 + \cos \frac{t}{T}\pi } \right) $ (8)

其中:t为当前进化代数,T为最大进化代数。

3) 若f(xi) < favg,则认为新生成的粒子状况较差,当种群过早收敛时,需要增大w打破当前的稳定;而当种群过于发散时,需要减小w使种群趋于收敛。利用指数函数可以很好地描述:

$ w = c - \frac{1}{{1 + \exp \left( { - \delta } \right)}} $ (9)

其中c为常数。

利用上述的进化方程(5)作用于程序的输入分量,即可在测试数据进化的过程中生成新的测试数据。输入分量是造成测试数据的执行路径偏离目标路径pi*的主要原因,它可以通过已有测试数据集T在新版本程序P′上的穿越路径p′(t1), p′(t2), …, p′(tm)与目标路径pi*的不同子路径Pdif,结合文献[12]所提方法,确定造成测试数据穿越路径与目标路径差异的输入分量ti1, ti2, …, tin。其中Pdif可表示为:

$ \begin{array}{l} {P_{{\rm{dif}}}}{\rm{ = }}p_i^* - p'\left( {{\boldsymbol{t}_1}} \right) \cap p_i^*,p_i^* - p'\left( {{\boldsymbol{t}_2}} \right) \cap p_i^*, \cdots ,\\ \;\;\;\;\;\;\;\;p_i^* - p'\left( {{\boldsymbol{t}_m}} \right) \cap p_i^* \end{array} $ (10)
2.3 基于APSO算法的测试数据集扩增模型

基于APSO算法的测试数据集扩增模型可分为程序解析、APSO和测试运行三个模块,如图 1所示。

图 1 基于APSO算法的测试数据集扩增模型

其中:程序解析模块是整个模型的基础部分,该部分通过静态分析构建控制流图,将原有测试数据集输入到测试运行模块得到穿越路径,然后选择出新版本程序需要覆盖的目标路径,并计算出穿越路径和目标路径的相似度矩阵,从而选择出APSO模块需要的初始种群;APSO是核心模块,根据粒子的适应值、进化方程和惯性权重调整公式来引导粒子向目标解进化,最终生成覆盖目标路径的测试数据集;测试运行模块在整个模型中起到桥梁的作用,通过接收测试数据,输出测试数据的穿越路径。

2.4 算法步骤

本节以利用原程序P的测试数据集T生成覆盖新版本程序P′的测试数据为例,详细介绍基于APSO算法的测试数据集扩增方法的实现步骤:

输入  原程序P的测试数据集T,新版本程序P′;

输出  覆盖P′的测试数据集。

步骤1  利用式(4)计算相似度矩阵,选取初始种群,设定初始参数。

步骤2  判断是否满足终止条件,即扩增的测试数据覆盖P′的目标路径,或达到最大进化代数。若满足,转步骤6。

步骤3  根据前文提出的适应度函数(3),计算测试数据的适应值,根据适应值的大小调整个体最优值pid和全局最优值pgd,同时利用式(7)~(9)设定惯性权重w

步骤4  利用式(10),以步骤1选择的测试数据作为输入,得到穿越路径与目标路径的不同子路径Pdif,确定输入分量ti1, ti2, …, tin

步骤5  将步骤3计算的参数代入式(5),更新输入分量ti1, ti2, …, tin,生成新的测试数据,转步骤2。

步骤6  算法结束,输入覆盖P′的测试数据集。

3 实例分析

本章以三角形判断程序为例来说明本文方法的有效性。修改前后的三角形判定程序的控制流如图 2所示。其中,原程序P的分支节点n1n3n5分别判断是否是三角形、等边三角形和等腰三角形;修改后程序P′在原程序P的基础上添加了分支节点n6n9n7n11,分别判断是否是锐角三角形、直角三角形、锐角三角形和直角三角形。假设覆盖原程序P中所有路径的测试数据为t1=(1, 2, 3),t2=(2, 2, 2),t3=(2, 2, 3),t4=(3, 4, 5)。

图 2 修改前后的三角形判定程序的控制流图

根据本文方法,原程序的测试数据集在修改后程序P′的穿越路径为p1={n1, n2},p2={n1, n3, n4},p3={n1, n3, n5, n6, n9, n13},p4={n1, n3, n5, n7, n11, n14},根据式(1)得到Ptarget=P′-Pexecute={{n1, n3, n5, n6, n8},{n1, n3, n5, n6, n9, n12}, {n1, n3, n5, n7, n10}, {n1, n3, n5, n7, n11, n15}}。

然后,利用上一步得到的穿越路径Pexecute与目标路径Ptarget,利用式(4)计算相似度矩阵:

$ \boldsymbol{M} = \left[ {\begin{array}{*{20}{c}} {0.20}&{0.17}&{0.20}&{0.17}\\ {0.40}&{0.33}&{0.40}&{0.33}\\ {0.80}&{0.83}&{0.60}&{0.50}\\ {0.60}&{0.50}&{0.80}&{0.83} \end{array}} \right] $

以目标路径{n1, n3, n5, n6, n8}对应的第一列为例,计算第一列的平均值为0.5,根据式(5),选择执行路径p3={n1, n3, n5, n6, n9, n13},p4={n1, n3, n5, n7, n11, n14}所分别对应的测试数据t3=(2, 2, 3),t4=(3, 4, 5)作为初始种群,生成覆盖目标路径{n1, n3, n5, n6, n8}的测试数据。

最后,根据3.2节的内容对初始种群进行演化。由初始种群的适应度p′(t3)=0.8,p′(t4)=0.6,利用自适应粒子群算法惯性权重w的调整方法,计算出fg=0.8,favg=0.7,favg=0.8,δ=0;以初始粒子t3为例,由favgf(t3)≤favg,可得$w = {w_{\min }} + \left( {{w_{\max }} + {w_{\min }}} \right)\frac{{1 + \cos \frac{t}{T}\pi }}{2}$,由于测试数据t3为初始种群,所以t=0,w=wmax,将w代入进化式(6)得到粒子的下一代,计算该粒子的适应值,判断是否满足终止条件,若不满足,则根据粒子的适应值大小重新设定该粒子的局部最优、种群的全局最优和惯性权重,使粒子进入下一次的迭代;若满足,则输出覆盖新版本程序P′所有路径的测试数据。

4 实验与分析 4.1 实验设置

为验证本文方法的有效性,测试程序除了选用三角形判定程序Triangle之外,还选择了基准程序NextDay以及西门子工业程序集中的Tcas和Schedule,上述程序广泛应用于验证不同测试方法的有效性[13],其基本信息如表 1所示。

表 1 测试程序信息

在实验过程中,所有程序均采用Java语言编写,在jdk1.6.0 _24环境下运行,计算机主频为3.20 GHz,内存为2 GB。针对自适应粒子群算法的基本参数设定如下:进化最大代数T=1000,学习因子c1=c2=2,惯性权重wmax=1.8, wmin=0.4。

4.2 实验结果

为验证本文方法的有效性,选择基于遗传算法(GA)和随机法的测试数据扩增方法与本文方法进行比较,在相同的条件下,对测试程序各定义一个或多个修改点,分别运行20次,生成覆盖目标路径的测试数据,记录每种方法的进化代数和耗时,分别计算它们的平均值和标准差,最终实验结果如表 2所示。

表 2 不同测试数据扩增方法的进化代数和运行时间对比

表 2中,以空中防撞系统Tcas为例,相比遗传算法需要迭代189.2次、运行时间15.432 s,以及随机法未能在规定的最大代数T=1000中完成测试要求,本文方法只需迭代约19.8次、运行时间0.724 s即可生成覆盖目标路径的测试数据。综合各计算各种扩增方法在不同基准程序的扩增效率,本文方法与基于遗传算法和随机法的测试数据扩增方法相比,测试数据扩增效率平均分别提高了约56%和81%。由此可看出本文方法在回归测试中生成覆盖目标路径的测试数据具有较高的效率。而且,通过多次运行结果求得的标准差可以看出,本文方法在稳定性方面也具有较好的优势。

同时,通过比较不同方法在迭代的过程对目标路径的覆盖率,来评价不同回归测试数据扩增方法的性能。以空中防撞系统Tcas为例,不同方法在迭代过程中对目标路径的覆盖率如图 3所示。由图 3可以看出,本文方法与其他两种方法相比,在覆盖目标路径方面具有明显的优势,且有效地避免了在回归测试数据扩增过程中测试数据陷入局部最优解的问题。

图 3 测试数据扩增方法在Tcas上的目标路径覆盖率变化

通过上述分析,可以得到如下结论:对于基准程序和西门子工业程序,本文提出的基于自适应粒子群算法的回归测试数据集扩增方法在充分利用原有测试数据集的基础上,可以消耗较少的代价,更稳定地生成覆盖目标路径的测试数据集。

5 结语

在面向覆盖的测试数据集扩增方法中,如何充分利用已有测试数据和如何在测试数据的演化过程中利用更多的路径信息是提高测试数据扩增效率的关键问题。本文提出了一种基于自适应粒子群算法的测试数据集扩增方法,该方法通过对多个基准程序和西门子工业程序进行测试,并与利用遗传算法和随机法的回归测试数据扩增方法进行比较,实验结果表明,本文所提方法在生成覆盖目标路径测试数据的效率和稳定性上都具有明显的提高。

在回归测试数据的扩增过程中,利用测试数据的穿越路径和目标路径的相似度来衡量测试数据的优劣,虽然在一定程度上提高了测试数据生成的效率和稳定性,但是在复杂的实际软件中,如何在测试数据的演化过程中利用更多的路径信息,进而提高生成覆盖目标路径测试数据的效率,是下一步需要继续研究的问题。

参考文献
[1] 张智轶, 陈振宇, 徐宝文, 等. 测试用例演化研究进展[J]. 软件学报, 2013, 24 (4) : 663-674. ( ZHANG Z Y, CHEN Z Y, XU B W, et al. Research progress on test case evolution[J]. Journal of Software, 2013, 24 (4) : 663-674. ) (0)
[2] SANTELICES R, CHITTIMALLI P K, APIWATTANAPONG T, et al. Test-suite augmentation for evolving software [C]// ASE '08: Proceedings of the 2008 23th IEEE/ACM International Conference on Automated Software Engineering. Washington, DC: IEEE Computer Society, 2008: 218-227. http://ieeexplore.ieee.org/xpls/abs_all.jsp?arnumber=4639325 (0)
[3] QI D, ROYCHOUDHURY A, LIANG Z. Test generation to expose changes in evolving programs [C]// ASE '10: Proceedings of the 25th IEEE/ACM International Conference on Automated Software Engineering. New York: ACM, 2010: 397-406. http://dl.acm.org/citation.cfm?id=1859083 (0)
[4] VOAS J M. PIE: a dynamic failure-based technique[J]. IEEE Transactions on Software Engineering, 1992, 18 (8) : 717-727. doi: 10.1109/32.153381 (0)
[5] PEARL J. Probabilistic Reasoning in Intelligent Systems: Networks of Plausible Inference[M]. San Francisco, CA: Morgan Kaufmann, 1988 : 35 . (0)
[6] XU Z, ROTHERMEL G. Directed test suite augmentation [C]// APSEC 2009: Proceedings of the 2009 International Conference on the Asia-Pacific Software Engineering. Washington, DC: IEEE Computer Society, 2009: 406-413. (0)
[7] 巩敦卫, 任丽娜. 回归测试数据进化生成[J]. 计算机学报, 2014, 37 (3) : 489-499. ( GONG D W, REN L N. Evolitionary generation of regression test data[J]. Chinese Journal of Computers, 2014, 37 (3) : 489-499. ) (0)
[8] 吴川, 巩敦卫. 基于路径相关性的回归测试数据进化生成[J]. 计算机学报, 2015, 38 (11) : 2247-2261. ( WU C, GONG D W. Evolutionary generation of test data for regression testing based on path correlation[J]. Chinese Journal of Computers, 2015, 38 (11) : 2247-2261. ) (0)
[9] BUENO P M S, JINO M. Automatic test data generation for program paths using genetic algorithms[J]. International Journal of Software Engineering and Knowledge Engineering, 2002, 12 (6) : 691-709. doi: 10.1142/S0218194002001074 (0)
[10] 胡旺, 李志蜀. 一种更简化而高效的粒子群优化算法[J]. 软件学报, 2007, 18 (4) : 861-868. ( HU W, LI Z S. A simpler and more effective particle swarm optimization algorithm[J]. Journal of Software, 2007, 18 (4) : 861-868. doi: 10.1360/jos180861 ) (0)
[11] 史娇娇.基于遗传粒子群优化算法的测试数据自动生成技术研究[D].徐州:中国矿业大学, 2014:34-48. ( SHI J J. Study on the automatic test data generation based on genetic algorithm and particle swarm optimization algorithm [D]. Xuzhou: China University of Mining and Technology, 2014: 34-48. ) http://cdmd.cnki.com.cn/Article/CDMD-10290-1014074807.htm (0)
[12] 张岩, 巩敦卫. 基于搜索空间自动缩减的路径覆盖测试数据进化生成[J]. 电子学报, 2012, 40 (5) : 1011-1016. ( ZHANG Y, GONG D W. Evolutionary generation of test data for path coverage based on automatic reduction of search space[J]. Acta Electronica Sinica, 2012, 40 (5) : 1011-1016. ) (0)
[13] DO H, ELBAUM S, ROTHERMEL G. Supporting controlled experimentation with testing techniques: an infrastructure and its potential impact[J]. Empirical Software Engineering, 2005, 10 (4) : 405-435. doi: 10.1007/s10664-005-3861-2 (0)