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
"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
"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
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:
⭐