PRUEBAS-1
Pruebas de software
Técnicas de prueba del software
Estrategias de prueba del software
Autor: Manuel Collado Fecha: Marzo 2003
PRUEBAS-2
Introducción a las pruebas del software
Técnicas de prueba del software
Contenido
Conceptos. Objetivos. Casos de prueba
Pruebas de caja blanca
Pruebas de caja negra
PRUEBAS-3
Introducción a las pruebas del software
Pruebas: concepto y objetivos
Comprobación del software
Demostración (proof): manual o semiautomática
Inspección manual del código
Prueba o ensayo (testing): ejecutar y ver resultados
Caso de prueba: ensayo individual
Imposibilidad de pruebas exhaustivas
Impracticable, demasiado costoso
Imposible garantizar la ausencia de defectos
Si se provocan fallos, seguro que hay defectos
Si no aparecen fallos, puede que haya defectos, o no
PRUEBAS-4
Introducción a las pruebas del software
Pruebas: concepto y objetivos
Objetivos de las pruebas
Encontrar defectos en el software
Una prueba tiene éxito si descubre un defecto
Una prueba fracasa si hay defectos pero no los
descubre
Pruebas de Verificación
Ver si cumple las especificaciones de diseño
Pruebas de Validación
Ver si cumple los requisitos del análisis
PRUEBAS-5
Introducción a las pruebas del software
Pruebas de “caja blanca”
Concepto y terminología
Pruebas en que se conoce el código a probar
Caja blanca (clear box: caja clara o transparente)
Se procura ejercitar cada elemento del código
Algunas clases de pruebas
Pruebas de cubrimiento
Pruebas de condiciones
Pruebas de bucles
PRUEBAS-6
Introducción a las pruebas del software
Pruebas de cubrimiento
Ejecutar al menos una vez cada sentencia
Se necesitan varios casos de prueba
Determinar posibles “caminos” independientes
Cada condición debe cumplirse en un caso y en otro
no. En general, se necesitan tantos casos como
condiciones, más uno (número ciclomático)
Puede ser imposible cubrir el 100%
Código que nunca se ejecuta: condiciones imposibles
Ejemplo: detección y notificación de errores internos
en un código sin errores
PRUEBAS-7
Introducción a las pruebas del software
Pruebas de condiciones
Cumplir o no cada parte de cada condición
Se necesitan varios casos de prueba
Determinar expresiones simples en las condiciones
Una por cada operando lógico o comparación
Cada expresión simple debe cumplirse en un caso y
en otro no, siendo decisiva en el resultado
Puede ser imposible cubrir el 100%
Expresiones simples no independientes
PRUEBAS-8
Introducción a las pruebas del software
Pruebas de bucles
Conseguir números de repeticiones especiales
Bucles simples
Repetir cero, una y dos veces
Repetir un número medio (típico) de veces
Repetir el máximo-1, máximo y ¡máximo +1!
Bucles anidados
Repetir un número medio (típico) los bucles internos,
el mínimo los externos, y variar las repeticiones del
bucle intermedio ensayado.
Ensayarlo con cada nivel de anidamiento
PRUEBAS-9
Introducción a las pruebas del software
Pruebas de “caja negra”
Concepto y terminología
Pruebas en que se conoce sólo la interfaz
Caja negra (black box: caja opaca)
Se procura ejercitar cada elemento de la interfaz
Algunas clases de pruebas
Cubrimiento → invocar todas las funciones (100%)
Clases de equivalencia de datos
Pruebas de valores límite
PRUEBAS-
10
Introducción a las pruebas del software
Pruebas de clases de equivalencia
Particiones de equivalencia
Los datos se clasifican según las distinciones visibles
en la interfaz del programa.
Ejemplo: EsPrimo: Entero → Booleano
Clase 1: primo ≥ 2 (2, 3, 5, 7, 11, ...)
Clase 2: no_primo ≥ 2 (4, 6, 8, 9, 10, ...)
Clase 3: valores singulares (0, 1)
Clase 4: no definido (-1, -2, ...)
Casos de ensayo con datos de cada clase
PRUEBAS-
11
Introducción a las pruebas del software
Pruebas de valores límite
Complemento a las particiones de equivalencia
Varios casos de prueba por cada partición
Valores típicos, intermedios
Valores primero y segundo del rango
Valores penúltimo y último
Valores vecinos fuera del rango (en otra partición)
Motivación
Los programadores se equivocan con más frecuencia
al tratar los valores en la frontera (Ej: > en vez de ≥)
PRUEBAS-
12
Introducción a las pruebas del software
Estrategias de prueba del software
Contenido
Pruebas de unidades
Pruebas de integración
Pruebas de regresión
Pruebas de validación
PRUEBAS-
13
Introducción a las pruebas del software
Pruebas sin estrategia
Motivación
Las pruebas son incómodas
La pruebas son aburridas
“Estoy seguro de que lo he codificado bien”
Probar todo junto, al final - Big-Bang
Falla por todas partes
Muy difícil diagnosticar las causas de los fallos
Muy costoso de arreglar
Resultado → productos finales defectuosos
PRUEBAS-
14
Introducción a las pruebas del software
Actividades de prueba de software
Actividades de desarrollo
Análisis
Diseño
Codificación
Integración
Mantenimiento
P. unidades
Doc. Diseño
Cod. Módulos
P. integración
Cód. Completo
P. validación
Doc. Requisitos
PRUEBAS-
15
Introducción a las pruebas del software
Pruebas de unidades
Se prueba cada módulo
Módulo en
pruebas
Programa
de prueba
Otros
módulos
Otros
módulos
Reales o
simulados
(stubs)
PRUEBAS-
16
Introducción a las pruebas del software
Pruebas de integración
Integración ascendente
Módulo en
pruebas
Otros
módulos
Otros
módulos
Reales,
ya probados
Otros
módulos
Programa
de prueba
PRUEBAS-
17
Introducción a las pruebas del software
Pruebas de integración
Integración descendente
Módulo en
pruebas
Otros
módulos
Otros
módulos
Reales,
ya probados
Otros
módulos
simulados
(stubs)
PRUEBAS-
18
Introducción a las pruebas del software
Prueba unidades + integración ascendente
Dibujar
Curva_C
Pluma
Papel
Ejemplo
PRUEBAS-
19
Introducción a las pruebas del software
Prueba unidades + integración ascendente
Papel
P_Papel
Paso 1
PRUEBAS-
20
Introducción a las pruebas del software
Prueba unidades + integración ascendente
Pluma
Papel
P_Papel
P_Pluma
Paso 2
PRUEBAS-
21
Introducción a las pruebas del software
Prueba unidades + integración ascendente
Curva_C
Pluma
Papel
P_Papel
P_Pluma
P_Curva_C
Paso 3
PRUEBAS-
22
Introducción a las pruebas del software
Prueba unidades + integración ascendente
Dibujar
Curva_C
Pluma
Papel
P_Papel
P_Pluma
P_Curva_C
Paso 4
PRUEBAS-
23
Introducción a las pruebas del software
Pruebas de regresión
Repetir las pruebas tras cada modificación
Repetir sólo pruebas de verificación
Pruebas de unidades
Pruebas de integración
Conservar y actualizar los programas de prueba
Usar herramientas de ejecución automática de las
pruebas
PRUEBAS-
24
Introducción a las pruebas del software
Pruebas de validación
Comprobar que se satisfacen los requisitos
Se usan la mismas técnicas, pero con otro objetivo
No hay programas de prueba, sino sólo el código
final de la aplicación
Se prueba el programa completo
Uno o varios casos de prueba por cada requisito o
caso de uso especificado
Se prueba también rendimiento, capacidad, etc. (y no
sólo resultados correctos)
Pruebas alfa (desarrolladores) y beta (usuarios)

