Logo pour GIGAOM 365x70

Découvrez quelle solution de test API est arrivée en tête dans le rapport GigaOm Radar. Obtenez votre rapport d'analyse gratuit >>

Conformité logicielle DO-178C pour l'aérospatiale et la défense

Tests d'intégration de logiciels

Les tests d'intégration suivent les tests unitaires dans le but de valider la conception architecturale. Ils garantissent que les capacités fonctionnelles de niveau supérieur des composants logiciels, y compris les sous-systèmes et non les unités, se comportent et fonctionnent comme prévu. Les tests d'intégration de logiciels peuvent être effectués de bas en haut et de haut en bas avec une combinaison d'approches dans de nombreuses entreprises de logiciels.

Les tests d'intégration constituent un aspect essentiel du processus de vérification des logiciels. DO-178CLes exigences explicites relatives aux tests d’intégration se trouvent principalement dans la section 5.4 Processus d’intégration et la section 6.4 Tests logiciels.

La section 6.4.3 Méthodes de test basées sur les exigences de la norme DO-178C exige des tests basés sur les exigences matérielles et logicielles, qui incluent des tests d'intégration. La section 6.4.3 b est plus spécifique et décrit les tests d'intégration basés sur les exigences comme une méthode qui se concentre sur les « interrelations entre les exigences logicielles » et sur la « mise en œuvre des exigences par l'architecture logicielle ».

La norme DO-178C répertorie les erreurs typiques suivantes révélées par les tests d'intégration.

  • Gestion incorrecte des interruptions
  • Non-respect des délais d'exécution
  • Réponse logicielle incorrecte aux transitoires matériels ou aux pannes matérielles, par exemple, séquencement de démarrage, charges d'entrée transitoires et transitoires de puissance d'entrée
  • Problèmes de conflit de bus de données et autres ressources, par exemple, mappage de mémoire
  • Incapacité du test intégré à détecter les défaillances
  • Erreurs dans les interfaces matérielles/logicielles
  • Comportement incorrect des boucles de contrôle
  • Contrôle incorrect du matériel de gestion de la mémoire ou d'autres périphériques matériels sous contrôle logiciel
  • Débordement de pile
  • Fonctionnement incorrect du ou des mécanismes utilisés pour confirmer l'exactitude et la compatibilité des logiciels chargeables sur le terrain
  • Violations du partitionnement logiciel
  • Initialisation incorrecte des variables et des constantes
  • Erreurs de passage de paramètres
  • Corruption des données, en particulier des données mondiales
  • Résolution numérique de bout en bout inadéquate
  • Séquencement incorrect des événements et des opérations

Intégration ascendante

Cette approche commence par prendre un cas de test unitaire et supprimer les stubs et/ou les mocks pour incorporer des unités logicielles supplémentaires afin de construire des fonctionnalités de niveau supérieur qui peuvent être testées. Les fonctionnalités correspondent ou correspondent à une exigence de haut niveau. Les cas de test d'intégration sont utilisés pour vérifier et valider les exigences de haut niveau.

Intégration descendante

Dans ce type de test, les composants ou modules logiciels de plus haut niveau sont testés en premier. Progressivement, les tests des modules de niveau inférieur suivent ou les capacités fonctionnelles correspondent aux exigences de haut niveau. Cette approche suppose que les sous-systèmes importants sont suffisamment complets pour être testés dans leur ensemble.

Le modèle en V est un bon moyen d'illustrer la relation entre les étapes de développement et les étapes de validation. À chaque étape de test, des parties plus complètes du logiciel sont validées par rapport à la phase qui les définit.

Pour certains, le modèle en V pourrait impliquer une méthode de développement en cascade. Cependant, ce n'est pas le cas. La norme DO-178C et les versions précédentes de la norme ne spécifient pas de méthodologie de développement. Le modèle en V présente un ensemble obligatoire de phases de développement. Les organisations déterminent comment aborder ces phases. Les équipes peuvent adopter une méthodologie de développement en cascade, agile, en spirale ou toute autre méthodologie, et se conformer à la norme.

Diagramme montrant le processus de développement du modèle en V et la relation entre chaque phase, ainsi que la vérification et la validation déduites à chaque étape des tests.
Le processus de développement du modèle en V montrant la relation entre chaque phase et la vérification et la validation déduites à chaque étape des tests.

