Decision Coverage is also known as Branch Coverage.
Whenever there are two or more possible exits from the statement like an IF statement, a DO-WHILE or a CASE statement it is known as decision because in all these statements there are two outcomes, either TRUE or FALSE.
With the loop control statement like DO-WHILE or IF statement the outcome is either TRUE or FALSE and decision coverage ensures that each outcome(i.e TRUE and FALSE) of control statement has been executed at least once.
Alternatively you can say that control statement IF has been evaluated both to TRUE and FALSE.
The formula to calculate decision coverage is:
Decision Coverage=(Number of decision outcomes executed/Total number of decision outcomes)*100%
Research in the industries have shown that even if through functional testing has been done it only achieves 40% to 60% decision coverage.
Decision coverage is stronger that statement coverage and it requires more test cases to achieve 100% decision coverage.
Let us take one example to explain decision coverage:
IF “X > Y”
PRINT X is greater that Y
To get 100% statement coverage only one test case is sufficient for this pseudo-code.
TEST CASE 1: X=10 Y=5
However this test case won’t give you 100% decision coverage as the FALSE condition of the IF statement is not exercised.
In order to achieve 100% decision coverage we need to exercise the FALSE condition of the IF statement which will be covered when X is less than Y.
So the final TEST SET for 100% decision coverage will be:
TEST CASE 1: X=10, Y=5
TEST CASE 2: X=2, Y=10
Note: 100% decision coverage guarantees 100% statement coverage but 100% statement coverage does not guarantee 100% decision coverage.