La prueba de flujo de datos es un tipo de prueba estructural. Es un método que se utiliza para encontrar las rutas de prueba de un programa según las ubicaciones de las definiciones y los usos de las variables en el programa. No tiene nada que ver con los diagramas de flujo de datos.
Se trata de:
- Declaraciones donde las variables reciben valores,
- Declaraciones en las que se utilizan o se hace referencia a estos valores.
Para ilustrar el enfoque de las pruebas de flujo de datos, suponga que cada declaración en el programa asignó un número de declaración único. Para una instrucción número S-
DEF(S) = {X | statement S contains the definition of X} USE(S) = {X | statement S contains the use of X}
Si una sentencia es un bucle o si es una condición, entonces su conjunto DEF está vacío y el conjunto USE se basa en la condición de las sentencias.
Data Flow Testing utiliza el gráfico de flujo de control para encontrar las situaciones que pueden interrumpir el flujo del programa.
Referenciar o definir anomalías en el flujo de los datos que se detectan al momento de realizar asociaciones entre valores y variables. Estas anomalías son:
- Una variable está definida pero no se usa ni se hace referencia a ella,
- Se usa una variable pero nunca se define,
- Una variable se define dos veces antes de ser utilizada
Ventajas de las pruebas de flujo de
datos: las pruebas de flujo de datos se utilizan para encontrar los siguientes problemas :
- Para encontrar una variable que se usa pero nunca se define,
- Para encontrar una variable que está definida pero que nunca se usa,
- Para encontrar una variable que se define varias veces antes de su uso,
- Desasignar una variable antes de que se utilice.
Desventajas de las pruebas de flujo de datos
- Proceso lento y costoso
- Requiere conocimientos de lenguajes de programación
Ejemplo:
1. read x, y; 2. if(x>y) 3. a = x+1 else 4. a = y-1 5. print a;
Gráfico de flujo de control del ejemplo anterior:
Definir/uso de variables del ejemplo anterior:
Variable | Definido en el Node | Usado en el Node |
---|---|---|
X | 1 | 2, 3 |
y | 1 | 2, 4 |
a | 3, 4 | 5 |