Page 232 - 《软件学报》2025年第7期
P. 232
张孝 等: 区块链测试基准综述 3153
定了基准测试的运行方式, 以确保正确地获取测试指标, 包括实施测试所需的软硬件系统配置、攻击配置以及测
试流程等. 部分测试基准还提供了生成测试数据集和负载, 并执行测试用例的可执行程序或源码, 这通常被称为测
试工具.
目前, 数据库测试基准种类繁多, 其中由事务性能管理委员会 (TPC) 发布的系列基准得到业界广泛认可, 包
括 TPC-C [34] 、TPC-B [35] 、TPC-E [36] 、TPC-H [37] 和 TPC-DS [38] . 具体内容将在第 2 节中介绍. 数据库测试基准为不同
数据库系统提供了一个公平的性能评价标准, 确保了比较的可比性和评估的可重复性. 同时, 它也推动了数据库技
术的创新和市场的良性竞争, 帮助用户做出更明智的数据库选择.
随着区块链技术的不断发展和应用领域的扩大, 越来越需要对不同区块链系统进行评测以匹配各种应用场景
和性能要求. 学术界和工业界对此都展开了积极的研究和探索. 新加坡国立大学的 Dinh 等人 [39] 提出了首个用于
分析许可链的测试基准 BlockBench. BlockBench 使用真实和合成的工作负载, 从吞吐率、延迟、可扩展性和容错
性这 4 个维度来评测许可链系统. BlockBench 还设计并实现了一个开源的工具 (https://github.com/ooibc88/
BlockBench), 并利用该工具测试了以太坊、Hyperledger Fabric 以及 Parity 的性能. 然而, BlockBench 没有针对许
可链的应用场景设计应用模型和数据模型, 其测试指标也相对简单. Hyperledger 社区提出了一个专门针对
Hyperledger Fabric 的测试基准 Hyperledger Caliper [40] , 它通过运行用户自定义的工作负载来分析智能合约的吞吐
量、延迟和资源消耗. 但 Caliper 并未定义应用模型、数据模型和负载, 其指标也未考虑到系统的安全性. 中国信
息通信研究院研发的区块链性能评测平台 Trusted Bench [41] 也沿用了 Caliper 架构.
除此之外, 其他具有一定影响力的区块链测试基准包括 Diablo [42] 、Gromit [43] 、BCadvisor [44] 、BCTMark [45] 、
DAGBENCH [46] 、xBCBench [47] 、BlockMeter [48] 、AlphaBlock [49] 等.
基于这些区块链测试基准, 用户可以在相同的测试环境下分析和比较不同区块链系统的性能, 这在一定程度
上解决了区块链系统评测的问题. 然而, 对比测试基准的几个关键要素, 我们发现上述区块链测试基准仍需要完善.
● 应用模型: 目前, 大多数区块链测试基准并未定义基于区块链真实业务场景的应用模型. Diablo 中定义了交
易所、视频分享、游戏等 5 个去中心化的应用程序. BBSF 中使用了去中心化代币交易所、NFT 市场、NFT 铸造、
体育博彩网站这 4 个工作场景. 然而, 这些研究并未深入分析这些场景是否适合区块链应用. 而其他大多数的研究
则没有明确定义应用模型.
● 数据模型: 大多数区块链测试基准并未讨论数据集的生成方式 [27,40,43,45] . 在 BlockBench 中, 研究者使用了 3
个流行的以太坊智能合约 EtherId、Doubler 和 WavesPresale, 并借鉴了数据库基准的数据模型, 如 YCSD 和
SmallBank. Klenik 等人 [50] 将 TPC-C 转换为智能合约的模型. 部分测试基准利用智能合约预加载了不同数量的交
易作为数据集 [39,46] . 然而, 目前尚未看到有专门针对许可链应用的数据集和数据集产生工具.
● 负载: 当前的测试基准中, 负载主要采用数据库负载或简单的合成负载, 这并不能真实反映区块链应用的特
性. 例如, BlockBench 中使用的 YCSD 和 SmallBank 负载是数据库的基准负载, 而在 Hyperledger Caliper 中并未提
供预定义的负载, 用户需要自行配置.
● 指标: 目前测试基准缺少了对测试指标的统一定义. 例如, 在定义交易吞吐量和延迟的公式时, 一些文献考
虑了 N 个节点的平均值 [51] , 但大多数文献并未考虑这一点. 在计算资源利用率时, 部分文献考虑了 RPC 请求消耗
的资源 [44] , 但大多数文献并未考虑. 此外, 大多数测试基准中也缺乏对安全性和容错性指标的定义.
● 执行规则: 目前的测试基准中, 往往缺乏对测试环境预设的详细描述, 例如区块的大小、区块生成的时间间
隔、链上存量区块的数量 (即区块的高度)、数据存储的格式、并发度等. 这使得评估结果难以复现, 从而无法验
证其准确性.
作为一种特殊的分布式数据库, 区块链的测试基准可以充分借鉴数据库测试基准的内容. 但值得注意的是, 由
于区块链系统自身特点, 其测试基准与数据库测试基准也应该存在一定差异. 首先, 从数据集角度来看, 传统数据
库测试基准通常包含数据集, 其中数据规模和数据分布是影响性能的关键参数. 在区块链系统中, 主要瓶颈在于数
据上链的速度, 在此过程中已有数据的规模或分布对系统性能影响相对较小. 很多区块链测试基准也就不关心数
据的规模. 然而, 随着区块链应用的发展, 已经出现了一些查询类应用场景, 这些场景下性能受到数据集影响较大.

