Teoría del Testeo del programa

Teoría de Goodenough y Gerhart

Teoría de Weyuker y Ostrand

Teoría de Gourlay

Adecuación de los Testeos

Limitaciones del Testeo

El testeo con el conjunto de entrada completo se conoce como prueba exhaustiva

El mecanismo que verifica la corrección de la salida de un programa se conoce como oráculo

image

"ejecutar un programa con un subconjunto del dominio de entrada"

Las fallas del programa se clasifican en:

Fallo lógico: el programa produce resultados incorrectos independientemente de los recursos necesarios


Fallo de rendimiento: conduce a una falla del programa para producir los resultados esperados dentro de las limitaciones de recursos especificados

Condiciones de Confiabilidad:

Cada condición de branching individual en un programa

Cada posible condición de terminación en el programa ("desbordamiento")

Cada condición relevante para el correcto funcionamiento del programa

La validez y fiabilidad de los criterios de selección de pruebas dependen únicamente de la especificación del programa

Un criterio de selección de prueba uniformemente ideal para una especificación dada es uniformemente válido y confiable


Un criterio C es uniformemente válido si y solo si C es trivialmente válido

Teoremas:

Un criterio C es uniformemente confiable si y solo si C selecciona un solo conjunto de testeo

Corolario:

Un criterio C es uniformemente válido y confiable si y solo si C selecciona solo el conjunto de prueba único T = D

image

"Diferentes formas de comparar el poder de los métodos de testeo"

Se describen dos nociones relacionadas con el diseño de testeo y la evaluación de la adecuación del testeo

image


Fault seeding: colocar un cierto número de fallos en un programa y ejecutar para ver el porcentaje de detección de estos


Mutación del programa:
se dice que es adecuado si hace que cada mutación defectuosa produzca un resultado inesperado

Dos métodos:

Los testeos dan a los programadores mucha confianza en un componente de software si pasa sus casos de prueba

Un método de testeo es una función: M:P x & -> T

Métodos de testeo:


Dependiente del programa: Los casos de testeo se derivan en función del código fuente de un sistema, esto es llamado testeo "white-box"

Dependiente de la especificación: Los casos de testeo se derivan de la especificación del sistema, esto es llamado testeo "black-box"

Dependiente de la expectativa:
estos casos de testeo pueden incluir pruebas de funcionamiento continuo, pruebas de usabilidad, etc

El tester se preocupa por los métodos para producir casos de testeo y comparar métodos de prueba para que puedan identificar un método de prueba apropiado

Poder de los métodos de testeo

Por ejemplo: sean M y N dos métodos de prueba

Para que M sea al menos tan bueno como N, debemos tener la situación de que cada vez que N encuentra un error, M también lo hace

Si el programa cumple alguna de las dos condiciones, significa que es "no comprobable"

Es muy dificil determinar la salida correcta

No existe un oráculo

Las propiedades de los criterios de selección de testeos no son "monótonas", en el sentido de que siempre se ganan o conservan o siempre se pierden o conservan

Incoveniente de la Teoría: