Códigos disponibles en git |
¿Por qué?
|
|
¿Qué?
|
|
¿Para qué?
|
|
¿Cómo?
Lo primero es conocer los requisitos del SUT porque si no es una pérdida de tiempo. En tal caso, es necesaria la retroalimentación con los usuarios para afinar las asunciones
— Hunt & Thomas
Pragmatic Unit Testing |
Implementar pruebas sin material de referencia a menudo conduce a agujeros en las pruebas. Hacer diseño e implementación de pruebas bajo estrechas y a menudo estresantes restricciones de tiempo hace que dichos agujeros sean mayores posiblemente, incluso para probadores experimentados. Esto subraya la necesidad de un cuidadoso análisis, diseño e implementación de pruebas de antemano, que se pueden combinar durante la ejecución de la prueba con técnicas reactivas para encontrar nuevos errores
— Kaner et al
Testing Computer Software |
Valores de Entrada y Salida
|
|
Entrada | Salida |
---|---|
|
|
La inyección de los datos de entrada | La consulta de los datos de salida |
---|---|
|
|
|
|
|
|
|
|
Sin datos | |
---|---|
Alternativamente, la comprobación de los datos de salida se puede realizar evitando conocer el dato de salida esperado mediante 2 posibles técnicas: |
|
|
|
Estrategias de Casos de Pruebas
Pruebas de la Caja Negra o Comportamiento | Pruebas de Caja Blanca o Estructural |
---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
Pruebas de Caja Negra
Prueba exhaustiva | ||
---|---|---|
|
|
|
Variables independientes | ||
---|---|---|
|
|
|
Variables dependientes | ||
---|---|---|
|
|
|
Las técnicas de Variables Dependientes son aplicables cuando: |
|
|
|
|
|
Partición en Clases de Equivalencia
|
|
Generación de Casos de Pruebas con Partición de Clases de Equivalencia | Resultado |
---|---|
|
|
Factor | Ejemplo |
---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Análisis de Valores Límite
Los errores se esconden en los rincones y se aglomeran en los límites
— Beizer
|
|
|
|
Vector Ortogonal
|
|
|
|
|
|
|
Vector de Pares
|
|
|
|
||||||||
|
Pruebas de Caja Blanca
|
|||
|
|
|
|
Grafo de Control de Flujo de Ejecución
|
|
|
Ejemplo | Grafo | Ejemplo | Grafo |
---|---|---|---|
{ <sent1>; <sent2>; ... } |
if (<cond>) <sent>; |
||
if (<cond>) <thenSent>; else <elseSent>; |
while(<cond>) <sent>; |
||
do { <sent>; <sent>; ... } while(<cond>); |
for (<init>; <cond>; <inc>) <sent>;
<init>; while (<cond) { <sent>; <inc>; } |
|
|
|||||
|
Ejemplo de Construcción de Grafo de Control de Flujo de Ejecución | |
---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Complejidad Ciclomática
Formulaciones | ||
---|---|---|
|
||
Sea arc el número de conexiones y nod el número de nodos |
Sea nodCond el número de nodos condición |
Sea reg el número de regiones encerradas entre conexiones |
V(G) = arc – nod + 2 |
V(G) = nodCond + 1 |
V(G) = reg + 1 |
Sentencia | Ejemplo | Grafo | Complejidad |
---|---|---|---|
Sentencia Compuesta |
|
|
|
Sentencia alternativa simple |
|
|
|
Sentencia alternativa compuesta |
|
|
|
Sentencia iterativa indeterminada 0..N |
|
|
|
Sentencia iterativa indeterminada 1..N |
|
|
|
Sentencia iterativa determinada |
|
|
Ejemplo de Cálculo Complejidad Ciclomática | ||
---|---|---|
|
|
|
Caminos Independientes del Grafo de Control
|
||
|
|
|
Ejemplo de Cálculo Complejidad Ciclomática | ||
---|---|---|
|
|
|
Casos de Prueba
|
|
|
|
|
|
|
|
Herramientas
|
|
|
Comparativa entre Pruebas de Caja Negra y Caja Blanca
Caja Negra | Caja Blanca |
---|---|
|
|
|
|
|
|
|
|
|
|
Diseño del SUT para la Prueba
|
|
|
|
Sintesis
Bibliografía
Obra, Autor y Edición | Portada | Obra, Autor y Edición | Portada |
---|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Ponente
|
|
|