Webinaire en vedette : Tests d'API améliorés par l'IA : une approche de test sans code | Voir le séminaire
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.
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.
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é.
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.
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.
Améliorez vos tests logiciels avec les solutions Parasoft.
Explorez les chapitres
- Introduction "
- 1. Aperçu »
- 2. Analyse statique »
- 3. MISRA »
- 4. AUTOSAR C++ 14 »
- 5. SEI/CERT »
- 6. CWE »
- 7. Tests unitaires »
- 8. Tests de régression »
- 9. Tests d'intégration de logiciels »
- 10. Test du système logiciel »
- 11. Couverture du code structurel »
- 12. Matrice de traçabilité des exigences »
- 13. Qualification des outils »
- 14. Rapports et analyses »