Bien que l'acte d'exécuter des tests et de collecter leurs résultats soit considéré comme une validation logicielle, il est soutenu par un processus de vérification parallèle qui implique les activités suivantes pour garantir que les équipes construisent correctement le processus et le produit.

  • Avis
  • soluces
  • Analyse de code
  • Traçabilité
  • Le test
  • Couverture du code et plus

Le rôle clé de la vérification est de garantir que la construction des artefacts livrés de l'étape précédente à la spécification est conforme aux directives de l'entreprise et de l'industrie.

Intégration et tests système dans le cadre d'un processus de test continu

L'automatisation des tests est essentielle pour les tests continus. De nombreuses organisations commencent par automatiser simplement l'intégration manuelle et les tests système (de haut en bas) ou les tests unitaires (de bas en haut).

Pour permettre des tests continus, les organisations doivent se concentrer sur la création d'une pratique d'automatisation des tests évolutive qui s'appuie sur une base de tests unitaires isolés et plus rapides à exécuter. Une fois les tests unitaires entièrement automatisés, l'étape suivante est le test d'intégration et éventuellement le test système.

Les tests continus exploitent l'automatisation et les données issues des tests pour fournir une évaluation objective et en temps réel des risques associés à un système en cours de développement. Appliqués de manière uniforme, ils permettent aux responsables commerciaux et techniques de prendre de meilleures décisions en matière de compromis entre le périmètre, le délai et la qualité de la version.

Les tests continus sont une méthodologie de test puissante qui garantit une qualité continue du code tout au long du SDLC. Ils garantissent la conformité dans l'analyse statique du code et identifient toujours les défauts de sécurité lors de chaque action de validation du développeur en intégrant également les tests unitaires, d'intégration et système dans la boucle.

Le diagramme ci-dessous illustre comment les différentes phases de test font partie d’un processus continu qui repose sur une boucle de rétroaction des résultats de test et de l’analyse.

Un diagramme montrant le cycle de test continu
Un cycle de tests continu

Analyse et rapports à l'appui des tests d'intégration et de système

Les outils d'automatisation des tests de Parasoft prennent en charge la validation (activités de test d'exécution réelles) en termes d'automatisation des tests et de tests continus. Ces outils prennent également en charge la vérification de ces activités, ce qui signifie qu'ils prennent en charge les exigences des processus et des normes. Les aspects clés du développement de logiciels critiques pour la sécurité sont la traçabilité des exigences et la couverture du code.

La norme DO-178C considère la traçabilité comme une activité clé et un élément du processus de développement. Les sections 5.4 Processus de développement logiciel et 6.4 Tests logiciels exigent une traçabilité bidirectionnelle entre les exigences de haut et de bas niveau et la mise en œuvre, la vérification et la validation des actifs, qui comprennent :

Icône à l'intérieur d'un cercle bleu montrant des crochets blancs ouvrants et fermants avec une barre oblique entre les deux pour représenter le code.

Répertoire de

Icône d'un presse-papiers avec une coche au centre

Documents requis

Icône à l'intérieur d'un cercle bleu montrant quatre lignes blanches verticales de différentes hauteurs représentant un graphique.

Résultats de test

Icône d'une ampoule

Plans de développement et plus

L'analyse des exigences exige que « toutes les exigences logicielles soient identifiées de manière à pouvoir démontrer la traçabilité entre l'exigence et les tests du système logiciel ». La fourniture d'une matrice de traçabilité des exigences permet de satisfaire à cette exigence.

Photo d'un MQ-9B SeaGuardian volant au-dessus des nuages.

Traçabilité à double sens

Les exigences des logiciels critiques pour la sécurité sont le principal moteur de la conception et du développement des produits. Ces exigences comprennent la sécurité fonctionnelle, les exigences d'application et les exigences non fonctionnelles qui définissent pleinement le produit. Cette dépendance à l'égard des exigences documentées est une bénédiction mitigée, car les exigences médiocres sont l'une des causes critiques des incidents de sécurité dans les logiciels. En d'autres termes, ce n'est pas l'implémentation qui est en cause, mais les exigences médiocres ou manquantes.


Automatiser la traçabilité bidirectionnelle

La tenue de registres de traçabilité à n'importe quelle échelle nécessite une automatisation. Les outils de gestion du cycle de vie des applications incluent des fonctionnalités de gestion des exigences qui sont matures et tendent à être le centre de la traçabilité.

Les outils de test de logiciels intégrés comme Parasoft complètent la vérification et la validation des exigences en fournissant une traçabilité bidirectionnelle automatisée jusqu'au cas de test exécutable. Cela inclut le résultat de réussite ou d'échec et remonte jusqu'au code source qui implémente l'exigence.

