Pruebas de integración

Tradicionalmente, las pruebas de software se han considerado una forma de encontrar errores una vez que se ha creado un producto utilizable. Sin embargo, a medida que ha avanzado el proceso de desarrollo de software y han evolucionado los requisitos del software complejo, también ha evolucionado el proceso de prueba.
Las pruebas se han dividido en distintos niveles para mejorar la cobertura y la fiabilidad de las pruebas. En este texto, primero repasaremos rápidamente los distintos niveles de las pruebas y luego veremos en detalle las Pruebas de Integración y sus tipos, ventajas y algunas de las herramientas de pruebas de integración más comunes.
Índice
- Niveles de pruebas
- ¿Qué son las pruebas de integración?
- ¿Por qué debemos realizar pruebas de integración?
- Ventajas de las pruebas de integración
- Tipos de pruebas de integración
- Integración Big-bang
- Pruebas de integración descendentes
- Pruebas de integración ascendentes
- Pruebas de integración híbridas
- Herramientas de pruebas de integración
Niveles de pruebas
Los tipos de pruebas de software pueden dividirse a grandes rasgos en pruebas estáticas y pruebas dinámicas. En el caso de las pruebas estáticas, no ejecutamos la aplicación de software desarrollada, sino que utilizamos diversas técnicas para probar la aplicación, como – comprobaciones, pruebas provisionales, revisiones informales y técnicas.
En el caso de las pruebas dinámicas, probamos la aplicación de software ejecutando el código y examinando su comportamiento dinámico, lo que implica analizar diversos parámetros, como el tiempo de respuesta, la utilización de la CPU, la utilización de la memoria, etc. Actualmente, las pruebas dinámicas implican distintos niveles de pruebas que comienzan con las pruebas unitarias y continúan con las pruebas de integración, del sistema y, por último, de aceptación.

