Documentos de Académico
Documentos de Profesional
Documentos de Cultura
1 2
1
5º Ingeniería en Informática 5º Ingeniería en Informática
Asignatura: Ingeniería del Software II. Asignatura: Ingeniería del Software II.
Tema 5. Pruebas del software: Técnicas y Tema 5. Pruebas del software: Técnicas y
Estrategias. Estrategias.
5.1. Objetivos y límites de las pruebas. 5.1. Objetivos y límites de las pruebas.
Razones para la imposibilidad Razones para la imposibilidad
de prueba completa de prueba completa
No se puede probar las respuesta del No se pueden probar todas las
programa para cada posible entrada. secuencias de ejecución.
– Qué significaría probar cada entrada: – Una secuencia puede ser trazada a través del
Se deben probar todas las entradas válidas. código.
Se deben probar todas las entradas – Dos secuencias diferentes: no ejecutan las
inválidas. mismas sentencias o lo hacen en orden
diferente.
Se deben comprobar todas las entradas
editadas. – Myers, en 1979 describió un programa con un
bucle y unas cuantas condiciones (IF), que
Se deben probar todas las variaciones
ocupaba unas 20 líneas en la mayoría de
temporales de las entradas.
lenguajes. Tenía 100 trillones de secuencias, un
– Qué ocurre si no puedo probar todas las testeador podría probarlo en un billón de años.
entradas de un programa Ö Abandona la – Necesario disponibilidad del código.
prueba completa
– Suponiendo que se puede hacer una
prueba completa. ¿Resuelve esto
nuestro problema?
3 4
2
5º Ingeniería en Informática 5º Ingeniería en Informática
Asignatura: Ingeniería del Software II. Asignatura: Ingeniería del Software II.
5 6
3
5º Ingeniería en Informática 5º Ingeniería en Informática
Asignatura: Ingeniería del Software II. Asignatura: Ingeniería del Software II.
4
5º Ingeniería en Informática 5º Ingeniería en Informática
Asignatura: Ingeniería del Software II. Asignatura: Ingeniería del Software II.
5
5º Ingeniería en Informática 5º Ingeniería en Informática
Asignatura: Ingeniería del Software II. Asignatura: Ingeniería del Software II.
1 1
1 2
6
5º Ingeniería en Informática 5º Ingeniería en Informática
Asignatura: Ingeniería del Software II. Asignatura: Ingeniería del Software II.
Tema 5. Pruebas del software: Técnicas y Estrategias. Tema 5. Pruebas del software: Técnicas y Estrategias.
5.2. Tipos de pruebas. 5.2. Tipos de pruebas.
Pruebas de caja blanca Pruebas de caja blanca
Se usan la estructura de control del diseño No se pueden testear todos los caminos.
procedimental para diseñar los casos de Criterios de selección:
prueba. – Cobertura de sentencias
¿Por qué utilizar pruebas de caja blanca?: Escribir los casos suficientes para que cada
– Los errores lógicos y las suposiciones sentencia en el programa se ejecute al
menos una vez.
incorrectas son inversamente
proporcionales a la probabilidad de que se – Cobertura de decisión o de ramificación.
ejecute un camino del programa. Escribir casos suficientes para que cada
decisión, por lo menos una vez, tenga un
– A menudo creemos que un camino lógico
resultado verdadero y uno falso.
tiene pocas posibilidades de ejecutarse
cuando, de hecho, se puede ejecutar de – Cobertura de condición
forma regular. Escribir el suficiente número de casos para
que cada condición de toda decisión tenga
– Los errores tipográficos son aleatorios.
todos los resultados posibles.
Testeo estructural, selección adecuada de
caminos:
– Camino: secuencia de sentencias
encadenadas desde la sentencia inicial del
1 programa hasta su sentencia final 1
3 4
7
5º Ingeniería en Informática 5º Ingeniería en Informática
Asignatura: Ingeniería del Software II. Asignatura: Ingeniería del Software II.
Tema 5. Pruebas del software: Técnicas y Estrategias. Tema 5. Pruebas del software: Técnicas y Estrategias.
5.2. Tipos de pruebas. 5.2. Tipos de pruebas.
Pruebas de caja blanca Pruebas de caja blanca
Cobertura de caminos Cobertura de caminos
Debemos asegurar que cada uno de Para obtener un grafo de flujo a partir de
los posibles caminos de un programa un lenguaje de diseño o pseudocódigo,
sean ejecutados al menos una vez. se deben realizar los siguientes pasos:
Para llegar a obtener esta cobertura – Señalar cada una de las condiciones de
se deben realizar las siguientes cada decisión, tanto en sentencias IF y
acciones: CASE como en bucles WHILE o UNTIL.
1. Obtener el grafo de flujo de control
– Agrupar sentencias entre cada dos
asociado al software.
condiciones, teniendo en cuenta que las
2. Calcular el número de caminos
sentencias de finalización ENDIF,
mediante ecuaciones algebraicas.
ENDDO, END, etc. constituirán un nuevo
3. Identificación de los caminos para su
nodo.
enumeración.
– Numerar tanto las condiciones como los
Elementos utilizados para la
grupos de sentencias. Nodos predicados:
construcción de grafo de flujo son:
identificar la condición con una letra y
cada una de las aristas de salida con el
A
resultado de la condición.
Nodos (sentencias)
– Decisiones que impliquen a varias
Región
Aristas (flujos de control) condiciones: descomponerlas
1 A Nodos predicado (condición) 1
5 6
8
5º Ingeniería en Informática 5º Ingeniería en Informática
Asignatura: Ingeniería del Software II. Asignatura: Ingeniería del Software II.
Tema 5. Pruebas del software: Técnicas y Estrategias. Tema 5. Pruebas del software: Técnicas y Estrategias.
5.2. Tipos de pruebas. 5.2. Tipos de pruebas.
Pruebas de caja blanca Pruebas de caja blanca
Cobertura de caminos Cobertura de caminos
Cálculo del número de caminos mediante El cálculo para caminos de un grafo con
ecuaciones algebraicas. bucles puede ser ilimitado.
En el caso de grafos simples (sin Se define un nuevo concepto:
bucles) se siguen las siguientes reglas: – Camino de prueba: camino de programa
que atraviesa, como máximo una vez el
Si definimos Nx como el número de cuerpo de cada bucle encontrado.
caminos que atraviesan x. Atendiendo a esta definición se puede
calcular el número de caminos de
A prueba de dos formas:
A A B – Rectificación de bucles:
Pretende eliminar del grafo la arista que
forma el bucle, sustituyéndola por una
B C C
nueva arista que represente el
B encadenamiento de aristas que se
producirían al iterar una vez el bucle.
Definirían: – Ecuaciones algebraicas:
Se definen nuevas ecuaciones que se
Na = Nb + Nc asocian a los dos tipos de bucles posibles
Na = Nb = Nc (while y until)
Nw = 1 + Na
1 Na = 2 x Nb 1 Un = Na x (1 + Na)
7 8
9
5º Ingeniería en Informática 5º Ingeniería en Informática
Asignatura: Ingeniería del Software II. Asignatura: Ingeniería del Software II.
Tema 5. Pruebas del software: Técnicas y Estrategias. Tema 5. Pruebas del software: Técnicas y Estrategias.
5.2. Tipos de pruebas. 5.2. Tipos de pruebas.
Pruebas de caja blanca Pruebas de caja blanca
Prueba del camino básico Prueba del camino básico
La complejidad ciclomática es una La complejidad se puede calcular de
métrica del software que proporciona tres formas:
una medición cuantitativa de la – El número de regiones del grafo de flujo
complejidad lógica de un programa. coincide con la complejidad ciclomática.
– Conjunto básico de un programa: – La complejidad ciclomática, V(G), de un
número de caminos independientes grafo de flujo G se define como
Camino independiente: cualquier camino V(G) = A – N + 2
del programa que introduce un conjunto
donde A es el número de aristas del
de sentencias de proceso o una nueva
grafo de flujo y N es el número de
condicion
nodos.
Asegurar que se ejecuta cada sentencia
al menos una vez y que cada condición – La complejidad ciclomática, V(G), de un
se habrá ejecutado en su vertiente grafo de flujo G también se define como
verdadera y falsa V(G) = P + 1
donde P es el número de nodos
predicado contenidos en el grafo de flujo
G.
1 2
9 0
10
5º Ingeniería en Informática 5º Ingeniería en Informática
Asignatura: Ingeniería del Software II. Asignatura: Ingeniería del Software II.
Tema 5. Pruebas del software: Técnicas y Estrategias. Tema 5. Pruebas del software: Técnicas y Estrategias.
5.2. Tipos de pruebas. 5.2. Tipos de pruebas.
Pruebas de caja blanca Pruebas de caja blanca
Prueba del camino básico Prueba de la estructura de control
Obtención de casos de prueba: Pruebas de condición
1. Usando el diseño o el código como Método de diseño de casos de prueba que
ejercita las condiciones lógicas contenidas en
base, dibujamos el correspondiente el módulo de un programa.
grafo de flujo.
Prueba de flujo de datos
2. Determinamos la complejidad Selecciona caminos de prueba de un programa
ciclomática del grafo de flujo de acuerdo con la ubicación de las definiciones
resultante. y los usos de las variables del programa.
3. Determinamos un conjunto básico de Prueba de bucles
caminos linealmente independientes. Se centra únicamente en la validez de las
V(G):número de caminos linealmente construcciones de bucles:
independientes de la estructura de Bucles simples: se les aplican pruebas como
pasar por alto el bucle, pasar una sola vez,
control del programa. pasar n-1, n y n+1 veces.
4. Preparamos los casos de prueba que
forzarán la ejecución de cada camino
del conjunto básico.
Escogemos los datos de forma que
las condiciones de los nodos
predicado estén adecuadamente
2 establecidas con el fin de comprobar 2
1 cada camino. 2
11
5º Ingeniería en Informática 5º Ingeniería en Informática
Asignatura: Ingeniería del Software II. Asignatura: Ingeniería del Software II.
2 2
3 4
12
5º Ingeniería en Informática 5º Ingeniería en Informática
Asignatura: Ingeniería del Software II. Asignatura: Ingeniería del Software II.
13
5º Ingeniería en Informática 5º Ingeniería en Informática
Asignatura: Ingeniería del Software II. Asignatura: Ingeniería del Software II.
Tema 5. Pruebas del software: Técnicas y Estrategias. Tema 5. Pruebas del software: Técnicas y Estrategias.
5.2. Tipos de pruebas. 5.2. Tipos de pruebas.
Pruebas de caja negra Pruebas de caja negra
Secuencia de eventos Secuencia de eventos
Condiciones de borde – Pruebas de integridad y de publicación
Rendimiento (release):
Transiciones entre estados En las pruebas de publicación se recogen todos los
Pruebas de uso convencional elementos que irán al consumidor o al
Pruebas de carga: manufacturador, se comprueba que son todas
– volumen, stress y almacenamiento correctas, se copian y se archiva la copia.
Tareas de Fondo (background) Después se publican.
Recuperación ante errores Las pruebas de integridad son pruebas de
Seguridad publicación más rigurosas. Proporciona una
Compatibilidad y conversión última oportunidad para pensar las cosas antes
Configuración de enviar el producto al exterior.
Instalabilidad y practicabilidad Intentan anticipar cualquier crítica que pueda
aparecer en la revisión del producto (sólo una
Quickies
persona senior, posiblemente independiente,
– Pruebas Beta: compara el producto y sus requerimientos más
Cuando el programa y la documentación recientes, lo compara con otros productos, etc).
parece estable, es hora de adquirir – Prueba final de aceptación y certificación:
información del usuario (feedback). En el Ejecución de una prueba de aceptación por parte
beta test, las personas que serán del cliente cuando entreguemos el producto.
usuarios del producto lo usarán de alguna La certificación se realiza por una tercera persona.
2 forma para hacer comentarios. 2 Se trata de una prueba breve.
7 8
14
5º Ingeniería en Informática 5º Ingeniería en Informática
Asignatura: Ingeniería del Software II. Asignatura: Ingeniería del Software II.
15
5º Ingeniería en Informática 5º Ingeniería en Informática
Asignatura: Ingeniería del Software II. Asignatura: Ingeniería del Software II.
Tema 5. Pruebas del software: Técnicas y Estrategias. Tema 5. Pruebas del software: Técnicas y Estrategias.
5.2. Tipos de pruebas. 5.2. Tipos de pruebas.
Comparación de tipos de Comparación de tipos de
pruebas pruebas
Pruebas top-down versus bottom-up: Pruebas de regresión:
Son estrategias incrementales. El producto debe – Aplicable a pruebas tanto de caja negra
haber sido diseñado jerárquicamente. como blanca.
– Las pruebas bottom-up prueban primero los – Se usa con dos ideas diferentes (en
módulos de nivel inferior. común tienen la de reusar pruebas
Driver para testear las rutinas de menor nivelÎ antiguas):
testear rutinas de mayor nivel
Al encontrar un error y corregirlo, repetir
– En las pruebas top-down, son probados primero la prueba que reflejó el problema en
los módulos de mayor nivel (no se necesita primer lugar. Se pueden crear grupos de
código “driver”, sí “stub”). pruebas de regresión. Se refleja la
Pruebas dinámicas frente a estáticas: vulnerabilidad de las correcciones.
– En una prueba dinámica se ejecuta el código. Cuando se encuentra y corrige un error,
– En una prueba estática se examina el código. se ejecuta una serie estándar de pruebas
Se prueba sin ser ejecutado. para asegurarnos de que el cambio no
perturba nada más.
Existen muchas herramientas para el análisis
estático (compiladores, lincadores, etc.).
También puede realizase por humanos
(revisiones).
3 3
1 2
16
5º Ingeniería en Informática 5º Ingeniería en Informática
Asignatura: Ingeniería del Software II. Asignatura: Ingeniería del Software II.
Tema 5. Pruebas del software: Técnicas y Estrategias. Tema 5. Pruebas del software: Técnicas y Estrategias.
5.3. Análisis y seguimiento de 5.3. Análisis y seguimiento de
errores. errores.
¿Qué es un error reproducible?: Encontrar las consecuencias del problema:
– Se puede describir como llevar el programa a un
estado conocido.
– Observar las consecuencias más graves de
– Desde ese estado, se pueden especificar una
un error. Esto estimulará a todo el mundo
serie de pasos exactos que muestran el para que se corrija.
problema. – Cuando un programa falla:
Para hacer más efectiva la detección de un error Lo hace en un estado inesperado
(informe), ésta debe analizarse.
Si el estado es inesperado, el siguiente
Si el problema es complicado porque requiere un
alto número de pasos o sus consecuencias son código hará suposiciones incorrectas,
difíciles de describir Î gastar tiempo con el. produciéndose más errores.
Se deben simplificar los informes o dividirlos en una Lo hace dentro de una rutina de
serie. recuperación de errores
Los objetivos de este análisis de un error Las rutinas de recuperación ante errores son
reproducible: con frecuencia las menos probadas.
– Encontrar las consecuencias más serias del Generalmente tienen problemas más graves
problema. que el que nos ha llevado allí.
– Encontrar las condiciones más simples, cortas y – Cuando el programa registra un problema,
generales de disparar el error.
o muestra basura en pantalla, o cualquier
– Encontrar caminos alternativos para el mismo
error. cosa inesperadaÎ error complementario
3 – Encontrar problemas relacionados. 3
3 4
17
5º Ingeniería en Informática 5º Ingeniería en Informática
Asignatura: Ingeniería del Software II. Asignatura: Ingeniería del Software II.
Tema 5. Pruebas del software: Técnicas y Estrategias. Tema 5. Pruebas del software: Técnicas y Estrategias.
5.3. Análisis y seguimiento de 5.3. Análisis y seguimiento de
errores. errores.
Encontrar las condiciones más simples y Encontrar caminos alternativos al mismo
generales : problema:
– Algunos errores aparecen únicamente – Disparar un error puede llevar muchos
cuando se introduce una compleja serie de pasos. Esto puede hacer pensar que es
errores o respuestas indeseadas. tan complicado que el usuario no lo va a
– La corrección de los errores involucra unas percibir.
compensaciones: – Se puede contrarrestar esta impresión
Si entender y corregir un error requiere un mostrando varios caminos al mismo
mínimo esfuerzo, alguien lo corregirá. problema.
Si la corrección requiere mucho tiempo y Indica que el problema es más grave.
esfuerzo, el programador no mostrará – Si varios caminos nos llevan al mismo
voluntad para corregirlo. error, algo tendrán en común.
Si aparece durante el uso normal del
programa, se mostrará mayor interés.
Si parece que nadie verá el problema, el
interés será bajo.
– Encontrar modos simples de reproducir un
problema hace el trabajo más fácil y rápido
3 al programador. 3
5 6
18
5º Ingeniería en Informática 5º Ingeniería en Informática
Asignatura: Ingeniería del Software II. Asignatura: Ingeniería del Software II.
3 3
7 8
19
Tema 5. Pruebas del software:
Técnicas y Estrategias.
5º Ingeniería en Informática 5º Ingeniería en Informática
Asignatura: Ingeniería del Software II. Asignatura: Ingeniería del Software II.
20
5º Ingeniería en Informática 5º Ingeniería en Informática
Asignatura: Ingeniería del Software II. Asignatura: Ingeniería del Software II.
4 4
1 2
21
5º Ingeniería en Informática 5º Ingeniería en Informática
Asignatura: Ingeniería del Software II. Asignatura: Ingeniería del Software II.
Tema 5. Pruebas del software: Técnicas y Estrategias. Tema 5. Pruebas del software: Técnicas y Estrategias.
5.3. Análisis y seguimiento de errores. 5.3. Análisis y seguimiento de errores.
Hacer reproducible un error Hacer reproducible un error
– Detalles olvidados. – El error es un efecto lateral de algún otro
La mejor solución es aplicar un plan paso-a- problema.
paso. – Error hardware intermitente.
– Errores de usuario: no hiciste lo que – Dependencia temporal.
pensaste que hiciste. El error puede depender de la fecha u hora
– Un efecto del error hace imposible la en la que se realiza la prueba.
reproducción. – Dependencia de los recursos.
Los datos pueden haber sido modificados – Espoleta retardada.
por la aplicación, utilizar siempre una copia
Errores que no tiene un impacto inmediato.
de los datos.
– Casos especiales en el código.
– El error depende del estado de la memoria.
La ayuda del programador puede ahorrar
Ver la cantidad de memoria, la
mucho tiempo.
fragmentación, etc. Puede ayudar a
encontrar la condición. – Alguien ha jugueteado con tu máquina.
– Es un error de estado inicial.
– El error se ha basado en datos corruptos.
4 4
3 4
22