Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Estas transparencias están basadas en las desarrolladas por Ammann & Offutt como
acompañamiento de su libro Introduction to Software Testing (2nd Edition)
EL MAYOR ÉNFASIS EN LAS
PRUEBAS
• La filosofía de los métodos tradicionales de desarrollo de
software indican que hay que hacer:
• Análisis inicial
• Modelado extensivo Se debe revisar más trabajo
2
Tiempo
Original Revision
SUPUESTOS TRADICIONALES
3
¿POR QUÉ SER METODOLOGÍAS
ÁGILES?
• Los métodos ágiles comienzan reconociendo que ninguna suposición es válida
para muchos proyectos de software actuales.
• Los ingenieros de software no son buenos para desarrollar requisitos
• No anticipamos muchos cambios.
• Muchos de los cambios que anticipamos no son necesarios.
• Los requisitos (y otros "artefactos no ejecutables") tienden a quedar obsoletos
muy rápidamente.
• Rara vez nos tomamos el tiempo para actualizarlos.
• Muchos proyectos de software actuales cambian continuamente.
• Los métodos ágiles esperan que el software comience poco a poco y
evolucione con el tiempo.
4
APOYO AL DISEÑO EVOLUTIVO
El consejo de diseño tradicional dice anticiparse a los cambio.
Los diseñadores a menudo anticipan cambios que no suceden.
Anticipar el
cambio
diseño
UNA VISIÓN LIMITADA DE LA
CORRECCIÓN
• En los métodos tradicionales, tratamos de definir todo el comportamiento
correcto completamente, al principio.
• ¿Qué es la corrección?
• ¿La "corrección" significa algo en grandes productos de ingeniería?
• La gente es MUY MALA para definir completamente la corrección
• En los métodos ágiles, redefinimos la corrección para que sea relativa a
un conjunto específico de pruebas.
• Si el software se comporta correctamente en las pruebas, es "correcto“.
• En lugar de definir todos los comportamientos, demostramos algunos
comportamientos.
• Los matemáticos pueden sentirse decepcionados por la falta de completitud.
• ¡Pero los ingenieros de software no son matemáticos!
6
LOS ARNESES DE PRUEBA
VERIFICAN LA CORRECCIÓN
• Un arnés de prueba ejecuta todas las pruebas automatizadas de manera
eficiente e informa los resultados a los desarrolladores
• Las pruebas deben ser automatizadas.
• La automatización de pruebas es un requisito previo para el desarrollo
controlado por pruebas.
• Cada prueba debe incluir un oráculo de prueba que pueda evaluar si esa
prueba se ejecutó correctamente.
• Las pruebas reemplazan los requisitos.
• Las pruebas deben ser de alta calidad y deben ejecutarse rápidamente.
• Ejecutamos pruebas cada vez que realizamos un cambio en el software
7
INTEGRACIÓN CONTINUA
• Los métodos ágiles funcionan mejor cuando la versión actual del software
se puede ejecutar en todas las pruebas en cualquier momento.
• Un servidor de integración continua reconstruye el sistema, devuelve y
vuelve a verificar las pruebas cada vez que se registra una actualización
en el repositorio.
• Los errores se detectan antes.
• Otros desarrolladores son conscientes de los cambios temprano.
• La reconstrucción y la re-verificación deben realizarse lo antes posible
• Por lo tanto, las pruebas deben ejecutarse rápidamente.
• Un servidor de integración continua no solo ejecuta pruebas, sino que decide
si un sistema modificado sigue siendo correcto.
8
LA INTEGRACIÓN CONTINUA REDUCE EL
RIESGO
Funcionalidad Integrada
Funcionalidad Total
Requerimientos
?
Requerimientos Pruebas
del
Requerimientos sistema
• No archivado
PRUEBAS DE ACEPTACIÓN EN
MÉTODOS ÁGILES
Historia de Test de TDD Test
Aceptación
usuario
(Fallo)
1
Cambiar
Archivo de software &
Tests Refactorizar
Test de
Aceptación
(Aprobado) Continúe agregando
pruebas TDD hasta que
pase la prueba de TDD Test
aceptación 2
Cambiar
software &
La refactorización
12 evita
refactorizar
la deuda de
mantenimiento
AGREGAR PRUEBAS A SISTEMAS
EXISTENTES
• La mayor parte del software actual es heredado
• Sin pruebas heredadas
• Requisitos heredados irremediablemente obsoletos
• Los diseños, si alguna vez fueron escritos, perdidos
13
TDD INCREMENTAL
14
EL DÉFICIT DE PRUEBAS
15
¿POR QUÉ NO?
16
DISEÑA BUENAS PRUEBAS