Invariant Testing Methodology
Unit tests only test scenarios the developer anticipated. Invariant fuzz testing defines core mathematical truths that must NEVER break (e.g. `totalVaultAssets >= totalSharesMinted`), and automatically bombards the protocol with millions of randomized transaction combinations to find breaking execution paths.
Stateful vs Stateless Fuzzing
Stateless fuzzing tests a function with randomized inputs in isolation. Stateful fuzzing executes sequences of multiple transactions across different accounts in succession, discovering complex vulnerabilities that emerge only after a specific state history.