Header Ads

McCabe’s Cyclomatic Complexity Number

This material is highly important for those who are going for ISTQB training.
This is taken from ..Fenton and Pfleeger, Chapters 7 & 8.

If we talk about white box testing...this is a very important to understand what is the structure of the code..

The more “complex” the structure of code
◦ . . . the harder it is to understand
◦ . . . the more likely it will have a defect
◦ . . . the harder it will be to change
◦ . . . the longer it will take to produce
◦ . . . the more difficult it will be to reuse

Let us understand what is structure..
What is structure?
• control-flow — the sequence of instructions that are
executed
• data-flow — the creation and movement of data between
“components” of the code
• data organisation — the relationship of data items to each
other


let me go back to our engineering ...where we have learnt the graph theory...
There are two types of graph mainly available..
1.Directed 2.Undirected.

Directed Graphs
• a mathematical structure (with an appealing visual
representation) for representing things that are related
• consists of vertices (or nodes, or points), connected by
edges (or line segments, or arcs).
Vertices: A, B, C, D, E, F
Edges: (A,C), (A,C), (A,E), (B,C), (B,F), (C,D), (D,A), (E,F),




• Also: undirected graphs, rules restricting edges between
vertices, classification of vertices


now the question comes like what is flowgraph?
Flowgraphs
• Directed graphs (flowgraphs) can be used to model control
flow of a program
• vertex = statement, edge = (A,B) if control flows from
statement A to B
• properties of flowgraphs may provide information about
properties of the code

in the exam the question comes like find out the complexity of the below written code:

Example:

public static boolean isPrime(int n) {
boolean prime = true;
int i = 2;
while (i < n) { if (n % i == 0) { prime = false; } i++; } return prime; } let us put notation over here: as each of the line /statement is under flowgraph...i am putting A,B,C as the notation for the lines.Those will be my nodes where the controll of the pragramme will pass.

the graph looks like:




McCabe’s Cyclomatic Complexity Number (CCN)
• measures the number of linearly independent paths through
the flowgraph
• v(F) = e − n + 2, F the flowgraph of the code, n the number
of vertices, e the number of edges
• Intuition — the larger the CCN the “more complex” the code
• Various sources recommend a CCN of no more than 10-15
• Example: CCN = 8 − 7 + 2 = 3

try to understand this.and i will come back with several other examples.
Powered by Blogger.