Open In App

Control Flow Software Testing

Improve
Improve
Improve
Like Article
Like
Save Article
Save
Share
Report issue
Report

Control flow testing is a type of software testing that uses a 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:

controll-flow-testing-process
Control Flow Testing Process

  • 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.
  • Analysis: 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 a program unit. Control flow graph was originally developed by Frances E. Allen.

Cyclomatic Complexity:

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 

Objectives of Control Flow Testing:

  • Path Coverage: During testing, it makes sure that every path through the program is run at least once.
  • Branch Coverage: This guarantees that, during testing, every decision point (branch) in the program is evaluated as true or false at least once.
  • Decision Coverage: This guarantees that all potential outcomes are covered by executing each decision point in the program at least once.
  • Loop testing: It evaluates how the program performs in various loop scenarios, such as numerous, zero and single iterations.
  • Testing Error-Handling Paths: It tests the program’s error and exception handling pathways.
  • Multiple condition testing: It involves testing both simple and complicated condition combinations inside decision points.
  • Boundary Value Examination: It evaluates how the software behaves when input ranges are pushed to their limits.
  • Integration testing: It examines how various software modules or components interact with one another.
  • Cyclomatic Complexity Reduction: It determines and reduces the program’s cyclomatic complexity.

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.

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