Machine Translated by Google
Pruebas de software:
Pruebas de integración
Bernd Bruegge y Allen H. Dutoit
Ingeniería de software orientada a objetos: uso de UML, patrones y Java
1
Machine Translated by Google
Descripción general: pruebas de integración
• Pruebas de integración
−Gran explosión
−Abajo hacia arriba
− De arriba hacia abajo
−Sándwich
− Continuo
Bernd Bruegge y Allen H. Dutoit
Ingeniería de software orientada a objetos: uso de UML, patrones y Java
2
Machine Translated by Google
Pruebas de integración
• Todo el sistema es visto como una colección de
Subsistemas (conjuntos de clases) determinados durante el
diseño del sistema y del objeto.
• Objetivo: Probar todas las interfaces entre los subsistemas y la
interacción de los subsistemas.
• La estrategia de prueba de integración determina el orden en el
que se seleccionan los subsistemas para la prueba y la
integración.
Bernd Bruegge y Allen H. Dutoit
Ingeniería de software orientada a objetos: uso de UML, patrones y Java
3
Machine Translated by Google
¿Por qué hacemos pruebas de integración?
• Las pruebas unitarias solo prueban la unidad de
forma aislada. • Muchas fallas resultan de fallas en la interacción de los subsistemas .
• A menudo se utilizan muchos componentes disponibles en el mercado que no se pueden
unidad probada
• Sin pruebas de integración, la prueba del sistema llevará mucho tiempo.
consumidor
• Las fallas que no se descubren en las pruebas de integración se descubrirán
después de implementar el sistema y pueden ser muy costosas.
Bernd Bruegge y Allen H. Dutoit
Ingeniería de software orientada a objetos: uso de UML, patrones y Java
4
Machine Translated by Google
Talones y conductores
• Conductor:
−Un componente que llama a TestedUnit
Conductor
− Controla los casos de prueba.
Probado
• Talón:
Unidad
−Un componente del que depende
TestedUnit
−Implementación parcial
Talón
− Devuelve valores falsos.
Bernd Bruegge y Allen H. Dutoit
Ingeniería de software orientada a objetos: uso de UML, patrones y Java
5
Machine Translated by Google
Ejemplo: un diseño de 3 capas
(Hoja de cálculo)
A
Desparramar
A
Vista de hoja
B
C
Datos
Entidad
B
Modelo
mi
Calculadora
C
F
D
Divisa
D
Convertidor
Capa II
GRAMO
Archivo binario
mi
Archivo XML
F
Almacenamiento
Almacenamiento
Bernd Bruegge y Allen H. Dutoit
Capa I
Divisa
Capa III
GRAMO
Base de datos
Ingeniería de software orientada a objetos: uso de UML, patrones y Java
6
Machine Translated by Google
A
Enfoque del Big Bang
B
D
C
Prueba A
Prueba B
mi
F
GRAMO
Prueba C
Prueba
Prueba D
Prueba E
A B C D,
mi, f, sol
Prueba F
Prueba G
Bernd Bruegge y Allen H. Dutoit
Ingeniería de software orientada a objetos: uso de UML, patrones y Java
7
Machine Translated by Google
Estrategia de prueba ascendente
• Los subsistemas en el nivel más bajo de la jerarquía de llamadas se
prueban individualmente
• Luego se prueban los siguientes subsistemas que llaman a los
subsistemas probados previamente.
• Esto se repite hasta que todos los subsistemas estén incluidos.
• Se necesitan conductores.
Bernd Bruegge y Allen H. Dutoit
Ingeniería de software orientada a objetos: uso de UML, patrones y Java
8
Machine Translated by Google
A
Integración ascendente
B
D
C
Prueba E
mi
F
GRAMO
Prueba B, E, F
Prueba F
Prueba C
Prueba
A B C D,
mi, f, sol
Prueba G
Bernd Bruegge y Allen H. Dutoit
Prueba D,G
Ingeniería de software orientada a objetos: uso de UML, patrones y Java
9
Machine Translated by Google
Pros y contras del enfoque ascendente
Pruebas de integración
• Desventaja:
− Prueba el subsistema más importante (interfaz de usuario) al final
− Se necesitan conductores
• Pro
− No se necesitan talones
− Útil para pruebas de integración de los siguientes sistemas
• Sistemas orientados a objetos
• Sistemas en tiempo real. •
Sistemas con estrictos requisitos de rendimiento.
Bernd Bruegge y Allen H. Dutoit
Ingeniería de software orientada a objetos: uso de UML, patrones y Java
10
Machine Translated by Google
Estrategia de prueba de arriba hacia abajo
• Pruebe primero la capa superior o el subsistema de control
• Luego combine todos los subsistemas que son llamados por
los subsistemas probados y probar la colección resultante de
subsistemas
• Haga esto hasta que todos los subsistemas estén incorporados al
prueba
• Se necesitan talones para realizar las pruebas.
Bernd Bruegge y Allen H. Dutoit
Ingeniería de software orientada a objetos: uso de UML, patrones y Java
11
Machine Translated by Google
A
Integración de arriba hacia abajo
B
D
C
F
mi
GRAMO
Prueba
Prueba A
Prueba A, B, C, D
A B C D,
mi, f, sol
Capa I
Bernd Bruegge y Allen H. Dutoit
Capa I + II
Todas las capas
Ingeniería de software orientada a objetos: uso de UML, patrones y Java
12
Machine Translated by Google
Pros y contras de la opción de arriba hacia abajo
Pruebas de integración
Pro
• Los casos de prueba se pueden definir en términos de la funcionalidad del sistema
(requisitos funcionales)
• No se necesitan controladores
Contras
• Escribir resguardos es difícil: los resguardos deben permitir probar todas las
condiciones posibles.
• Es posible que se requiera una gran cantidad de apéndices, especialmente si el
nivel más bajo del sistema contiene muchos métodos.
• Algunas interfaces no se prueban por separado.
Bernd Bruegge y Allen H. Dutoit
Ingeniería de software orientada a objetos: uso de UML, patrones y Java
13
Machine Translated by Google
Estrategia de prueba de sándwich
• Combina una estrategia de arriba hacia abajo con una estrategia de abajo hacia arriba
• Se considera que el sistema tiene tres capas.
−Una capa objetivo en el medio
−Una capa por encima del objetivo
−Una capa debajo del objetivo
• Las pruebas convergen en la capa objetivo.
Bernd Bruegge y Allen H. Dutoit
Ingeniería de software orientada a objetos: uso de UML, patrones y Java
14
Machine Translated by Google
A
Estrategia de prueba de sándwich
B
D
C
Prueba A
mi
Prueba E
F
GRAMO
Prueba A, B, C, D
Prueba
Prueba B, E, F
A B C D,
mi, f, sol
Prueba F
Prueba D,G
Prueba G
Bernd Bruegge y Allen H. Dutoit
Ingeniería de software orientada a objetos: uso de UML, patrones y Java
15
Machine Translated by Google
Pros y contras del sándwich
Pruebas
• Las pruebas de las capas superior e inferior se pueden realizar en paralelo
• Problema: No prueba minuciosamente los subsistemas individuales y
sus interfaces antes de la integración.
• Solución: estrategia de prueba tipo sándwich modificada
Bernd Bruegge y Allen H. Dutoit
Ingeniería de software orientada a objetos: uso de UML, patrones y Java
dieciséis
Machine Translated by Google
Prueba de sándwich modificada
Estrategia
• Prueba en paralelo:
− Capa intermedia con controladores y talones
− Capa superior con talones
−Capa inferior con controladores.
• Prueba en paralelo:
− La capa superior accede a la capa intermedia (la capa superior
reemplaza a los controladores)
−A la parte inferior se accede por la capa intermedia (la capa inferior
reemplaza los talones).
Bernd Bruegge y Allen H. Dutoit
Ingeniería de software orientada a objetos: uso de UML, patrones y Java
17
Machine Translated by Google
Prueba de sándwich modificada
A
B
C
D
Prueba A
Prueba A, B, C, D
Prueba C
mi
F
GRAMO
Prueba B
Prueba
Prueba E
Prueba B, E, F
A B C D,
mi, f, sol
Prueba F
Prueba D
Prueba D,G
Prueba G
Bernd Bruegge y Allen H. Dutoit
Ingeniería de software orientada a objetos: uso de UML, patrones y Java
18
Machine Translated by Google
Pruebas continuas
• Construcción continua:
− Construir desde el primer día
− Prueba desde el primer día
− Integre desde el primer día
El
sistema siempre es ejecutable
• Requiere soporte de herramientas integrado:
− Servidor de construcción continua
− Pruebas automatizadas con alta cobertura.
− Refactorización apoyada por herramientas
− Gestión de la configuración del software.
− Seguimiento de problemas
Bernd Bruegge y Allen H. Dutoit
Ingeniería de software orientada a objetos: uso de UML, patrones y Java
19
Machine Translated by Google
Estrategia de prueba continua
A
Desparramar
Vista de hoja
B
Calculadora
Modelo
mi
F
Archivo XML
Almacenamiento
Almacenamiento
Bernd Bruegge y Allen H. Dutoit
Divisa
Convertidor
Capa II
GRAMO
Archivo binario
Vista de hoja
D
C
Datos
Capa I
Capa III
Divisa
Base de datos
+ Celdas
+ Adición
+ Almacenamiento de archivos
Ingeniería de software orientada a objetos: uso de UML, patrones y Java
20
Machine Translated by Google
Pasos en las pruebas de integración
1. Basado en la integración
.
estrategia, seleccione un componente
para ser probado. Prueba unitaria de
todas las clases del componente.
2. Poner el componente seleccionado.
juntos; realizar cualquier reparación
preliminar necesaria para que la prueba
de integración sea operativa
(controladores, stubs)
3. Probar los requisitos funcionales: definir
casos de prueba que ejerciten
todos los casos de uso con el
4. Descomposición del
subsistema de prueba: definir casos
de prueba que ejerzan todas
las dependencias
5. Prueba no funcional
Requisitos: Ejecutar pruebas de
rendimiento.
6. Mantener registros de los casos de prueba
y las actividades de prueba.
7. Repita los pasos 1 a 7 hasta que se
pruebe todo el sistema.
El objetivo principal de las pruebas de
integración es identificar fallas en la
configuración del componente (actual).
componente seleccionado.
Bernd Bruegge y Allen H. Dutoit
Ingeniería de software orientada a objetos: uso de UML, patrones y Java
21