Las pruebas automatizadas se dividen en unitarias (unit), de integración (integration) y de extremo a extremo (end-to-end, E2E) para cubrir de manera integral la verificación del sistema en diferentes niveles.
Historia de la pregunta: Esta clasificación surgió debido a la necesidad de probar aplicaciones tanto en partes como en su totalidad. Por lo tanto, se destacan las capas de pruebas:
Problema: Los errores a menudo ocurren no solo en la lógica de un método individual, sino también en las interfaces entre componentes o al ejecutar todo el sistema con servicios externos. Si se agrupan todo en un solo conjunto, es difícil localizar rápidamente un error o entender dónde exactamente se originó.
Solución:
Distinguir los tipos de pruebas es vital para:
Características clave:
¿Se pueden considerar las pruebas de integración como "grandes" pruebas unitarias?
No, las pruebas de integración prueban el funcionamiento de varios componentes juntos, no solo funciones individuales. Además, no siempre es posible utilizar mocks: los servicios reales interactúan entre sí.
¿Deben ser todas las pruebas de extremo a extremo (E2E)?
No, este es un enfoque costoso y complicado. Las E2E son necesarias solo para escenarios críticos del usuario; la mayor parte de la lógica se cubre con otras pruebas.
¿Las pruebas unitarias siempre son rápidas?
No siempre. A veces, no es posible aislar el código o un método depende de recursos externos complejos. En tal caso, la prueba deja de ser unitaria.
En la empresa, solo cubrieron la funcionalidad principal con pruebas E2E: cada corrección se verificaba por la noche, las pruebas fallaban de manera inestable, y los errores se detectaban tarde.
Ventajas:
Desventajas:
El equipo construyó una pirámide de pruebas: en la parte inferior — pruebas unitarias, en el medio — pruebas de integración, y en la parte superior — solo las pruebas E2E más importantes.
Ventajas:
Desventajas: