La modified condition / decision coverage (MC/DC - couverture condition / décision modifiée) est utilisée par la norme DO-178B afin d'assurer qu'un logiciel aéronautique de DAL A (niveau logiciel le plus élevé de cette norme : conséquences catastrophiques en cas de dysfonctionnement) est testé de manière adéquate.

Pour définir cette méthode de test nous avons besoin de quelques définitions :

Condition
Une condition est une expression booléenne atomique (ne contenant pas d'opérateur booléen).
Décision
Une décision est une expression booléenne composée de Conditions et éventuellement d'opérateurs booléens. Une décision sans opérateur booléen est aussi une condition.

Par exemple la décision (A or B) and (A or C) comporte 4 conditions.

Cette méthode de test impose les règles suivantes :

  1. Chaque décision teste toutes les sorties possibles ;
  2. Chaque condition dans une décision prend toutes les sorties possibles ;
  3. Chaque point d'entrée et de sortie est passé ;
  4. Il est démontré que chaque condition dans une décision affecte indépendamment la sortie de la décision.

En pratique, on démontre ce point 4 en trouvant des cas de test qui font changer le résultat en changeant une seule condition à la fois.

Attention, les décisions ne sont pas uniquement celles qui apparaissent dans les branchement conditionnels mais aussi celles qui apparaissent dans les expressions booléennes en général[1].

Par exemple, le programme :

D:=   (A or B) and (A or C)

if (D) then …

doit être testé comme :

if ((A or B) and (A or C)) then

Pour l'exemple précédent, la couverture échouera à cause de la répétition de la condition A. Car lorsqu'une condition apparaît plusieurs fois dans une décision : (A or B) and (A or C), il n'est pas possible de modifier le résultat de la première instance de A sans modifier la deuxième, car il s'agit de la même condition.

Dans un cas d'échec, cela signifie que la condition doit être reformulée. Pour l'exemple précédent, l'expression booléenne serait à simplifier sous la forme suivante qui évite d'évaluer plusieurs fois la même condition :

(A or (B and C))

Il existe trois variantes de MC/DC[2].

Références modifier

Sur les autres projets Wikimedia :