logo

Exemple de couverture des conditions (Condition coverage)

Simple exemple

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 :

      A = true  / B = not eval / C = false
      A = false / B = true     / C = true
      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) or (z == 0)) )

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

Cas de test 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 T F
3 F F T _ F
4 F T F F F
5 F T F T T
6 F T T _ T
7 T _ F F F
8 T _ F T T
9 T _ T _ T

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.;.

Decision : 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 codeTestwell 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 DO-178B of the Federal Aviation Administration (FAA).