Print Page | Close Window

Complexity Testing - Cyclomatic Complexity

Printed From: One Stop Testing
Category: Types Of Software Testing @ OneStopTesting
Forum Name: Functional Testing @ OneStopTesting
Forum Discription: Discuss All that is need to be known about Functional Software Testing and its Tools.
URL: http://forum.onestoptesting.com/forum_posts.asp?TID=6476
Printed Date: 13May2024 at 7:11pm


Topic: Complexity Testing - Cyclomatic Complexity
Posted By: yogindernath
Subject: Complexity Testing - Cyclomatic Complexity
Date Posted: 25May2009 at 9:10am
Two questions coming to mind while doing the code complexity testing are:

Question – 1: Which of the paths are independent?

If two paths are not independent, then we may be able to minimize the number of tests.

Question – 2: Is there any limit on the number of tests that must be run to ensure that all the statements have been executed at least once?

The answer to the above questions is a metric that quantifies the complexity of a program and is known as Cyclomatic Complexity.

It is also known as structural complexity because it gives the internal view of the code. It is a number, which provides us with an upper bound for the number of tests that must be conducted to ensure that all statements have been executed at least once.

McCabe IO covers about 146 different counts and measures. These metrices are grouped according to six main "collections" each of which provides a different level of granularity and information about the code being analyzed.

The collections of various metrices are as under

1) McCabe Metrics: are based on Cyclomatic Complexity, V(G).

2) Execution Coverage metrics: are based on any of Branch, Path or Boolean coverage.

3) Code Grammar metrics: are based around line counts and code structure counts such as Nesting.

4) 00 metrics: are based on the work of Chidamber and Kemerer.

5) Derived Metrics: are based on abstract concepts such as understability, maintainability, comprehension and testability.

6) Custom Metrics: are imported from third party software / systems, e.g. defects count.

McCabe IO provides for about 100 individual metrics at the Method, Procedure, Function, Control and Section / paragraph level. 40 additional metrices are available at the class / file and program level.

Categories of Metrics: There are three categories of metrics

1) McCabe Metrics.

2) 00 Metrics.

3) Grammar Metrics.

When collecting metrics, we rely upon subordinates who need to 'buy into' the metrics program. Hence, it is important to only collect what you intend to use. We should remember, 'The Hawthorne Effect' which states that when you collect metrics on people, the people being measured will change their behavior. Either of these practices will destroy the efficiency of any metrics program.

Let us discuss the above mentioned three metrics categories

1) McCabe Metrics:

a) Cyclomatic Complexity, V(G) : It is the measure of the amount of logic in a code module of 3rd and 4th generation languages. If V(G) is excessively high then it leads to impenetrable code i.e., a code which is at higher risk due to difficulty in testing. The threshold value is 10. When V(G) > 10; then the likelihood of code being unreliable is much higher. It must be remembered that a high V(G) shows a decreased quality in the code resulting in higher defect that become costly to fix.


Complete Article is available at:
http://www.softwaretestinggenius.com/hotarticles.php?mode=details&qry=391 - http://www.softwaretestinggenius.com/hotarticles.php?mode=details&qry=391



-------------
http://www.softwaretestinggenius.com - http://www.softwaretestinggenius.com
A Storehouse of Complete Knowledge on Software Testing & QA under one Roof



Print Page | Close Window