news 2026/9/2 21:55:21

【研发类-嵌入式开发Skills】web3-testing 技能

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【研发类-嵌入式开发Skills】web3-testing 技能

掌握使用Hardhat、Foundry和高级测试模式的智能合约综合测试策略。

技能概述

web3-testing 技能是一个专门用于Web3智能合约测试的技能。该技能涵盖使用Hardhat、Foundry和高级测试模式的综合测试策略,帮助开发者编写智能合约单元测试、设置集成测试套件、执行Gas优化测试、模糊测试边缘情况、分叉主网进行真实测试、自动化测试覆盖率报告以及在Etherscan上验证合约。

下载地址:agentic-awesome-skills/skills/web3-testing at main · sickn33/agentic-awesome-skills · GitHub

主要功能

  • 单元测试: 编写智能合约单元测试
  • 集成测试: 设置集成测试套件
  • Gas优化测试: 执行Gas优化测试
  • 模糊测试: 模糊测试边缘情况
  • 主网分叉: 分叉主网进行真实测试
  • 覆盖率报告: 自动化测试覆盖率报告
  • 合约验证: 在Etherscan上验证合约

触发条件

在以下情况下应该调用此技能:

  • 编写智能合约单元测试
  • 设置集成测试套件
  • 执行Gas优化测试
  • 模糊测试边缘情况
  • 分叉主网进行真实测试
  • 自动化测试覆盖率报告
  • 在Etherscan上验证合约

不适用场景

  • 任务与Web3智能合约测试无关
  • 需要此范围之外的不同域或工具

测试框架

Hardhat

JavaScript/TypeScript测试框架:

  • 丰富的插件生态系统
  • 内置网络分叉
  • Gas报告
  • 覆盖率工具
  • Etherscan验证

Foundry (Forge)

Solidity测试框架:

  • 快速编译和测试
  • 模糊测试内置
  • Cheatcodes
  • 主网分叉
  • Gas快照

测试模式

单元测试模式

  • 部署测试
  • 交易测试
  • 事件测试
  • 时间相关测试
  • Gas优化测试

高级测试模式

  • 快照和回滚
  • 主网分叉
  • 账户模拟
  • 模糊测试

Foundry测试特性

模糊测试

自动生成随机输入测试函数:

  • 使用vm.assume限制输入范围
  • 发现边缘情况
  • 属性测试

Cheatcodes

使用vm对象操作区块链状态:

  • vm.prank — 模拟账户
  • vm.deal — 给账户ETH
  • vm.warp — 修改时间
  • vm.expectRevert — 期望回滚

主网分叉

与真实主网合约交互:

  • 测试与现有协议集成
  • 使用真实流动性池
  • 验证兼容性

Gas优化测试

比较不同实现的Gas使用:

  • 测量函数Gas消耗
  • 比较优化前后
  • 识别高Gas操作
  • 验证Gas节省

覆盖率报告

生成测试覆盖率报告:

# 生成覆盖率报告
npx hardhat coverage

# 输出示例:
# File | % Stmts | % Branch | % Funcs | % Lines |
# -------------------|---------|----------|---------|---------|
# contracts/Token.sol | 100 | 90 | 100 | 95 |

合约验证

在Etherscan上验证合约:

# 通过CLI验证
npx hardhat verify --network mainnet CONTRACT_ADDRESS "Constructor arg1" "arg2"

CI/CD集成

自动化测试流程:

  • 每次提交运行测试
  • 生成覆盖率报告
  • 上传到Codecov
  • 部署到测试网

最佳实践

  1. 测试覆盖率: 目标>90%覆盖率
  2. 边缘情况: 测试边界条件
  3. Gas限制: 验证函数不会达到区块Gas限制
  4. 重入攻击: 测试重入漏洞
  5. 访问控制: 测试未授权访问尝试
  6. 事件: 验证事件发射
  7. Fixtures: 使用fixtures避免代码重复
  8. 主网分叉: 使用真实合约测试
  9. 模糊测试: 使用基于属性的测试
  10. CI/CD: 每次提交自动化测试

资源文件

  • references/hardhat-setup.md: Hardhat配置指南
  • references/foundry-setup.md: Foundry测试框架
  • references/test-patterns.md: 测试最佳实践
  • references/mainnet-forking.md: 分叉测试策略
  • references/contract-verification.md: Etherscan验证
  • assets/hardhat-config.js: 完整Hardhat配置
  • assets/test-suite.js: 综合测试示例
  • assets/foundry.toml: Foundry配置
  • scripts/test-contract.sh: 自动化测试脚本

注意事项

  • 仅当任务明确匹配上述范围时使用此技能
  • 不要将输出视为环境特定验证、测试或专家审查的替代品
  • 如果缺少必需的输入、权限、安全边界或成功标准,请停止并请求澄清
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/2 21:49:53

用Python给天猫精灵开发搞笑技能:语音交互应用实战

如果你只是想让天猫精灵讲个笑话,其实根本不用读这篇文章——官方技能里早就内置了段子。真正让人想动手改造的,是另一个场景:晚上十点回到家,你对音箱说“今天加班好累”,它只回一句冷冰冰的“好的,已为您…

作者头像 李华
网站建设 2026/9/2 21:37:45

节点式组网:从ComfyUI到业务工作流的可视化思维

前两周帮一个小型 AI 团队梳理产品视频的叙事线,设计同学从素材站下载了一套标题里写着“步骤图时间线 ComfyUI 工作流人工智能流程图节点式组网 AE 模板”的动态模板。团队一开始以为这只是套炫酷的 AE 预设,结果打开工程后才发现,真正卡住我…

作者头像 李华
网站建设 2026/9/2 21:36:48

DeepSeek 大模型落地应用场景与实战指南

在数字化转型的浪潮中,许多团队都面临着同样的困境:海量数据堆积如山,重复性工作消耗了大量人力,而真正需要创造力和深度思考的任务却往往被搁置。无论是处理成千上万条客户咨询,还是从几百页的技术文档中提炼核心观点…

作者头像 李华
网站建设 2026/9/2 21:29:04

SSD1322驱动实战:C8051F点亮256×64灰阶OLED屏

简介:这是一份针对SSD1322 OLED驱动与C8051F系列MCU的嵌入式开发资料,适合需要掌握SPI串行显示、OLED屏幕点亮的电子工程师或学生。资源包共25个文件,以C源码、头文件、启动汇编、工程配置和HEX固件为主,其中C文件包含SSD1322驱动…

作者头像 李华
网站建设 2026/9/2 21:27:13

阿里钉钉C++面经及参考答案(下)

unique_ptr 适用于哪些使用场景?为什么? unique_ptr 的核心特性是独占式所有权,不支持拷贝构造与拷贝赋值,仅支持移动语义转移资源管理权,无额外引用计数开销,性能接近裸指针,基于 RAII 自动释放资源,这些特性决定了它优先用于资源归属唯一、不需要多方共享的场景,也…

作者头像 李华
网站建设 2026/9/2 21:25:56

扒舞视频工具全解析:镜面、音源替换、放大与多倍速实操指南

扒舞自用视频最常见的状态,就是把一段舞蹈视频反复播放、慢放、翻面、循环,直到动作记进身体。真正落到工具上,你需要的是四个稳定功能:镜面、音源替换、放大、多倍速。最近在练 ODD EYE CIRCLE 的 Sweet Crazy Love 时&#xff0…

作者头像 李华