foundry-testing
Installation
SKILL.md
Foundry Testing Best Practices
Fuzz Testing Strategy
- Fuzz function inputs by default - When a test function has parameters, Foundry automatically fuzzes them
- Use
bound()overvm.assume- Preferbound(value, min, max)to constrain inputs;vm.assumediscards runs and wastes iterations - Apply Equivalence Class Partitioning - Only fuzz parameters that affect the code path under test. If a parameter doesn't change behavior, use a fixed representative value
- Maximize bounds - Use the widest reasonable bounds to maximize coverage
// Good: bound with max range
amount = bound(amount, 1, type(uint96).max);
// Avoid: vm.assume wastes fuzz runs
vm.assume(amount > 0 && amount < type(uint96).max);