[发明专利]一种基于弱变异分析的测试用例约减方法有效
申请号: | 201810372296.8 | 申请日: | 2018-04-24 |
公开(公告)号: | CN110399285B | 公开(公告)日: | 2022-11-15 |
发明(设计)人: | 王曙燕;袁佳娟;孙家泽 | 申请(专利权)人: | 西安邮电大学 |
主分类号: | G06F11/36 | 分类号: | G06F11/36;G06N3/00 |
代理公司: | 暂无信息 | 代理人: | 暂无信息 |
地址: | 710121 陕西省*** | 国省代码: | 陕西;61 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 变异 分析 测试 用例约减 方法 | ||
1.一种基于弱变异分析的测试用例约减方法,其特征在于主要包括以下步骤:
(1)基于弱变异转化的测试用例和变异分支关系矩阵生成:使用变异测试工具Mujava对原程序P生成n个变异体M={m1,m2,m3........mn},结合日志文件mutation_log构造对应变异分支B={b1,b2,b3,...,bn},将变异分支B插入P变异点对应位置形成新的程序P',假设有m个原始测试用例集T={t1,t2,t3,.....tm},用T执行P'生成测试用例变异分支关系二维矩阵MT(m+1)×(n+1):
其中,矩阵中的第0行MTrow0={mt01,mt02,...,mt0n}表示变异分支编号(以下第0行,第0列均不做操作),矩阵中的第0列MTcol0={mt10,mt20,...,mtm0}表示测试用例编号;若测试用例ti,i∈[1,m]可以覆盖变异分支bj,j∈[1,n],则记mtij=1,否则记mtij=0;
(2)等效变异体约减:对步骤(1)中的MT(m+1)×(n+1)矩阵,考虑到变异体数量繁多,直接与操作求等效变异体时间复杂度较大和随着测试用例数量增加带来的二进制编码困难,故将MT(m+1)×(n+1)先按行分组分为组,其中l为自定义分组长度;分组后,将每组内列作为二进制编码求出对应数值Vg={vg1,vg2,vg3,...,vgn},g∈[1,G],第g组第j列的二进制编码对应数值为所以对整个MT(m+1)×(n+1)矩阵的二进制编码对应的数值V={v1,v2,v3,...,vn},根据V对矩阵的列约减,分以下三种情况:
(a)若vj=0,其变异分支对应的变异体为弱变异分析的等价变异体,记录并删除矩阵第j列;
(b)若则表明所有的测试用例都可杀死该变异体,所以该变异分支为测试用例全覆盖变异分支,将该变异分支对应的变异体约减,删除矩阵第j列;
(c)除上述两种情况外,若vj=vk相等(1≤j≤k≤n),查看组内vgj与vgk的值是否相等,若相等表明第j列和第k列对应的变异分支具有相同的分支覆盖情况,因此删除第k列变异分支对应的变异体,删除矩阵第k列;经过等效变异体约减后得到的矩阵MT(m+1)×r,r∈[0,n];
(3)子集测试用例约减:子集测试用例约减表示约减覆盖变异分支子集对应的测试用例,可分为以下几个部分:
(a)对MT(m+1)×r矩阵统计每行的变异分支覆盖度C={c 1,c2,c3...,cm},第i行的变异分支覆盖度
(b)选择C中最大数值ci,i∈[1,m],将第i行标记为已访问,记录第i行0元素对应的列下标集合S={s1,s2,s3....sh},h∈[1,r],若第i'行,i'∈[1,m]满足对应S中所有的列都为0,则意味着ti'可以覆盖的变异分支,ti一定可以覆盖,即ti'是ti变异分支覆盖的子集,因此删除矩阵MT(m+1)×r中的第i'行,并将C中的ci和ci'删除,遍历矩阵中所有未访问的行,删除矩阵MT(m+1)×r中ti的变异分支覆盖的所有子集对应的行,并删除C中所有子集对应行的变异分支覆盖度,重复步骤3(b),直到C集合为空;
(c)经过测试用例约减后得到的矩阵MTs×r,s∈[0,m],再经过步骤(2)等效变异体约减后得到的矩阵为MTs×t,t∈[0,r];
(4)测试用例约减:针对步骤(3)得到的矩阵MTs×t,由于MTs×t矩阵为约减后的矩阵,每列中至少有一个分支覆盖,因此整体矩阵的最大变异分支数Tc=t-1,所以初始化理想覆盖分支Ic=1111......1111,长度为|Ic|=t-1,对MTs×t矩阵以行单位转换为测试用例二进制编码B,B={b1,b2,b3,...,bs-1},如b1=mt11mt12mt13....mt1(t-1),测试用例变异分支覆盖与理想变异分支覆盖按位与操作后的二进制作为实际覆盖,即Rx=bxIc,x∈[1,s-1],然后统计每个测试用例与理想变异分支的近似度,表示为f'(x)=count(Rx),count(Rx)为Rx代表的二进制中1的个数之和,所以将与当前理想变异分支近似度最大的变异分支覆盖对应的测试用例为当前的最优解,:f(x)=max(f'(x)),以步骤(3)约减后的测试数据集作为输入,基于测试用例二进制编码B,采用人工鱼群算法进行迭代寻优,具体包括:设置算法参数初始种群数、步长、拥挤度因子、视野范围、最大试探次数,随机生成初始种群,种群中的人工鱼通过觅食、聚群、追随、随机后进行行为选择,更新公告板进行迭代,搜索可覆盖理想变异分支最多的测试用例,重复步骤(4),直至生成覆盖最大分支覆盖的测试数据集或达到最大迭代次数为止。
2.根据权利要求1所述的测试用例约减方法,其特征在于:该方法可以应用于回归测试中有效提高测试效率。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于西安邮电大学,未经西安邮电大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201810372296.8/1.html,转载请声明来源钻瓜专利网。