Page 79 - 《软件学报》2026年第2期
P. 79

558                                                        软件学报  2026  年第  37  卷第  2  期


                 检测到更多的缺陷. 这表明被测智能问答系统在对问题的推理与理解方面更弱. 对于                           BoolQ  数据集, ERC  与  ERQ
                 之间的相对差距相较于其他数据集更大              (约相差   3–4  倍). 这是由于  BoolQ  包含的测试输入均为一般疑问句, 可用
                 “yes”或“no”进行回复, 而两种基本蜕变关系中的逻辑推理均为同向推理, 导致生成测试输入的答案更容易与原始
                 测试输入答案保持一致. 基于高阶变异的蜕变关系                ERQC  检测到的缺陷数量显示在表          4  的底部一行. 值得注意的
                 是, 在所有的数据集中, 高阶变异均检测到了最多的缺陷, 具备最大的揭错率, 且在不同的智能问答系统中高阶变
                 异的平均效果最好.
                    ● 基于依存句法分析的选择策略对真阳性的贡献. QALT                旨在通过选择策略得到语法正确、语义流畅的自然
                 测试输入. 本文提出的基于依存句法分析的精准测试输入选择策略从一定程度上保证了所生成测试输入的语法正
                 确性, 从而提高了测试输入的精准度. 为了评估               QALT  的测试精准度, 本文设计了一个          QALT  的变体   QALT–.
                 QALT–关闭了   QALT  中的基于依存分析的选择策略. 接着, 我们分别为               QALT  和  QALT–基于每个数据集均随机
                 选择固定数量报告出来的缺陷, 并通过人工检查来判断是否是真正的缺陷. 然后, 两位研究人员独立对采样数据中
                 每一个报告出来的缺陷进行标记. 对于每个测试输入, 如果两位研究人员                       1) 能够很好地理解问题的含义; 2) 可以
                 根据上下文找到问题的正确答案; 3) 认定模型预测答案与预期答案有不同含义, 那么他们会将检测到的缺陷标记
                 为真阳性. 对于标记结果, 两位研究人员之间的              Cohen’s Kappa 一致性得分  [48] 为  0.86. 对于标记不一致的数据, 研
                 究人员邀请了第      3  位专家共同讨论, 最终消除了所有的分歧. 表           5  展示了采样数据的真阳性标注结果. 表中每个数
                 字代表每个数据集和测试技术产生的             100  个缺陷样本中真阳性比率. 例如, 单元格内数字为             87%  表示  QALT  基于
                 BoolQ  数据集检测到缺陷中的       100  个样本里有  87  是真阳性缺陷和     13  个误报数据. 从表   5  中可以看出, 与   QALT–
                 相比, QALT  在所有  3 个数据集上均提升了检测到缺陷的真阳性率, 平均达到了                 86.67%. 其中, 真阳性率 =  1−误报率.

                                               表 5 检测到缺陷的真阳性率 (%)

                              测试技术           BoolQ        SQuAD2         NarQA        平均值
                               QALT           87            88            85           86.67
                              QALT–           63            71            66           66.67

                    由于  QALT  结果仍然存在部分误报, 因此, 我们进一步分析这些误报产生的原因. QALT                    中发现的剩余误报大
                 致可以分为两类. 第      1  类是由于在提取名词的过程中, 测试集中的某些测试输入会包含“you”“him”等指示代词. 这
                 些词语本身指代上下文中的某些事物, 放入生成模型后没有实际语义, 变异后所产生的新测试输入并不能保证与
                 变异之前是语义一致的. 例如, 在原始问题“can a widower marry his sister in law?”中提取到名词词组“his sister”后,
                 不论生成的描述性语句如何, 如“his sister is a 16 year old girl, is can a widower marry a 16 year old girl in law?”都无
                 法在不阐述“widower”的前提下对“his sister”产生实际的语义. 第         2  类是在生成描述性语句的过程中, 存在一词多
                 义的情况. 例如在“What type of musical instruments did the Yuan bring to China?”中, 提取出名词词组“the Yuan”. 此
                 处的“Yuan”指的是 “元朝、元代”, 但在生成模型生成的描述性语句“the Yuan”中, 其指代“人民币”. 所以, 由于该描
                 述性语句与原文的实际含义存在出入, 造成替换后的测试输入与原始测试输入语义不一致, 从而引发了误报. 经分
                 析发现, QALT   的测试结果中由语法结构变化引起的误报已经基本消失, 而上述的两类误报是由方法所使用的自
                 然语言处理工具和生成模型存在差错而引起的, 与测试输入的语法结构无关. 该发现体现了基于依存分析的选择
                 策略在降低测试输入误报率的有效性.
                  5.2.3    针对问题  3  的结果分析
                    研究问题    3  旨在研究  QALT  是否可以产生有助于修复缺陷的新数据集. 本文使用新数据集对模型进行微调,
                 这种基于数据增强的修复方法已被广泛应用于智能问答系统                      [37] 和其他深度学习软件    [49,50] 中. 与传统软件修复不
                 同, 基于大型语言模型开发的软件训练代价十分昂贵. 为了减少对待测问答系统的训练耗时, 本文使用了最前沿的
                 低秩适配器    LoRA [51] 作为修复方法. LoRA  利用对应修复任务的数据, 只通过训练新加部分参数来适配下游任务.
                 当训练好新的参数后, 利用重参的方式, 将新参数和原参数合并, 这样既能在新任务上达到修复整个模型的效果,
                 又不会增加推断的耗时, 从而极大程度地节省修复过程的开销. 由于待测模型中只有                           ChatGLM  模型为开源模型,
   74   75   76   77   78   79   80   81   82   83   84