Estados Posibles:
Creación, Uso y Destrucción.
Permite:
Pruebas de caja blanca
Elegir la suficiente cantidad de rutas para asegurar que:
Todas las variables son inicializadas antes de usarse.
Todas las variables van a ser usadas al menos una vez.
Se abarquen las rutas a través de las cuales las variables son definidas y usadas.
Patrones de uso de datos que pueden llevar a un error.
Normalmente son analizados en pares.
Patrón: Secuencia de estados para una variable.
U - Indefinida
D - Definida pero no referenciada
R - Definida y referenciada
d - definida
u - usada
k - destruida
~ - no existe la variable (r)
Variable definida y después destruida
Variable no existe y después se utiliza
La secuencia de definiciones y c-uses construyen los vértices del grafo.
Un p-use es asociado a una o varias aristas.
El nodo de entrada tiene una definición por cada parámetro y por cada variable no local usada en el programa.
El nodo de salida tiene una indefinición de cada variable local.
Todos los nodos son distintos, excepto el primero y el último.
Todos los nodos son distintos.
Inicia en el nodo de entrada y termina en el nodo de salida.
Se considera du-path si:
Si dentro de la ruta la variable en cuestión no se redefine.
Ejemplo de definición de variable
i = x;
Ejemplo de uso de variable (computation use)
x = 2*y;
Ejemplo de uso de variable (predicate use)
if (y > 100) { ... }
public static double ReturnAverage(int value[],
int AS, int MIN, int MAX){
int i, ti, tv, sum;
double av;
i = 0; ti = 0; tv = 0;
sum = 0;
while (ti < AS &&
value[i] != -999) {
ti++;
if (value[i] >= MIN &&
value[i] <= MAX){
tv++;
sum = sum + value[i];
}
i++;
}
if (tv > 0)
av = (double)sum/tv;
else
av = (double) -999;
return (av);
}
Función para calcular el promedio de un vector de números, cuyo tamaño es AS y con valores entre MIN y MAX
Dentro de los criterios posibles se usará el criterio All-du-paths para la variable tv, por lo que las rutas elegidas para hacer las pruebas son:
[1] Naik, K., & Tripathy, P. (2008). Software Testing and Quality Assurance: Theory and Practice. [Presentación]. University of Waterloo. Consultado el día 15 de septiembre de 2014, desde https://ece.uwaterloo.ca/~snaik/MYBOOK1/Ch5-DataFlowTesting.ppt
[2] Arunkumar Khannur, Software Testing - Techniques and Applications, Published by Pearson Publications, 2011 (ISBN:978-81-317-5836-6; Pages:341 + xxii)
[3] Alexandra Martínez Porras. Pruebas de Flujo de Datos. [Diapositivas curso de Maestría, Escuela de Ciencias de la computación e Informática, UCR].
input(A, B)
if(B > 0)
A = A + 7
if(A > 10)
B = A + B
output(A, B)
input(A, B)
if(B > 0)
A = A + 7
if(A > 10)
B = A + B
output(A, B)
input(A, B)
if(B > 0)
A = A + 7
if(A > 10)
B = A + B
output(A, B)
input(A, B)
if(B > 0)
A = A + 7
if(A > 10)
B = A + B
output(A, B)