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    负载特征
                    负载的特征包括静态特征和动态特征.
   240   241   242   243   244   245   246   247   248   249   250