Page 76 - 《软件学报》2026年第1期
P. 76

吉品 等: 面向智能软件系统的测试用例生成方法综述                                                         73


                 影响分析及语义变化趋势建模, 设计了可自动验证输入变异对系统输出影响的规则或度量标准. 接下来, 本文将按
                 照具体自然语言处理任务, 进一步细致地梳理和分析现有测试用例生成方法.

                                测试挑战                      技术路径                      测试目标
                                                  基于句法结构的文本变异方法                验证被测系统在不同文
                             多样化输入特征的             基于语义特征的文本变异方法                本特征 (长度、风格、语
                                文本生成
                                                  基于任务特性的文本变异方法                法结构)下的稳健性
                                                  控制语法正确性和文本流畅性                确保被测系统在不同文
                               文本语义和              控制语义变化的幅度                    本条件下的稳定性和正
                               质量的可控
                                                  控制文本输入的适用性和公平性               确性, 并降低误报
                                                  基于人工/自动化构建的语料库               建立可自动验证的规则
                             基于上下文语义的             基于句法结构的变异影响                  或度量标准, 实现自动
                              测试预言构建
                                                  基于变异前后的语义变化趋势                化的错误输出捕获
                                     图 7 面向自然语言处理应用的测试用例生成方法研究框架

                  4.1   智能对话
                    智能对话系统通过运用自然语言理解、自然语言生成和对话管理等技术, 实现与人类通过自然语言进行交
                 互, 主要分为面向任务的对话系统和开放域对话系统                 [84] . 面向任务的对话系统专为特定领域或任务设计, 如航班
                 预订、酒店预订、客户服务和技术支持等; 而开放域对话系统则旨在支持关于任意主题的对话, 其最终目标是使
                 人机交互更加接近人与人之间的自然交流. 智能对话系统需要准确识别用户意图, 关注交互方式与情感感知, 从而
                 实现对用户问题的精准简洁回答. 本文仅讨论输入输出均为文本的智能对话系统, 不考虑输入输出为语音的系统
                 类型.
                    在基于文本的对话系统中, 文本处理流程通常由自然语言理解模块、对话管理模型和自然语言生成模块共同
                 完成. 目前, 已有研究者针对上述流程中的自然语言理解模块设计了多种测试用例生成方法. 自然语言理解模块主
                 要承担槽位填充      (slot filling) 和意图检测  (intent detection) 两项任务. 意图检测将输入句子分类至相应的意图类别,
                 有助于缩小后续模块的处理范围; 槽位填充则是在输入文本中识别关键单词并填充至预定义的语义槽位中. 针对
                 这两个任务的特性, DialTest 基于模糊测试理论使用了            3  种文本变异算子对种子文本进行变异以生成新的测试输
                 入, 并基于自然语言理解模块中语义相同输入应具有一致输出的核心思想, 设计了相应的蜕变关系                               [62] . 3  种文本变
                 异算子分别为: 使用同义词替换种子文本中的词语; 通过机器翻译将种子文本翻译至中间语言后再译回原语言; 使
                 用语言模型在种子文本中插入单词. 为了提高测试效率, DialTest 采用了                 Gini 不纯度  [85] 来引导测试用例生成过程.
                 然而, Shen  等人  [63] 和  Chen  等人  [64] 指出, DialTest 在测试用例生成过程中将所有的种子文本平等看待, 导致在无法
                 检测到缺陷的种子上消耗大量的资源. 针对这一问题, 他们分别提出了改进方法——EcoDialTest 和                         DialTest-EA.
                 EcoDialTest 优化了基于  Gini 不纯度的测试用例生成过程, 它按照种子的初始               Gini 不纯度对种子进行分类, 不同
                 类别的种子文本会采用不同的突变策略以提高新生成测试用例的                        Gini 不纯度. DialTest-EA  同样是优化了基于
                 Gini 不纯度的测试用例生成过程, 采用了基于蚁群优化算法                 (ant colony optimization, ACO) 的轻量级变异能量调
                 整策略, 能够自适应地调整各种子的变异优先级, 使潜在有效的种子有更多机会生成后续测试输入. 实验结果表
                 明, EcoDialTest 和  DialTest-EA  均能生成比  DialTest 更多能够发现缺陷的测试用例, 但两者在性能上的优劣尚有
                 待进一步比较.
                    随着大语言模型的广泛应用, 研究者们开始探索如何面向基于大语言模型的对话系统设计有效的测试用例生
                 成方法. 此类系统具有高度依赖上下文、多轮交互频繁、易受训练数据污染影响, 以及输出内容不确定性高等特
                 点. 上述特点要求在生成测试用例时, 充分考虑上下文连贯性与一致性, 并设计能够验证多轮对话逻辑及语义理解
                 能力的测试预言. 为此, Guo      等人  [65] 提出了基于多轮对话的蜕变测试工具            MORTAR. 给定原始种子测试用例,
                 MORTAR 首先通过 5 种对话级扰动         (对话轮次打乱、对话轮次减少、对话轮次复制、对话轮次打乱并减少、对
                 话轮次打乱并复制) 生成问题序列, 并对每轮问题进行可回答性检查并分配预期答案. MORTAR                            包含了  3  种可回
   71   72   73   74   75   76   77   78   79   80   81