Showing posts with label code testability. Show all posts
Showing posts with label code testability. Show all posts

Thursday, April 11, 2019

Cyclomatic Complexity Calculation - with example

Source: Softwaretestingclass.com, Wikipedia, Guru99.com
Keywords: Cyclomatic complexity, Graph Theory

Cyclomatic complexity of a source code is the number of linearly independent paths within it.

Cyclomatic complexity is a way to calculate the complexity of a code. It quantifies the complexity for future source code modifications.

If the source code does not have any control flow statements (For e.g. If, Else, While, Do, For loops in C) then its cyclomatic complexity is 1. A source code with a single IF condition will have two paths through the code so its cyclomatic complexity will be 2. Likewise a code with one IF with two conditions or two nested IF conditions will have a code complexity of 3.

Formula for cyclomatic complexity

M = E - N + 2 * P

E = Number of edges in control flow graph
N = Number of nodes in control flow graph
P = Number of connected components

Complexity Score and Interpretation
=====================


Maintenance POV
==========

A higher complexity score means lower maintainability.

QC POV
=====

From a QC perspective, a higher complexity score means, it requires indepth testing.

Node & Edge
=======


Connected component
=============

A graph with 3 connected component.



Example
=====


Nodes = 8
Edges = 9
CC = E - N + 2 * P
      = 9 - 8 + 2 * 1 (connected component) = 2





If we already have automation, what's the need for Agents?

“Automation” and “agent” sound similar — but they solve very different classes of problems. Automation = Fixed Instruction → Fixed Outcome ...