Melhores práticas de testes
Resumo condensado das 25 práticas mais importantes de teste de programas Solana extraídas de cada página desta seção.
Busque em todas as páginas da documentação
Resumo condensado das 25 práticas mais importantes de teste de programas Solana extraídas de cada página desta seção.
Camadas da pirâmide: Testes unitários LiteSVM/Mollusk primeiro, integração Bankrun/anchor segundo, E2E validador por último (Noções básicas de testes).
Sempre --reset no CI: Ledger determinístico para jobs de validador (Testando contra validador).
Rebuild .so antes dos testes: anchor build precede cargo test e execuções fuzz.
Testes negativos por ix: Pelo menos um caso de falha por #[error_code] (Catálogo Sealevel).
Testes de omissão de signer: Meta authority com is_signer: false deve falhar.
Testes de mismatch de mint: Mint ATA errado para restrições de vault.
Testes de bump PDA: Bump canônico sucede; bump errado falha (Testando CPIs e PDAs).
Testes de program ID CPI: Conta de programa impostor rejeitada.
Carregue SPL Token na VM: Adicione token program ao LiteSVM/Mollusk para caminhos CPI.
Testes checks-effects-interactions: Callback de reentrância double-withdraw deve falhar.
Testes de obsolescência de oracle: Avance clock além de max_age e espere erro.
Teste double-call reinit: Segundo init_if_needed não deve resetar admin.
Fuzz antes da auditoria: Trident em handlers de math 1h+ nightly (Fuzzing).
Asserts de invariante no fuzz: Não só caça de crash - invariantes econômicos codificados.
Checks de faixa CU: Mollusk Check::compute_units com ranges não pins exatos.
Bankrun para velocidade TS: Lógica Anchor em massa sem spin-up de validador (Bankrun).
anchor test para fluxos SPL: Caminhos reais de criação mint/ATA token (Anchor TS).
Surfpool para E2E DeFi: Fork mainnet em vez de listas longas de clone.
Fixe toolchain no CI: Validador Agave 4.1.1 combina com artefatos de deploy.
Mate órfãos porta 8899: Pre-step no CI antes de jobs de validador.
Keypairs únicos por teste: Evite flakiness por vazamento de estado.
Combine cluster Anchor.toml: URL do provider igual ao validador/devnet em execução.
Regen IDL no PR: Rename de conta quebra testes se IDL obsoleta.
Arquive corpus fuzz: Anexe stats ao pacote de auditoria.
Sem gates de merge devnet: Localnet/Surfpool para CI; smoke devnet opcional.
Testes negativos LiteSVM + anchor test em localnet reset para projetos Anchor.
Pelo menos um por restrição e por classe do catálogo que toca a instrução.
Smoke curto sim; execuções longas nightly na branch main.
Versões da stack: Esta página foi escrita para Agave 4.1.1, Solana CLI 3.0.10, Anchor 0.32.1, anchor-lang 0.32.1, Rust 1.91.1, @solana/kit 7.0.0, Surfpool 0.12.0 e LiteSVM 0.6.x.
Revisado por Chris St. John·Última atualização: 16 de jul. de 2026