Page 245 - 《软件学报》2025年第7期
P. 245
3166 软件学报 2025 年第 36 卷第 7 期
4.2.2 数据集
在测试基准中, 数据集是指用于测试和评估系统性能的数据集合, 用于模拟实际应用场景中的数据, 按照应用
模型定义的数据结构存储. 为了模拟真实应用场景, 基准应提供与真实数据在数据量、数据分布、数据类型和数
据关联等方面高度相似的数据集. 数据集的选择和设计应根据具体的测试目标和应用场景进行定制, 以确保测试
结果的可靠性和实用性. 区块链的数据集包括区块数据和状态数据. 每个区块分别由一组交易组成. 状态数据库的
值应等于在初始状态 (如空的数据库) 上面顺序执行每个区块的结果. 以供应链应用为例, 区块数据包括交易信息、
时间戳、区块头等数据, 其中, 交易信息包括订单、物流、支付等操作. 状态数据包括订单状态 (如已下单、已发
货、已交付)、物流状态 (如在途、已签收)、产品信息 (如产品的属性、规格、批次号、生产日期) 等.
4.3 负 载
负载是指测试时对被测系统施加的一系列交易. 区块链的工作负载是一组模拟真实场景或特定使用情况的交
易集合, 旨在评估系统在不同业务需求下的性能表现. 与数据库不同, 区块链的交易是对特定智能合约的调用, 因
此区块链的负载应说明相应智能合约的逻辑. 负载是测试基准的核心内容, 区块链测试基准应明确定义负载使用
的合约, 包括每个合约的对外接口, 如变量和函数, 其中函数部分需列出每个函数的参数、返回类型、处理过程、
发出的事件以及调用的外部合约 [88] . 下面将从负载类型和负载特征对基准的负载设计进行描述, 如图 6 所示.
负载
负载类型 负载特征
数据更改 数据查询 静态 动态
图 6 负载的组成
4.3.1 负载类型
常见的区块链负载可以分为两类: 数据更改负载和数据查询负载, 如图 6 所示. 这两种负载也是数据库测试基
准中常见的类型, 分别对应着 OLTP (联机事务处理) 业务和 OLAP (联机分析处理) 业务.
(1) 数据更改负载: 模拟真实的交易和操作, 包括数据插入、数据更新、数据删除等, 类似数据库的 OLTP
负载. 数据更改负载可以根据不同的应用场景和需求而有所不同. 例如, 在供应链应用中, 数据更改负载包括订
单的创建、订单状态的更新、物流信息的更新、库存数量的更新等. 在金融领域的应用中, 数据更改负载可能
主要包括转账和支付等操作. 通过模拟不同类型的数据更改负载, 可以评估区块链系统的在处理事务操作时的
性能和吞吐率.
(2) 数据查询负载: 模拟对区块链数据进行分析和复杂查询的场景, 包括复杂查询、统计分析和数据挖掘等操
作. 复杂查询是指模拟对区块链数据进行复杂的查询操作. 例如, 在供应链应用场景中, 查询特定时间范围内销售
额高于 500 万元的供应商的名字和地址; 在公安多维布控场景中, 根据时间、地区、车牌号与车辆品牌查询重点
人员. 统计分析是指模拟对区块链数据进行统计分析, 计算交易数量、平均交易金额、交易频率等. 例如, 在医疗
应用中, 根据患者的生理指标进行病理分析等; 在供应链场景中, 查询特定时间范围内计算某个产品的平均销售
量. 数据挖掘是指模拟对区块链数据进行数据挖掘操作, 发现交易模式、关联规则、异常检测等. 例如, 在电商应
用场景中, 基于销售数据挖掘销售产品之间的关联关系, 或检测异常交易行为. 这些操作可以涉及多个区块和交
易, 并需要对数据进行聚合、过滤、排序和计算等处理, 类似于数据库的 OLAP 负载. 通过模拟不同的分析负载,
可以评估区块链系统在处理复杂查询和分析任务时的响应能力.
4.3.2 负载特征
负载的特征包括静态特征和动态特征.

