¿Qué es una buena prueba unitaria? Siguendo unos pocos consejos claros y consisos podremos mejorar la calidad de nuestras pruebas, y crear software con mejores resultados.
Las características principales de una buena prueba unitaria:
- Aislada e independiente
- Repetible
- Fácil de escribir
- Rápida para ejecutar
- Clara en su objetivo
- Automatizada
- Cumple con los mismos estándares que el código productivo
- 100% correcta, siempre
Veamos en detalle cada una de estas características.
1. Aislada e Independiente
Las pruebas deben ser aisladas entre si, y no ser afectadas por la presencia, ausencia o resultado de otras ejecuciones. Una prueba tiene que ser independiente de otras pruebas, y debe poder funcionar sin importar otras corridas.
2. Repetible
Las pruebas tienen que ser repetibles en todo aspecto: debe ser posible ejecutar una prueba cualquier cantidad de veces, y obtener el mismo resultado de manera consistente.3. Fácil de escribir
Se tienen que usar las librerías apropiadas para la situación bajo test, de manera de simplificar al máximo la construcción de la prueba. Una prueba dificil de constuir será dificil de mantener, por lo cual deben tomarse los recaudos necesarios para asegurar su simplicidad. El uso de herramientas de prueba como JUnit, EasyMock, Mockito y MockEJB nos ayudarán en la tarea.
Por otro lado, las pruebas son cortas, y usualmente cada una no debería tener más de una docene de líneas de código.
4. Rápida para ejecutar
Las pruebas unitarias tienen que ejecutarse de forma rápida y casi al instante, y es un requisito esencial al hacer un Desarrollo Guiado por Tests (TDD).
Esto ocurre porque las pruebas unitarias sólo testean una pequeña porción de código, en general una única rama de ejecución de un único método.
5. Clara en su objetivo
El código de la prueba debe ser claro y específico, dejando el claro su objetivo, y sirviendo además de ejemplo concreto para el uso del API.
6. Automatizada
Las pruebas tienen que automatizarse, usando herramientas como JUnit u otras, de manera de facilitar su ejecución y poder determinar de manera exacta el estado del código bajo prueba. Además, el uso de herramientas de automatización de pruebas permiten la integración continua.
7. Cumplir los mismos estándares que el código productivo
Las pruebas se codifican usando los mismos convenciones y estándares de calidad que el código productivo de la aplicación: cumplen con el mismo nivel de excelencia que adopta el equipo que desarrolla software.
8. 100% correcta, siempre
Y por último, el proyecto tiene que tener el 100% de sus prueba pasando correctamente, siempre.
Basado en What are the qualities of a good test?