Component vs Integration tests

Las pruebas de integración verifican que un componente puede interactuar apropiadamente con la infraestructura de otros componentes. Mientras las pruebas de componente son pruebas de aceptación (a veces basadas en las historias de usuario) para el componente unicamente.

Las pruebas de integración unicamente prueban la integración con otros componentes (sin probar el flujo completo dentro del componente), por ejemplo:

  • Supongamos que tenemos un MS, una prueba de integración podría ser que se comunique mediante el protocolo HTTP con otro MS donde las dependencias son "simuladas".
  • Prueba de integración de un evento.
  • Prueba de integración llamadas asincronas con otros componentes.
  • Pruebas de integración a bases de datos.
Las pruebas de integración se pueden hacer simulado los componentes que seran integrados tan estrictamente como sea necesarios, desde un framework como jUnit o Spring hasta usando Docker.

Las pruebas de componente comprueba todo el flujo dentro del componente individualmente, incluyendo la integración con otros componentes (por eso esta un nivel superior en la piramide) simulando su comportamiento, por ejemplo:
  • Supongamos que tenemos un MS cuyo endpoint tiene que devolver personas mayores de edad, una prueba de componente o de aceptación sería que se comprobara que el MS pudiera regresar tales personas mayores. Donde se comprobaria todo el flujo del componente (en este caso el MS); la llamada al endpoint, el formato JSON, la respuesta con un 200 OK, la conexión a otros MS o bases de datos para recuperar la información.
Al igual que en las pruebas de integración, la simulación de los componentes dependientes sera tan estricta como sea necesario.

Referencias:

Microservices Patterns: With examples in Java (1st ed.). (2018). Manning.

Comentarios