1.一种基于条件概率的程序错误定位方法,包括如下步骤:
(1)统计软件程序中各条语句在每组测试用例下的语句覆盖情况,得到对应的语句覆盖矩阵;
(2)统计每组测试用例在软件程序运行下的执行结果:正确或错误;
(3)对于软件程序中的任一条语句s,构建由概率Pfe、Pef、Pte、Pet和Ptn所组成的条件概率模型;其中,Pfe表示在执行语句s的情况下软件程序运行结果为失败的概率,Pef表示在软件程序运行结果为失败的情况下执行语句s的概率,Pte表示在执行语句s的情况下软件程序运行结果为成功的概率,Pet表示在软件程序运行结果为成功的情况下执行语句s的概率,Ptn表示在不执行语句s的情况下软件程序运行结果为成功的概率;
(4)根据所述的条件概率模型计算语句s的错误可疑度并依此遍历软件程序中的所有语句;进而根据所述的错误可疑度从高到低对软件程序中的语句进行排序并逐条进行错误排查。
2.根据权利要求1所述的程序错误定位方法,其特征在于:所述语句覆盖情况的定义为:以某一测试用例作为软件程序的输入,若软件程序对于该测试用例的整个运行过程中执行了某一条语句,则该语句在该测试用例下的语句覆盖情况表示为1,否则表示为0。
3.根据权利要求1所述的程序错误定位方法,其特征在于:所述语句覆盖矩阵的维度为m×n,m为软件程序中的语句总数,n为测试用例总数;该矩阵中第i行第j列的元素值为第i条语句在第j组测试用例下的语句覆盖情况,i和j均为自然数且1≤i≤m,1≤j≤n。
4.根据权利要求1所述的程序错误定位方法,其特征在于:所述概率Pfe、Pef、Pte、Pet和Ptn的计算表达式如下:
其中,a11表示软件程序对于测试用例的整个运行过程中执行了语句s且测试用例在软件程序运行下执行结果为正确的测试用例个数,a10表示软件程序对于测试用例的整个运行过程中执行了语句s且测试用例在软件程序运行下执行结果为错误的测试用例个数,a00表示软件程序对于测试用例的整个运行过程中未执行语句s且测试用例在软件程序运行下执行结果为错误的测试用例个数,a01表示软件程序对于测试用例的整个运行过程中未执行语句s且测试用例在软件程序运行下执行结果为正确的测试用例个数。
5.根据权利要求1所述的程序错误定位方法,其特征在于:所述步骤(4)通过以下公式计算语句s的错误可疑度并依此遍历所有语句;
susp(s)=a11(Pfe+Pef)
其中:susp(s)为语句s的错误可疑度,a11表示软件程序对于测试用例的整个运行过程中执行了语句s且测试用例在软件程序运行下执行结果为正确的测试用例个数。
6.根据权利要求1所述的程序错误定位方法,其特征在于:所述步骤(4)通过以下公式计算语句s的错误可疑度并依此遍历所有语句;
其中:susp(s)为语句s的错误可疑度。
7.根据权利要求1所述的程序错误定位方法,其特征在于:所述步骤(4)通过以下公式计算语句s的错误可疑度并依此遍历所有语句;
susp(s)=a11(Pfe+Pef)
其中:susp(s)为语句s的错误可疑度,a11表示软件程序对于测试用例的整个运行过程中执行了语句s且测试用例在软件程序运行下执行结果为正确的测试用例个数;
根据错误可疑度从高到低对软件程序中的语句进行排序并逐条进行错误排查,当排查比达到40%时仍未查找到错误语句,则通过以下公式重新计算剩余60%语句的可疑度,进而根据该可疑度从高到低对剩余60%的语句进行排序并逐条进行错误排查: