Page 174 - 《软件学报》2026年第5期
P. 174

钱忠胜 等: 面向两阶段分组的测试用例优先级排序方法                                                      2053


                 面的问题.
                    RQ1: 本文方法的不同构件对排序性能有何影响? 是否有存在的必要性?
                    针对此问题, 在第     3.4.1  节设置了消融实验, 根据粗粒度用例分组、细粒度用例分组排序这                   2  大模块中的   3  个
                 构件组成的    6  种变体方法, 分别分析这些构件对          TPG-TCP  方法的整体影响. 实验结果表明, 这        6  种变体方法的排
                 序性能均在不同程度上不如所提方法             TPG-TCP, 说明这  3  个构件在  TCP  方面是有效的.
                    RQ2: 与经典的、较新的相关方法对比, 本文方法有何优势? 效果如何?
                    针对此问题, 第     3.4.2  节设置了对比实验, 分别将所提方法        TPG-TCP  在  6  个数据集上与  8  种相关方法做对比.
                 实验结果表明, 在平均缺陷检测百分比             (average percentage of fault detect, APFD) 和测试执行时间成本 (test
                 execution time cost, TETC) 这两个评价指标上, TPG-TCP  方法均优于其他对比方法. 这主要得益于粗粒度分组阶段
                 用例筛选过程与细粒度排序策略的改进, 可在提高排序速度的同时提高其有效性.
                    RQ3: 迭代次数对本文方法的性能有何影响?
                    针对此问题, 在第     3.4.3  节进行了迭代次数划定的实验, 分析不同迭代次数在不同规模数据集下对方法性能的
                 影响, 以便更好地平衡方法的有效性与效率, 进一步优化排序方法.
                  3.2   数据集与评价指标
                    实验均在    Windows 10 操作系统下进行, 环境为       8 GB  内存、1.8 GHz  主频的  AMD Ryzen 7 4800U 处理器
                 (16  核), 编程语言使用  Python 3. 为兼顾计算资源和时间成本等因素, 并减少随机性因素带来的影响, 每组实验运
                 行  50  次, 最终结果取其平均值     (表  7  数据以其下方说明为准).
                  3.2.1    数据集
                    我们从近期的研究       [8,11,13,15–17] 中筛选了  6  个常用数据集, 它们涵盖了从  3k  行代码的小型项目到超过       100k  行
                 代码的大型项目, 且为了对比的公平性, 尽量选择具有相似评估指标的数据集. 数据集来源如下: ① Flex、Tcas、
                 Schedule2  这  3  种数据集源自著名测试数据库     SIR (software-artifact infrastructure repository) [18] , SIR  库中的项目被
                 广泛用于评估     TCP  技术  [5,10,11,19] ; ② Jsoup  与  Jacksoncore 数据集源于  Defects4J 数据库  [20] , 常用于评估  TCP  技术,
                 在最新的   TCP  研究  [15,21] 中也得到应用; ③ Camel-core 是来源于  GitHub  上的大型开源工业项目, 其集成逻辑复杂,
                 功能多样化, 是评估      TCP  有效性的重要选择     [8] . 这  6  种开源数据集的统计信息如表     4  所示.

                                                    表 4 数据集统计信息

                                数据集             代码行数             测试用例数             突变故障数
                                 Flex            79 200             567              1 289
                                 Tcas             7 093            1 608             876
                               Schedule2          3 740            2 710             780
                                 Jsoup            4 512             41               346
                              Jacksoncore        27 908             135              351
                               Camel-core        120 248           5 623             13 005

                    已有工作    [8,11,15] 表明突变故障适用于软件测试评估, 且该技术已被广泛应用于               TCP  评估, 故本文引入突变故
                 障技术以评估不同       TCP  性能. 使用  PIT  突变工具  [22] 中的  11  个突变运算符以生成突变体, 并利用      TCE [23] 消除部分
                 重复与等价的突变体. 而等价性是不可判定的, 故               TCE  不能去除所有等价突变体, 但有助于缓解过多重复突变体
                 对方法有效性造成的影响, 最终在剩余的突变体集中为每个项目构建一个突变组. 各数据集的突变故障数见表                                   4.
                  3.2.2    评价指标
                    APFD  是当前测试用例优先级研究领域中的一个核心指标                 [8,11,15–17] , 已被广泛应用于衡量测试用例排序序列检
                 测缺陷的能力. 本文与上述工作类似, 采用            APFD  作为评价指标, 以评估各       TCP  方法的有效性. 此外, 增加      TETC
                 指标用于评估各      TCP  方法的效率.
                    1) APFD  是平均缺陷检测百分比, 用于衡量测试用例排序序列检测缺陷的能力, 该能力越强说明检测方法越
                 有效. 给定一个包含      n  个用例的测试用例集      T, P  是  T  的排序后序列, P  的  APFD  计算如公式  (4) 所示:
   169   170   171   172   173   174   175   176   177   178   179