Parasoft s'intègre aux principaux outils de gestion des exigences ou systèmes ALM du marché, notamment :

Comme le montre l'image ci-dessous, chacun des Parasoft solutions d'automatisation des tests (C/C++test, C/C++test CT, Jtest, dotTEST, S0Atest et Selenic) utilisés dans le cycle de vie du développement prennent en charge l'association des tests avec les éléments de travail définis dans ces systèmes, tels que les exigences, les défauts et les cas de test ou les exécutions de test. Le tableau de bord central de reporting et d'analyse, Parasoft DTP, gère la traçabilité.

Capture d'écran de Parasoft DTP montrant le tableau de bord de rapport DO-178C avec l'état des tests du projet.
Un exemple de tableau de bord de rapport DO-178C qui capture l'état des tests du projet et la progression vers l'achèvement.

Parasoft DTP corrèle les identifiants uniques du système de gestion avec :

  • Résultats de l'analyse statique
  • Couverture de code
  • Résultats des tests unitaires, d'intégration et fonctionnels

Les résultats sont affichés dans les rapports de traçabilité de Parasoft DTP et renvoyés à la gestion des exigences. Ils fournissent une traçabilité et un reporting bidirectionnels complets dans le cadre de la matrice de traçabilité du système.

Capture d'écran de Parasoft DTP montrant la matrice de traçabilité de Codebeamer. Elle répertorie les exigences système du niveau élevé au niveau faible ainsi que les cas de test et les résultats des tests.
Matrice de traçabilité Codebeamer, qui répertorie les exigences système du niveau élevé au niveau bas ainsi que les cas de test et les résultats des tests.

Les rapports de traçabilité dans Parasoft DTP sont hautement personnalisables. L'image suivante montre un modèle de matrice de traçabilité des exigences pour les exigences créées dans Polarion et les traces vers les cas de test, les résultats de l'analyse statique, les fichiers de code source et les revues de code manuelles.

Capture d'écran de Parasoft DTP montrant la matrice de traçabilité des exigences Polarian.
Modèle de matrice de traçabilité des exigences de Parasoft DTP intégré à Siemens Polarion.

La corrélation bidirectionnelle entre les résultats des tests et les éléments de travail constitue la base de traçabilité des exigences. Parasoft DTP ajoute des analyses de couverture de test et de code pour évaluer l'exhaustivité des tests. Le maintien de cette corrélation bidirectionnelle entre les exigences, les tests et les artefacts qui les implémentent est un élément essentiel de la traçabilité.

Couverture de code

Couverture de code exprime le degré auquel le code source de l'application est soumis à toutes les pratiques de test, y compris les tests unitaires, d'intégration et système, à la fois automatisés et manuels.

La collecte de données de couverture tout au long du cycle de vie permet d'obtenir des mesures de qualité et de couverture plus précises, tout en exposant les parties non testées ou sous-testées de l'application.

Comme pour la traçabilité, la couverture du code est une mesure clé dans le développement des systèmes embarqués. La norme DO-178C contient des exigences spécifiques dans la section 6.4.4 Analyse de la couverture des tests. Ces exigences s'étendent au-delà de la couverture du code et incluent la couverture des tests de toutes les exigences de haut et de bas niveau, ainsi que la couverture des tests de l'ensemble de la structure logicielle.

La section 6.4.4.2 Analyse structurelle du code exige la couverture des tests du code source au-delà de ce qui peut déjà être couvert par les tests basés sur les exigences. Cela garantit que tout le code est exécuté par des tests avant la certification. Cette analyse de couverture du code peut révéler des problèmes tels que des tests manquants et du code mort ou désactivé. La section 6.4.4.3 Résolution de l'analyse de couverture structurelle exige la correction de ces écarts découverts lors de l'analyse de couverture.

La couverture des applications peut également aider les organisations à concentrer leurs efforts de test lorsque les contraintes de temps limitent leur capacité à exécuter la suite complète de tests de régression manuels. La capture des données de couverture sur le système en cours d'exécution sur son matériel cible pendant l'intégration et les tests système complète la couverture du code à partir des tests unitaires.

Avantages de la couverture globale du code

Les données de couverture capturées sont exploitées dans le cadre du processus d'intégration continue (CI) ainsi que du flux de travail du testeur. Parasoft DTP effectue des analyses avancées sur la couverture du code de tous les tests, les modifications du code source, les résultats de l'analyse statique et les résultats des tests. Les résultats aident à identifier le code non testé et sous-testé et d'autres zones à haut risque dans le logiciel.

