Qu'est-ce que Couverture des branches (couverture des décisions) ?
Critère de couverture du test boîte blanche qui exige que la branche vraie et la branche fausse de chaque décision (comme une instruction if) d'un programme soient exécutées au moins une fois. On l'appelle aussi couverture des décisions ou C1, et il est plus fort que la couverture des instructions (C0), qui exige que chaque instruction soit exécutée au moins une fois.
Nom japonais: 分岐網羅
« Couverture des branches (couverture des décisions) » apparaît dans 2 questions d'entraînement réparties sur 1 thèmes, dont Développement logiciel et gestion de projet.
Domaine: Développement logiciel et gestion de projet
Différence avec la couverture des instructions
La couverture des instructions (C0) est atteinte dès que chaque instruction a été exécutée au moins une fois. Pour if (a) { S1; } sans else, un seul cas de test avec a vrai exécute S1 et atteint la couverture des instructions, mais la branche où a est faux, et où l'exécution passe simplement à la suite, n'est jamais exécutée. La couverture des branches (C1) exige aussi ce côté faux, ce qui permet de trouver plus facilement des erreurs comme un traitement manquant qui serait nécessaire quand a est faux. Atteindre la couverture des branches permet aussi d'atteindre la couverture des instructions.
Lien avec la couverture des conditions et les conditions composées
Quand une décision se compose de plusieurs conditions, comme « A et B », la couverture des conditions exige que chaque condition individuelle prenne la valeur vrai et la valeur faux. Les deux cas de test (A = vrai, B = faux) et (A = faux, B = vrai) atteignent la couverture des conditions, mais la décision est fausse dans les deux cas, si bien que la couverture des branches n'est pas atteinte. On utilise donc des critères comme la couverture décision/condition, qui satisfait les deux, et MC/DC (couverture des conditions et décisions modifiée), qui vérifie que chaque condition influe indépendamment sur le résultat de la décision. MC/DC est exigée au niveau de sécurité le plus élevé de DO-178C, la norme des logiciels embarqués aéronautiques, et elle est aussi fortement recommandée au niveau ASIL D de l'ISO 26262, la norme de sécurité fonctionnelle des véhicules routiers.
Questions fréquentes
Que signifient C0 et C1 ?
Ce sont des abréviations de critères de couverture : C0 est la couverture des instructions (chaque instruction exécutée au moins une fois) et C1 la couverture des branches (côté vrai et côté faux de chaque branchement exécutés au moins une fois). Atteindre C1 permet aussi d'atteindre C0.
Faut-il viser 100 % de couverture des branches ?
Pour les logiciels liés à la sécurité, des normes ou des règles d'entreprise peuvent fixer des objectifs de couverture des branches ou de MC/DC. Sinon, plutôt que d'exiger 100 %, il importe de vérifier si chaque branche non exécutée est vraiment inutile ou si des tests manquent. Le code qui ne s'exécute qu'en situation anormale doit être testé, par exemple par injection de fautes.