本文档介绍了 fuel-core 全面的测试和基准测试基础设施,包括集成测试、VM 性能基准测试和 Gas 成本校准工具。测试框架验证交易处理、区块链操作和系统可靠性,而基准测试系统则衡量 VM 指令性能,以校准 Fuel 区块链的 Gas 成本。
有关部署测试策略的信息,请参阅 Docker 和 Kubernetes 部署。有关持续集成管道的详细信息,请参阅 持续集成。
fuel-core 测试基础设施主要分为三类:嵌入在独立 crate 中的单元测试、全面的集成测试和性能基准测试。
来源:tests/tests/tx.rs1-67 tests/tests/contract.rs1-42 tests/tests/messages.rs1-54 benches/src/lib.rs1-48 benches/benches/vm_set/blockchain.rs1-30
集成测试使用 TestContext 和 TestSetupBuilder 基础设施验证端到端功能。这些测试会启动实际的 fuel-core 节点,并测试真实的交易处理场景。
交易测试框架涵盖从提交到最终确定的完整交易生命周期
主要交易测试函数包括
dry_run_script() - 在不改变状态的情况下测试交易执行submit_and_await_commit() - 测试完整的交易提交流程get_transactions() - 测试交易查询和分页来源:tests/tests/tx.rs85-134 tests/tests/tx.rs342-369 tests/tests/tx.rs547-699
测试基础设施提供可重用组件,用于设置测试环境
来源:tests/tests/contract.rs152-200 tests/tests/messages.rs55-62
VM 基准测试系统衡量单个 Fuel VM 指令的性能,以准确校准 Gas 成本。这确保 Gas 定价反映实际计算成本。
The VmBench 结构体提供了一个用于对 VM 操作进行基准测试的综合框架
VmBench 结构体支持
来源:benches/src/lib.rs110-187 benches/src/lib.rs364-569
区块链基准测试侧重于构成区块链核心功能的存储和状态操作
BenchDb 提供了一个受控的数据库环境,具有
来源:benches/benches/vm_set/blockchain.rs73-188 benches/benches/vm_set/blockchain.rs190-811
基准收集系统将原始性能测量结果转换为 Fuel VM 的 Gas 成本
收集工具通过多个阶段处理基准测试结果
noop)将绝对计时转换为相对 Gas 成本来源:benches/src/bin/collect.rs148-255 benches/src/bin/collect.rs333-339 benches/src/bin/collect.rs380-570
该系统支持两种类型的 Gas 成本,以适应不同的操作特性
| 成本类型 | 结构 | 用例 |
|---|---|---|
| 固定成本 | 简单的 u64 值 | 计算成本恒定的操作 |
| 依赖成本 | LightOperation 或 HeavyOperation | 基于输入大小的可变成本操作 |
LightOperation: base + (units / units_per_gas)
HeavyOperation: base + (units * gas_per_unit)
来源:benches/src/bin/collect.rs129-140 crates/client/src/client/schema/chain.rs483-503
测试框架为常见测试场景提供了广泛的实用程序
AssembleAndRunTx traitdefault_signing_wallet()config_with_fee()来源:tests/tests/tx.rs55-59 tests/tests/messages.rs298-506 tests/tests/contract.rs150-175
基准测试系统与更广泛的 fuel-core 性能分析集成
性能分析可实现
来源:benches/src/bin/collect.rs32-67 benches/src/default_gas_costs.rs1-150