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 :
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 :
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].