Page 58 - 《软件学报》2025年第7期
P. 58
陈元亮 等: 分布式系统动态测试技术研究综述 2979
环境中发现的集成问题.
3 分布式系统动态测试的关键技术
本节介绍了分布式系统动态测试的 3 项关键技术: 测试输入生成、系统状态感知和缺陷判断准则构建. 这些
技术在动态测试中相互关联、协同工作, 提升测试工具的效率和准确性. 根据图 3 的分布式系统动态测试框架, 测
试工具面临输入语法语义正确性、输入空间高效探索、测试准则制定和缺陷判定等挑战. 这 3 项技术共同应对这
些挑战: 测试输入生成技术提供多样化的输入, 帮助测试工具覆盖更多情况; 缺陷判定准则构建技术帮助识别和判
定测试结果的合法性; 系统状态感知技术则起承上启下的作用, 通过监测系统状态, 一方面优化测试输入的探索策
略, 另一方面为判定准则提供实时数据. 这些技术的结合可有效提高动态测试工具的效率, 帮助发现分布式系统中
的潜在缺陷, 提高系统的稳定性和可靠性.
3.1 测试输入合成技术
测试输入生成技术是动态测试的基石, 旨在生成覆盖丰富系统逻辑的测试输入, 以尽可能多地覆盖目标代码
并触发潜在缺陷. 与传统应用程序相比, 分布式系统的测试入口维度更多, 场景更加复杂. 基于图 2 的分布式系统
运行流程, 测试输入生成通常需关注 4 个主要维度: 系统配置生成、用户请求负载 (workload) 合成、节点消息构
造以及环境错误注入.
3.1.1 系统配置生成技术
在分布式系统测试中, 将系统配置作为测试输入可以全面评估系统在不同配置下的行为和性能, 揭示配置相
关的逻辑错误和性能问题, 保障系统在各种环境中稳定运行. 系统配置生成技术的核心在于根据系统配置项的语
法规则和语义约束, 生成具有复杂性和多样性的配置文件, 以触发系统在不同网络架构和运行环境下的异常行为
(如崩溃、资源泄露等) 和处理逻辑错误 (如性能优化失败、配置加载错误等). 由于配置文件结构复杂, 对语法和
语义要求严格, 生成合法且有效的高质量配置文件成为测试工具的关键挑战. 如图 4 树状模型所示, 一个分布式系
统配置通常包含两个主要部分: 通用系统配置 (common configuration) 和特定系统配置 (specific configuration). 在
通用系统配置下, 有节点、网络规模、CPU 使用、内存使用和硬件资源等子分支. 在特定系统配置下, 有数据存
储格式、查询优化选项和负载均衡策略等子分支. 目前, 根据配置输入执行模式的不同, 系统配置生成工具主要分
为: 系统静态配置生成技术和系统配置动态 (on-the-fly) 更新技术.
分布式系统配置
通用系统配置 特定系统配置
网络 节点 资源 … 查询优化 负载均衡 …
通信方式 拓扑 带宽 … 规模 机器架构 … CPU 内存 磁盘 缓存设置 … 数据迁移
加密方式 … 缓存大小 缓存策略 …
图 4 分布式系统一般配置模型
3.1.1.1 系统静态配置生成
测试工具通过基于系统配置项生成配置文件作为测试输入, 并循环加载这些配置文件来启动待测分布式系统
进行测试. 首先, 根据待测系统的配置语法和语义预先定义生成规则, 然后依照这些规则生成大量配置文件. 为了
保障生成的配置文件语法和语义正确且多样化, 通常会建立一个配置输入模型, 该模型概括了关键配置选项的语

