Un buen conjunto de pruebas de integración no debe cubrir solamente el camino exitoso. También debe verificar qué ocurre cuando la operación se rechaza, cuando una dependencia falla o cuando los datos están justo en un límite importante.
Las pruebas positivas, negativas y de casos límite observan la misma integración desde perspectivas distintas. Juntas ayudan a comprobar que los componentes colaboran correctamente en condiciones normales y también ante situaciones problemáticas.
En este tema veremos cómo elegir y diseñar estos tipos de escenarios.
Una prueba positiva verifica que la integración funcione cuando las condiciones son válidas y esperadas.
Ejemplos:
Estas pruebas son importantes porque confirman el comportamiento principal que el sistema debe ofrecer.
Una prueba positiva no debería limitarse a que no haya errores. Debe verificar el resultado esperado.
Puede comprobar:
Una prueba negativa verifica cómo responde la integración cuando la operación no debería completarse o cuando ocurre una condición inválida.
Ejemplos:
Estas pruebas ayudan a verificar que el sistema rechace correctamente operaciones inválidas y no deje estados inconsistentes.
Una prueba negativa debe revisar dos cosas: la respuesta o error esperado, y la ausencia de efectos incorrectos.
Por ejemplo, si una compra se rechaza por falta de stock, deberíamos verificar:
Muchas fallas de integración aparecen justamente cuando una operación fallida deja cambios parciales.
Un caso límite, o caso borde, verifica valores cercanos a una frontera importante. Son valiosos porque los errores suelen aparecer en los límites de reglas, rangos y estados.
Ejemplos:
En integración, los casos límite permiten verificar que varios componentes interpreten la misma frontera de la misma manera.
Cuando varios componentes comparten datos, un límite puede interpretarse de forma distinta. Por ejemplo, un servicio puede considerar que una promoción vence el 31 a las 00:00, mientras otro la considera válida durante todo el día 31.
Conviene probar límites relacionados con:
Estos casos detectan desacuerdos entre componentes antes de que lleguen a flujos más amplios.
En una integración con base de datos, un caso positivo puede verificar que una operación válida persista correctamente los datos.
Ejemplo: crear un cliente válido.
Un caso negativo con base de datos puede verificar restricciones o reglas de persistencia.
Ejemplo: documento duplicado.
En una integración con servicio externo, un caso positivo verifica que la respuesta exitosa sea interpretada correctamente.
Ejemplo: pago aprobado.
Un caso negativo verifica respuestas de rechazo o error externo.
Ejemplo: pago rechazado.
Este tipo de caso protege al sistema contra estados internos incorrectos generados por respuestas externas.
En procesos asíncronos, los límites pueden estar relacionados con tiempo, duplicados, orden o cantidad de mensajes.
Ejemplos:
Estos escenarios ayudan a probar robustez del consumidor y consistencia eventual.
No es necesario convertir cada combinación posible en una prueba de integración. Estas pruebas suelen ser más costosas que las unitarias, por lo que conviene seleccionar casos representativos y de alto valor.
Prioriza casos donde:
Los detalles puramente internos pueden cubrirse mejor con pruebas unitarias.
Una integración importante suele necesitar al menos un caso positivo, uno o más negativos y algún límite relevante.
Por ejemplo, para stock:
| Tipo | Escenario | Qué verifica |
|---|---|---|
| Positivo | Comprar 2 unidades con stock 10. | La compra se confirma y el stock baja a 8. |
| Negativo | Comprar 12 unidades con stock 10. | La compra se rechaza y el stock no cambia. |
| Límite | Comprar 10 unidades con stock 10. | La compra se acepta y el stock queda en 0. |
| Límite | Comprar 11 unidades con stock 10. | La compra se rechaza sin cambios parciales. |
En pruebas negativas y de límite, es muy importante verificar lo que no debe ocurrir.
Ejemplos:
Estas verificaciones detectan defectos que una simple revisión de respuesta no mostraría.
Al diseñar estos escenarios, suelen aparecer errores como:
Para revisar la cobertura de una integración, podemos preguntar:
Las pruebas positivas, negativas y de casos límite se complementan. Juntas permiten comprobar que una integración funciona cuando todo está bien, falla de forma controlada cuando algo no corresponde y maneja correctamente las fronteras importantes.
Una suite de integración equilibrada no necesita cubrir todas las combinaciones, pero sí debe cubrir los escenarios que más riesgo concentran.
En el próximo tema veremos trazabilidad entre requisitos, interfaces y pruebas de integración.