Pruebas unitarias: es el primer nivel de las pruebas, en el que los módulos individuales o los bloques de construcción más pequeños de la aplicación se prueban de forma aislada. La ventaja de esto es que, como sólo nos centramos en módulos más pequeños, es más fácil probar completa y exhaustivamente un módulo determinado. Además, los errores detectados a este nivel pueden corregirse rápida y fácilmente con menos recursos.
Pruebas de integración – Este es el segundo nivel de pruebas que cubriremos en este artículo. Incluye la comprobación de los módulos integrados en su conjunto junto con su interconexión.
Pruebas del sistema: tercer nivel de pruebas en el que se realizan pruebas de extremo a extremo de toda la aplicación. Ayuda a verificar los requisitos antes de la prueba final por parte del cliente.
Pruebas de aceptación: es el cuarto y último nivel de pruebas, en el que el cliente o las partes interesadas comprueban si la aplicación cumple o no sus requisitos empresariales.
Ahora que conocemos las pruebas estáticas y dinámicas y los distintos niveles de pruebas, podemos pasar a conocer en detalle las pruebas de integración.
¿Qué son las pruebas de integración?
Las pruebas de integración son el segundo nivel de pruebas que se realizan después de las pruebas unitarias, en las que se comprueba la interconexión entre módulos junto con las pruebas de los componentes integrados. Puede realizarse utilizando técnicas de prueba de caja blanca y de caja negra.
¿Por qué debemos realizar pruebas de integración?
- Un módulo puede funcionar perfectamente de forma aislada, pero puede tener problemas de integración al interactuar con otro módulo.
- Puede haber problemas con el tipo de datos o el rango de datos válido entre módulos.
- En equipos grandes donde los módulos son creados por diferentes desarrolladores o incluso equipos, esto es muy necesario, ya que puede haber un desajuste en la comprensión de los diferentes desarrolladores.
Ventajas de las pruebas de integración
- Como ya se ha dicho, ayuda a identificar problemas de integración entre módulos.
- Ayuda a garantizar que los módulos integrados funcionan correctamente antes de pasar a probar la aplicación en todo el sistema.
- Los fallos detectados a este nivel son más fáciles de resolver que los detectados en fases posteriores de las pruebas: pruebas del sistema y de aceptación.
- Mejora la cobertura de las pruebas y proporciona un nivel adicional de fiabilidad.
Tipos de pruebas de integración
conocemos 4 tipos:
Integración Big-bang
En una gran integración, primero hay que completar todos los módulos y luego integrarlos. Tras la integración, se realizan pruebas de la unidad integrada en su conjunto. Se diferencia de las pruebas del sistema porque aquí las pruebas se centran en la interconexión/comunicación entre módulos.
Ventaja – Es adecuado para proyectos más pequeños en los que se pueden desarrollar todos los módulos antes de iniciar las pruebas de integración.
Desventaja – Es muy difícil de integrar, ya que no es práctico ni conveniente tener todos los módulos listos antes de empezar las pruebas de integración.
Pruebas de integración descendentes
La integración descendente es un enfoque de pruebas de integración incremental en el que el flujo de pruebas comienza desde los módulos de nivel superior (módulos más altos en la jerarquía) hacia los módulos de nivel inferior. Como es muy probable que los módulos de nivel inferior no se desarrollen hasta que se inicien los de nivel superior, en esos casos se utilizan plugins (stubs).
Los módulos proxy son módulos ficticios que simulan el funcionamiento de un módulo aceptando los parámetros recibidos por éste y proporcionando un resultado aceptable. En general, los stubs tienen entradas y salidas codificadas que ayudan a probar otros módulos que se integran con él.
Ventaja – Con el uso de stubs no tenemos que esperar al desarrollo de todos los módulos. También podemos dar prioridad a probar primero los módulos integrados críticos.
Desventaja – Esta técnica requiere la creación de muchos módulos hijos para simular módulos de nivel inferior. También puede ocurrir que los módulos de nivel inferior no estén suficientemente probados.
Pruebas de integración ascendentes
La integración ascendente también se basa en un enfoque incremental, partiendo de módulos de nivel inferior y ascendiendo hacia módulos de nivel superior. Una vez más, los módulos de nivel superior pueden no estar desarrollados en el momento en que se prueban los módulos de nivel inferior. En estos casos, se utilizan controladores. Estos controladores simulan la funcionalidad de módulos de nivel superior para probar módulos de nivel inferior.
Ventaja: al igual que en las pruebas descendentes, no tenemos que esperar a que se desarrollen todos los módulos para empezar a probarlos.
Desventaja – Los módulos de nivel superior que se prueban en fases posteriores pueden no estar suficientemente probados y contener errores.
Pruebas de integración híbridas
El enfoque de integración híbrida también se denomina enfoque sándwich. Este enfoque es una combinación de pruebas de integración descendentes y ascendentes. En este enfoque, la integración comienza en la capa intermedia y las pruebas se realizan en ambas direcciones: hacia los módulos de nivel superior (hacia arriba) y hacia los módulos de nivel inferior (hacia abajo). Este método incorpora las ventajas de los enfoques descendente y ascendente, y ayuda a probar más rápidamente las interfaces de los módulos.
Ventaja – Como podemos movernos hacia arriba y hacia abajo, éste es el método más eficaz en cuanto al tiempo, con la posibilidad de priorizar módulos en el nivel superior o inferior.
Inconveniente – este enfoque es difícil de aplicar porque tenemos que integrar y desplazarnos en ambas direcciones del módulo sometido a prueba.
Retos de las pruebas de integración
- Difícil de ejecutar: es muy difícil de ejecutar en comparación con las pruebas del sistema, en las que podemos considerar la aplicación como una caja negra.
- Lleva mucho tiempo – Probar todas las interconexiones entre los distintos módulos vinculados consume mucho tiempo y recursos.
- Esfuerzo adicional – Requiere la creación de subgrupos y controladores que, si no se crean correctamente, pueden dar lugar a pruebas inadecuadas.
Herramientas de pruebas de integración
Rational Integration Tester – Rational integration tester es una herramienta de pruebas de integración de IBM. Proporciona un entorno sin código para desarrollar pruebas de integración.
TESSY – Tessy, de Razorcat Development GmbH, ayuda a automatizar el ciclo de pruebas unitarias y de integración del software embebido en C y C++.
LDRA – El conjunto de herramientas LDRA proporciona capacidades de pruebas unitarias, de integración y del sistema. Se utiliza sobre todo para aplicaciones de software críticas, como: aeroespacial, dispositivos médicos, automoción, etc.
Protractor – Protractor es un marco de pruebas de código abierto para aplicaciones Angular y AngularJS que admiten secuencias de comandos Javascript.
Pruebas de integración de Citrus – Citrus es un marco de pruebas de código abierto que ayuda a desarrollar pruebas de integración automatizadas para protocolos y formatos de mensajes HTTP REST, TCP/IP, SOAP, FTP, XML, JSON, etc.
Steam – Steam es un marco de automatización de pruebas de código abierto que proporciona pruebas de integración sin cabeza.
Jasmine – Jasmine es un marco BDD de código abierto que puede utilizarse para automatizar cualquier aplicación basada en Javascript.