Pruebas de Software

24
PRUEBAS-1 Pruebas de software Técnicas de prueba del software Estrategias de prueba del software Autor: Manuel Collado Fecha: Marzo 2003

description

Slides acerca del proceso de puebas y testing en la ingenieria de software

Transcript of Pruebas de Software

Page 1: Pruebas de Software

PRUEBAS-1

Pruebas de software

Técnicas de prueba del software

Estrategias de prueba del software

Autor: Manuel Collado Fecha: Marzo 2003

Page 2: Pruebas de Software

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

Page 3: Pruebas de Software

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 defectosSi no aparecen fallos, puede que haya defectos, o no

Page 4: Pruebas de Software

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

Page 5: Pruebas de Software

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

Page 6: Pruebas de Software

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

Page 7: Pruebas de Software

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

Page 8: Pruebas de Software

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

Page 9: Pruebas de Software

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

Page 10: Pruebas de Software

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 BooleanoClase 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

Page 11: Pruebas de Software

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 )

Page 12: Pruebas de Software

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

Page 13: Pruebas de Software

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

Page 14: Pruebas de Software

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. unidadesDoc. Diseño

Cod. Módulos

P. integración

Cód. Completo

P. validación

Doc. Requisitos

Page 15: Pruebas de Software

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 osimulados

(stubs)

Page 16: Pruebas de Software

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

Page 17: Pruebas de Software

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)

Page 18: Pruebas de Software

PRUEBAS-18

Introducción a las pruebas del software

Prueba unidades + integración ascendente

Dibujar

Curva_C

Pluma

Papel

Ejemplo

Page 19: Pruebas de Software

PRUEBAS-19

Introducción a las pruebas del software

Prueba unidades + integración ascendente

Papel

P_Papel

Paso 1

Page 20: Pruebas de Software

PRUEBAS-20

Introducción a las pruebas del software

Prueba unidades + integración ascendente

Pluma

Papel

P_Papel

P_Pluma

Paso 2

Page 21: Pruebas de Software

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

Page 22: Pruebas de Software

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

Page 23: Pruebas de Software

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ónPruebas de unidadesPruebas de integración

Conservar y actualizar los programas de prueba Usar herramientas de ejecución automática de las

pruebas

Page 24: Pruebas de Software

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)