技能 web3-testing
📦
智能合约开发者需要可靠的测试框架来确保代码的安全性和正确性。此技能提供了使用 Hardhat 和 Foundry 进行单元测试、集成测试和主网分叉的全面测试模式。
支持: Claude Codex Code(CC)
1
下载技能 ZIP
2
在 Claude 中上传
前往 设置 → 功能 → 技能 → 上传技能
3
开启并开始使用
测试它
正在使用“web3-testing”。 为处理存款和取款的保险库合约生成 Foundry 测试
预期结果:
- 已创建 VaultTest.sol,包含 8 个测试函数
- 测试包括:testInitialBalance、testDeposit、testWithdraw、testFailWithdrawMoreThanDeposit、testFuzzDepositAmount、testMultipleUsers、testVaultBalanceTracking、testEmergencyWithdraw
- 覆盖率:保险库函数的语句覆盖率达到 95%
- Gas 报告:平均存款消耗 45000 gas,取款消耗 38000 gas
正在使用“web3-testing”。 设置主网分叉以测试我的借贷协议与 Aave 的集成
预期结果:
- 已配置 hardhat.config.js 的主网分叉设置
- 创建了连接到 Aave V2 借贷池(地址 0x7d2768dE32b0b80b7a3454c06BdAc94A69DDc7A9)的集成测试
- 测试验证了以当前主网利率进行抵押借贷
- 分叉区块:19500000,测试地址的 ETH 余额已模拟为 100 ETH
安全审计
安全v1 • 2/25/2026
Static analysis flagged 63 patterns across 430 lines, but all findings are false positives. The SKILL.md file is documentation containing code examples in markdown blocks, not executable code. Flagged patterns include standard Hardhat configuration (process.env usage), Solidity import syntax, and blockchain RPC endpoints - all legitimate web3 development practices. No malicious intent detected.
1
已扫描文件
430
分析行数
5
发现项
1
审计总数
低风险问题 (1)
Documentation Contains Code Examples
Static analyzer flagged markdown code blocks as executable code. The SKILL.md file contains instructional code examples for Hardhat and Foundry testing frameworks, delimited by markdown backticks. These are documentation, not executable scripts.
风险因素
⚙️ 外部命令 (22)
SKILL.md:22 SKILL.md:36-74 SKILL.md:74-78 SKILL.md:78-161 SKILL.md:161-165 SKILL.md:165-237 SKILL.md:237-243 SKILL.md:243-263 SKILL.md:263-267 SKILL.md:267-300 SKILL.md:300-304 SKILL.md:304-320 SKILL.md:320-324 SKILL.md:324-350 SKILL.md:350-354 SKILL.md:354-362 SKILL.md:362-366 SKILL.md:366-372 SKILL.md:372-374 SKILL.md:374-377 SKILL.md:377-381 SKILL.md:381-404
🌐 网络访问 (3)
📁 文件系统访问 (1)
审计者: claude
质量评分
38
架构
100
可维护性
87
内容
50
社区
100
安全
91
规范符合性
你能构建什么
DeFi 协议测试
使用主网分叉测试去中心化交易所合约,在部署前验证与真实代币合约的交换是否正常工作。
NFT 系列验证
通过全面的单元测试和针对边缘情况的模糊测试,验证 NFT 铸造、转账和版税分配逻辑。
智能合约审计准备
在提交合约进行专业安全审计之前,生成具有高覆盖率的全面测试套件。
试试这些提示
基本单元测试设置
为我的 ERC20 代币合约创建一个 Hardhat 测试文件。包括部署、转账功能和余额检查的测试。使用位于 src/Token.sol 的 Token.sol 合约。
Foundry 模糊测试
为我的质押合约编写一个 Foundry 模糊测试,验证不同质押金额和时间段的奖励计算。使用 vm.assume 设置有效的输入范围。
主网分叉集成测试
设置一个主网分叉测试,与真实的 Uniswap V2 路由器和 DAI 代币进行交��。测试将 1 ETH 交换为 DAI,并验证接收的金额在预期的滑点范围内。
Gas 优化比较
创建一个测试,比较同一合约函数的两种实现的 Gas 使用情况。部署两个版本,执行相同的操作,并报告 Gas 差异及优化建议。
最佳实践
- 使用测试夹具来设置测试状态,避免测试之间的代码重复
- 同时测试成功路径和失败情况,包括回滚条件
- 启用覆盖率运行测试,目标是超过 90% 的行覆盖率
避免
- 只测试正常路径而不检查边缘情况和失败模式
- 直接在测试文件中硬编码私钥或 RPC URL,而不是使用环境变量
- 跳过与外部 DeFi 协议交互的合约的主网分叉测试
常见问题
Hardhat 和 Foundry 在测试方面有什么区别?
Hardhat 使用 JavaScript/TypeScript 编写测试,并使用 Chai 断言库。Foundry 使用 Solidity 编写测试,并内置断言功能。Foundry 速度更快且支持原生模糊测试。Hardhat 拥有更庞大的插件生态系统。对于性能关键的测试使用 Foundry,对于复杂的基于 JavaScript 的测试逻辑使用 Hardhat。
如何测试与外部协议交互的合约?
使用主网分叉创建主网状态的本地副本。在 hardhat.config.js 或 foundry.toml 中配置您的 RPC URL。然后,您的测试可以在本地网络上运行时与真实部署的合约(如 Uniswap、Aave 或 Compound)进行交互。
在智能合约测试中,模糊测试是什么意思?
模糊测试会自动生成随机输入,以测试函数在各种可能值下的表现。Foundry 通过 testFuzz 函数支持原生模糊测试。它有助于发现您可能在手动测试用例中遗漏的边缘情况,例如边界条件或意外的输入组合。
如何测试依赖时间的合约函数?
使用 Hardhat 的时间辅助函数增加区块链时间,或使用 Foundry 的 vm.warp 设置特定时间戳。这允许测试归属时间表、时间锁和其他基于时间的逻辑,而无需等待实际时间的流逝。
主网分叉对于测试来说安全吗?
是的,主网分叉完全在本地运行。不会向主网发送任何交易。您的测试交易仅存在于本地分叉环境中。但是,即使在本地测试时,也切勿使用具有大量资金的真实私钥。
如何测量智能合约的测试覆盖率?
对于 Hardhat,运行 npx hardhat coverage 生成 HTML 报告,显示语句、分支和函数覆盖率。对于 Foundry,使用 forge coverage 获取终端输出,或使用 forge coverage --report lcov 获取详细报告。目标是部署前达到超过 90% 的覆盖率。