Control Flow Software Testing
Control flow testing is a type of software testing that uses program’s control flow as a model. Control flow testing is a structural testing strategy. This testing technique comes under white box testing. For the type of control flow testing, all the structure, design, code and implementation of the software should be known to the testing team.
This type of testing method is often used by developers to test their own code and own implementation as the design, code and the implementation is better known to the developers. This testing method is implemented with the intention to test the logic of the code so that the user requirements can be fulfilled. Its main application is to relate the small programs and segments of the larger programs.
Control Flow Testing Process:
Following are the steps involved into the process of control flow testing:
- Control Flow Graph Creation:
From the given source code a control flow graph is created either manually or by using the software.
- Coverage Target:
A coverage target is defined over the control flow graph that includes nodes, edges, paths, branches etc.
- Test Case Creation:
Test cases are created using control flow graphs to cover the defined coverage target.
- Test Case Execution:
After the creation of test cases over coverage target, further test cases are executed.
Analyze the result and find out whether the program is error free or has some defects.
Control Flow Graph:
Control Flow Graph is a graphical representation of control flow or computation that is done during the execution of the program. Control flow graphs are mostly used in static analysis as well as compiler applications, as they can accurately represent the flow inside of a program unit. Control flow graph was originally developed by Frances E. Allen.
Cyclomatic Complexity is the quantitative measure of the number of linearly independent paths in it. It is a software metric used to describe the complexity of a program. It is computed using the Control Flow Graph of the program.
M = E - N + 2P
Advantages of Control flow testing:
- It detects almost half of the defects that are determined during the unit testing.
- It also determines almost one-third of the defects of the whole program.
- It can be performed manually or automated as the control flow graph that is used can be made by hand or by using software also.
Disadvantages of Control flow testing:
- It is difficult to find missing paths if program and the model are done by same person.
- Unlikely to find spurious features.