Couverture, traçabilité et preuves de vérification
Les autorités de certification examinent deux éléments : les données de couverture et les enregistrements de traçabilité. Les données de couverture indiquent quel code a été testé et jusqu’à quelle profondeur structurelle. Les enregistrements de traçabilité relient chaque résultat de test à l’exigence qu’il était censé vérifier. Ensemble, ils constituent la base de preuves exigée par les normes ISO 26262, DO-178C, CEI 61508 et CEI 62304.
Traçabilité des exigences
Les tests basés sur les exigences sont obligatoires dans le cadre de toutes les principales normes de sécurité fonctionnelle. Chaque cas de test doit être traçable jusqu’à l’exigence spécifique qu’il est censé vérifier. Cette traçabilité bidirectionnelle entre les exigences et les résultats des tests apporte la preuve que toutes les exigences ont été testées et qu’aucun test n’est sans objet.
La passerelle « Requirements Gateway » de VectorCAST se connecte à des bases de données d’exigences externes, importe les exigences dans l’environnement de test et permet de relier les cas de test à celles-ci. Une fois les tests exécutés, les résultats et les indicateurs de couverture sont réexportés vers l’outil de gestion des exigences. Les exigences pour lesquelles la couverture de test est insuffisante sont immédiatement identifiables, tout comme les cas de test qui ne sont liés à aucune exigence.
Couverture structurelle
Les indicateurs de couverture structurelle mesurent dans quelle mesure l'exécution des tests permet d'explorer l'ensemble du code. Les normes de sécurité prescrivent des niveaux de couverture minimaux en fonction du degré de criticité.
- Couverture des instructions : chaque ligne d'exécution a été exécutée au moins une fois
- Couverture des branchements : chaque point de décision a pris chacune des issues possibles
- Couverture MC/DC (couverture des conditions et des décisions modifiées) : chaque condition booléenne d’une décision influence indépendamment son résultat. Requis pour les logiciels conformes à la norme DO-178C niveau A et à la norme ISO 26262 ASIL D
- Couverture des fonctions et couverture des appels de fonction : utilisées par plusieurs normes comme mesures complémentaires
VectorCAST mesure tous ces types de couverture. Les modes « Industry » sélectionnent automatiquement les critères de couverture adaptés à la norme et au niveau d’intégrité de sécurité visés, ce qui évite d’avoir à configurer manuellement les critères de couverture pour chaque norme et chaque niveau d’intégrité.
MC/DC : le critère de couverture offrant la plus grande intégrité
Le MC/DC cible les défauts logiques que la couverture des instructions et des branches ne parvient pas à détecter. Il exige que, pour chaque condition booléenne d’une décision, il existe des tests démontrant que cette condition modifie de manière indépendante le résultat de la décision, tandis que toutes les autres conditions restent constantes.
La mise en œuvre et la documentation manuelles de la méthode MC/DC à grande échelle sont sources d’erreurs et chronophages. VectorCAST automatise les aspects les plus exigeants : l’instrumentation automatique pour le suivi des paires de conditions, la visualisation de la matrice d’équivalence indiquant précisément ce qui est couvert et ce qui ne l’est pas, la génération automatisée de tests ciblant les paires de conditions non couvertes, ainsi que la production de rapports prêts pour la certification, conformes aux normes DO-178C, ISO 26262 et CEI 62304.
Couverture par analyse
Dans le cadre du développement de systèmes critiques pour la sécurité, certaines sections de code peuvent ne pas atteindre une couverture complète par le seul biais des tests. Le codage défensif pour les conditions hautement improbables, la gestion des erreurs liées aux défaillances matérielles et le code protégeant contre les comportements indéfinis spécifiques au compilateur peuvent tous entrer dans cette catégorie.
Toute lacune de couverture doit être justifiée et documentée. La fonctionnalité « Covered-by-Analysis » (CBA) de VectorCAST permet aux ingénieurs de désigner des sections de code spécifiques comme étant couvertes par l’analyse, de documenter la justification directement à côté des données de couverture et de maintenir cette justification à mesure que le code évolue. Les rapports de couverture présentent une vue unifiée de la couverture mesurée et de la couverture par analyse.
Couverture du suivi à l'échelle du projet
Les résultats de test individuels et les rapports de couverture apportent des réponses concernant une version spécifique. Squore apporte des réponses concernant le projet dans son ensemble : quelles exigences ne sont pas encore couvertes, où la couverture a baissé depuis la dernière version, et si le projet est en bonne voie pour respecter ses obligations de couverture avant l'intégration.
Squore agrège les données de couverture provenant de plusieurs sources, suit les tendances au fil du temps et applique des contrôles de qualité qui empêchent le code non conforme de progresser dans le pipeline. Les obligations de couverture restent visibles pour l’ensemble de l’équipe tout au long du projet.