L'analyse du code, l'exécution des tests, le suivi de la couverture et la création de rapports sur les données dans un tableau de bord ou un graphique constituent une première étape utile pour évaluer les risques, mais les équipes doivent toujours consacrer beaucoup de temps et de ressources à la lecture des feuilles de thé et espérer qu'elles ont interprété les données correctement.

Pour comprendre les risques potentiels de l'application, il faut des processus d'analyse avancés qui fusionnent et corrélent les données. Cela offre une meilleure visibilité sur la couverture réelle du code et permet d'identifier les lacunes et les chevauchements de tests. Par exemple, quelle est la couverture réelle de l'application testée lorsque vos outils signalent des valeurs de couverture différentes pour les tests unitaires, les tests fonctionnels automatisés et les tests manuels ?

Les pourcentages ne peuvent pas être simplement additionnés car les tests se chevauchent. Il s'agit d'une étape essentielle pour comprendre le niveau de risque associé à l'application en cours de développement.

Capture d'écran de Parasoft DTP montrant le tableau de bord de couverture des applications avec une couverture de code agrégée à partir de diverses méthodes de test.
Couverture de code agrégée à partir de diverses méthodes de test

Comprendre l'impact des modifications de code sur les tests avec l'analyse d'impact des tests

Tester l'analyse d'impact utilise les données collectées lors des tests et des modifications de code entre les builds pour déterminer quels fichiers ont changé et quels tests spécifiques ont touché ces fichiers. Le moteur d'analyse de Parasoft peut analyser le delta entre deux builds et identifier le sous-ensemble de tests de régression qui doivent être exécutés. Il comprend également les dépendances sur les unités modifiées pour déterminer l'effet d'entraînement que les modifications ont eu sur d'autres unités.

Parasoft Jtest et dotTEST donnent un aperçu de l'impact des modifications logicielles et recommandent où ajouter des tests et où des tests de régression supplémentaires sont nécessaires.

Accélération des tests d'intégration et de système avec des outils d'automatisation des tests

Les outils d'automatisation des tests logiciels de Parasoft accélèrent la vérification en automatisant les nombreux aspects fastidieux de la tenue des registres, de la documentation, des rapports, de l'analyse et du reporting.

Cercle bleu avec une icône blanche représentant deux flèches superposées au centre. Celle du haut pointe vers la gauche, celle du bas vers la droite.

Traçabilité bidirectionnelle

La traçabilité bidirectionnelle de tous les artefacts garantit que les exigences sont accompagnées de codes et de tests prouvant qu'elles sont satisfaites. Les métriques, les résultats des tests et les résultats des analyses statiques sont reliés aux composants et vice versa.

Icône à l’intérieur d’un cercle bleu montrant une flèche blanche pointant vers le bas.

Code et couverture de test

La couverture du code et des tests vérifie que toutes les exigences sont implémentées et garantit que l'implémentation est testée comme requis.

Cercle bleu avec une icône blanche représentant une cible au centre.

Exécution de test basée sur la cible et l'hôte

L'exécution des tests basés sur la cible et l'hôte prend en charge différentes techniques de validation selon les besoins.

Icône à l'intérieur d'un cercle bleu montrant une horloge blanche à 4h00

Exécution intelligente des tests

L'exécution intelligente des tests gère les changements en se concentrant sur les tests portant uniquement sur le code qui a changé et sur les dépendances impactées.

Cercle bleu avec une icône blanche au centre de quatre lignes verticales inégales représentant le flux de données.

Rapports et analyse

Les rapports et les analyses fournissent des informations permettant de prendre des décisions importantes et de suivre les progrès. La prise de décision doit être basée sur les données collectées à partir des processus automatisés.

Cercle bleu avec une icône blanche de trois flèches pointant dans le sens des aiguilles d'une montre dans un cercle représentant le continu.

Génération de documentation automatisée

La génération automatisée de documentation à partir des analyses et des résultats de tests prend en charge le processus de conformité et les normes.

Icône à l'intérieur d'un cercle bleu représentant un bouclier de sécurité entouré de blanc avec une coche au centre.

Automatisation de la conformité aux normes

L'automatisation de la conformité aux normes réduit les frais généraux et la complexité en automatisant les processus les plus répétitifs et les plus fastidieux. Les outils peuvent suivre l'historique du projet et relier les résultats aux exigences, aux composants logiciels, aux tests et aux écarts enregistrés.

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.