Pruebas de Software

  • 1.
    PRUEBAS-1 Pruebas de software Técnicasde prueba del software Estrategias de prueba del software Autor: Manuel Collado Fecha: Marzo 2003
  • 2.
    PRUEBAS-2 Introducción a laspruebas del software Técnicas de prueba del software Contenido Conceptos. Objetivos. Casos de prueba Pruebas de caja blanca Pruebas de caja negra
  • 3.
    PRUEBAS-3 Introducción a laspruebas del software Pruebas: concepto y objetivos Comprobación del software Demostración (proof): manual o semiautomática Inspección manual del código Prueba o ensayo (testing): ejecutar y ver resultados Caso de prueba: ensayo individual Imposibilidad de pruebas exhaustivas Impracticable, demasiado costoso Imposible garantizar la ausencia de defectos Si se provocan fallos, seguro que hay defectos Si no aparecen fallos, puede que haya defectos, o no
  • 4.
    PRUEBAS-4 Introducción a laspruebas del software Pruebas: concepto y objetivos Objetivos de las pruebas Encontrar defectos en el software Una prueba tiene éxito si descubre un defecto Una prueba fracasa si hay defectos pero no los descubre Pruebas de Verificación Ver si cumple las especificaciones de diseño Pruebas de Validación Ver si cumple los requisitos del análisis
  • 5.
    PRUEBAS-5 Introducción a laspruebas del software Pruebas de “caja blanca” Concepto y terminología Pruebas en que se conoce el código a probar Caja blanca (clear box: caja clara o transparente) Se procura ejercitar cada elemento del código Algunas clases de pruebas Pruebas de cubrimiento Pruebas de condiciones Pruebas de bucles
  • 6.
    PRUEBAS-6 Introducción a laspruebas del software Pruebas de cubrimiento Ejecutar al menos una vez cada sentencia Se necesitan varios casos de prueba Determinar posibles “caminos” independientes Cada condición debe cumplirse en un caso y en otro no. En general, se necesitan tantos casos como condiciones, más uno (número ciclomático) Puede ser imposible cubrir el 100% Código que nunca se ejecuta: condiciones imposibles Ejemplo: detección y notificación de errores internos en un código sin errores
  • 7.
    PRUEBAS-7 Introducción a laspruebas del software Pruebas de condiciones Cumplir o no cada parte de cada condición Se necesitan varios casos de prueba Determinar expresiones simples en las condiciones Una por cada operando lógico o comparación Cada expresión simple debe cumplirse en un caso y en otro no, siendo decisiva en el resultado Puede ser imposible cubrir el 100% Expresiones simples no independientes
  • 8.
    PRUEBAS-8 Introducción a laspruebas del software Pruebas de bucles Conseguir números de repeticiones especiales Bucles simples Repetir cero, una y dos veces Repetir un número medio (típico) de veces Repetir el máximo-1, máximo y ¡máximo +1! Bucles anidados Repetir un número medio (típico) los bucles internos, el mínimo los externos, y variar las repeticiones del bucle intermedio ensayado. Ensayarlo con cada nivel de anidamiento
  • 9.
    PRUEBAS-9 Introducción a laspruebas del software Pruebas de “caja negra” Concepto y terminología Pruebas en que se conoce sólo la interfaz Caja negra (black box: caja opaca) Se procura ejercitar cada elemento de la interfaz Algunas clases de pruebas Cubrimiento → invocar todas las funciones (100%) Clases de equivalencia de datos Pruebas de valores límite
  • 10.
    PRUEBAS- 10 Introducción a laspruebas del software Pruebas de clases de equivalencia Particiones de equivalencia Los datos se clasifican según las distinciones visibles en la interfaz del programa. Ejemplo: EsPrimo: Entero → Booleano Clase 1: primo ≥ 2 (2, 3, 5, 7, 11, ...) Clase 2: no_primo ≥ 2 (4, 6, 8, 9, 10, ...) Clase 3: valores singulares (0, 1) Clase 4: no definido (-1, -2, ...) Casos de ensayo con datos de cada clase
  • 11.
    PRUEBAS- 11 Introducción a laspruebas del software Pruebas de valores límite Complemento a las particiones de equivalencia Varios casos de prueba por cada partición Valores típicos, intermedios Valores primero y segundo del rango Valores penúltimo y último Valores vecinos fuera del rango (en otra partición) Motivación Los programadores se equivocan con más frecuencia al tratar los valores en la frontera (Ej: > en vez de ≥)
  • 12.
    PRUEBAS- 12 Introducción a laspruebas del software Estrategias de prueba del software Contenido Pruebas de unidades Pruebas de integración Pruebas de regresión Pruebas de validación
  • 13.
    PRUEBAS- 13 Introducción a laspruebas del software Pruebas sin estrategia Motivación Las pruebas son incómodas La pruebas son aburridas “Estoy seguro de que lo he codificado bien” Probar todo junto, al final - Big-Bang Falla por todas partes Muy difícil diagnosticar las causas de los fallos Muy costoso de arreglar Resultado → productos finales defectuosos
  • 14.
    PRUEBAS- 14 Introducción a laspruebas del software Actividades de prueba de software Actividades de desarrollo Análisis Diseño Codificación Integración Mantenimiento P. unidades Doc. Diseño Cod. Módulos P. integración Cód. Completo P. validación Doc. Requisitos
  • 15.
    PRUEBAS- 15 Introducción a laspruebas del software Pruebas de unidades Se prueba cada módulo Módulo en pruebas Programa de prueba Otros módulos Otros módulos Reales o simulados (stubs)
  • 16.
    PRUEBAS- 16 Introducción a laspruebas del software Pruebas de integración Integración ascendente Módulo en pruebas Otros módulos Otros módulos Reales, ya probados Otros módulos Programa de prueba
  • 17.
    PRUEBAS- 17 Introducción a laspruebas del software Pruebas de integración Integración descendente Módulo en pruebas Otros módulos Otros módulos Reales, ya probados Otros módulos simulados (stubs)
  • 18.
    PRUEBAS- 18 Introducción a laspruebas del software Prueba unidades + integración ascendente Dibujar Curva_C Pluma Papel Ejemplo
  • 19.
    PRUEBAS- 19 Introducción a laspruebas del software Prueba unidades + integración ascendente Papel P_Papel Paso 1
  • 20.
    PRUEBAS- 20 Introducción a laspruebas del software Prueba unidades + integración ascendente Pluma Papel P_Papel P_Pluma Paso 2
  • 21.
    PRUEBAS- 21 Introducción a laspruebas del software Prueba unidades + integración ascendente Curva_C Pluma Papel P_Papel P_Pluma P_Curva_C Paso 3
  • 22.
    PRUEBAS- 22 Introducción a laspruebas del software Prueba unidades + integración ascendente Dibujar Curva_C Pluma Papel P_Papel P_Pluma P_Curva_C Paso 4
  • 23.
    PRUEBAS- 23 Introducción a laspruebas del software Pruebas de regresión Repetir las pruebas tras cada modificación Repetir sólo pruebas de verificación Pruebas de unidades Pruebas de integración Conservar y actualizar los programas de prueba Usar herramientas de ejecución automática de las pruebas
  • 24.
    PRUEBAS- 24 Introducción a laspruebas del software Pruebas de validación Comprobar que se satisfacen los requisitos Se usan la mismas técnicas, pero con otro objetivo No hay programas de prueba, sino sólo el código final de la aplicación Se prueba el programa completo Uno o varios casos de prueba por cada requisito o caso de uso especificado Se prueba también rendimiento, capacidad, etc. (y no sólo resultados correctos) Pruebas alfa (desarrolladores) y beta (usuarios)