Page 70 - 《软件学报》2025年第7期
P. 70
陈元亮 等: 分布式系统动态测试技术研究综述 2991
EOS 等) 的共识设计文档, 总结了 4 个通用的共识缺陷判断准则: (1) 活性缺陷准则: 所有合法交易最终都应被执
行并存入区块链中; (2) 安全缺陷准则: 所有不合法交易 (如双花交易) 最终不应被执行或存入区块链中; (3) 公平性
准则: 所有参与共识的节点当选 leader 节点的概率应公平公正; (4) 完整性缺陷准则: 整个区块链网络应处于连通
状态, 不存在硬分叉. 基于这 4 个缺陷判断准则, Chen 等人设计实现了区块链共识逻辑缺陷检测器 Tyr. 对于第 1
和第 2 个缺陷准则, Tyr 基于区块链的全局状态信息, 构建一系列合法和不合法交易, 并创建预期状态列表. 在测
试过程中, Tyr 实时监控全局状态信息, 判断状态是否符合预期值. 针对第 3 和第 4 个缺陷准则, Tyr 通过实时获取
的区块链关键状态信息, 判断分布式节点的各自当选 leader 数与区块高度差异是否正常. 借助这 4 个缺陷判断准
则, Tyr 在 6 个主流区块链系统上成功发现了 20 多个新的共识逻辑缺陷.
3.3.6 基于大数据分析的性能测试准则
在分布式系统中, 尽管一些性能缺陷不会直接导致系统停止工作或无法提供服务, 但其对系统处理性能的严
重影响不容忽视. 与可直接判定的崩溃或逻辑错误不同, 性能问题通常在系统负荷增加或特定环境条件触发时逐
渐显现, 这增加了早期发现性能问题的难度. 此外, 鉴于分布式环境下性能波动在一定程度上是正常且可接受的,
如何准确界定“性能下降”的标准成为关键挑战, 主要涉及两个问题: (1) 性能降低到何种程度才算是一个问题;
(2) 性能降低状态持续多长时间才算是一个真缺陷. 最简单的方法是设定阈值来判断性能下降是否达到了关注的
级别, 然而阈值判断会存在许多误报, 即某些性能下降可能是由于网络波动等分布式环境因素造成的暂时性波动.
因此, 目前测试工具主要使用基于大数据分析的模型来识别性能下降的模式与特征. 这些模型通过分析系统运行
时的海量数据, 提取出性能波动的规律, 并结合机器学习算法进行预测和判断, 从而更准确地识别真正的性能缺
陷, 减少误报, 提高测试效率.
典型检测工具 IASO [82] 建立了一个响应超时模型来识别分布式系统的性能下降问题. 具体来说, IASO 构建了
一个超时评分算法, 通过持续记录各节点间的回复超时次数和正常回复次数, 计算每个节点的连接请求响应率, 并
基于此计算性能评估分数. 然后, 将每个节点的性能评分置于一个响应超时集合中, 使用 DBSCAN [83] 数据分析聚
类算法自动划分这些性能评分, 识别并排除噪声点, 并将噪声点视为性能缺陷点. 然而, 该方法未能排除真实网络
负载和用户请求负载变化对分布式节点响应的影响, 导致许多误报.
为了解决这一问题, Lu 等人 [73] 提出了一个基于大数据分析的性能缺陷检测器 Perseus. Perseus 首先收集每个
节点的实时运行状态数据, 包括每个磁盘的吞吐量、写延迟以及对应的时间戳. 然后, 使用主成分分析和基于密度
的噪点空间聚类法对离群点进行数据清洗, 去除网络波动、负载变化等外界因素对模型的影响. 接着, 基于清洗后
的数据, 通过多项式回归获得一个检测模型, 并使用预测上界作为性能下降缺陷的检测阈值, 在原数据上进行检
测, 超过这个上界的被认为是进入离群状态. 最后, 通过一个滑动时间窗口计算每个磁盘处于离群状态的时间, 并
根据时间划分等级, 计算各自的风险值. 如果一次离群状态持续时间很长, 且每天进入离群状态的次数很多, 则被
认为是高风险, 是一个潜在的性能缺陷.
4 典型分布式系统动态测试工具测评
目前存在许多分布式系统动态测试工具, 它们针对各自关注的系统缺陷, 设计了不同的测试策略, 并在各自的
评估实验中表现出优异的性能. 然而, 许多动态测试工具仅关注分布式系统的一部分代码逻辑, 只针对目标模块代
码进行测试评估, 缺乏对分布式系统整体测试效果的感知. 此外, 由于不同工具评测方式的多样性和不统一, 评估
的有效性受到威胁, 使得工具的使用者和研究者对工具的效果缺乏准确的认知. 因此, 本节将从对目标待测系统的
整体覆盖率和发现的缺陷数量这两个重要维度, 对近年来典型的分布式系统动态测试工具进行统一直观的测评,
进而总结现有工具的不足, 提出未来可能的改进方向.
4.1 实验设置
我们首先按以下 3 个标准选取了一些分布式系统动态测试工具: (1) 最新的 (近 3 年发布), (2) 工具代码开源,
(3) 适配性和易用性较强. 随后, 根据测试工具主要关注的输入维度, 将其分为 4 类, 在每个维度上取最新发布的两

