Test de Integración
¿Qué son?
Al contrario de los test unitarios los cuales comprueban el funcionamiento de un único método de una clase, los test de integración prueban la interacción entre dos o más elementos, ya sean: clases, módulos, paquetes ... Incluso la interacción del sistema con el entorno de producción. Estos test se deben realizar justo después de los test unitarios.
Necesidad
Al igual que los test unitarios comprueban la funcionalidad de un elemento concreto, los test de integración nacen de la necesidad de identificar problemas que puedan ocurrir cuando las distintas unidades se combinan, es decir, trata nuestro código como un todo y no elemento a elemento, ya que el correcto funcionamiento de los test unitarios no nos asegura el funcionamiento de forma conjunta de los elementos. Las ventajas que nos proporciona el desarrollo de estos test son las siguientes:
Permite comprobar con datos reales que la funcionalidad de los distintos elementos se realiza correctamente.
Permite comprobar que un sistema de varios módulos funcionó como se esperaba.
Estructura de las pruebas
Las pruebas de integración se pueden realizar de cuatro maneras distintas citadas a continuación:
Integración descendente
Este tipo de pruebas comenzarán con el componente de más alto nivel del sistema que llama a otros componentes del sistema pero no a sí mismo. La integración avanza con componentes de nivel inferior.Integración ascendente
La prueba comienza con los componentes elementales del sistema que no requieren componentes adicionales. Los subsistemas más grandes se ensamblan a partir de los componentes probados.Integración Ad-hoc
Los componentes se han integrado en el orden en que están terminados. Cuando un componente ha pasado la prueba de componentes, se inicia la prueba de integración para ver si encaja con otro componente ya probado.Integración del esqueleto
Cuando un esqueleto o columna vertebral del sistema se ha terminado, los componentes se integran gradualmente a el.
Buenas prácticas
Para realizar correctamente este tipo de test se deberán tener en cuenta los siguientes puntos:
Las pruebas de la lógica de negocio se realiza con los test unitarios no con los de integración. Esto es debido a que las pruebas unitarias son muchísimo más rápidas de ejecutar, interesando, a veces, ejecutar únicamente una vez al día las pruebas de integración las cuales tardan más en ejecutar.
Se debe tener en cuenta que las pruebas de integración utilizan componentes externos como la red o la BD, son mucho más complejas y, estas sirven para comprobar la integración del sistema, es decir, si falla, no se debe comprobar la lógica de negocio ya que esta debe ser comprobada por los test unitarios.
Las pruebas unitarias y las de integración deben de poderse ejecutar de manera independiente debido a que las pruebas de integración son mucho más costosas y puede haber demoras importantes de tiempo.
Se debe realizar un registro exhaustivo para saber donde puede radicar un problema cuando falla un test de integración ya que estos abarcan muchos mas componentes que los test unitarios, lo que podría hacer que la localización de un fallo se realice de una manera más tediosa.
¿Cuándo se deben realizar los test?
Este tipo de test debe realizarse siempre que sea posible. Deberán realizarse después de los test unitarios. Como se ha indicado en los anteriores puntos estos test requieren de mas tiempo y recursos que los unitarios, por lo que no se deben pasar con la misma frecuencia que los test unitarios. No obstante, hay que tener en cuenta que este tipo de test requieren incrementar notablemente el tiempo de trabajo donde, según los requerimientos de producto y sus tiempos asociados puede compensar realizarlos o no.
Mas información
Para más información sobre test de integración se puede consultar este post en inglés.