Open In App

Data Flow Testing

Improve
Improve
Like Article
Like
Save
Share
Report

What is Data Flow Testing:

Is a type of structural testing. It is a method that is used to find the test paths of a program according to the locations of definitions and uses of variables in the program. It has nothing to do with data flow diagrams. Furthermore, it is concerned with:

  • Statements where variables receive values,
  • Statements where these values are used or referenced.

To illustrate the approach of data flow testing, assume that each statement in the program assigned a unique statement number. For a statement number S-

DEF(S) = {X | statement S contains the definition of X}
USE(S) = {X | statement S contains the use of X} 

If a statement is a loop or if condition then its DEF set is empty and USE set is based on the condition of statement s. Data Flow Testing uses the control flow graph to find the situations that can interrupt the flow of the program. Reference or define anomalies in the flow of the data are detected at the time of associations between values and variables. These anomalies are:

  • A variable is defined but not used or referenced,
  • A variable is used but never defined,
  • A variable is defined twice before it is used

Types of Data Flow Testing:

  1. Testing for All-Du-Paths: It Focuses on “All Definition-Use Paths. All-Du-Paths is an acronym for “All Definition-Use Paths.” Using this technique, every possible path from a variable’s definition to every usage point is tested.
  2. All-Du-Path Predicate Node Testing: This technique focuses on predicate nodes, or decision points, in the control flow graph.
  3. All-Uses Testing: This type of testing checks every place a variable is used in the application.
  4. All-Defs Testing: This type of testing examines every place a variable is specified within the application’s code.
  5. Testing for All-P-Uses: All-P-Uses stands for “All Possible Uses.” Using this method, every potential use of a variable is tested.
  6. All-C-Uses Test: It stands for “All Computation Uses.” Testing every possible path where a variable is used in calculations or computations is the main goal of this technique.
  7. Testing for All-I-Uses: All-I-Uses stands for “All Input Uses.” With this method, every path that uses a variable obtained from outside inputs is tested.
  8. Testing for All-O-Uses: It stands for “All Output Uses.” Using this method, every path where a variable has been used to produce output must be tested.
  9. Testing of Definition-Use Pairs: It concentrates on particular pairs of definitions and uses for variables.
  10. Testing of Use-Definition Paths: This type of testing examines the routes that lead from a variable’s point of use to its definition.

Advantages of Data Flow Testing:

Data Flow Testing is used to find the following issues-

  • To find a variable that is used but never defined,
  • To find a variable that is defined but never used,
  • To find a variable that is defined multiple times before it is use,
  • Deallocating a variable before it is used.

Disadvantages of Data Flow Testing

  • Time consuming and costly process
  • Requires knowledge of programming languages

Example:

1. read x, y;
2. if(x>y)
3. a = x+1
else
4. a = y-1
5. print a; 

Control flow graph of above example:

Define/use of variables of above example:

Variable Defined at node Used at node
x 1 2, 3
y 1 2, 4
a 3, 4 5

Last Updated : 12 Dec, 2023
Like Article
Save Article
Previous
Next
Share your thoughts in the comments
Similar Reads