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

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


                  1.2   面向智能软件系统的测试用例生成
                    智能软件系统具有处理数据模态多样、内部结构复杂、应用场景多变的特性, 这导致在测试过程中难以模拟
                 出接近真实应用场景中的测试输入和构建出正确全面的测试预言. 若依赖人工从真实应用场景收集测试数据, 随
                 着测试需求的增加, 将面临人工标注成本高昂和测试场景覆盖率难以控制的问题. 目前, 已经有许多研究人员从智
                 能软件系统完成的任务目标及输入数据的特性入手, 提出了多种面向不同应用领域的测试用例生成方法以解决上
                 述挑战  [16] . 通常来说, 针对智能软件系统的测试用例生成方法都包含测试输入生成和测试预言生成这两个步骤.
                 为了提升测试效率, 有的研究者会在测试用例生成过程中使用引导算法, 以提高生成的测试用例质量. 测试输入生
                 成和测试预言生成方法都需要基于被测智能软件系统的所在应用领域、完成任务以及输入数据的特征进行设计,
                 输入数据和测试预言共同构成一个完整的测试用例.
                    图  1  描述了当前面向智能软件系统的测试用例生成方法的研究框架. 在构造测试输入时, 模糊测试方法常被
                 用于自动化生成测试输入, 通过对种子输入数据实施随机变换或者按照特定规则变换, 来获取到多个新输入, 以缓
                 解测试数据获取困难的问题          [38] . 除此之外, 变异测试、符号执行等方法都被用于生成输入数据. 在测试预言生成
                 中, 研究者们通常采取蜕变测试和差分测试方法, 以应对正确输出难以获取和确定的问题. 蜕变测试是通过构造被
                 测对象的输出与测试输入之间相应的变化关系来解决预言缺失的问题, 这种关系被称为蜕变关系, 通常由研究者
                 自行定义   [39] . 差分测试是通过向一系列基于相同规约实现的应用程序提供相同的输入来观察他们的输出是否一
                 致, 若不一致则认为输出存在错误          [40] . 在测试用例的生成过程中, 受传统软件测试中覆盖率指标的启发, 研究者们
                 提出了多种面向智能软件系统的测试覆盖度量指标, 用于指导测试过程. 其他常见的提升测试效率的方法还包括
                 基于统计学设计的测试优先级排序方法和基于遗传算法的测试用例检索方法.

                                                          应用领域
                               图像处理应用         自然语言处理应用          语言处理应用          多模态处理应用
                                   图像识别           对话系统             语音识别            自动驾驶
                                   目标检测           机器翻译             语音生成            智能绘画
                                   …                …               …                …
                               领域、任务及数据特征                                  使用测试用例捕获缺陷
                                  测试输入生成                测试预言生成                测试引导算法
                                    数据类型             测试预言问题: 在给定输入的         测试引导目标: 提升测试效
                                                   情况下, 如何确定测试用例是通       率, 包括提高生成测试用例的覆
                              文本    图像   语音   点云
                                     ……            过还是失败                 盖度、捕获到的缺陷的多样性等
                                                                         神经元     Gini
                               模糊测试        变异测试      蜕变测试        差异测试                  遗传算法
                                      …                     …            覆盖率     不纯度
                                                                                  …
                                                      自动化生成测试用例
                                       图 1 面向智能软件系统的测试用例生成方法研究框架

                    由于不同应用领域的智能软件系统在输入数据特征和任务目标上存在显著差异, 这些差异直接影响测试用例
                 生成方法的设计与适用性. 因此, 从应用领域视角对测试用例生成方法进行分类和分析, 能够揭示领域特定的测试
                 需求和挑战, 并为研究人员设计针对性测试方法提供指导. 为此, 本文在归纳相关文献的基础上, 基于智能软件系
                 统的应用领域及任务目标, 对测试用例生成方法进行系统梳理与总结, 以填补现有综述在领域针对性分析及应用
                 适配性分析方面的空白, 并构建更具实践意义的研究框架. 首先, 本文将智能软件系统按照人工智能技术的应用领
                 域进行初步划分, 并根据系统实现的任务目标进行进一步归纳. 这样的分类方式不仅揭示了不同测试方法在应对
                 特定领域挑战中的适配性, 还通过任务目标的进一步归纳, 体现了测试需求与系统功能的紧密关联.
                    具体来说, 智能软件系统可分为图像处理应用、自然语言处理应用、语音处理应用、点云处理应用以及多模
                 态数据处理应用等. 这些领域划分涵盖了当前人工智能技术在智能软件系统中的主要应用方向, 并有效反映了不
   63   64   65   66   67   68   69   70   71   72   73