SlideShare una empresa de Scribd logo
1
PRU
Pruebas
2
Enunciado
Se tiene un programa que
Lee tres enteros de un fichero
Los tres enteros representan los lados de un triángulo
Imprime un mensaje indicando el tipo de triángulo
Escaleno
Isósceles
Equilátero
Ejercicio previo
> triang ? 10,20,25
> Es un: Escaleno
>
Problema:
“Escribir el conjunto de
casos de prueba
adecuados para probar
el programa anterior.”
3
Definición:
Posibles definiciones: Ejecutar un programa para
1. Ver que funciona correctamente
2. Demostrar que no hay error
3. Encontrar errores
Cuál es la definición correcta?
Introducción
4
Analogía:
Análisis clínico
Positivo si encuentra algo mal
Negativo si no lo encuentra
Si no se encuentra nada mal se deberá invertir más
dinero
Podemos tratar a un programa como un "enfermo" potencial?
Una cuestión semántica
Encontrar errores = ÉXITO
5
En realidad
NO es destructivo (lo parece a corto plazo)
A largo plazo es ECONÓMICO (constructivo)
NO debe infundir culpabilidad: La búsqueda de
fallos es un medio de mejorar la CALIDAD
Mito:
El objetivo de la prueba es destructivo (demoler el
software)
Si fuésemos perfectos, no habría errores
La prueba es una admisión de fallos
Debemos sentirnos culpables
6
Principios de la prueba del software
1. La salida deseada es una parte NECESARIA para cada
caso de prueba: "No dejar al ojo ver lo que quiere ver”
2. Un programador debe evitar probar su propio programa
•Al programar se construye
•Al probar se destruye (a corto plazo)
•Además: Se descubren mejor los errores debidos al
mal entendimiento del diseño o especificación ("dos
ojos ven más que uno"). Analogía: Crítica de un libro
•No es imposible que el programador pruebe, pero no
conveniente
•Lo anterior no es aplicable a la depuración
7
3. Una organización no debe probar sus propios programa
(idealista)
•Consecuencia: Equipos dedicados a pruebas
Independientes Especializados
4. Inspeccionar MUCHO los resultados de cada prueba
5. Escribir casos de pruebas para
•Entradas inválidas e inesperadas además de para las
válidas y esperadas
Principios de la prueba del software
8
6. Intentar ver:
•Si no hace lo que se supone que debe de hacer
•Si hace lo que no se supone que debe de hacer
(Examinar efectos laterales)
7. Evitar usar caso de prueba de usar y tirar, a no ser que el
programa sea de usar y tirar
•Guardar siempre los casos de prueba para:
No perder tiempo reinventando casos de prueba
Posibilitar efectuar pruebas de regresión
8. No plantear una prueba asumiendo que no se van a
encontrar errores
Principios de la prueba del software
9
9. La probabilidad de existencia de errores en una sección de
programa es proporcional al número de errores ya
encontrados en esa sección
Ejemplo: IBM s/370 : 47% de los errores encontrados
por los usuarios en el 4% de los módulos
10. La prueba del software es:
•Esencialmente CREATIVA
•Un RETO intelectual
Principios de la prueba del software
10
Prueba = Proceso de ejecutar un programa con la intención
de encontrar errores
Un buen caso de prueba es el que tiene alta probabilidad
de detectar un error todavía no descubierto
Un caso con éxito es el que detecta un error todavía no
descubierto
Resumen
11
Flujo de información en la prueba
Pruebas
Unitarias
Pruebas
Unitarias
Pruebas
de
Integración
Pruebas
de
Validación
Pruebas
de
Instalación
Pruebas
de
Aceptación
Modulo Probado
Modulo Probado
Soft. Ensamblado
Soft. validado
Soft. Aceptado
Soft. Operativo
12
Pruebas de caja negra
Conducidas por las entradas y salidas
Prueba exhaustiva de las entradas y salidas
Evaluación: Comportamiento de acuerdo con especificaciones
Problema: Infinitas posibilidades para las entradas
Tipos de prueba
Pruebas de caja blanca
Conducidas por la estructura lógica (interna) del programa
Ejercitar todas las posibles condiciones que se pueden dar
Evaluación: Medida de la cobertura
Problema: Muchos errores quedan sin detectar:
No se prueba la especificación
No se detectan ausencias
13
Técnicas de prueba de caja blanca
Cobertura lógica
•No proporcionan una guía para determinar los casos de prueba
•Proporcionan un criterio de cobertura de los casos de prueba a varios
niveles:
Sentencias
Decisiones
Condiciones
Decisión/condición
Múltiple condición
14
Cobertura de sentencias
Cada sentencia ha de ser ejecutada al menos una vez
A>1
And
B=0
A=2
Or
X>1
X=X/A
X=X+1
SI
SI
NO
NO
Caso de prueba:
A=2, B=0, X=3
Qué pasaría si por error, la primera
decisión ha de ser OR?
Y si en la segunda ha de ser X>0 ?
15
Los casos de prueba han de hacer que cada decisión tenga los valores
CIERTO y FALSO
Incluye cobertura de sentencias
Cobertura de decisiones
A>1
And
B=0
A=2
Or
X>1
X=X/A
X=X+1
SI
SI
NO
NO
Casos de prueba:
A=3, B=0, X=3
A=2, B=1, X=1
Qué pasaría si en la segunda decisión
ha de ser x<1 en vez de x>1?
16
A>1
And
B=0
A=2
Or
X>1
X=X/A
X=X+1
SI
SI
NO
NO
Cobertura de condiciones
Cada condición toma todos los posibles valores al menos una vez.
Suele ser superior a las anteriores
Los casos anteriores incluyen los criterios
anteriores?
Decisiones
Sentencias
Casos de prueba:
A B X A>1 B=0 A=2 X>1
1 0 3 F C F C
2 1 1 C F C F
17
A>1
And
B=0
A=2
Or
X>1
X=X/A
X=X+1
SI
SI
NO
NO
Cobertura de decisión/condición
Cumplir ambos criterios
Casos de prueba:
En la primera decisión (segundo caso)
se toma la alternativa FALSO siempre
por fallo de las dos premisas a la vez
Qué pasaría si la operación lógica
tuviese que ser AND en vez de OR?
A B X A>1 B=0 A=2 X>1
2 0 4 C C C C
1 1 1 F F F F
18
A>1
And
B=0
A=2
Or
X>1
X=X/A
X=X+1
SI
SI
NO
NO
Cobertura de Múltiple Condición
Se prueban todas las posibles combinaciones de las condiciones en cada
decisión
A B X A>1 B=0 A=2 X>1
2 0 4 C C C C
1 1 1 F F F F
Casos de prueba:
2 1 1 C F C F
1 0 2 F C F C
Incluye todas las anteriores
Problema: En muchas ocasiones es
imposible cubrir todas las posibilidades
19
Prueba de bucles
Bucles simples
Saltar totalmente
Pasar una y dos veces
Pasar un número intermedio
Pasar el máximo número y
una menos
Pasar más que el máximo
Bucles anidados
Probar el bucle interior, los demás
en valores mínimos
Progresar hacia afuera:
externos en valores mínimos
internos en valores típicos
Bucles concatenados
Independientes (por separado)
Dependientes (seguir filosofía anterior)
Para programas no estructurados
Lo mejor es rediseñar
La programación estructurada facilita la determinación de
casos de prueba
20
Prueba del camino básico: Complejidad ciclomática
Objetivo
Recorrer todos los caminos independientes
El número de caminos lo indica el valor de la complejidad ciclomática
(McCabe)
1 WHILE NOT final DO
2 leer
3 IF campo1=0 THEN
4 procesar()
5 incrementar_conta().
6 ELSE IF campo1=1 THEN
7 reinic. conta.()
ELSE
8 procesar()
9 END IF
10 END WHILE
11
1
2
6 4
3
57 8
9
10
11
21
Cálculo
Fórmula V(G):
Número de regiones del grafo
Aristas - Nodos + 2
Número Predicados + 1
Número de regiones del grafo 4
Aristas - Nodos + 2 11 - 9 + 2 = 4
Número Predicados + 1 3 + 1 = 4
1
2
6 4
3
57 8
9
10
11
22
Cuando hay más de una condición por decisión, cada una de ellas cuenta
como un predicado (nodo) 1 IF a THEN
2 x
ELSE
3 IF b THEN
4 x
ELSE
5 y
6 END IF
7 END IF
2 3
1
4 5
6
7
Número de regiones del grafo 3
Aristas - Nodos + 2 8 - 7 + 2 = 3
Número Predicados + 1 2 + 1 = 3
V(G) =
1 IF a OR b THEN
2 x
ELSE
3 y
4 END IF
23
Sin embargo también se puede hacer de forma directa numerando los
predicados
1 IF a OR b THEN
2 x
ELSE
3 y
4 END IF
1 2
IF a OR b THEN
3 x
ELSE
4 Y
5 END IF
3 2
1
4
5
Número de regiones del grafo 3
Aristas - Nodos + 2 6 - 5 + 2 = 3
Número Predicados + 1 2 + 1 = 3
V(G) =
24
Sentencias tipo CASE:
Pueden convertirse a IFs encadenados o numerar directamente, hay que
tener en cuanta la lógica del lenguaje de programación
switch (a ) {
1 : printf (“uno”;
break;
2 : printf (“dos”);
3 : printf (“tres”);
break;
else: printf (“ninguno”);}
Cada valor con el que
se compara la variable
es equivalente a un
predicado. ( a = 1),...
(a=3)
Número Predicados + 1 3 + 1 = 4V(G) =
25
A través del grafo:
1 switch (a ) {
2 1 : 3 printf (“uno”;
4 break;
5 2 : 6 printf (“dos”);
7 3 : 8 printf (“tres”);
9 break;
else: 10 printf (“ninguno”);}
11 siguiente_instrucción
Número de Regiones = 4V(G) =
3
2
1
4
5
8
7
6
9
10
11
Aristas-Nodos+2 = 13-11+2 = 4V(G) =
26
No solamente para determinar el número de caminos
Mide la CALIDAD del código
Un criterio de calidad de uso general:
V(G) < 10 Módulo aceptable
V(G) >=10 Módulo rechazado
Utilidad
•Fácil uso en una organización
•Fácilmente automatizable
Importante
27
Técnicas de prueba de caja blanca
Se centran en los requisitos funcionales del software
Módulo a probarCaso de Prueba Resultado
Se corresponde el resultado con el esperado?
Cuantos casos hay que probar?
28
Partición en clases de equivalencia
Objetivo
Dividir el dominio de entrada en clases de datos
Detectar clases de errores
Clase de equivalencia
Representa un conjunto de estados válidos e inválidos para las
condiciones de entrada
Proceso
1. Identificar y numerar cada clase
2. Escribir un caso de prueba (o varios) cubriendo el mayor
número posible de clases VÁLIDAS posibles
3. Escribir un caso de prueba para CADA UNA de las clases
INVÁLIDAS (Objetivo: evitar el enmascaramiento de los casos
de pruebas)
29
Identificación de clases de equivalencia
Tipo de Condición Clases Válidas Clases Inválidas
Rango de Valores
[1..999]
>=1 y <=999 <1 ó > 999
Enumeración o
valores sueltos
1,2,10,20
1,2,10,20
<1 >2 y <10,
>10 y <20 >20
Conjunto no
numérico
rojo, verde
rojo, verde
Resto colores
posibles,
gris, negro, azul...
Condición
booleana
debe ser letra
Condición cierta
letra
Condición falsa
distinto letra
Las clases dependen siempre de los posibles valores que puede haber
tanto correctos como incorrectos.
Es necesario distinguir los valores aceptados como correctos del
resto de valores.
Si hay razones para creer que los elementos de una clase no se
tratarán de la misma forma, dividir la clase en otras más pequeñas
30
Chequeo sintáctico de una sentencia de declaración
INTEGER a [,a]
cuatro variables como máximo
identificador de 6 caracteres máximo
el primer carácter una letra
Ejemplo
Nombre clase Clases Válidas Clases Inválidas
Nombre variable
(contenido)
Letras
Dígitos
distinto de letras y
dígitos
Existe variable Si No
Comienza por letra Si No
Nombre variable
(Tamaño)
1.. 6
<1
> 6
Número de
variables
1.. 4
0
> 4
31
Nombre clase Clases Válidas Clases Inválidas
Nombre variable
(contenido)
(1) Letras
(2) Dígitos
(3) distinto de letras
y dígitos
Existe variable (4) Si (5) No
Comienza por letra (6) Si (7) No
Nombre variable
(Tamaño)
(8) 1.. 6
(9) <1
(10) > 6
Número de variables (11) 1.. 4
(12) 0
(13) > 4
Casos de Prueba
Entrada Casos Cubiertos
INTEGER ABC, A19, B 1,2,4,6,8,11
INTEGER 5
INTEGER 213 7
INTEGER A?3 3
INTEGER ,A 9
INTEGER ADCBEFG 10
INTEGER 12
INTEGER A, B, C, D, E 13
32
Análisis de valores límite
Objetivo
Situar las pruebas en los BORDES de las clases de
equivalencia
Diferencias con lo anterior
En vez de seleccionar cualquier elemento de la clase se
seleccionan varios (los extremos)
Además se tienen en cuenta las clases de equivalencia para las
salidas
33
Valores situados en los bordes
Adyacentes a los situados en los bordes
Valor típico
Determinación de valores límite
Tipo de Condición Clases Válidas Clases Inválidas
Rango [-5..+5]
>=-5 y <=5
-5, -4, 1, 4, 5
<-5 , > +5
-6, -7, -10, 6, 7, 10
Rango [13..29 ]
>=13 y <=29
13, 14, 20, 28, 29
<13 >29
12, 11, -2, 30, 31,
50
Conjunto no
numérico
rojo, verde
rojo, verde
rojo, verde
gris, negro, azul...
gris, negro, azul...
Condición
booleana
debe ser letra
letra
letra
distinto letra
distinto letra
34
Ejemplo
Nombre clase Clases Válidas Clases Inválidas
Nombre variable
(contenido)
Letras
Dígitos
A, B, M, Y, Z
a, b, m, y, z
0, 1, 5, 8, 9
distinto de letras y
dígitos
ascii(0), ascii(0+1),
ascii(prec(‘A’)),
ascii(prec(prec(‘A’)))
ascii intermedio,
...
Existe variable
Si
Si
No
No
Comienza por letra
Si
Si
No
No
Nombre variable
(Tamaño)
1.. 6
1, 2, 4, 5, 6
<1 > 6
0, 7, 8, 10
Número de
variables
1.. 4
1, 2, 3, 4
0 > 4
0, 5, 6, 11
35
Para las salidas: Devuelve un código de error
1. Sintaxis Correcta
2. Faltan Parámetros
3. Sobran Parámetros
4. Identificador muy largo
5. Identificador ilegal
Nombre clase Clases Válidas Clases Inválidas
Código de salida
1,2,3,4,5
1, 2, 3, 4, 5
Otro
Otro
Los casos de prueba han de cubrir los casos de prueba de las salidas.
En este caso se intenta forzar la clase inválida de las salidas:
Linea = "INTEGER ABC,DEF"
CodigoSalida = -99
CheckSintaxis(linea,CodigoSalida)
Write(Linea)
Write(CodigoSalida)
36
•Rechazar o someter a inspección los módulos con valores de
complejidad ciclomática alta
•Usar siempre análisis de valores límite
•Especial cuidado con las clases inválidas (sin olvidar las válidas)
•Añadir casos "por instinto”
•Determinar al final la cobertura lógica, añadir casos si queda algún
camino por cubrir
Estrategia a seguir para las pruebas unitarias
Guardar los casos de prueba y las salidas obtenidas para
facilitar las pruebas de regresión
Importante
37
Realizadas sobre componentes previamente probados por
separado
Diseño descendente no implica necesariamente prueba
descendente
Existen infinitas formas de implementar y probar de forma
organizada
Lo peor es hacerlo de forma desorganizada
Pruebas de integración
Estrategia no incremental
1.Probar cada módulo por
separado
2.Juntar todo
3.Esperar que funcione
Problema: Cuando falla
algo, cómo se sabe dónde
está el fallo?
Estrategia incremental
1.Probar un módulo por separado
2.Añadir otro
3.Probar y depurar la combinación
4.Repetir con otros módulos
De esta forma se puede detectar dónde
están los fallos encontrados
Esto no excluye que se pruebe
previamente cada módulo por separado
38
Elementos auxiliares
Resguardos (Stubs)
•No hacer nada
•Consumir tiempo
•Proporcionar salida constante
•Proporcionar salida variable
(calculada o introducida
externamente)
•Pedir datos interactivamente
•Implementar una versión primitiva
Siempre mantener una traza del
módulo:
Indicar que el módulo se ejecuta
Mostrar parámetros de entrada y
salida
Módulo a
probar
Resguardo
39
Módulo a
probar
Conductor
Conductores (drivers)
Módulos aferentes: Llamar y ver
resultados
Módulos transformadores: Pedir datos,
llamar y ver resultados
Módulos eferentes: Pedir datos y llamar
Problema
Que el test falle por culpa del
resguardo o del conductor
40
Secuencia de Integración
Descendente (Top-Down) :
Se prueban primero los módulos de más alto nivel
Ascendente (Dotton-up) :
Se prueban primero los módulos de más bajo nivel
Lugar en donde se
descubren los fallos
Módulos auxiliares
Representación de casos de
prueba
Observación de los
resultados de la prueba
Efecto psicológico (moral del
equipo)
Parte superior (más
importantes)
Resguardos
(complicados)
Difícil si no se incorpora
E/S
Difícil
Mejora, permite
demostraciones
Parte inferior
Conductores
Fácil
Fácil
Peor, el programa no
existe hasta el final
Descendente AscendenteComparación
41
Todo lo anterior es para integración de módulos
También hay integración de componentes o
subsistemas previamente integrados:
Probar cada uno por separado
Integrar de forma incremental
42
Pruebas de "alto nivel"
•Pruebas de validación
Estamos construyendo el producto correcto?
•Prueba de función
Tiene en cuenta solamente la especificación funcional
(no confundir con el ASI en Métrica)
•Prueba de sistema
Tiene en cuenta los objetivos: El producto formando un todo con su
entorno (se definirán más adelante)
43
•Pruebas alfa
Conducidas por cliente en lugar de desarrollo
El equipo registra las anomalías
•Pruebas beta
Se distribuye el producto a potenciales usuarios
Estos prueban el producto e informan de los fallos detectados
•Pruebas de aceptación
El cliente certifica que el sistema es válido para él
Utilizar el plan de aceptación existente
•Pruebas de instalación
Buscar fallos en la instalación del sistema en un entorno concreto
Pruebas de "alto nivel"
44
Pruebas de sistema
•Volumen
Someter a gran cantidad de datos (base de datos, tablas muy grandes)
Probar con cantidades de datos no permitidas (p.e. disco lleno)
•Sobrecarga
Fuertes cargas de trabajo (máximo número de usuarios)
Límites permitidos
Exceso sobre límites permitidos
•Utilizabilidad
¿Los interfaces de usuario son adecuados a las características del
usuario?
¿ Las salidas y diagnósticos son claros y comprensibles?
¿ El conjunto del interface de usuario mantiene la integridad conceptual?
¿ Excesivo número de opciones, u opciones que no serán utilizadas?
¿ Hay reconocimiento inmediato de cada entrada de datos?
¿ Es fácil de usar?
45
•Seguridad o Integridad (Security)
Intentar violar toda protección del sistema
•Seguridad (Safety)
Intentar descubrir si el sistema puede afectar al entorno (importante en
sistemas de control)
•Rendimiento
Tiempos de respuesta
• En condiciones normales
• En las peores condiciones
•Almacenamiento
Ocupación de memoria y disco
•Configuración
Al menos, probar con cada posible configuración hardware y dispositivos
Pruebas de sistema
46
•Compatibilidad/Conversión
Conversiones de datos
Compatibilidad con otros sistemas
Compatibilidad con otras versiones
•Fiabilidad
Tiempo entre fallos (difícil de determinar)
•Recuperación
Cómo se recupera el sistema ante fallos de Software, de Hardware o
de Comunicaciones
•Servicio
Cuánto se tarda en arreglar un fallo
•Documentación
Mediante inspección. Buscar discrepancias con el funcionamiento del
sistema
Pruebas de sistema
47
Criterios de terminación
Puesto que siempre existirán defectos latentes, ¿Cuándo dejar de probar?
Habitualmente
•Cuando el tiempo asignado finaliza
•Cuando todos los casos de prueba no detectan errores
Lo mejor es una combinación de las categorías que se
detallan a continuación.
Primera Categoría
Satisfacer el criterio de cobertura de múltiple condición (como mínimo
de líneas)
Las pruebas derivadas de análisis de valores límite no tienen éxito
Problemas:
No válido, por ejemplo para pruebas del sistema
Subjetivo (no se sabe si se ha aplicado bien el análisis de valores
límite)
48
Expresada en términos positivos:
Detectados un número determinado de errores
Problemas:
Estimación del número total de errores
Estimación del porcentaje de errores que pueden ser descubiertos
Todo ello para cada fase
Según Myers: 4 a 8 errores por cada 100 líneas de código
Segunda Categoría
49
Tercera Categoría
Dibujar errores hallados por unidad de tiempo
Parar cuando la eficacia decrece
Errores
encontrados
Tiempo
50
Planificación de las pruebas
Organizar lo más temprano posible.
Prever tiempo empleado en las pruebas.
Determinar:
•Objetivos
•Criterios de terminación
•Cronología (fases de pruebas, plan de integración)
•Responsabilidades (corrección y supervisión)
•Normas:
Identificación de casos
Instrumentación de módulos
Bibliotecas de casos: Sistemática de identificación y
almacenamiento
Mecanismo de información para seguir el proceso de corrección e
incorporación de cambios
51
•Infraestructura software
Herramientas comerciales (p.e. MS Test, DEC Test Manager)
Herramientas específicas (p.e. trazas y logs de la ejecución de los
módulos)
•Infraestructura hardware
Tiempo de dedicación de máquina
Configuraciones especiales
52
PRU
Pruebas

Más contenido relacionado

La actualidad más candente

Especificación y resultados de las pruebas de software
Especificación y resultados de las pruebas de softwareEspecificación y resultados de las pruebas de software
Especificación y resultados de las pruebas de software
Jesús E. CuRias
 
control de concurrencia
control de concurrenciacontrol de concurrencia
control de concurrencia
Jose Guadalupe Couoh Dzul
 
Ejemplo rup
Ejemplo rupEjemplo rup
Ejemplo rup
angel2365
 
Software caja negra y caja blanca
Software caja negra y caja blancaSoftware caja negra y caja blanca
Software caja negra y caja blanca
StudentPc
 
Concepto y extensiones de negocio de Eriksson Penker
Concepto y extensiones de negocio de Eriksson PenkerConcepto y extensiones de negocio de Eriksson Penker
Concepto y extensiones de negocio de Eriksson Penker
Marcos Omar Cruz Ortrega
 
Estructura jerarquica de un sistema operativo
Estructura jerarquica de un sistema operativoEstructura jerarquica de un sistema operativo
Estructura jerarquica de un sistema operativo
Yurley Ochoa
 
Diagramas de estados
Diagramas de estadosDiagramas de estados
Diagramas de estadosstill01
 
Tutorial de JFLAP
Tutorial de JFLAPTutorial de JFLAP
Tutorial de JFLAP
Sara Martínez Gómez
 
Ejemplos de proyectos al modelo en cascada
Ejemplos de proyectos  al modelo en cascadaEjemplos de proyectos  al modelo en cascada
Ejemplos de proyectos al modelo en cascadaaics-1986-13-saraguro
 
Patrón de diseño Modelo-Vista-Controlador (MVC)
Patrón de diseño Modelo-Vista-Controlador (MVC)Patrón de diseño Modelo-Vista-Controlador (MVC)
Patrón de diseño Modelo-Vista-Controlador (MVC)
Jose R. Hilera
 
Linea de productos de software y Metodo Watch
Linea de productos de software y Metodo WatchLinea de productos de software y Metodo Watch
Linea de productos de software y Metodo Watch
GrabielleBarreto
 
10.el diseño en el nivel de componentes
10.el diseño en el nivel de componentes10.el diseño en el nivel de componentes
10.el diseño en el nivel de componentes
Ramiro Estigarribia Canese
 
Cuadro comparativo modelos para el desarrollo de software
Cuadro comparativo modelos para el desarrollo de softwareCuadro comparativo modelos para el desarrollo de software
Cuadro comparativo modelos para el desarrollo de software
paoaboytes
 
Ejemplo plan de desarrollo de software rup
Ejemplo plan de desarrollo de software rupEjemplo plan de desarrollo de software rup
Ejemplo plan de desarrollo de software rupXochitl Saucedo Muñoz
 
Modelos de dominio
Modelos de dominioModelos de dominio
Modelos de dominio
Juan Pablo Bustos Thames
 
diagrama de casos de uso del negocio y del sistema
diagrama de casos de uso del negocio y del sistemadiagrama de casos de uso del negocio y del sistema
diagrama de casos de uso del negocio y del sistemaUniversidad Tecnológica
 
Pruebas de caja blanca y negra
Pruebas  de caja blanca y negraPruebas  de caja blanca y negra
Pruebas de caja blanca y negra
Andrés José Sebastián Rincón González
 
Pruebas De Software
Pruebas De SoftwarePruebas De Software
Pruebas De Software
aracelij
 
2. Casos de uso y diagramas de casos de uso
2. Casos de uso y diagramas de casos de uso2. Casos de uso y diagramas de casos de uso
2. Casos de uso y diagramas de casos de uso
Saul Mamani
 

La actualidad más candente (20)

Especificación y resultados de las pruebas de software
Especificación y resultados de las pruebas de softwareEspecificación y resultados de las pruebas de software
Especificación y resultados de las pruebas de software
 
control de concurrencia
control de concurrenciacontrol de concurrencia
control de concurrencia
 
Casos de uso
Casos de usoCasos de uso
Casos de uso
 
Ejemplo rup
Ejemplo rupEjemplo rup
Ejemplo rup
 
Software caja negra y caja blanca
Software caja negra y caja blancaSoftware caja negra y caja blanca
Software caja negra y caja blanca
 
Concepto y extensiones de negocio de Eriksson Penker
Concepto y extensiones de negocio de Eriksson PenkerConcepto y extensiones de negocio de Eriksson Penker
Concepto y extensiones de negocio de Eriksson Penker
 
Estructura jerarquica de un sistema operativo
Estructura jerarquica de un sistema operativoEstructura jerarquica de un sistema operativo
Estructura jerarquica de un sistema operativo
 
Diagramas de estados
Diagramas de estadosDiagramas de estados
Diagramas de estados
 
Tutorial de JFLAP
Tutorial de JFLAPTutorial de JFLAP
Tutorial de JFLAP
 
Ejemplos de proyectos al modelo en cascada
Ejemplos de proyectos  al modelo en cascadaEjemplos de proyectos  al modelo en cascada
Ejemplos de proyectos al modelo en cascada
 
Patrón de diseño Modelo-Vista-Controlador (MVC)
Patrón de diseño Modelo-Vista-Controlador (MVC)Patrón de diseño Modelo-Vista-Controlador (MVC)
Patrón de diseño Modelo-Vista-Controlador (MVC)
 
Linea de productos de software y Metodo Watch
Linea de productos de software y Metodo WatchLinea de productos de software y Metodo Watch
Linea de productos de software y Metodo Watch
 
10.el diseño en el nivel de componentes
10.el diseño en el nivel de componentes10.el diseño en el nivel de componentes
10.el diseño en el nivel de componentes
 
Cuadro comparativo modelos para el desarrollo de software
Cuadro comparativo modelos para el desarrollo de softwareCuadro comparativo modelos para el desarrollo de software
Cuadro comparativo modelos para el desarrollo de software
 
Ejemplo plan de desarrollo de software rup
Ejemplo plan de desarrollo de software rupEjemplo plan de desarrollo de software rup
Ejemplo plan de desarrollo de software rup
 
Modelos de dominio
Modelos de dominioModelos de dominio
Modelos de dominio
 
diagrama de casos de uso del negocio y del sistema
diagrama de casos de uso del negocio y del sistemadiagrama de casos de uso del negocio y del sistema
diagrama de casos de uso del negocio y del sistema
 
Pruebas de caja blanca y negra
Pruebas  de caja blanca y negraPruebas  de caja blanca y negra
Pruebas de caja blanca y negra
 
Pruebas De Software
Pruebas De SoftwarePruebas De Software
Pruebas De Software
 
2. Casos de uso y diagramas de casos de uso
2. Casos de uso y diagramas de casos de uso2. Casos de uso y diagramas de casos de uso
2. Casos de uso y diagramas de casos de uso
 

Destacado

Pruebas caja Blanca.Conceptos Clave.
Pruebas caja Blanca.Conceptos Clave.Pruebas caja Blanca.Conceptos Clave.
Pruebas caja Blanca.Conceptos Clave.
Isabel Gómez
 
Prueba de-caja-negra-y-caja-blanca pwp
Prueba de-caja-negra-y-caja-blanca pwpPrueba de-caja-negra-y-caja-blanca pwp
Prueba de-caja-negra-y-caja-blanca pwp
Gomez Gomez
 
Pruebas Caja negra y Caja Blanca
Pruebas Caja negra y Caja BlancaPruebas Caja negra y Caja Blanca
Pruebas Caja negra y Caja Blanca
Manuel Murcia
 
Test y pruebas de caja Negra y caja Blanca
Test y pruebas de caja Negra y caja BlancaTest y pruebas de caja Negra y caja Blanca
Test y pruebas de caja Negra y caja Blanca
Manuel Murcia
 
Mantenimiento de Software
Mantenimiento de SoftwareMantenimiento de Software
Mantenimiento de SoftwareCARMEN
 

Destacado (6)

Pruebas caja Blanca.Conceptos Clave.
Pruebas caja Blanca.Conceptos Clave.Pruebas caja Blanca.Conceptos Clave.
Pruebas caja Blanca.Conceptos Clave.
 
Prueba de-caja-negra-y-caja-blanca pwp
Prueba de-caja-negra-y-caja-blanca pwpPrueba de-caja-negra-y-caja-blanca pwp
Prueba de-caja-negra-y-caja-blanca pwp
 
Pruebas Caja negra y Caja Blanca
Pruebas Caja negra y Caja BlancaPruebas Caja negra y Caja Blanca
Pruebas Caja negra y Caja Blanca
 
Test y pruebas de caja Negra y caja Blanca
Test y pruebas de caja Negra y caja BlancaTest y pruebas de caja Negra y caja Blanca
Test y pruebas de caja Negra y caja Blanca
 
Pruebas De Software
Pruebas De SoftwarePruebas De Software
Pruebas De Software
 
Mantenimiento de Software
Mantenimiento de SoftwareMantenimiento de Software
Mantenimiento de Software
 

Similar a Prueba de Caja Blanca

oTema6 pruebas del software
oTema6 pruebas del softwareoTema6 pruebas del software
oTema6 pruebas del softwareSilvia Guilcapi
 
Tema6 pruebas del software
Tema6 pruebas del softwareTema6 pruebas del software
Tema6 pruebas del softwareSusita Paguay
 
Software testing 2
Software testing 2Software testing 2
Software testing 2josodo
 
Software testing 1
Software testing 1Software testing 1
Software testing 1josodo
 
Aguirre Jimenez
Aguirre JimenezAguirre Jimenez
Aguirre JimenezFARIDROJAS
 
S9-DAW-2022S1.pptx
S9-DAW-2022S1.pptxS9-DAW-2022S1.pptx
S9-DAW-2022S1.pptx
Luis Fernando Aguas Bucheli
 
Sesion 2
Sesion 2Sesion 2
pruebas caja negra y blanca.pdf
pruebas caja negra y blanca.pdfpruebas caja negra y blanca.pdf
pruebas caja negra y blanca.pdf
MARIARENETORREZVARGA
 
Caja negra
Caja negraCaja negra
Caja negra
gio191919
 
Estructuras de control. Secuencial, condicional y repetitivas..pdf
Estructuras de control. Secuencial, condicional y repetitivas..pdfEstructuras de control. Secuencial, condicional y repetitivas..pdf
Estructuras de control. Secuencial, condicional y repetitivas..pdf
nicolaspelaez3
 
ejemplos.pdf
ejemplos.pdfejemplos.pdf
ejemplos.pdf
GabyGonzlez63
 
Capítulo 07 interpretación de resultados
Capítulo 07 interpretación de resultadosCapítulo 07 interpretación de resultados
Capítulo 07 interpretación de resultadosSergio Valenzuela Mayer
 
Pruebas de Software
Pruebas de SoftwarePruebas de Software
Pruebas de Software
Iván Sanchez Vera
 
Unidad 2.3 Prueba De Programas
Unidad 2.3 Prueba De ProgramasUnidad 2.3 Prueba De Programas
Unidad 2.3 Prueba De ProgramasSergio Sanchez
 
Capítulo 07 interpretación de resultados
Capítulo 07 interpretación de resultadosCapítulo 07 interpretación de resultados
Capítulo 07 interpretación de resultadosSergio Valenzuela Mayer
 
Verificacion --validacion
Verificacion --validacionVerificacion --validacion
Verificacion --validacion
eduardoao2
 
Estructuras de Control C++
Estructuras de Control C++Estructuras de Control C++
Estructuras de Control C++
Jorge Leonardo
 
Testing intro-a
Testing intro-aTesting intro-a

Similar a Prueba de Caja Blanca (20)

oTema6 pruebas del software
oTema6 pruebas del softwareoTema6 pruebas del software
oTema6 pruebas del software
 
Tema6 pruebas del software
Tema6 pruebas del softwareTema6 pruebas del software
Tema6 pruebas del software
 
Software testing 2
Software testing 2Software testing 2
Software testing 2
 
Software testing 1
Software testing 1Software testing 1
Software testing 1
 
Aguirre Jimenez
Aguirre JimenezAguirre Jimenez
Aguirre Jimenez
 
S9-DAW-2022S1.pptx
S9-DAW-2022S1.pptxS9-DAW-2022S1.pptx
S9-DAW-2022S1.pptx
 
Sesion 2
Sesion 2Sesion 2
Sesion 2
 
pruebas caja negra y blanca.pdf
pruebas caja negra y blanca.pdfpruebas caja negra y blanca.pdf
pruebas caja negra y blanca.pdf
 
Caja negra
Caja negraCaja negra
Caja negra
 
Estructuras de control. Secuencial, condicional y repetitivas..pdf
Estructuras de control. Secuencial, condicional y repetitivas..pdfEstructuras de control. Secuencial, condicional y repetitivas..pdf
Estructuras de control. Secuencial, condicional y repetitivas..pdf
 
ejemplos.pdf
ejemplos.pdfejemplos.pdf
ejemplos.pdf
 
Calidad del software cap2
Calidad del software   cap2Calidad del software   cap2
Calidad del software cap2
 
Capítulo 07 interpretación de resultados
Capítulo 07 interpretación de resultadosCapítulo 07 interpretación de resultados
Capítulo 07 interpretación de resultados
 
Pruebas de Software
Pruebas de SoftwarePruebas de Software
Pruebas de Software
 
Unidad 2.3 Prueba De Programas
Unidad 2.3 Prueba De ProgramasUnidad 2.3 Prueba De Programas
Unidad 2.3 Prueba De Programas
 
Capítulo 07 interpretación de resultados
Capítulo 07 interpretación de resultadosCapítulo 07 interpretación de resultados
Capítulo 07 interpretación de resultados
 
Qualitytest
QualitytestQualitytest
Qualitytest
 
Verificacion --validacion
Verificacion --validacionVerificacion --validacion
Verificacion --validacion
 
Estructuras de Control C++
Estructuras de Control C++Estructuras de Control C++
Estructuras de Control C++
 
Testing intro-a
Testing intro-aTesting intro-a
Testing intro-a
 

Último

Escaneo y eliminación de malware en el equipo
Escaneo y eliminación de malware en el equipoEscaneo y eliminación de malware en el equipo
Escaneo y eliminación de malware en el equipo
nicromante2000
 
FICHA DE TRABAJO DE CREACION DE TABLAS EN WORD
FICHA  DE TRABAJO DE CREACION DE TABLAS EN WORDFICHA  DE TRABAJO DE CREACION DE TABLAS EN WORD
FICHA DE TRABAJO DE CREACION DE TABLAS EN WORD
RobertSotilLujn
 
PitchCollabART uniendo talentos, creando maravillas digitales
PitchCollabART uniendo talentos, creando maravillas digitalesPitchCollabART uniendo talentos, creando maravillas digitales
PitchCollabART uniendo talentos, creando maravillas digitales
juanorejuela499
 
Los desafíos de calidad de software que nos trae la IA y los LLMs
Los desafíos de calidad de software que nos trae la IA y los LLMsLos desafíos de calidad de software que nos trae la IA y los LLMs
Los desafíos de calidad de software que nos trae la IA y los LLMs
Federico Toledo
 
infografia del sena para analisis y desarrollo de software
infografia del sena para analisis y desarrollo de softwareinfografia del sena para analisis y desarrollo de software
infografia del sena para analisis y desarrollo de software
oscartorres960914
 
experiencia de aprendizaje sobre lectura y escritura como herramientas de ap...
experiencia de aprendizaje sobre lectura y escritura como  herramientas de ap...experiencia de aprendizaje sobre lectura y escritura como  herramientas de ap...
experiencia de aprendizaje sobre lectura y escritura como herramientas de ap...
cuentauniversidad34
 
CONCEPTOS DE PROGRAMACION CUALQUIER LENGUAJE
CONCEPTOS DE PROGRAMACION CUALQUIER LENGUAJECONCEPTOS DE PROGRAMACION CUALQUIER LENGUAJE
CONCEPTOS DE PROGRAMACION CUALQUIER LENGUAJE
SamuelGampley
 
Maquina de Dibujo y Escritura Automática.pdf
Maquina de Dibujo y Escritura Automática.pdfMaquina de Dibujo y Escritura Automática.pdf
Maquina de Dibujo y Escritura Automática.pdf
juanjosebarreiro704
 
trabajo integrador final sofi y vane.docx
trabajo integrador final sofi y vane.docxtrabajo integrador final sofi y vane.docx
trabajo integrador final sofi y vane.docx
lasocharfuelan123
 
Caso de exito Cirrus - Hospital La Salle
Caso de exito Cirrus - Hospital La SalleCaso de exito Cirrus - Hospital La Salle
Caso de exito Cirrus - Hospital La Salle
Ecaresoft Inc.
 

Último (10)

Escaneo y eliminación de malware en el equipo
Escaneo y eliminación de malware en el equipoEscaneo y eliminación de malware en el equipo
Escaneo y eliminación de malware en el equipo
 
FICHA DE TRABAJO DE CREACION DE TABLAS EN WORD
FICHA  DE TRABAJO DE CREACION DE TABLAS EN WORDFICHA  DE TRABAJO DE CREACION DE TABLAS EN WORD
FICHA DE TRABAJO DE CREACION DE TABLAS EN WORD
 
PitchCollabART uniendo talentos, creando maravillas digitales
PitchCollabART uniendo talentos, creando maravillas digitalesPitchCollabART uniendo talentos, creando maravillas digitales
PitchCollabART uniendo talentos, creando maravillas digitales
 
Los desafíos de calidad de software que nos trae la IA y los LLMs
Los desafíos de calidad de software que nos trae la IA y los LLMsLos desafíos de calidad de software que nos trae la IA y los LLMs
Los desafíos de calidad de software que nos trae la IA y los LLMs
 
infografia del sena para analisis y desarrollo de software
infografia del sena para analisis y desarrollo de softwareinfografia del sena para analisis y desarrollo de software
infografia del sena para analisis y desarrollo de software
 
experiencia de aprendizaje sobre lectura y escritura como herramientas de ap...
experiencia de aprendizaje sobre lectura y escritura como  herramientas de ap...experiencia de aprendizaje sobre lectura y escritura como  herramientas de ap...
experiencia de aprendizaje sobre lectura y escritura como herramientas de ap...
 
CONCEPTOS DE PROGRAMACION CUALQUIER LENGUAJE
CONCEPTOS DE PROGRAMACION CUALQUIER LENGUAJECONCEPTOS DE PROGRAMACION CUALQUIER LENGUAJE
CONCEPTOS DE PROGRAMACION CUALQUIER LENGUAJE
 
Maquina de Dibujo y Escritura Automática.pdf
Maquina de Dibujo y Escritura Automática.pdfMaquina de Dibujo y Escritura Automática.pdf
Maquina de Dibujo y Escritura Automática.pdf
 
trabajo integrador final sofi y vane.docx
trabajo integrador final sofi y vane.docxtrabajo integrador final sofi y vane.docx
trabajo integrador final sofi y vane.docx
 
Caso de exito Cirrus - Hospital La Salle
Caso de exito Cirrus - Hospital La SalleCaso de exito Cirrus - Hospital La Salle
Caso de exito Cirrus - Hospital La Salle
 

Prueba de Caja Blanca

  • 1. 1 PRU Pruebas 2 Enunciado Se tiene un programa que Lee tres enteros de un fichero Los tres enteros representan los lados de un triángulo Imprime un mensaje indicando el tipo de triángulo Escaleno Isósceles Equilátero Ejercicio previo > triang ? 10,20,25 > Es un: Escaleno > Problema: “Escribir el conjunto de casos de prueba adecuados para probar el programa anterior.”
  • 2. 3 Definición: Posibles definiciones: Ejecutar un programa para 1. Ver que funciona correctamente 2. Demostrar que no hay error 3. Encontrar errores Cuál es la definición correcta? Introducción 4 Analogía: Análisis clínico Positivo si encuentra algo mal Negativo si no lo encuentra Si no se encuentra nada mal se deberá invertir más dinero Podemos tratar a un programa como un "enfermo" potencial? Una cuestión semántica Encontrar errores = ÉXITO
  • 3. 5 En realidad NO es destructivo (lo parece a corto plazo) A largo plazo es ECONÓMICO (constructivo) NO debe infundir culpabilidad: La búsqueda de fallos es un medio de mejorar la CALIDAD Mito: El objetivo de la prueba es destructivo (demoler el software) Si fuésemos perfectos, no habría errores La prueba es una admisión de fallos Debemos sentirnos culpables 6 Principios de la prueba del software 1. La salida deseada es una parte NECESARIA para cada caso de prueba: "No dejar al ojo ver lo que quiere ver” 2. Un programador debe evitar probar su propio programa •Al programar se construye •Al probar se destruye (a corto plazo) •Además: Se descubren mejor los errores debidos al mal entendimiento del diseño o especificación ("dos ojos ven más que uno"). Analogía: Crítica de un libro •No es imposible que el programador pruebe, pero no conveniente •Lo anterior no es aplicable a la depuración
  • 4. 7 3. Una organización no debe probar sus propios programa (idealista) •Consecuencia: Equipos dedicados a pruebas Independientes Especializados 4. Inspeccionar MUCHO los resultados de cada prueba 5. Escribir casos de pruebas para •Entradas inválidas e inesperadas además de para las válidas y esperadas Principios de la prueba del software 8 6. Intentar ver: •Si no hace lo que se supone que debe de hacer •Si hace lo que no se supone que debe de hacer (Examinar efectos laterales) 7. Evitar usar caso de prueba de usar y tirar, a no ser que el programa sea de usar y tirar •Guardar siempre los casos de prueba para: No perder tiempo reinventando casos de prueba Posibilitar efectuar pruebas de regresión 8. No plantear una prueba asumiendo que no se van a encontrar errores Principios de la prueba del software
  • 5. 9 9. La probabilidad de existencia de errores en una sección de programa es proporcional al número de errores ya encontrados en esa sección Ejemplo: IBM s/370 : 47% de los errores encontrados por los usuarios en el 4% de los módulos 10. La prueba del software es: •Esencialmente CREATIVA •Un RETO intelectual Principios de la prueba del software 10 Prueba = Proceso de ejecutar un programa con la intención de encontrar errores Un buen caso de prueba es el que tiene alta probabilidad de detectar un error todavía no descubierto Un caso con éxito es el que detecta un error todavía no descubierto Resumen
  • 6. 11 Flujo de información en la prueba Pruebas Unitarias Pruebas Unitarias Pruebas de Integración Pruebas de Validación Pruebas de Instalación Pruebas de Aceptación Modulo Probado Modulo Probado Soft. Ensamblado Soft. validado Soft. Aceptado Soft. Operativo 12 Pruebas de caja negra Conducidas por las entradas y salidas Prueba exhaustiva de las entradas y salidas Evaluación: Comportamiento de acuerdo con especificaciones Problema: Infinitas posibilidades para las entradas Tipos de prueba Pruebas de caja blanca Conducidas por la estructura lógica (interna) del programa Ejercitar todas las posibles condiciones que se pueden dar Evaluación: Medida de la cobertura Problema: Muchos errores quedan sin detectar: No se prueba la especificación No se detectan ausencias
  • 7. 13 Técnicas de prueba de caja blanca Cobertura lógica •No proporcionan una guía para determinar los casos de prueba •Proporcionan un criterio de cobertura de los casos de prueba a varios niveles: Sentencias Decisiones Condiciones Decisión/condición Múltiple condición 14 Cobertura de sentencias Cada sentencia ha de ser ejecutada al menos una vez A>1 And B=0 A=2 Or X>1 X=X/A X=X+1 SI SI NO NO Caso de prueba: A=2, B=0, X=3 Qué pasaría si por error, la primera decisión ha de ser OR? Y si en la segunda ha de ser X>0 ?
  • 8. 15 Los casos de prueba han de hacer que cada decisión tenga los valores CIERTO y FALSO Incluye cobertura de sentencias Cobertura de decisiones A>1 And B=0 A=2 Or X>1 X=X/A X=X+1 SI SI NO NO Casos de prueba: A=3, B=0, X=3 A=2, B=1, X=1 Qué pasaría si en la segunda decisión ha de ser x<1 en vez de x>1? 16 A>1 And B=0 A=2 Or X>1 X=X/A X=X+1 SI SI NO NO Cobertura de condiciones Cada condición toma todos los posibles valores al menos una vez. Suele ser superior a las anteriores Los casos anteriores incluyen los criterios anteriores? Decisiones Sentencias Casos de prueba: A B X A>1 B=0 A=2 X>1 1 0 3 F C F C 2 1 1 C F C F
  • 9. 17 A>1 And B=0 A=2 Or X>1 X=X/A X=X+1 SI SI NO NO Cobertura de decisión/condición Cumplir ambos criterios Casos de prueba: En la primera decisión (segundo caso) se toma la alternativa FALSO siempre por fallo de las dos premisas a la vez Qué pasaría si la operación lógica tuviese que ser AND en vez de OR? A B X A>1 B=0 A=2 X>1 2 0 4 C C C C 1 1 1 F F F F 18 A>1 And B=0 A=2 Or X>1 X=X/A X=X+1 SI SI NO NO Cobertura de Múltiple Condición Se prueban todas las posibles combinaciones de las condiciones en cada decisión A B X A>1 B=0 A=2 X>1 2 0 4 C C C C 1 1 1 F F F F Casos de prueba: 2 1 1 C F C F 1 0 2 F C F C Incluye todas las anteriores Problema: En muchas ocasiones es imposible cubrir todas las posibilidades
  • 10. 19 Prueba de bucles Bucles simples Saltar totalmente Pasar una y dos veces Pasar un número intermedio Pasar el máximo número y una menos Pasar más que el máximo Bucles anidados Probar el bucle interior, los demás en valores mínimos Progresar hacia afuera: externos en valores mínimos internos en valores típicos Bucles concatenados Independientes (por separado) Dependientes (seguir filosofía anterior) Para programas no estructurados Lo mejor es rediseñar La programación estructurada facilita la determinación de casos de prueba 20 Prueba del camino básico: Complejidad ciclomática Objetivo Recorrer todos los caminos independientes El número de caminos lo indica el valor de la complejidad ciclomática (McCabe) 1 WHILE NOT final DO 2 leer 3 IF campo1=0 THEN 4 procesar() 5 incrementar_conta(). 6 ELSE IF campo1=1 THEN 7 reinic. conta.() ELSE 8 procesar() 9 END IF 10 END WHILE 11 1 2 6 4 3 57 8 9 10 11
  • 11. 21 Cálculo Fórmula V(G): Número de regiones del grafo Aristas - Nodos + 2 Número Predicados + 1 Número de regiones del grafo 4 Aristas - Nodos + 2 11 - 9 + 2 = 4 Número Predicados + 1 3 + 1 = 4 1 2 6 4 3 57 8 9 10 11 22 Cuando hay más de una condición por decisión, cada una de ellas cuenta como un predicado (nodo) 1 IF a THEN 2 x ELSE 3 IF b THEN 4 x ELSE 5 y 6 END IF 7 END IF 2 3 1 4 5 6 7 Número de regiones del grafo 3 Aristas - Nodos + 2 8 - 7 + 2 = 3 Número Predicados + 1 2 + 1 = 3 V(G) = 1 IF a OR b THEN 2 x ELSE 3 y 4 END IF
  • 12. 23 Sin embargo también se puede hacer de forma directa numerando los predicados 1 IF a OR b THEN 2 x ELSE 3 y 4 END IF 1 2 IF a OR b THEN 3 x ELSE 4 Y 5 END IF 3 2 1 4 5 Número de regiones del grafo 3 Aristas - Nodos + 2 6 - 5 + 2 = 3 Número Predicados + 1 2 + 1 = 3 V(G) = 24 Sentencias tipo CASE: Pueden convertirse a IFs encadenados o numerar directamente, hay que tener en cuanta la lógica del lenguaje de programación switch (a ) { 1 : printf (“uno”; break; 2 : printf (“dos”); 3 : printf (“tres”); break; else: printf (“ninguno”);} Cada valor con el que se compara la variable es equivalente a un predicado. ( a = 1),... (a=3) Número Predicados + 1 3 + 1 = 4V(G) =
  • 13. 25 A través del grafo: 1 switch (a ) { 2 1 : 3 printf (“uno”; 4 break; 5 2 : 6 printf (“dos”); 7 3 : 8 printf (“tres”); 9 break; else: 10 printf (“ninguno”);} 11 siguiente_instrucción Número de Regiones = 4V(G) = 3 2 1 4 5 8 7 6 9 10 11 Aristas-Nodos+2 = 13-11+2 = 4V(G) = 26 No solamente para determinar el número de caminos Mide la CALIDAD del código Un criterio de calidad de uso general: V(G) < 10 Módulo aceptable V(G) >=10 Módulo rechazado Utilidad •Fácil uso en una organización •Fácilmente automatizable Importante
  • 14. 27 Técnicas de prueba de caja blanca Se centran en los requisitos funcionales del software Módulo a probarCaso de Prueba Resultado Se corresponde el resultado con el esperado? Cuantos casos hay que probar? 28 Partición en clases de equivalencia Objetivo Dividir el dominio de entrada en clases de datos Detectar clases de errores Clase de equivalencia Representa un conjunto de estados válidos e inválidos para las condiciones de entrada Proceso 1. Identificar y numerar cada clase 2. Escribir un caso de prueba (o varios) cubriendo el mayor número posible de clases VÁLIDAS posibles 3. Escribir un caso de prueba para CADA UNA de las clases INVÁLIDAS (Objetivo: evitar el enmascaramiento de los casos de pruebas)
  • 15. 29 Identificación de clases de equivalencia Tipo de Condición Clases Válidas Clases Inválidas Rango de Valores [1..999] >=1 y <=999 <1 ó > 999 Enumeración o valores sueltos 1,2,10,20 1,2,10,20 <1 >2 y <10, >10 y <20 >20 Conjunto no numérico rojo, verde rojo, verde Resto colores posibles, gris, negro, azul... Condición booleana debe ser letra Condición cierta letra Condición falsa distinto letra Las clases dependen siempre de los posibles valores que puede haber tanto correctos como incorrectos. Es necesario distinguir los valores aceptados como correctos del resto de valores. Si hay razones para creer que los elementos de una clase no se tratarán de la misma forma, dividir la clase en otras más pequeñas 30 Chequeo sintáctico de una sentencia de declaración INTEGER a [,a] cuatro variables como máximo identificador de 6 caracteres máximo el primer carácter una letra Ejemplo Nombre clase Clases Válidas Clases Inválidas Nombre variable (contenido) Letras Dígitos distinto de letras y dígitos Existe variable Si No Comienza por letra Si No Nombre variable (Tamaño) 1.. 6 <1 > 6 Número de variables 1.. 4 0 > 4
  • 16. 31 Nombre clase Clases Válidas Clases Inválidas Nombre variable (contenido) (1) Letras (2) Dígitos (3) distinto de letras y dígitos Existe variable (4) Si (5) No Comienza por letra (6) Si (7) No Nombre variable (Tamaño) (8) 1.. 6 (9) <1 (10) > 6 Número de variables (11) 1.. 4 (12) 0 (13) > 4 Casos de Prueba Entrada Casos Cubiertos INTEGER ABC, A19, B 1,2,4,6,8,11 INTEGER 5 INTEGER 213 7 INTEGER A?3 3 INTEGER ,A 9 INTEGER ADCBEFG 10 INTEGER 12 INTEGER A, B, C, D, E 13 32 Análisis de valores límite Objetivo Situar las pruebas en los BORDES de las clases de equivalencia Diferencias con lo anterior En vez de seleccionar cualquier elemento de la clase se seleccionan varios (los extremos) Además se tienen en cuenta las clases de equivalencia para las salidas
  • 17. 33 Valores situados en los bordes Adyacentes a los situados en los bordes Valor típico Determinación de valores límite Tipo de Condición Clases Válidas Clases Inválidas Rango [-5..+5] >=-5 y <=5 -5, -4, 1, 4, 5 <-5 , > +5 -6, -7, -10, 6, 7, 10 Rango [13..29 ] >=13 y <=29 13, 14, 20, 28, 29 <13 >29 12, 11, -2, 30, 31, 50 Conjunto no numérico rojo, verde rojo, verde rojo, verde gris, negro, azul... gris, negro, azul... Condición booleana debe ser letra letra letra distinto letra distinto letra 34 Ejemplo Nombre clase Clases Válidas Clases Inválidas Nombre variable (contenido) Letras Dígitos A, B, M, Y, Z a, b, m, y, z 0, 1, 5, 8, 9 distinto de letras y dígitos ascii(0), ascii(0+1), ascii(prec(‘A’)), ascii(prec(prec(‘A’))) ascii intermedio, ... Existe variable Si Si No No Comienza por letra Si Si No No Nombre variable (Tamaño) 1.. 6 1, 2, 4, 5, 6 <1 > 6 0, 7, 8, 10 Número de variables 1.. 4 1, 2, 3, 4 0 > 4 0, 5, 6, 11
  • 18. 35 Para las salidas: Devuelve un código de error 1. Sintaxis Correcta 2. Faltan Parámetros 3. Sobran Parámetros 4. Identificador muy largo 5. Identificador ilegal Nombre clase Clases Válidas Clases Inválidas Código de salida 1,2,3,4,5 1, 2, 3, 4, 5 Otro Otro Los casos de prueba han de cubrir los casos de prueba de las salidas. En este caso se intenta forzar la clase inválida de las salidas: Linea = "INTEGER ABC,DEF" CodigoSalida = -99 CheckSintaxis(linea,CodigoSalida) Write(Linea) Write(CodigoSalida) 36 •Rechazar o someter a inspección los módulos con valores de complejidad ciclomática alta •Usar siempre análisis de valores límite •Especial cuidado con las clases inválidas (sin olvidar las válidas) •Añadir casos "por instinto” •Determinar al final la cobertura lógica, añadir casos si queda algún camino por cubrir Estrategia a seguir para las pruebas unitarias Guardar los casos de prueba y las salidas obtenidas para facilitar las pruebas de regresión Importante
  • 19. 37 Realizadas sobre componentes previamente probados por separado Diseño descendente no implica necesariamente prueba descendente Existen infinitas formas de implementar y probar de forma organizada Lo peor es hacerlo de forma desorganizada Pruebas de integración Estrategia no incremental 1.Probar cada módulo por separado 2.Juntar todo 3.Esperar que funcione Problema: Cuando falla algo, cómo se sabe dónde está el fallo? Estrategia incremental 1.Probar un módulo por separado 2.Añadir otro 3.Probar y depurar la combinación 4.Repetir con otros módulos De esta forma se puede detectar dónde están los fallos encontrados Esto no excluye que se pruebe previamente cada módulo por separado 38 Elementos auxiliares Resguardos (Stubs) •No hacer nada •Consumir tiempo •Proporcionar salida constante •Proporcionar salida variable (calculada o introducida externamente) •Pedir datos interactivamente •Implementar una versión primitiva Siempre mantener una traza del módulo: Indicar que el módulo se ejecuta Mostrar parámetros de entrada y salida Módulo a probar Resguardo
  • 20. 39 Módulo a probar Conductor Conductores (drivers) Módulos aferentes: Llamar y ver resultados Módulos transformadores: Pedir datos, llamar y ver resultados Módulos eferentes: Pedir datos y llamar Problema Que el test falle por culpa del resguardo o del conductor 40 Secuencia de Integración Descendente (Top-Down) : Se prueban primero los módulos de más alto nivel Ascendente (Dotton-up) : Se prueban primero los módulos de más bajo nivel Lugar en donde se descubren los fallos Módulos auxiliares Representación de casos de prueba Observación de los resultados de la prueba Efecto psicológico (moral del equipo) Parte superior (más importantes) Resguardos (complicados) Difícil si no se incorpora E/S Difícil Mejora, permite demostraciones Parte inferior Conductores Fácil Fácil Peor, el programa no existe hasta el final Descendente AscendenteComparación
  • 21. 41 Todo lo anterior es para integración de módulos También hay integración de componentes o subsistemas previamente integrados: Probar cada uno por separado Integrar de forma incremental 42 Pruebas de "alto nivel" •Pruebas de validación Estamos construyendo el producto correcto? •Prueba de función Tiene en cuenta solamente la especificación funcional (no confundir con el ASI en Métrica) •Prueba de sistema Tiene en cuenta los objetivos: El producto formando un todo con su entorno (se definirán más adelante)
  • 22. 43 •Pruebas alfa Conducidas por cliente en lugar de desarrollo El equipo registra las anomalías •Pruebas beta Se distribuye el producto a potenciales usuarios Estos prueban el producto e informan de los fallos detectados •Pruebas de aceptación El cliente certifica que el sistema es válido para él Utilizar el plan de aceptación existente •Pruebas de instalación Buscar fallos en la instalación del sistema en un entorno concreto Pruebas de "alto nivel" 44 Pruebas de sistema •Volumen Someter a gran cantidad de datos (base de datos, tablas muy grandes) Probar con cantidades de datos no permitidas (p.e. disco lleno) •Sobrecarga Fuertes cargas de trabajo (máximo número de usuarios) Límites permitidos Exceso sobre límites permitidos •Utilizabilidad ¿Los interfaces de usuario son adecuados a las características del usuario? ¿ Las salidas y diagnósticos son claros y comprensibles? ¿ El conjunto del interface de usuario mantiene la integridad conceptual? ¿ Excesivo número de opciones, u opciones que no serán utilizadas? ¿ Hay reconocimiento inmediato de cada entrada de datos? ¿ Es fácil de usar?
  • 23. 45 •Seguridad o Integridad (Security) Intentar violar toda protección del sistema •Seguridad (Safety) Intentar descubrir si el sistema puede afectar al entorno (importante en sistemas de control) •Rendimiento Tiempos de respuesta • En condiciones normales • En las peores condiciones •Almacenamiento Ocupación de memoria y disco •Configuración Al menos, probar con cada posible configuración hardware y dispositivos Pruebas de sistema 46 •Compatibilidad/Conversión Conversiones de datos Compatibilidad con otros sistemas Compatibilidad con otras versiones •Fiabilidad Tiempo entre fallos (difícil de determinar) •Recuperación Cómo se recupera el sistema ante fallos de Software, de Hardware o de Comunicaciones •Servicio Cuánto se tarda en arreglar un fallo •Documentación Mediante inspección. Buscar discrepancias con el funcionamiento del sistema Pruebas de sistema
  • 24. 47 Criterios de terminación Puesto que siempre existirán defectos latentes, ¿Cuándo dejar de probar? Habitualmente •Cuando el tiempo asignado finaliza •Cuando todos los casos de prueba no detectan errores Lo mejor es una combinación de las categorías que se detallan a continuación. Primera Categoría Satisfacer el criterio de cobertura de múltiple condición (como mínimo de líneas) Las pruebas derivadas de análisis de valores límite no tienen éxito Problemas: No válido, por ejemplo para pruebas del sistema Subjetivo (no se sabe si se ha aplicado bien el análisis de valores límite) 48 Expresada en términos positivos: Detectados un número determinado de errores Problemas: Estimación del número total de errores Estimación del porcentaje de errores que pueden ser descubiertos Todo ello para cada fase Según Myers: 4 a 8 errores por cada 100 líneas de código Segunda Categoría
  • 25. 49 Tercera Categoría Dibujar errores hallados por unidad de tiempo Parar cuando la eficacia decrece Errores encontrados Tiempo 50 Planificación de las pruebas Organizar lo más temprano posible. Prever tiempo empleado en las pruebas. Determinar: •Objetivos •Criterios de terminación •Cronología (fases de pruebas, plan de integración) •Responsabilidades (corrección y supervisión) •Normas: Identificación de casos Instrumentación de módulos Bibliotecas de casos: Sistemática de identificación y almacenamiento Mecanismo de información para seguir el proceso de corrección e incorporación de cambios
  • 26. 51 •Infraestructura software Herramientas comerciales (p.e. MS Test, DEC Test Manager) Herramientas específicas (p.e. trazas y logs de la ejecución de los módulos) •Infraestructura hardware Tiempo de dedicación de máquina Configuraciones especiales 52 PRU Pruebas