Avec Lauterbach, la couverture de code MC/DC se fait sur la trace des processeurs, sans instrumenter le code

Lauterbach MCDC Trace 32

Après plusieurs années de travaux de R&D, la firme allemande Lauterbach, spécialiste des outils de développement et de débogage de systèmes embarqués, a dévoilé une technologie innovante dans le domaine du test de code logiciel à certifier dans l’aéronautique. ...Et ce en offrant la possibilité, pour la première fois sur le marché, de réaliser via son outil Trace32 une couverture de code de haut niveau MC/CD (Modified Condition / Decision Coverage) sans avoir à instrumenter le code C. L’analyse se fait donc directement au niveau du code source non modifié, évitant ainsi les opérations de recompilation d’un code instrumenté qui n’est donc pas exactement le même que le code final exécuté sur la cible.

Cette couverture de code MC/DC est notamment obligatoire dans le cadre du développement de logiciels embarqués dans l’avionique qui doivent satisfaire aux exigences de la norme DO-178C, au plus haut niveau de certification, soit le DAL A. Il s’agit ici de démontrer que le logiciel a été testé intégralement et de manière complète, via le test de couverture de code MC/DC obligatoire dans ce type de cycle de développement.

Enregistrer la couverture de code à partir de la trace instruction, sans nécessiter donc d'instrumenter le code objet, a toujours fait partie des fonctionnalités de l’outil Trace32, rappelle Lauterbach. En particulier pour la couverture “objet instruction” (Statement Coverage) qui démontre que chaque instruction en assembleur a été exécutée au moins une fois durant le test, ou pour la couverture “objet des branchements” (Branch Coverage) qui démontre que chaque saut conditionnel a été, ou bien n’a pas été pris en compte, au moins une fois. A ces approches traditionnelles s'ajoute donc désormais la couverture MC/DC pour laquelle il faut démontrer que chaque point d‘entrée et de sortie du programme a été exécuté au moins une fois, que chaque condition dans la décision a été utilisée pour toutes les sorties possibles au moins une fois, et que toutes les conditions dans une décision ont affecté indépendamment la décision.

Jusqu’à présent, lorsque l’analyse MC/DC de la couverture de code est générée, explique Lauterbach, la structure et la position de la décision dans le code objet doivent être connues. Or pour implémenter une mesure de couverture de code MC/DC sans instrumenter le code, il faut ajouter des informations supplémentaires sur la structure du code source, ce que ne font pas les compilateurs du commerce.

Des travaux réalisés en collaboration avec la société AdaCore sur la couverture de code MC/DC pour du code Ada ont permis de valider d’ores et déjà cette approche en utilisant une trace instruction. Pour les utilisateurs ayant besoin de valider leur couverture MC/DC sur l’implantation finale de leur cible, AdaCore offre ainsi une interface qui permet d’importer les données de trace, enregistrées par l’outil Trace32, pour l’analyse demandée.

De son côté, Lauterbach peut dès maintenant valider la couverture de code MC/DC dans l’outil Trace32, à partir de l’enregistrement d’une trace temps réel. Pour ce faire, Lauterbach propose un outil de commande en ligne (t32castf) qui analyse le code source C/C++. Il génère comme résultats toutes les informations sur la structure de décision nécessaires à la couverture de code MC/DC, et cela pour chaque fichier source. L’outil de commande en ligne est indépendant du compilateur et peut donc être inséré dans un processus de "build" classique. De ce fait, la couverture de code MC/DC dans Trace32 peut être utilisée, selon Lauterbach, indépendamment du compilateur et de l’architecture du processeur.