1.一种基于mRMR算法挑选可疑度公式的程序错误定位方法,包括如下步骤:(1)统计软件程序中各条语句在每组测试用例下的语句覆盖情况,得到对应的语句覆盖矩阵;
(2)统计每组测试用例在软件程序运行下的执行结果:正确或错误;
(3)根据语句覆盖情况以及执行结果计算每条语句的程序频谱数据;
(4)对于任一可疑度公式,根据程序频谱利用该公式计算软件程序中每条语句的错误可疑度,进而根据错误可疑度从高到低的顺序对所有语句进行排序得到语句排序列表;
(5)根据步骤(4)遍历通过基因编程技术生成的所有可疑度公式,得到这些可疑度公式所对应生成的语句排序列表;
(6)根据可疑度公式的语句排序列表采用mRMR算法计算公式之间的相关性,并根据计算结果挑选出一定数量的可疑度公式;
(7)对于软件程序中的任一条语句,利用所挑选出的可疑度公式计算出该语句的错误可疑度并组成向量作为输入,以该语句在软件程序中是否为错误语句作为标签,选择机器学习算法对其进行训练,训练完成得到语句错误可疑度估计模型;
(8)对于需要进行错误定位的软件程序,利用所述估计模型计算出其中每一条语句的错误可疑度,根据错误可疑度从高到低对所有语句进行排序并逐条进行错误排查。
2.根据权利要求1所述的程序错误定位方法,其特征在于:所述步骤(1)中语句覆盖情况的定义为:以某一测试用例作为软件程序的输入,若软件程序在整个运行过程中执行了某一条语句,则该语句在该测试用例下的语句覆盖情况表示为1,否则表示为0。
3.根据权利要求1所述的程序错误定位方法,其特征在于:所述步骤(1)中语句覆盖矩阵的大小为m×n,m为软件程序中的语句总数,n为测试用例总数;该矩阵中第i行第j列的元素值为第i条语句在第j组测试用例下的语句覆盖情况,i和j均为自然数且1≤i≤m,1≤j≤n。
4.根据权利要求1所述的程序错误定位方法,其特征在于:所述步骤(3)中对于软件程序中的任一条语句s,其程序频谱数据包括了以下四个因子:a11表示软件程序对于测试用例的整个运行过程中执行了s且执行结果为正确的测试用例个数;
a00表示软件程序对于测试用例的整个运行过程中未执行s且执行结果为错误的测试用例个数;
a10表示软件程序对于测试用例的整个运行过程中执行了s且执行结果为错误的测试用例个数;
a01表示软件程序对于测试用例的整个运行过程中未执行s且执行结果为正确的测试用例个数。
5.根据权利要求1所述的程序错误定位方法,其特征在于:所述步骤(5)中通过基因编程技术生成可疑度公式的具体过程为:首先初始化生成一定规模的种群,使种群中个体进行交叉、变异操作后生成子代个体,比较子代个体与父代个体的适应度,使适应度较优的子代个体替换掉父代个体,保持种群规模不变,从而完成一次迭代过程;依此完成多次迭代或种群的整体适应度水平达到所需的要求,则终止该过程并输出当前种群;所述适应度即通过个体对应的可疑度公式定位到错误语句所排查的语句数量占整个程序语句总数量的百分比。
6.根据权利要求1所述的程序错误定位方法,其特征在于:所述步骤(7)中的机器学习算法可选用随机森林算法或支持向量机算法。
7.根据权利要求1所述的程序错误定位方法,其特征在于:所述步骤(8)中对于需要进行错误定位的软件程序,利用步骤(6)所挑选出的可疑度公式计算程序中每一条语句的错误可疑度,对于任一条语句,将各个可疑度公式对其计算得到的错误可疑度组成向量形式输入至模型中,得到由模型估计出的语句错误可疑度。
8.根据权利要求1所述的程序错误定位方法,其特征在于:该方法对已有的软件程序错误定位方法进行了分析和改进,在原来的方法基础上使用基因编程生成可疑度计算公式并引入mRMR算法进行挑选;该方法考虑公式之间相关性而引入mRMR算法进行筛选,使用所选公式计算软件程序语句的可疑度分数,将其作为特征输入机器学习算法中进行模型训练,最后利用所构建的错误定位模型进行有效错误定位,能够高效并准确地对软件程序中的错误语句进行定位;实验结果表明,大多数情况下,该方法比经典错误定位技术更有效,在整体错误定位效果上具有明显优势。