類-嵌入式開發(fā)Skills】web3-testing 技能)
掌握使用Hardhat、Foundry和高級測試模式的智能合約綜合測試策略。技能概述web3-testing 技能是一個(gè)專門用于Web3智能合約測試的技能。該技能涵蓋使用Hardhat、Foundry和高級測試模式的綜合測試策略,幫助開發(fā)者編寫智能合約單元測試、設(shè)置集成測試套件、執(zhí)行Gas優(yōu)化測試、模糊測試邊緣情況、分叉主網(wǎng)進(jìn)行真實(shí)測試、自動化測試覆蓋率報(bào)告以及在Etherscan上驗(yàn)證合約。下載地址:agentic-awesome-skills/skills/web3-testing at main · sickn33/agentic-awesome-skills · GitHub主要功能單元測試: 編寫智能合約單元測試集成測試: 設(shè)置集成測試套件Gas優(yōu)化測試: 執(zhí)行Gas優(yōu)化測試模糊測試: 模糊測試邊緣情況主網(wǎng)分叉: 分叉主網(wǎng)進(jìn)行真實(shí)測試覆蓋率報(bào)告: 自動化測試覆蓋率報(bào)告合約驗(yàn)證: 在Etherscan上驗(yàn)證合約觸發(fā)條件在以下情況下應(yīng)該調(diào)用此技能:編寫智能合約單元測試設(shè)置集成測試套件執(zhí)行Gas優(yōu)化測試模糊測試邊緣情況分叉主網(wǎng)進(jìn)行真實(shí)測試自動化測試覆蓋率報(bào)告在Etherscan上驗(yàn)證合約不適用場景任務(wù)與Web3智能合約測試無關(guān)需要此范圍之外的不同域或工具測試框架HardhatJavaScript/TypeScript測試框架:豐富的插件生態(tài)系統(tǒng)內(nèi)置網(wǎng)絡(luò)分叉Gas報(bào)告覆蓋率工具Etherscan驗(yàn)證Foundry (Forge)Solidity測試框架:快速編譯和測試模糊測試內(nèi)置Cheatcodes主網(wǎng)分叉Gas快照測試模式單元測試模式部署測試交易測試事件測試時(shí)間相關(guān)測試Gas優(yōu)化測試高級測試模式快照和回滾主網(wǎng)分叉賬戶模擬模糊測試Foundry測試特性模糊測試自動生成隨機(jī)輸入測試函數(shù):使用vm.assume限制輸入范圍發(fā)現(xiàn)邊緣情況屬性測試Cheatcodes使用vm對象操作區(qū)塊鏈狀態(tài):vm.prank — 模擬賬戶vm.deal — 給賬戶ETHvm.warp — 修改時(shí)間vm.expectRevert — 期望回滾主網(wǎng)分叉與真實(shí)主網(wǎng)合約交互:測試與現(xiàn)有協(xié)議集成使用真實(shí)流動性池驗(yàn)證兼容性Gas優(yōu)化測試比較不同實(shí)現(xiàn)的Gas使用:測量函數(shù)Gas消耗比較優(yōu)化前后識別高Gas操作驗(yàn)證Gas節(jié)省覆蓋率報(bào)告生成測試覆蓋率報(bào)告:# 生成覆蓋率報(bào)告npx hardhat coverage# 輸出示例:# File | % Stmts | % Branch | % Funcs | % Lines |# -------------------|---------|----------|---------|---------|# contracts/Token.sol | 100 | 90 | 100 | 95 |合約驗(yàn)證在Etherscan上驗(yàn)證合約:# 通過CLI驗(yàn)證npx hardhat verify --network mainnet CONTRACT_ADDRESS Constructor arg1 arg2CI/CD集成自動化測試流程:每次提交運(yùn)行測試生成覆蓋率報(bào)告上傳到Codecov部署到測試網(wǎng)最佳實(shí)踐測試覆蓋率: 目標(biāo)90%覆蓋率邊緣情況: 測試邊界條件Gas限制: 驗(yàn)證函數(shù)不會達(dá)到區(qū)塊Gas限制重入攻擊: 測試重入漏洞訪問控制: 測試未授權(quán)訪問嘗試事件: 驗(yàn)證事件發(fā)射Fixtures: 使用fixtures避免代碼重復(fù)主網(wǎng)分叉: 使用真實(shí)合約測試模糊測試: 使用基于屬性的測試CI/CD: 每次提交自動化測試資源文件references/hardhat-setup.md: Hardhat配置指南references/foundry-setup.md: Foundry測試框架references/test-patterns.md: 測試最佳實(shí)踐references/mainnet-forking.md: 分叉測試策略references/contract-verification.md: Etherscan驗(yàn)證assets/hardhat-config.js: 完整Hardhat配置assets/test-suite.js: 綜合測試示例assets/foundry.toml: Foundry配置scripts/test-contract.sh: 自動化測試腳本注意事項(xiàng)僅當(dāng)任務(wù)明確匹配上述范圍時(shí)使用此技能不要將輸出視為環(huán)境特定驗(yàn)證、測試或?qū)<覍彶榈奶娲啡绻鄙俦匦璧妮斎搿?quán)限、安全邊界或成功標(biāo)準(zhǔn),請停止并請求澄清