Webinaire en vedette : Tests d'API améliorés par l'IA : une approche de test sans code | Voir le séminaire

Conformité des logiciels ISO 26262 dans l'industrie automobile

Couverture du code structurel

Collecte et analyse de la couverture du code Les métriques constituent un aspect important du développement de logiciels automobiles critiques pour la sécurité. Mesures de couverture du code la réalisation des cas de test et des tests exécutés. Elle fournit la preuve que la validation est terminée, au moins comme spécifié par vos parties prenantes et vos exigences de conformité.

Il identifie également le code mort. Il s'agit d'un code qui ne peut logiquement jamais être atteint. Il démontre l'existence d'un comportement inattendu. Le code qui n'est couvert par aucun test constitue un risque, car son comportement et ses fonctionnalités sont inconnus.

La quantité et l'étendue de la couverture du code dépendent du niveau d'intégrité de sécurité et des objectifs de pourcentage de couverture. Pour les applications critiques pour la sécurité, une couverture de code de 100 % est la norme. Plus le niveau d'intégrité est élevé, plus la rigueur est élevée. Inévitablement, le nombre et la complexité des cas de test augmenteront.

Le tableau suivant présente les recommandations pour les types de couverture de code à chaque ASIL ISO 26262.

ISO 26262 Partie 6, 9.4.4:2018 - Mesure de la couverture structurale
ISO 26262 Partie 6, 9.4.4:2018
Cercle bleu avec 1a écrit au centre en texte blanc.

Couverture de l'état

La couverture des instructions nécessite que chaque instruction de programme soit exécutée au moins une fois et est recommandée aux niveaux ASIL inférieurs. La couverture des branches et des MC/DC englobe la couverture des instructions.

Cercle bleu avec 1b écrit au centre en texte blanc.

Couverture de la succursale

La couverture des branches garantit que chaque chemin de décision d'une branche (constructions if-then-else) est exécuté.

Cercle bleu avec 1c écrit au centre en texte blanc.

Couverture de condition/décision modifiée (MC/DC)

La couverture conditionnelle/décision modifiée (MC/DC) nécessite la couverture de code la plus complète pour garantir que les cas de test exécutent chaque branche de décision et toutes les combinaisons possibles d'entrées qui affectent le résultat de la logique de décision. Pour une logique complexe, le nombre de cas de test peut exploser, c'est pourquoi les restrictions de condition modifiée sont utilisées pour limiter les cas de test à ceux qui entraînent une modification des expressions logiques autonomes. Voir ce tutoriel de la NASA.

Avancé outils d'automatisation des tests unitaires tels que Parasoft C/++test fournissent toutes ces mesures de couverture de code. Automatisation des tests C/C++ Cette collecte de données sur les tests de l'hôte et de la cible accumule l'historique de la couverture des tests au fil du temps. Cet historique de couverture du code peut couvrir les tests unitaires, d'intégration et système pour garantir que la couverture est complète et traçable à tous les niveaux de test.

Augmentation de la couverture du code grâce à la création automatisée de cas de test unitaires

La création de tests unitaires productifs a toujours été un défi. La conformité aux normes de sécurité fonctionnelle exige des logiciels de haute qualité, ce qui entraîne un besoin de suites de tests qui affectent et produisent des statistiques de couverture de code élevées. Les équipes ont besoin de cas de tests unitaires qui les aident à atteindre une couverture de code de 100 %.

C'est plus facile à dire qu'à faire. L'analyse des branches du code et la recherche des raisons pour lesquelles certaines sections de code ne sont pas couvertes continuent de voler des cycles aux équipes de développement.

Conseiller en couverture Parasoft

Parasoft C/C++test résout les lacunes de couverture dans les suites de tests. Parasoft a découvert comment utiliser l'analyse de code statique avancée (analyse de flux de données et de contrôle) pour trouver les valeurs des paramètres d'entrée nécessaires à l'exécution de lignes spécifiques de code non couvert.

Dans un code complexe, il y a toujours des instructions de code insaisissables dont il est extrêmement difficile d'obtenir une couverture. Il est probable qu'il y ait plusieurs valeurs d'entrée avec diverses permutations et chemins possibles qui rendent le déchiffrage compliqué et long. Mais une seule combinaison peut vous offrir la couverture dont vous avez besoin. Parasoft facilite l'obtention d'une couverture de ces lignes de code difficiles à atteindre.

Sélectionnez la ligne de code que vous souhaitez couvrir et le conseiller de couverture vous indiquera les valeurs d'entrée, les variables globales et les appels externes dont vous avez besoin pour stimuler le code et obtenir une couverture.

Appeler Coverage Advisor en cliquant avec le bouton droit de la souris
Appeler Coverage Advisor en cliquant avec le bouton droit sur la ligne de code.

Solutions de couverture de code fournies par un conseiller en couverture
Deux solutions de cas de test fournies par Coverage Advisor.

La figure de droite montre un rapport d'analyse fournissant à l'utilisateur une solution. Le champ Pré-conditions exprime :

  • La plage et les valeurs d'entrée pour mainSensorSignal et coSensorSignal
  • Les résultats attendus des appels externes

Lors de la création du cas de test unitaire avec ces valeurs de paramètres définies et ces stubs pour les appels externes, l'utilisateur obtiendra une couverture de la ligne sélectionnée, ainsi que les lignes supplémentaires exprimées dans le champ Couverture attendue.

Bannière bleu foncé avec l'image d'un homme parlant à une femme tenant une tablette à la main dans une salle de serveurs.
Image d'un homme et d'une femme avec une tablette à la main en train de discuter dans une salle de serveurs.

Améliorez vos tests logiciels avec les solutions Parasoft.