Page 254 - 《软件学报》2021年第7期
P. 254

2172                                     Journal of Software  软件学报 Vol.32, No.7,  July 2021

                    同时设计了如下 8 个测试用例:t 1 (6,3,6)、t 2 (4,1,4)、t 3 (4,2,2)、t 4 (1,5,1,)、t 5 (1,0,1)、t 6 (2,4,1)、t 7 (0,4,1)
                 和 t 8 (0,0,1).程序语句的覆盖信息及使用 Tarantula 和 FLPI 方法对示例程序的定位结果见表 2.其中,“语句”表示
                 程序相关的语句;“覆盖信息”表示在各个测试用例执行过程中对各个语句的覆盖情况;“排名”表示用 Tarantula
                 方法和我们的方法分别计算得到的各个语句出错怀疑度值的排名.
                                           Table 2    The result of the example program
                                                    表 2   示例程序结果
                                                          覆盖信息                           排名
                              语句
                                           t 1   t 2   t 3   t 4   t 5   t 6   t 7   t 8  Tar  FLPI
                               s 1                                         3       6 (0.757)
                               s 2                                         3       6 (0.757)
                               s 3                                         3       4 (1.567)
                               s 4                                         3       6 (0.757)
                               s 5                                         3       5 (1.379)
                               s 6                                         3       11  (0.511)
                               s 7                                         3       6 (0.757)
                               s 8                                         2       3 (2.006)
                               s 9                                         3       6 (0.757)
                              s 10                                         1       1 (3.614)
                              s 11                                         12     12 (0.264)
                              s 12                                         3       2 (2.025)
                              结果           F    F    F    T    T    T    T   T    3-11       5-5

                    针对上述的示例程序,我们来介绍 FLPI 方法的定位过程.首先根据控制流图及各节点的 IN、OUT、REF、
                 DEF 集获取程序所有执行路径中的不同数据依赖关系,例如语句节点 5 的 IN 集为(1,x)、(2,y)、(3,z)和(4,m),OUT
                 集为(5,x)、(2,y)、(3,z)和(4,m),REF 集为 x 和 z,而 DEF 集则为 x.针对语句节点 5,将其 REF 集中的使用变量与
                 IN 集中的流入变量进行对比,由此可以建立 P l 关系(1,5,x)和(3,5,z),同理可以得到所有执行路径中的其他数据依
                 赖关系,分别为(2,4,y)、(3,8,z)、(3,10,z)、(3,11,z)、(4,9,m)、(5,6,x)、(5,7,x)、(5,8,x)、(5,10,x)、(6,11,y)、(8,10,x)、
                 (10,12,r)和(11,12,r).
                    接下来结合程序语句覆盖信息和所有执行路径中的数据依赖关系对示例程序进行路径分析,得到 P l 的覆
                 盖信息并计算其相应的信息熵等值,所得结果见表 3.

                                               Table 3    The result of path analysis
                                                    表 3   路径分析结果
                                               覆盖信息                              计算结果
                         P l 信息
                                   t 1   t 2   t 3   t 4   t 5   t 6   t 7   t 8  N CF   N US   N CS   N UF  Sus
                         (1,5,x)                              3      0     5      0    0.757
                         (2,4,y)                              3      0     5      0    0.757
                         (3,5,z)                              3      0     5      0    0.757
                         (3,8,z)                              1      4     1      2    1.459
                         (3,10,z)                             3      3     2      0    3.786
                         (3,11,z)                             0      2     3      3    0.264
                         (4,9,m)                              3      0     5      0    0.757
                         (5,6,x)                              3      0     5      0    0.757
                         (5,7,x)                              3      0     5      0    0.757
                         (5,8,x)                              1      4     1      2    1.459
                         (5,10,x)                             3      3     2      0    3.786
                         (6,11,y)                             0      2     3      3    0.264
                         (8,10,x)                             1      5     0      2    3.099
                        (10,12,r)                             3      3     2      0    3.786
                        (11,12,r)                             0      2     3      3    0.264
                         结果        F   F   F    T   T   T   T    T

                    与 s 5 语句相关的 P l 为(1,5,x)、(3,5,z)、(5,6,x)、(5,7,x)、(5,8,x)和(5,10,x),以(1,5,x)为例,其信息熵等值计算
                 如下:
                                           N          N       5       5
                                H(P)=      S    log  S    =     log  =0.42, H(F)=0.53,
                                                                
                                                                        
                                           N   S  N F  N   S  N F   53  5 3
   249   250   251   252   253   254   255   256   257   258   259