1.一种基于次数频谱与神经网络算法的软件缺陷定位方法,其特征在于,具体包括以下步骤:步骤一:执行正确的测试用例,并得到执行结果;
在不同待测程序中分别包含有正确的测试用例,运行完正确的测试用例并保存相应的执行结果;
步骤二:执行所有的包含不同错误的测试用例集,并保存结果;
不同的待测程序中分别包含有各自带有不同错误的测试用例集,执行所有的错误测试用例集,得到对应的结果;
步骤三:根据程序运行,收集程序分支触发频谱和程序分支计数频谱;
在Ubuntun系统中使用GCC对源程序进行编译处理,然后使用Gcov工具收集测试用例的语句覆盖信息和执行结果,得到程序分支触发频谱和程序语句计数频谱;其中程序分支触发频谱收集程序语句是否执行,程序分支触发频谱收集程序语句执行的次数;
步骤四:把收集到的程序频谱输入神经网络中,训练得到一个稳定的神经网络模型;
步骤五:设置虚拟单位矩阵,输出每条语句的可疑值;
在神经网络中设置一个等同于程序语句的单位矩阵作为虚拟矩阵,得到每条语句的可疑值;
步骤六:排除偶然性正确测试用例的干扰;
在成功测试用例集中查找与失败测试用例语句覆盖信息完全一致的测试用例,称之为偶然性正确测试用例,把偶然性正确测试用例的执行结果改为失败,或者删除偶然性正确测试用例;
步骤七:根据EXAM值对程序语句进行排序,从高到低依次检查程序语句是否包含错误,直到找到错误语句。