Page 83 - 《软件学报》2021年第9期
P. 83

钱忠胜  等:面向关键字流图的相似程序间测试用例的重用                                                      2707


         用例具有更好的重用效果.
             接下来,为了证明相似程序间测试数据是否可以相互引用,实验将测试冒泡排序已经生成的测试用例重用
         到快速排序的测试用例生成中.此外,进一步证明相似程序间测试用例重用的有效性.实验另外选取了两组典型
         基准程序和 5 组工业程序作为实验对象,分别将传统算法和本文方法利用到这些程序的测试用例生成中.实验
         对象的基本信息见表 11.
                                 Table 11    Basic information of experimental subjects
                                          表 11   实验对象的基本信息
                     程序编号                  程序名称       函数个数    代码行数     程序相似度(%)       被测程序
           PG1(https://www.cnblogs.com/morethink/
                   p/8419151.html)       Bubble sorting   1      13        80        Quick sorting
                      PG2                Quick sorting   1       18
                      PG3 [2]              Sumday        1       22
                      PG4                 Test-interval  1       31        75          Sumday
            PG5(https://blog.csdn.net/wwwliuzhi/   Triangle  1   15
                article/details/78544093)                                  74         E-triangle
                      PG6                 E-triangle     1       20
           PG7(https://github.com/finnfu/stepcount)  Calculator1  18  286  73         Calculator1
                      PG8                 Calculator2   20      341
            PG9(https://github.com/vencc/game)  Gobang_algorithm1  6  265  79      Gobang_algorithm1
                      PG10             Gobang_algorithm2  5     227
            PG11(明日科技编著:《java 项目开发        ABS_check1    13      209
           实战入门》,吉林大学出版社,2017 年)                                           97        ABS_check2
                      PG12                ABS_check2    15      228
                     PG13 [2]               tcas1        8      138
                      PG14                  tcas2       10      172        76           tcas1
                     PG15 [2]              repalce1     21      516
                      PG16                 repalce2     18      446        82          repalce1
                      PG17                Calculator1   18      286        36         Calculator1
                      PG18             Gobang_algorithm1  6     265
                      PG19                Calculator1   18      286        23      测试用例无法共享
                      PG20                ABS_check1    13      209
                      PG21             Gobang_algorithm1  6     265        35
                      PG22                ABS_check1    13      209                测试用例无法共享
            说明:表中前 8 组中,同组程序出处来源相同.
                                                                       [2]
             第 2 组基准程序的 PG3 被广泛应用于验不同测试数据生成方法的有效性 ,PG4 是测试两个时间之间间隔
         多少天的函数,测试该函数与 PG3 函数输入的参数类型皆为年月日的形式;PG5 函数验证输入的 3 个数是否能
         组成三角形,PG6 函数在此基础上验证三角形是否是等腰或者等边三角形;工业程序 PG7 和 PG8 摘选自 Github
         网站不同作者编写的实现计算器功能的程序;PG7 和 PG8 实现的功能相同,但编写方式和使用的函数存在不同,
         故将 PG7 和 PG8 作为实验对象.
             PG9 是五子棋游戏的赢棋算法,PG10 是在 PG9 基础上做了一定的删减,去掉了悔棋功能.PG11 是通讯录系
         统个人信息的校验算法.PG12 增加了办公室电话的校验功能.本节对 PG9 和 PG11 两个工业程序做了不同维护
         类型的修改,用来验证本文方法是否适应于回归测试.回归测试是确认修改程序是否引入新的错误或导致其他
         代码产生错误     [29] .
             统计数据表明:回归测试占了软件测试总预算的 80%,软件维护阶段总费用 50%以上.尽管回归测试的代价
         如此之高,但它却是不可或缺的测试             [30,31] .回归测试中有效地利用已经生成的测试数据,近几年得到普遍的关
                                                             [2]
         注.程序 PG13 和 PG15 来源于 SIR 测试平台的西门子测试程序集 ,常作为程序测试的实验对象.PG14 和 PG16
         是采用不同方法对 PG13 和 PG15 更新后的程序.该组程序能够验证相似程序间测试用例的重用效果,还能够验
         证本文方法是否适合程序的回归测试.
             为了验证不相似程序之间测试用例的重用效果,实验还补充了 3 组实验(见表 11 的最后 3 组),将不相似程
         序 PG7,PG9 和 PG11 的适应度较高的测试用例相互引用.对于程序功能规模差距较大的程序,其测试用例共用
         的可能性较小.其中,程序 ABS_check1 的测试用例无法与程序 Calculator1 和 Gobang_algorithm1 的测试用例完
   78   79   80   81   82   83   84   85   86   87   88