[发明专利]软件多故障的定位方法、装置、电子设备以及存储介质有效
| 申请号: | 201910592760.9 | 申请日: | 2019-07-03 |
| 公开(公告)号: | CN110362484B | 公开(公告)日: | 2022-03-01 |
| 发明(设计)人: | 杨顺昆;张宇涵;曾福萍 | 申请(专利权)人: | 北京航空航天大学 |
| 主分类号: | G06F11/36 | 分类号: | G06F11/36;G06K9/62 |
| 代理公司: | 苏州携智汇佳专利代理事务所(普通合伙) 32278 | 代理人: | 温明霞 |
| 地址: | 100191 北京市海淀区学院*** | 国省代码: | 北京;11 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 软件 故障 定位 方法 装置 电子设备 以及 存储 介质 | ||
1.一种软件多故障的定位方法,其特征在于,包括:
步骤一,获取对于软件的测试用例并自动执行测试,获得测试信息;
步骤二,基于所述测试信息获得程序谱;其中,所述程序谱中包括:测试成功的测试用例、测试失败的测试用例、以及测试成功的测试用例、测试失败的测试用例分别对应的代码执行和覆盖信息;
步骤三,根据所述程序谱对测试失败的测试用例与所有测试成功的测试用例进行组合处理,获得多个子程序谱,包括:将程序谱中每一失败的测试用例的N个复制与所有成功的测试用例进行均衡组合,使两者数量比例保持为1:10,生成多个子程序谱,使用均衡组合的方法,以放大失败测试用例的特征信息,进而得到更加准确的聚类效果;
步骤四,针对每一个子程序谱,计算此子程序谱中每个代码段的代码可疑度,并基于所述代码可疑度对此子程序谱中的全部代码段进行排序,用以生成与多个子程序谱相对应的多个代码可疑度排名;
其中,所述计算此子程序谱中每个代码段的代码可疑度包括:
计算第i个代码段的代码可疑度
Suspicious(si)=NCF(si)*/(NUF(si)+NCS(si));
其中,NCF(si)表示子程序谱中覆盖代码段si并且失败的测试用例数,NUF(si)表示子程序谱中未覆盖代码si并且失败的测试用例数,NCS(si)表示子程序谱中覆盖代码si并且成功的测试用例数;
步骤五,运用K-medoids聚类算法对多个代码可疑度排名进行聚类分析,生成测试用例聚类结果,包括:
步骤a,计算参与聚类的多个代码可疑度排名中各个代码可疑度排名之间的Kendalltau距离;
步骤b,在划定范围内依次选取K值;
步骤c,选取初始中心点;
步骤d,根据其余各点到各中心点的距离,把距离最近的中心点作为自己所属的簇;计算每一簇群中所有代码可疑度排名的排列与其中心点之间距离总和sumc;
步骤e,在每一簇群中,依次选取其他排列,计算该排列与同一簇群中其他排列的距离总和sum0i并与步骤d中的sumc比较,若存在sum0i<sumc,则选取对应排列作为新的聚类中心,并重复步骤d、e,直到聚类中心不再变化,得出聚类结果;
步骤f,计算当前K值下聚类结果对应的轮廓系数Silhouette_scorei,保存聚类结果并重复步骤b-e;选取轮廓系数最大的K值下所得的聚类结果作为最终输出;
所述选取初始中心点包括:
输入所有代码可疑度排名的排列中的各个排列之间距离,设置初始中心点个数K;
输出初始中心点;
随机选取第一个初始中心点,当中心点个数K时,进行循环处理;
其中,循环处理包括:
计算其余各点到各中心点的最小距离di;
计算最小距离平方和
被选概率pi=di/sum2;根据概率大小随机选取下一中心点;
步骤六,根据所述程序谱并基于所述测试用例聚类结果生成与多个软件故障一一对应的多个新的子程序谱,包括:获得所述测试用例聚类结果;其中,所述测试用例聚类结果为多个整数集合,每一个集合中包含了由同一软件故障导致的测试失败的测试用例的序号;获得与所述序号相对应的测试失败的测试用例,将此测试失败的测试用例与所有测试成功的测试用例组合成新的子程序谱;
步骤七,针对每一个新的子程序谱,计算此新的子程序谱中每个代码段的代码可疑度,并基于代码可疑度对此新的子程序谱中的全部代码段进行排序,根据最终得到的可疑度排名定位并修复代码段;
在进行缺陷修复后,重复执行步骤一至七,直至确定全部的对于软件的测试用例都执行成功。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京航空航天大学,未经北京航空航天大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201910592760.9/1.html,转载请声明来源钻瓜专利网。





