Page 76 - 《软件学报》2025年第7期
P. 76
陈元亮 等: 分布式系统动态测试技术研究综述 2997
度少: 多数动态测试工具仅关注一个或两个维度的输入, 难以联动多个维度. 这限制了测试的效率, 因为一些潜藏
的系统缺陷需要多维度的输入才能被触发 (例如第 4.2.2 节中的缺陷 HDFS-13279). (3) 适配差: 不同分布式系统的
特性和输入语法差异较大, 跨系统适配难度高, 现有工具往往需要大量定制工作才能适用于不同类型的系统. 此
外, 分布式系统的业务逻辑差异巨大, 导致定义通用的缺陷检测器变得极为困难. 目前, 大多数工具集中在处理通
用的缺陷类型, 如性能下降、系统容错等. 然而, 涉及到更深层次的代码逻辑缺陷, 如数据存储的准确性和任务分
配的合理性等问题, 往往被现有工具忽视. (4) 复现难: 分布式系统的环境复杂、状态多变, 错误往往与多种历史交
互相关, 导致缺陷难以复现. 完整复现错误需记录并重现所有节点的执行路径, 这在实践中难以实现.
5.2 未来展望
未来的分布式系统动态测试技术可能有如下的发展方向.
(1) 多维度输入协作生成技术. 通过我们在第 4 节的初步实验, 结果显示多维度输入能够显著提高测试覆盖
率, 进而挖掘出更多的系统缺陷. 然而, 目前的多维度输入集成方式仍然相对简单, 尚未充分考虑不同维度之间的
协作与交互关系. 根据第 2 节提出的缺陷威胁模型, 我们将分布式系统的输入划分为系统配置、用户输入、节点
间消息与系统环境交互 4 个维度. 然而, 这些维度并非独立存在, 而是彼此之间存在直接或间接的依赖关系. 例如,
在分布式文件系统中, 文件存储模式通常有 3 种: DAS (块存储)、SAN (文件存储) 和 NAS (对象存储). 这些存储
模式由系统配置决定, 并且不同的存储模式会影响输入生成策略. 在对象存储模式下, 输入样例应尽量覆盖更多复
杂的对象关系; 而在文件存储模式下, 输入样例则应涵盖所有文件类型. 同样, 用户输入也会影响节点间的消息通
信和系统环境交互. 例如, 频繁的大文件输入可能触发更多的节点间数据同步消息以及更多的磁盘 IO 操作. 因此,
未来的研究应重点探讨如何高效协同生成多维度测试输入. 可以考虑通过精确构建系统各维度之间的输入关联模
型, 并基于该模型自动化生成大量高效的输入样例, 最大限度地覆盖分布式系统的代码路径, 进而发现更多潜在的
系统缺陷.
(2) 智能化通用测试输入合成. 目前测试工具即使在相同应用领域内对不同的分布式系统进行测试, 仍需大量
人力进行适配. 以分布式文件系统为例, HDFS、GlusterFS 和 IPFS 输入语法格式相似, 但将测试工具适配到新的
系统仍需对其代码进行修改, 以满足新系统的语法和语义要求. 每个分布式文件系统都有其独特的设计特征和用
户输入指令, 仅使用共同的输入语法往往会遗漏许多系统特有的逻辑特征. 跨领域的适配成本更大, 需要投入更多
的人力资源. 为了实现自动化适配, 未来可以设计统一的自动化工具, 通过将不同建模描述语言 (如 UML、ANTLR、
JSON) 或系统说明文档等定义的输入规范转化为统一的分布式输入标准模型, 并基于该模型自动生成测试输入.
此外, 未来测试输入生成还可能结合以下技术: 一是利用机器学习和数据挖掘技术, 学习和模拟真实工作负载中的
数据分布和用户输入, 生成更真实、多样化的测试输入; 二是使用符号执行技术和污点分析技术, 生成更加复杂且
能覆盖更深路径的测试输入; 三是通过大语言模型技术, 自动化适配不同类型分布式系统的测试输入, 并生成能触
发不同逻辑路径和边界情况的测试用例.
(3) 丰富化缺陷准则定义. 越丰富的缺陷检测器能够有效地识别出越多的系统缺陷. 早期, 大多数动态测试工具
都聚焦于解决分布式系统的通用问题, 如并发冲突、故障容错失效、性能下降等. 随着动态测试在分布式领域的发
展, 越来越丰富的缺陷类型逐渐被定义, 一些工具开始关注更细致领域的缺陷准则构建. 例如, Tyr 和 Phoenix 等工具
聚焦于区块链系统的去中心化共识逻辑缺陷; Chronos 探索了分布式系统中的超时处理错误缺陷; DUPTester 关注了
分布式系统升级更新时的兼容逻辑问题; ScaleCheck 等工具定义了分布式系统的可扩展性缺陷. 然而, 目前仍然存在
大量的分布式系统细分领域, 其中的关键逻辑 (例如负载均衡机制、数据备份机制等) 缺乏精准的缺陷准则定义, 导
致许多逻辑缺陷依旧潜藏在代码中. 未来, 可以在分布式系统的细分功能领域中定义更丰富、精准的缺陷准则.
(4) 自动化缺陷复现技术. 缺陷自动化复现旨在重现分布式系统中的已知或潜在缺陷, 以便进一步分析、修复
和提升系统的安全性. 这项技术在保障分布式系统的安全性和稳定性方面至关重要. 然而, 由于分布式系统的复杂
性和逻辑多样性, 动态测试中检测到的缺陷往往难以实现自动化复现. 未来可能的研究方向包括以下 3 点: (1) 基
于快照的日志重放技术: 在分布式系统运行时使用快照技术快速记录系统状态, 包括内部状态、网络通信、数据
状态等. 结合缺陷发生前的日志信息, 从最近的正常状态快照开始模拟日志行为, 以复现缺陷并定位其根本原因.

