[发明专利]一种基于变量切片和关联规则的软件错误定位方法有效
申请号: | 201710216886.7 | 申请日: | 2017-04-05 |
公开(公告)号: | CN106951372B | 公开(公告)日: | 2020-06-16 |
发明(设计)人: | 王曙燕;孙家泽;罗丹 | 申请(专利权)人: | 西安邮电大学 |
主分类号: | G06F11/36 | 分类号: | G06F11/36 |
代理公司: | 北京汇信合知识产权代理有限公司 11335 | 代理人: | 吴甘棠 |
地址: | 710000 *** | 国省代码: | 陕西;61 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 变量 切片 关联 规则 软件 错误 定位 方法 | ||
1.一种基于变量切片和关联规则的软件错误定位方法,其特征在于包括以下步骤:
(1)对于一个包含错误且可执行代码总行数为n的Java程序Pfault进行预处理,得到系统依赖图;在系统依赖图上针对Pfault中某一条包含m个变量的语句进行变量切片,得到程序切片数据VarSlice.dot;
VarSlice.dot文件由集合T表示为T={fname,label,fillcolor,Si→Sj},其中fname为Pfault中执行变量切片语句所属方法的名称;label为变量切片语句,label=VarNumi:var=value,其中VarNumi为切片行号,1≤i≤n,var为变量名,value为变量值;fillcolor表示语句是否包含在变量切片结果内,fillcolor={yellow,gray},yellow表示该语句属于变量切片执行结果,gray表示该语句不属于变量切片执行结果;Si→Sj为语句Si和Sj的依赖指向关系;执行一次变量切片可以获得一个.dot文件,将每个.dot文件中fillcolor取yellow值的label所对应的变量切片行号集合VarNum作为.txt文件的一条记录,其中VarNum={VarNum1,VarNum2...VarNumi,...VarNumn};从所有变量切片数据.dot文件中依次提取VarNum,构成变量切片行号信息VarSlice.txt,该信息的记录数为执行变量切片的次数;
(2)将VarSlice.txt作为事务数据库D,通过扫描D计算每个变量切片行号VarNumi的频数SliceNum1,每个VarNumi都是候选1项集的集合C1的成员;假设最小支持度计数为Min_Support,可以确定频繁1项集的集合L1,它由满足SliceNum1≥Min_Support的候选1项集组成;使用连接操作L1×L1产生候选2项集的集合C2,它由个2项集组成;扫描D中事务,累计C2中每个候选项集的支持计数SliceNum2,然后确定频繁2项集的集合L2,它由C2中满足SliceNum2≥Min_Support的候选2项集组成;令C3=L2×L2,从C3中删除具有非频繁子集的候选项集,再累计C3中每个候选项集的支持计数SliceNum3,扫描D中事务确定频繁3项集的集合L3,L3由C3中满足SliceNum3≥Min_Support的候选3项集组成;以此类推,利用产生候选集的连接步Li×Li和删除具有非频繁子集的候选集的剪枝步逐层搜索,直至Ci=φ终止,即得到了所有的频繁项集FreVarSlice={C1,C2,C3,...Ci-1};
(3)对于每个频繁项集Cj,1≤j≤i-1,可以得到2j-2个非空真子集s,假设最小置信度为Min_Confidence,支持度计数为Support_Count,若满足则获取到语句之间蕴含的关联规则RelateListi,表示为以及关联规则数目RelateListNum;
(4)将所有关联规则TotalRelateList={RelateList1,RelateList2,...RelateListi,...RelateListNum}按照置信度由高到低的次序重新排列,可以得到排序关联规则SeqRelateList={RelateList1',RelateList2',...RelateL isti',...RelateListNum'},其中第i条关联规则RelateListi'表示为
(5)对步骤(4)的排序关联规则SeqRelateList进行分类,置信度相同的划分为同一类,形成集合{Confidence1=VarNum1,VarNum11,...VarNum1i;Confidence2=Va rNum2,VarNum22,...VarNum2i;...Confidencek=VarNumk,VarNumkk,...VarNumki},其中根据置信度的排列顺序生成检查语句优先级次序InSequence={VarNum1,VarNum11,...VarNum1i;VarNum2,VarNum22,...VarNum2i;...VarNumk,VarNumkk,...VarNumki};
(6)对于未在关联规则内的语句按照支持度由高到低进行排列并分类,支持度相同的划分为同一类,形成集合{Support(k+1)=VarNum(k+1),VarNum(k+1)(k+1),...VarNum(k+1)j;Support(k+2)=VarNum(k+2),VarNum(k+2)(k+2),...VarNum(k+2)j;...Support(k+m)=VarNum(k+m),VarNum(k+m)(k+m),...VarNum(k+m)j},其中Support(k+m)∈SliceNum1;根据支持度的排列顺序生成关联规则外的检查语句优先级次序OutSequence={VarNum(k+1),VarNum(k+1)(k+1),...VarNum(k+1)j;VarNum(k+2),VarNu m(k+2)(k+2),...VarNum(k+2)j;...VarNum(k+m),VarNum(k+m)(k+m),...VarNum(k+m)j};
(7)依据步骤(5)和步骤(6)得到总的检查语句优先级次序PrioritySequence=InSequence∪OutSequence,依据语句优先级次序越靠前越优先被检查的原则,可以定位到程序Pfault中错误出现的具体位置。
2.根据权利要求1所述的一种基于变量切片和关联规则的软件错误定位方法,其特征在于:该方法可以应用于Java程序错误定位,以提高软件错误定位的效率,降低软件测试成本。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于西安邮电大学,未经西安邮电大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201710216886.7/1.html,转载请声明来源钻瓜专利网。
- 上一篇:一种静脉输液港输液针
- 下一篇:一种头戴式耳机的弹性折叠结构