Couverture de test → Couverture de condition

[English][Deutsch]

Exemple de couverture des conditions (Condition coverage)


Exemple simple

Considérons l'extrait de code suivant :

if ( (A || B) && C )
{
/* instructions */
}
else
{
/* instructions */
}

où A, B et C représentent des expressions booléennes atomiques (i.e. non redivisibles en d'autres sous-expressions booléennes).

Pour que les critères de la couverture des conditions soient vérifiés sur cet exemple, il faut que A, B et C aient été évalués au moins une fois "true" et une fois "false" lors des tests.

Ainsi, dans notre exemple, 3 tests aboutissants aux évaluations respectives de A, B et C suivantes suffiraient à valider la couverture des conditions :

  1. A = true  / B = not eval / C = false
  2. A = false / B = true       / C = true
  3. A = false / B = false      / C = not eval


Exemple plus conséquent

Remplaçons la condition ( (A || B) && C )
par : ( ((u == 0) || (x>5)) && ((y<6) || (z == 0)) )

Une couverture de test intégrale consisterait à construire la table de vérité suivante et tester chaque cas :

Cas de test n° A : (u == 0) B : (x>5) C : (y<6) D : (z == 0) ( (A || B) && (C || D) )
1 F F F F F
2 F F F V F
3 F F V _ F
4 F V F F F
5 F V F V V
6 F V V _ V
7 V _ F F F
8 V _ F V V
9 V _ V _ V

En revanche, dans le cadre d'une couverture des conditions, il nous suffirait (par exemple) de tester uniquement les trois combinaisons ci-dessus surlignées en jaune.

Revoir les différents niveaux de couverture de test

Memento :

Condition (ou Opérande booléen ou Sous-décision) : une formule logique insécable (atomique). On parle souvent de variable booléenne, elle est représentée par une lettre majuscule (A, B, C, etc.), peut avoir pour valeur "true" ou "false", mais ne peut pas être redivisée en d´autres "sous-conditions" plus simples.

Décision : une formule logique pouvant être composée de plusieurs conditions séparées par des connecteurs logiques tels "ou", "et", "ou exclusif", etc.

L´outil d´analyse de couverture du code Testwell CTC++ englobe toutes les catégories de couvertures de test, y compris les niveaux les plus élevés : la couverture des conditions / décisions modifiées (MC/DC) et surtout celle des conditions multiples (MCC). Il peut ainsi être utilisé pour obtenir des certifications comme par exemple DO-178B.


last updated: 28.07.2010

© 2010 Verifysoft Technology GmbH
Author: Christophe Sourisse, Verifysoft Technology GmbH
CTA++, CTC++, CMT++ and CMTJava are products of Testwell Oy, Tampere (Finland)
all other trademarks of this site are the property of their respective owners.