Mejores prácticas de pruebas
Un resumen condensado de las 25 prácticas más importantes para probar programas de Solana extraídas de cada página de esta sección.
Busca en todas las páginas de la documentación
Un resumen condensado de las 25 prácticas más importantes para probar programas de Solana extraídas de cada página de esta sección.
Capas de pirámide: Pruebas unitarias LiteSVM/Mollusk primero, integración Bankrun/anchor segundo, E2E de validador al final (Conceptos básicos de pruebas).
Siempre --reset en CI: Ledger determinista para trabajos de validador (Pruebas contra un validador).
Recompilar .so antes de las pruebas: anchor build precede a cargo test y ejecuciones de fuzzing.
Pruebas negativas por ix: Al menos un caso de fallo por #[error_code] (Catálogo Sealevel).
Pruebas de omisión de firmante: La metadatos de autoridad con is_signer: false deben fallar.
Pruebas de discrepancia de acuñación: Acuñación de bóveda incorrecta para restricciones de bóveda.
Pruebas de bump de PDA: El bump canónico tiene éxito; el bump incorrecto falla (Pruebas de CPI y PDA).
Pruebas de ID de programa CPI: Cuenta de programa impostor rechazada.
Cargar SPL Token en VM: Añadir el programa de token a LiteSVM/Mollusk para rutas CPI.
Pruebas de verificaciones-efectos-interacciones: El doble retiro de callback de reentrada debe fallar.
Pruebas de obsolescencia de oráculo: Avanzar el reloj más allá de max_age y esperar un error.
Prueba de doble llamada de reinicialización: La segunda init_if_needed no debe restablecer el administrador.
Fuzzing antes de la auditoría: Trident en manejadores matemáticos, nocturno durante 1h+ (Fuzzing).
Aserciones de invariantes en fuzzing: No solo caza de fallos, sino codificación de invariantes económicos.
Verificaciones de rango de CU: Check::compute_units de Mollusk con rangos, no pines exactos.
Bankrun para velocidad TS: Lógica de Anchor masiva sin inicio de validador (Bankrun).
anchor test para flujos SPL: Rutas reales de acuñación de tokens/creación de ATA (Anchor TS).
Surfpool para E2E de DeFi: Bifurcación de mainnet sobre largas listas de clones.
Fijar la cadena de herramientas en CI: El validador Agave 4.1.1 coincide con los artefactos de despliegue.
Eliminar huérfanos del puerto 8899: Paso previo en CI antes de los trabajos del validador.
Par de claves único por prueba: Prevenir inestabilidad por fuga de estado.
Coincidir clúster de Anchor.toml: La URL del proveedor coincide con el validador/devnet en ejecución.
Regenerar IDL en PR: El cambio de nombre de cuenta rompe las pruebas si la IDL está obsoleta.
Archivar corpus de fuzzing: Adjuntar estadísticas al paquete de auditoría.
Sin puertas de fusión de devnet: Localnet/Surfpool para CI; humo de devnet opcional.
Pruebas negativas LiteSVM + anchor test en localnet reiniciado para proyectos Anchor.
Al menos una por restricción y por clase de catálogo que toque la instrucción.
Un "smoke test" corto sí; ejecuciones largas nocturnas en la rama principal.
Versiones de la pila: Esta página se escribió 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 y LiteSVM 0.6.x.
Revisado por Chris St. John·Última actualización: 16 jul 2026