unit testing - tipos - ¿Cuál es la diferencia entre las pruebas unitarias y las pruebas de integración?
tecnicas de pruebas de software (5)
Esta pregunta ya tiene una respuesta aquí:
¿Cuál es la diferencia entre las pruebas unitarias y las pruebas de integración?
¿Hay diferentes nombres para estas pruebas? ¿Como algunas personas que llaman pruebas de unidad pruebas funcionales, etc?
La prueba de unidad generalmente se realiza para una única funcionalidad implementada en el módulo de software. El alcance de las pruebas está completamente dentro de este módulo SW. La prueba unitaria nunca cumple con los requisitos funcionales finales. Viene bajo metodología de prueba de caja blanca.
Mientras que la prueba de integración se realiza para asegurar las diferentes implementaciones del módulo SW. La prueba generalmente se lleva a cabo después de que la integración a nivel de módulo se realiza en el desarrollo de SW. Esta prueba cubrirá los requisitos funcionales, pero no lo suficiente para asegurar la validación del sistema.
Una prueba de unidad es una prueba escrita por el programador para verificar que un fragmento de código relativamente pequeño está haciendo lo que se pretende que haga. Tienen un alcance limitado, deberían ser fáciles de escribir y ejecutar, y su efectividad depende de lo que el programador considere útil. Las pruebas están pensadas para el uso del programador, no son directamente útiles para nadie más, sin embargo, si hacen su trabajo, los probadores y los usuarios que se encuentren más abajo deberían beneficiarse al ver menos errores.
Parte de ser una prueba unitaria es la implicación de que las cosas que están fuera del código bajo prueba son burladas o apagadas. Las pruebas unitarias no deben tener dependencias de sistemas externos. Prueban la consistencia interna en lugar de demostrar que juegan bien con algún sistema externo.
Se realiza una prueba de integración para demostrar que diferentes partes del sistema funcionan juntas. Las pruebas de integración cubren aplicaciones completas y requieren mucho más esfuerzo para armarse. Por lo general, requieren recursos como instancias de base de datos y hardware para ser asignados para ellos. Las pruebas de integración realizan un trabajo más convincente para demostrar que el sistema funciona (especialmente para los no programadores) que un conjunto de pruebas unitarias, al menos en la medida en que el entorno de prueba de integración se asemeja a la producción.
En realidad, la "prueba de integración" se usa para una gran variedad de cosas, desde pruebas completas del sistema contra un entorno creado para parecerse a la producción hasta cualquier prueba que usa un recurso (como una base de datos o una cola) que no se burla.
Una prueba de unidad no debe tener dependencias en el código fuera de la unidad probada. Usted decide cuál es la unidad buscando la parte compacta más pequeña. Donde haya dependencias deben ser reemplazadas por objetos falsos. Simulacros, apéndices ... El hilo de ejecución de pruebas comienza y termina dentro de la unidad comprobable más pequeña.
Cuando los objetos falsos son reemplazados por objetos reales y las pruebas ejecutan cruces de hilos en otras unidades comprobables, tiene una prueba de integración
Una prueba de unidad prueba el código sobre el que tiene control completo, mientras que una prueba de integración prueba cómo su código usa o se "integra" con algún otro código.
Por lo tanto, debe escribir pruebas unitarias para asegurarse de que sus propias bibliotecas funcionan según lo previsto, y luego escribir pruebas de integración para asegurarse de que su código juegue bien con otro código que esté utilizando, por ejemplo, una biblioteca.
Las pruebas funcionales están relacionadas con las pruebas de integración, pero se refieren más específicamente a las pruebas que prueban todo un sistema o aplicación con todo el código ejecutándose en conjunto, casi una prueba de super integración.
Una prueba de unidad se realiza en (en la medida de lo posible) aislamiento total.
Una prueba de integración se realiza cuando el objeto o módulo probado funciona como debería, con otros bits de código.