[发明专利]一种基于弱变异分析的测试用例约减方法有效
申请号: | 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列的二进制编码对应数值为
j∈[1,n],所以对整个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={c1,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={b1,b2,b3,...,bs‑1},如b1=mt11mt12mt13....mt1(t‑1),测试用例变异分支覆盖与理想变异分支覆盖按位与操作后的二进制作为实际覆盖,即Rx=bx&Ic,x∈[1,s‑1],然后统计每个测试用例与理想变异分支的近似度,表示为f'(x)=count(Rx),count(Rx)为Rx代表的二进制中1的个数之和,所以将与当前理想变异分支近似度最大的变异分支覆盖对应的测试用例为当前的最优解,:f(x)=max(f'(x)),以步骤(3)约减后的测试数据集作为输入,将人工鱼群算法作用于测试用例二进制编码B,进行迭代,搜索可覆盖理想变异分支最多的测试用例,重复步骤(4),直至生成覆盖最大分支覆盖的测试数据集或达到最大迭代次数为止。
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于西安邮电大学,未经西安邮电大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/patent/201810372296.8/,转载请声明来源钻瓜专利网。