En general
¿Cuándo tiene suficientes pruebas automáticas para confiar en su proceso de integración continua?
La respuesta probablemente se aclare si piensa en lo que quiere confiar. Finalmente, mapea 1-1; cada prueba te hace confiar en lo único que prueba:
- Las pruebas unitarias le dan la confianza de que una clase (o módulo) hace lo que se prueba.
- Las pruebas de integración le dan la confianza de que varias unidades trabajan juntas de la manera en que se prueban.
- Las pruebas de extremo a extremo le dan la confianza de que toda la aplicación hace una determinada cosa, tal como se describe en la prueba.
Por la forma en que formuló su pregunta, probablemente esté pensando en un sentido comercial general en este momento, por ejemplo:
Quiero estar seguro de que mi aplicación puede hacer X .
Entonces, escribe una prueba de extremo a extremo que intenta hacer X y comprueba si lo hace correctamente.
Más concreto
Todo eso es muy autorreferencial, pero eso es porque a eso se reduce. Simplemente no hay más que eso.
Por ejemplo, imagine que escribe una aplicación para crear recetas de cocina. Una característica es que, si agrega diferentes cantidades de varios tipos diferentes de queso, le da la temperatura y el tiempo correctos para que todos se derritan.
Por lo tanto, puede escribir una prueba unitaria para usted CheeseMeltCalculator, donde le da 100 g de Gouda y 200 g de queso Emmental, y luego verifica que la temperatura y el tiempo sean correctos. Eso significa que ahora puede estar seguro de que CheeseMeltCalculatorfunciona para 100 g de Gouda y 200 g de queso. Ahora, si repite esta prueba con 300 g de Gouda en lugar de 200 g, puede estar bastante seguro de que funciona correctamente para diferentes valores. Puede agregar pruebas para 0, -1y int.MaxValueg de Gouda para estar seguro de que el código no se dispara (o se dispara correctamente según lo previsto) para entradas extrañas.
Puede escribir una prueba de integración para verificar que CheeseMeltCalculatorestá incorporada correctamente en todo el proceso de cálculo de temperatura y tiempo de los alimentos. Si esto sale mal, pero las CheeseMeltCalculatorpruebas anteriores están bien, puede estar seguro de que el error está en otras calculadoras o en la forma en que se combinan los datos de diferentes calculadoras.
Y finalmente, puede escribir una prueba de principio a fin para crear una receta completa, y una de las cosas que verifica es la temperatura y el tiempo del resultado. Si los 2 niveles anteriores de pruebas están bien, pero no funciona bien, entonces puede estar seguro de que esas partes son correctas y el error es algo acerca de cómo se integra el cálculo de temperatura en la aplicación. Por ejemplo, tal vez la entrada del usuario no se transfiere correctamente.
Y finalmente , si todas esas pruebas están bien, entonces puede estar seguro de que " si agrega diferentes cantidades de varios tipos diferentes de queso, le dará la temperatura y el tiempo correctos para que todos se derritan "
Larga historia corta
El punto es que no puedes tener una prueba "funciona correctamente". Solo puede probar "Si hago X, Y sucede".
Sin embargo, esto es exactamente lo que debería estar en las especificaciones técnicas del proyecto. Una declaración como " si agrega diferentes cantidades de varios tipos diferentes de queso, le da la temperatura y el tiempo correctos para que todos se derritan " no solo le da al cliente expectativas claras sobre lo que hará el producto terminado, sino que también se puede cambiar en pruebas automatizadas.
información adicional
El usuario Richard agregó esta información en una edición:
Martin Fowler tiene un resumen muy agradable en su sitio web sobre las estrategias más comunes: https://martinfowler.com/articles/microservice-testing/
No quiero eliminar esto, pero quiero decir esto: en comparación con esta respuesta, no es un "resumen", sino una explicación mucho más profunda, con buenos gráficos y todo.
Mi consejo sería: si todo tiene sentido después de leer mi respuesta, ya está. Si las cosas aún no están claras, reserve un poco de tiempo y lea el artículo vinculado.