本公开的实施例涉及信息技术及自动化,具体地,涉及适用于一种软件故障定位方法和装置。
背景技术:
1、故障定位在软件开发过程中扮演着不可或缺的角色,它是软件故障修复与质量保障的必然环节。随着用户需求的不断增长和软件规模的不断增大,软件开发过程中暴露出的故障也越来越多。
2、尽管目前各种故障定位技术已经被广泛应用,但许多方法都存在巧合正确性问题。巧合的正确性是指在测试过程中,通过的测试用例可能会执行错误的语句,而失败的测试用例执行的语句可能不会导致测试用例失败。这种情况下,测试结果并不能真实反映软件中存在的故障,给故障定位带来了困难。
技术实现思路
1、本文中描述的实施例提供了一种软件故障定位方法和装置,克服了上述问题。
2、第一方面,根据本公开的内容,提供了一种软件故障定位方法,包括:
3、获取待定位故障对应的目标程序源码,所述目标程序源码用于故障程序测试时生成故障测试数据;
4、基于所述故障测试数据中不同粒度的元素特征确定突变生成算子,并将所述突变生成算子转换为适应突变器处理的抽象表示数据;
5、基于所述抽象表示数据生成抽象突变体;
6、将所述抽象突变体转换为实际源码对应的实际突变体,并提取所述实际突变体对应不同粒度故障程度的突变特征;
7、基于所述突变特征、故障语义特征以及故障频谱特征,训练得到多个神经网络模型,并基于每个所述神经网络模型输出的故障语句可疑得分聚合的排序结果,确定软件故障程序语句的位置。
8、可选的,所述将所述突变生成算子转换为适应突变器处理的抽象表示数据,包括:
9、规范所述突变生成算子所对应程序语句的源代码形式,并将规范化后的源代码确定为一个标记符号流,所述标记符号流中包括多个标记信息,所述标记信息为标记符或标记文字;
10、生成所述标记信息对应的标识数据;
11、基于所述标记信息对应的标识数据,确定适应所述突变器处理的所述抽象表示数据。
12、可选的,所述基于所述抽象表示数据生成抽象突变体,包括:
13、构建一个rnn编码器,基于所述rnn编码器确定所述抽象表示数据所对应程序语句的第一坐标向量表示数据,所述第一坐标向量表示数据用于描述x序列;
14、构建一个rnn解码器,基于所述rnn解码器确定所述抽象表示数据所对应程序语句的第二坐标向量表示数据,所述第二坐标向量表示数据用于解码第一坐标向量数据为y序列项;
15、基于所述第一坐标向量表示数据和所述第二坐标向量表示数据,生成所述抽象突变体。
16、可选的,所述提取所述实际突变体对应不同粒度故障程度的突变特征,包括:
17、基于多种预设突变算子确定所述实际突变体的可疑得分;
18、基于每种所述故障定位技术的权重数据以及多种预设突变算子确定所述实际突变体的可疑得分,确定所述实际突变体的相似度得分;
19、基于所述实际突变体的相似度得分,确定所述实际突变体对应不同粒度故障程度的突变特征。
20、可选的,所述基于所述突变特征、故障语义特征以及故障频谱特征,训练得到多个网络模型之前,还包括:
21、提取故障语义特征,所述故障语义特征用于描述突变程序深度语义特征;
22、生成故障频谱特征,所述故障频谱特征用于描述基于定位的故障程序所生成的基于频谱的特征。
23、可选的,所述提取故障语义特征,包括:
24、将突变前的故障定位程序和突变后的故障定位程序,分别转换为不同预设数量个单词序列;
25、分别提取所述突变前的故障定位程序转后的单词序列对应的语义向量以及所述突变后的故障定位程序转后的单词序列对应的语义向量,得到所述故障语义特征。
26、可选的,所述生成故障频谱特征,包括:
27、获取用于故障定位的定制化测试套件;
28、将所述定制化测试套件输入带有所述实际突变体的源代码中,得到覆盖信息和测试用例执行结果;
29、基于所述覆盖信息和所述测试用例执行结果,生成故障频谱特征。
30、可选的,多个所述神经网络模型包括:卷积神经网络模型、双向长短期记忆网络模型和多层感知神经网络模型。
31、可选的,所述基于每个所述神经网络模型输出的故障语句可疑得分聚合的排序结果,确定软件故障程序语句的位置,包括:
32、将预设测试集输入所述卷积神经网络模型中,基于所述卷积神经网络模型的输出确定第一故障语句可疑值得分;
33、将预设测试集输入所述双向长短期记忆网络模型中,基于所述双向长短期记忆网络模型的输出确定第二故障语句可疑值得分;
34、将预设测试集输入所述多层感知神经网络模型中,基于所述多层感知神经网络模型的输出确定第三故障语句可疑值得分;
35、基于所述第一故障语句可疑值得分、所述第二故障语句可疑值得分以及所述第三故障语句可疑值得分聚合的排序结果,确定软件故障程序语句的位置。
36、第二方面,根据本公开的内容,提供了一种软件故障定位装置,包括:
37、获取模块,用于获取待定位故障对应的目标程序源码,所述目标程序源码用于故障程序测试时生成故障测试数据;
38、第一处理模块,用于基于所述故障测试数据中不同粒度的元素特征确定突变生成算子,并将所述突变生成算子转换为适应突变器处理的抽象表示数据;
39、生成模块,用于基于所述抽象表示数据生成抽象突变体;
40、第二处理模块,用于将所述抽象突变体转换为实际源码对应的实际突变体,并提取所述实际突变体对应不同粒度故障程度的突变特征;
41、第三处理模块,用于基于所述突变特征、故障语义特征以及故障频谱特征,训练得到多个神经网络模型,并基于每个所述神经网络模型输出的故障语句可疑得分聚合的排序结果,确定软件故障程序语句的位置。
42、可选的,第一处理模块,具体用于:
43、规范所述突变生成算子所对应程序语句的源代码形式,并将规范化后的源代码确定为一个标记符号流,所述标记符号流中包括多个标记信息,所述标记信息为标记符或标记文字;生成所述标记信息对应的标识数据;基于所述标记信息对应的标识数据,确定适应所述突变器处理的所述抽象表示数据。
44、可选的,生成模块,具体用于:
45、构建一个rnn编码器,基于所述rnn编码器确定所述抽象表示数据所对应程序语句的第一坐标向量表示数据,所述第一坐标向量表示数据用于描述x序列;构建一个rnn解码器,基于所述rnn解码器确定所述抽象表示数据所对应程序语句的第二坐标向量表示数据,所述第二坐标向量表示数据用于解码第一坐标向量数据为y序列项;基于所述第一坐标向量表示数据和所述第二坐标向量表示数据,生成所述抽象突变体。
46、可选的,第二处理模块,具体用于:
47、基于多种预设突变算子确定所述实际突变体的可疑得分;基于每种所述故障定位技术的权重数据以及多种预设突变算子确定所述实际突变体的可疑得分,确定所述实际突变体的相似度得分;基于所述实际突变体的相似度得分,确定所述实际突变体对应不同粒度故障程度的突变特征。
48、可选的,还包括:提取模块。
49、提取模块,用于提取故障语义特征,所述故障语义特征用于描述突变程序深度语义特征。
50、生成模块,还用于生成故障频谱特征,所述故障频谱特征用于描述基于定位的故障程序所生成的基于频谱的特征。
51、可选的,提取模块,具体用于:
52、将突变前的故障定位程序和突变后的故障定位程序,分别转换为不同预设数量个单词序列;分别提取所述突变前的故障定位程序转后的单词序列对应的语义向量以及所述突变后的故障定位程序转后的单词序列对应的语义向量,得到所述故障语义特征。
53、可选的,生成模块,具体用于:
54、获取用于故障定位的定制化测试套件;将所述定制化测试套件输入带有所述实际突变体的源代码中,得到覆盖信息和测试用例执行结果;基于所述覆盖信息和所述测试用例执行结果,生成故障频谱特征。
55、可选的,多个所述神经网络模型包括:卷积神经网络模型、双向长短期记忆网络模型和多层感知神经网络模型。
56、可选的,第三处理模块,具体用于:
57、将预设测试集输入所述卷积神经网络模型中,基于所述卷积神经网络模型的输出确定第一故障语句可疑值得分;将预设测试集输入所述双向长短期记忆网络模型中,基于所述双向长短期记忆网络模型的输出确定第二故障语句可疑值得分;将预设测试集输入所述多层感知神经网络模型中,基于所述多层感知神经网络模型的输出确定第三故障语句可疑值得分;基于所述第一故障语句可疑值得分、所述第二故障语句可疑值得分以及所述第三故障语句可疑值得分聚合的排序结果,确定软件故障程序语句的位置。
58、第三方面,提供一种电子设备,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
59、存储器,用于存放计算机程序;
60、处理器,用于执行存储器上所存放的程序时,实现上述任意一种软件故障定位方法的步骤。
61、第四方面,提供了一种计算机可读存储介质,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现上述任意一种软件故障定位方法的步骤。
62、第五方面,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述任一种软件故障定位方法的步骤。
63、本技术实施例提供的软件故障定位方法,旨在缓解基于覆盖的故障定位方法中偶然性成功测试用例对故障定位结果的负面影响。通过获取待定位故障对应的目标程序源码,目标程序源码用于故障程序测试时生成故障测试数据;基于故障测试数据中不同粒度的元素特征确定突变生成算子,并将突变生成算子转换为适应突变器处理的抽象表示数据;基于抽象表示数据生成抽象突变体;将抽象突变体转换为实际源码对应的实际突变体,并提取实际突变体对应不同粒度故障程度的突变特征;基于突变特征、故障语义特征以及故障频谱特征,训练得到多个神经网络模型,并基于每个神经网络模型输出的故障语句可疑得分聚合的排序结果,确定软件故障程序语句的位置。如此,利用突变分析技术和深度学习模型相结合,通过分析软件系统在不同输入条件下产生的输出变化,定位出软件故障程序语句的具体位置,降低巧合正确性对软件故障定位准确性的影响。
64、上述说明仅是本技术实施例技术方案的概述,为了能够更清楚了解本技术实施例的技术手段,而可依照说明书的内容予以实施,并且为了让本技术实施例的上述和其它目的、特征和优点能够更明显易懂,以下特举本技术的具体实施方式。