Page 66 - 《软件学报》2026年第1期
P. 66
吉品 等: 面向智能软件系统的测试用例生成方法综述 63
Key words: artificial intelligence software system; software testing; test case generation; deep learning
近年来, 人工智能 (artificial intelligence, AI) 技术发展迅猛, 在多个研究领域取得了重要突破, 常见的人工智能
[2]
[1]
[4]
[3]
应用包括语音识别及理解 (如 Siri 和 Alexa ), 自然语言理解及生成 (如 ChatGPT 和 ERNIE Bot ), 自动驾驶汽
[5]
[6]
车 (如 Waymo 和 Cruise ) 等. 人工智能技术的普及已经改变了人们的生活方式 [7] . 与此同时, 核心组件为人工智
能模型的智能软件系统的质量问题也受到关注. 智能软件与传统类型的软件一样, 会存在软件缺陷. 这些缺陷有时
会带来严重后果, 轻则是经济损失 [8] , 重则可能引发人身安全威胁 [9] 和政治纠纷 [10] . 因此, 对智能软件系统进行充
分和完备的测试至关重要, 我们迫切需要找到潜在缺陷以准确地评估这类系统在真实应用场景中的性能, 为进一
步提升智能软件的质量提供数据基础和迭代改进思路.
当前, 标准的人工智能模型评估范式是使用基准数据集中的验证集或者测试集来获取表示模型性能的一些指
标, 比如准确率 (Accuracy), 精确率 (Precision) 和召回率 (Recall) 等 [11] . 然而, 基准数据集中的验证集和测试集有着
和训练集相同的数据偏差, 这会导致被测对象在真实应用场景中的性能被高估 [12,13] . 因此, 使用标准的评估范式获
取到的评估结果并不精确, 但高昂的收集及处理成本又使得高质量的测试数据非常稀缺. 并且, 使用聚合的统计结
果来反映模型或系统的性能, 不利于找出缺陷的具体表现形式, 难以继续探索对应的修复方式 [14] . 除此之外, 现有
研究表明, 使用基准数据集进行评估并不能真实地反映出系统的各项能力水平, 无法分辨出模型开发者是否使用
了一些“技巧”来提升模型的性能 [15] . 比如, 用户常要求自然语言处理应用拥有较强的词语辨析、语义理解等能力.
如果仅依据上述指标, 测试人员无法判断出机器阅读理解、智能问答等应用程序是否使用了句式匹配、关键词记
忆等“技巧”去回答用户的问题, 因此也就无法明确被测对象是否真正达到了预设目标.
为了解决当前存在的问题, 研究人员已经聚焦于智能软件系统的测试方法的研究. 与传统软件不同, 智能软件
系统中的所有决策逻辑都是从大规模数据集学习得到, 具有内部结构复杂, 参数规模巨大等特点, 难以使用传统的
软件测试技术进行测试. 目前, 研究人员已经提出了多种面向智能软件系统的测试用例生成方法, 这些方法能够通
过使用合适的生成策略产生多样化的测试用例, 确保能够覆盖包括边界条件的不同测试场景. 同时, 为保证测试用
例的有效性与结果的可靠性, 还需在多样化生成的基础上注重维护测试用例的一致性和准确性. 根据测试用例的
执行结果, 测试人员能够进一步分析得出智能软件系统在正确性、鲁棒性、安全性和公平性等多个维度的表现情
况. 因此, 遵循数据驱动的测试思路, 探究如何使用足够且适配的测试用例对智能软件系统的一般行为和边界条件
下的行为进行评估是必要和可行的. 在测试用例生成过程中, 不同类型的测试输入对测试效果具有重要影响. 智能
软件系统的测试输入可分为对抗输入和自然输入, 其中对抗输入是在原始输入中增加扰动, 可能偏离正常数据分
布; 而自然输入指属于实际应用场景数据分布的输入 [16] . 本文重点关注基于应用领域特征生成自然输入测试用例
的相关工作.
目前, 已有多篇文献从不同的角度对现有的机器学习 (machine learning, ML) 以及深度学习 (deep learning,
DL) 测试领域的相关研究成果进行了综述. Xiang 等人 [17] 总结了用于机器学习、自治系统以及神经网络的形式化
验证方法, 并重点关注如何确保信息物理融合系统的安全性. Huang 等人 [18] 从验证、测试、对抗攻击和可解释性
这 4 个方面, 对深度神经网络 (deep neural network, DNN) 的安全性和可靠性相关的研究工作进行了综述. Zhang
等人 [16] 梳理了机器学习测试中的测试属性、测试组件、测试流程以及应用场景, 并进一步分析了数据集特点, 总
结了研究趋势. Braiek 等人 [19] 从发现的错误类型对机器学习测试方法进行了分类总结, 包括检测数据质量、检测
机器学习模型概念化错误以及模型实现错误的方法. 王赞等人 [20] 从深度神经网络测试度量指标、测试输入生成、
测试预言方面对已有深度神经网络测试的研究成果进行了系统梳理.
虽然上述综述从不同角度总结了相关测试领域的工作, 但大多侧重于测试方法的技术属性或通用性讨论, 未
能充分体现不同应用领域中的独特测试需求和挑战. 特别是对于智能软件系统, 由于应用场景、任务目标及输入
数据特征的差异, 不同领域的系统往往需要定制化的测试用例生成方法. 为此, 本文从应用领域角度出发, 结合系
统任务目标, 梳理与归纳以人工智能模型为核心、数据模态多样、应用场景各异的智能软件系统的测试用例生成
方法, 相较于以往综述更突出领域差异性与针对性. 本文充分调研了智能软件测试领域的相关研究成果, 重点关注

