1-1 Porque Testing
1-1 Porque Testing
1-1 Porque Testing
software
Empecemos 2
Incidente
• Noviembre de 2000 –
National Cancer Institute,
Ciudad de Panamá.
• El software de Multidata Systems
International, una empresa de
EE.UU, no calculó la dosis
correcta de radiación para los
pacientes sometidos a
radioterapia. Ocho personas
murieron
Fallos espectaculares en software 24
• 8 de julio 1962 –
Mariner
• Un error en el software
de la sonda Mariner I
hace que el cohete se
desvíe de su trayectoria
cayendo sobre el
Océano Atlántico.
Fallos espectaculares en software 26
• 1985-1987 – Acelerador
médico Therac-25.
• Un error en el tratamiento de
radiación del dispositivo
proporcionó dosis letales de
radiación en varios centros
médicos. 3 personas murieron y
muchas otras se vieron
afectadas.
Fallos espectaculares en software 28
• 1988-1996 – El generador
de números aleatorios de
Kerberos.
• Los autores del sistema de
seguridad de
Kerberos cometieron un error
en el generador de números
aleatorios y durante ocho años
fue posible entrar en cualquier
ordenador que lo utilizara.
Fallos espectaculares en software 30
• 1995/1996 – El ping de la
muerte.
• Que hacía posible colgar
ordenadores enviando un ping
mal formado.
• El problema afecto a Macintosh y
Unix, pero los peor parados
fueron los Windows que al
recibir el ping mostraban
la “pantalla azul de la muerte”
Fallos espectaculares en software 33
• Noviembre de 2000 –
National Cancer Institute,
Ciudad de Panamá.
• El software de Multidata Systems
International, una empresa de
EE.UU, no calculó la dosis
correcta de radiación para los
pacientes sometidos a
radioterapia. Ocho personas
murieron
Fallos espectaculares en software 34
• T0 - T0 + 36s : normal
• Dentro de SRI 2:
• BH (Bias Horizontal) > 215
• Conversión de dobles a entero (BH)
FALLA!
• El manejo de excepción SRI → provoca
un choque entre SRI 2 y 1
• OBC estaba desorientado
• ángulo > 20°, grandes limitaciones
aerodinámicas refuerzos que separan...
• T0 + 39s: autodestrucción
• costo: € 500M
Un poco mas del fallo de Ariane 5 ¿Por qué
paso? 39
• No es un error de programación
• Conversión mal realizada = Decisión de diseño (~1980)
• No es un error de diseño
• Justificado contra la trayectoria de Ariane 4 y las restricciones de RT
• Problema con las pruebas de integración
• Teóricamente detectable.
• Espacio de prueba vs. recursos limitados
• Además, ¡SRI inútil en esta etapa del vuelo!
• Reutilización de un componente con una restricción oculta
• Precondición : abs(BH) < 32768.0
• Válido para Ariane 4, pero ya no para Ariane 5
• Cohete más potente
Un poco mas del fallo de Ariane 5 ¿Qué
aprendimos? 40
Implementación
Prueba
Codificación
Diseño
Requerimientos
Economia y Pruebas 44
• La realización de tareas de pruebas
conlleva un costo asociado que puede
inducir a tomar decisiones de no
realizarlas.
• No realizarlas también conlleva un
costo asociado.
Carencia Problema
Herramientas
Herramienta Falta de productividad
• Usuario
• Satisfacer sus necesidades/expectativas
• Facilidades de aprendizaje y uso
• No presentar inconvenientes en lo que respecta a
• Frecuencia e impacto de fallas
• Tiempo medio de recuperación de fallas
Calidad según el punto de vista 51
• Desarrollador
• Cantidad y tipo de faltas
• Facilidad de entender
• Bajo impacto de las modificaciones
• Para el negocio
• Retorno de la inversión
Conclusión: ¿Por qué testeamos el software? 52
• Verificación:
• ¿Estamos construyendo el producto correctamente?
• ¿El software está de acuerdo con su especificación?
• Busca comprobar que el sistema cumple con los requerimientos.
• Validación:
• ¿Estamos construyendo el producto correcto?
• ¿El software cumple las expectativas del cliente?
• Busca comprobar que el software hace lo que el usuario espera.
Verificación 55
• Verificación
• Conjunto de actividades que aseguran que el software implementa
correctamente una función específica
• Intenta asegurar que el producto se construyó correctamente
• Cumple con las especificaciones
• Estática y Dinámica (testing)
Validación 56
• Validación
• Actividades que buscan asegurar si el software construido se ajusta a los
requisitos del cliente
• Intenta asegurar que se construyó el producto correcto
• Cumple con los requerimientos
¿Qué verificamos y validamos? 57
Verificación de Verificación de
unidades módulos
Validación
Verificación de Verificación de
sub-sistemas sistemas
Verificación de integración
Planificación del proceso de corregir errores 66
Diseñar la
Localizar el Corregir el Volver a
corrección
error error verificar
del error
A trabajar 67