1.基于遗传算法的消息传递接口程序分支覆盖测试套件生成方法,其特征在于,该方法包括如下步骤:
0 1 m‑1 i
步骤(1):记一个消息传递接口程序为P={p ,p ,...,p },其中,p表示P中的第i个进i程,i=0,1,...,m‑1,m表示进程数;将用于收集覆盖信息的探针插入到进程p的所有分支中,并基于这些探针,定义如式(1)所示的最小归一化分支距离:i
上式中, 表示进程p中第j个分支,T={t1,t2,...,tN}表示包含N个测试数据tk的候i选测试套件,k=1,2,...,N,T也表示一个进化个体,用于覆盖进程p 中所有分支,以及表示T覆盖 的最小分支距离;
i i
步骤(2):基于公式(1),进程p中的分支总数,以及候选测试套件T实际覆盖的进程p中分支数,设计如公式(2)所示的目标函数,用于评价种群中个体的目标函数值:i i i
上式中,M是指进程p中所有分支总数, 是指以T执行程序时进程p中被覆盖的分支i数,以及 为进程p的分支集合;
步骤(3):使用遗传算法生成进化个体,并基于设计的目标函数,计算这些个体的目标函数值,以此引导后续种群按照如下操作进行交叉与变异:交叉鉴于每一进化个体由N个测试数据组成,基于两个父进化个体P1与P2,生成两个后代O1和O2的步骤如下:一方面,生成介于[0,1]之间的伪随机数α,如果α小于交叉概率,那么生成介于[0,1]之间的伪随机数λ,并将P1中前λ·N个测试数据,以及P2中最后(1‑λ)·N个测试数据遗传给O1;另一方面,将P2中前λ·N个测试数据,以及P1中最后(1‑λ)·N个测试数据遗传给O2;
变异针对进化个体包含的每一测试数据,生成介于[0,1]之间的伪随机数β,如果β小于变异概率,那么任选该测试数据的一个基因位,并反转所选择基因位的0或1值;
步骤(4):使用遗传算法进化生成测试套件的过程中,当目标函数值为0时,对应的进化个体即为覆盖消息传递接口程序所有分支的测试套件;当覆盖所有分支的测试套件已生成或是达到设定的最大进化代数时,算法终止,输出结果。