Découvrez comment intégrer facilement l'analyse statique, les tests unitaires et d'autres méthodes de test de logiciels C et C++ dans votre pipeline CI/CD. Inscrivez-vous pour la démo >>

Déploiement de l'analyse statique et des tests unitaires dans des environnements conteneurisés, partie 1

Par Miroslaw Zielinski

19 mai 2020

6  min lire

Comment configurer le test Parasoft C / C ++ 2020.1 pour les environnements de développement conteneurisés

La libération de Test Parasoft C / C ++ 2020.1 apporte une collection d'améliorations qui facilitent son utilisation avec les conteneurs Docker. Je vais vous guider à travers les étapes de configuration du test C / C ++ 2020.1 pour qu'il fonctionne dans des environnements de développement conteneurisés.

Les équipes de développement intégrées adorent les conteneurs Docker

Les déploiements conteneurisés d'outils de développement deviennent le pain quotidien des équipes de développement embarquées. Même si les conteneurs ont été initialement développés pour résoudre les problèmes de déploiement de microservices et d'applications Web, ils ont récemment gagné en popularité parmi les équipes intégrées, en particulier les grandes équipes qui utilisent des conteneurs pour gérer des chaînes d'outils complexes.

Lorsqu'il s'agit de gérer des environnements de développement complexes, en particulier dans l'espace critique pour la sécurité, les équipes sont généralement confrontées aux défis suivants:

  • Synchroniser les mises à niveau pour toute l'équipe vers une nouvelle version d'un outil comme un compilateur, créer une chaîne d'outils, etc.
  • Réagir dynamiquement à un nouveau correctif de sécurité pour la bibliothèque ou le kit de développement logiciel (SDK), etc.
  • Assurer la cohérence de la chaîne d'outils pour tous les membres de l'équipe et de l'infrastructure automatisée (CI / CD).
  • Possibilité de version de l'environnement de développement et de le restaurer pour desservir l'ancienne version du produit qui a été certifiée avec la chaîne d'outils spécifique.
  • Intégration et mise en place de nouveaux développeurs.

Tous ces problèmes sont faciles à résoudre avec des conteneurs. Pas étonnant les équipes adorent les conteneurs! Voyons comment configurer le test C / C ++ pour une utilisation dans un environnement conteneurisé.

Utilisation de Parasoft C / C ++ test Professional avec une chaîne d'outils de compilation conteneurisée

Il est facile de configurer Parasoft C / C ++ test Professional pour qu'il fonctionne avec une chaîne d'outils de compilation et l'environnement d'exécution déployé dans des conteneurs. Nous prenons en charge les déploiements basés sur des conteneurs Linux et Docker. Voici un aperçu de haut niveau de l'apparence de ce type de configuration:

Comme vous pouvez le voir, le test C / C ++ accède au compilateur conteneurisé (GNU GCC) et aux environnements d'exécution. Dans cette configuration spécifique, il existe deux conteneurs Docker distincts:

  • Un pour le compilateur et les outils de construction
  • Un autre pour l'environnement d'exécution (par exemple, version dépouillée de Linux embarqué)

Voyons comment configurer C / C ++ Test Professional pour qu'il fonctionne avec une chaîne d'outils de compilation et un environnement d'exécution dans le conteneur. Dans l'exemple, nous utiliserons la dernière GCC image de conteneur disponible via le hub Docker.

Voyons comment configurer C / C ++ Test Professional pour qu'il fonctionne avec une chaîne d'outils de compilation et un environnement d'exécution dans le conteneur. Dans l'exemple, nous utiliserons la dernière GCC image de conteneur disponible via le hub Docker.

Les instructions suivantes supposent que vous disposez d'un Moteur Docker correctement installé et configuré dans votre environnement. Et la même chose pour Test C / C ++ Professionnel 2020.1.

Étape 1: Démarrez le test Parasoft C / C ++
1. Assurez-vous que votre Docker fonctionne. Commençons par un test rapide et imprimons le numéro de version du compilateur GCC inclus dans la «dernière» image du conteneur GCC:

2. Avant de commencer le test Parasoft C / C ++, définir une variable environnementale dédiée CPPTEST_CONTAINER_NAME au nom du conteneur. C'est un moyen simple d'indiquer au test C / C ++ quel conteneur doit être utilisé pour appeler le compilateur ou l'éditeur de liens. Cela fonctionne bien avec les emplois Jenkins.

3. De plus, je vous recommande définir la variable CPPTEST_INSTALL pour pointer vers le répertoire d'installation du test C / C ++. Cela permet une configuration simple. Une fois les variables définies, nous pouvons démarrer le test C / C ++.

4. Pour votre espace de travail, sélectionnez un emplacement quelque part dans le répertoire HOME (plus à ce sujet plus tard).

Étape 2: créer un projet de démonstration

Pour rendre la création d'un projet de démonstration très simple, créons le projet par défaut «HelloWorld» à l'aide de l'assistant standard «Nouveau projet».

1. Choisissez le menu Fichier> Nouveau> Projet C ++, puis choisissez «Projet C ++ Hello World».

2. Entrez le nom de votre choix pour votre projet. Cela devrait ressembler plus ou moins à la capture d'écran ci-dessous.

3. Cliquez Récapitulatif pour créer le projet par défaut pour notre exemple.

Étape 3: modifier les paramètres du compilateur

Une fois le projet créé, modifiez quelques éléments dans les paramètres de build du test C / C ++.

1. Cliquez avec le bouton droit sur le projet et sélectionnez Propriétés, puis Parasoft> Test C / C ++> Paramètres de construction.

2. Dans le panneau Paramètres de construction, modifiez deux éléments dans la section Paramètres du compilateur:

  • Famille. Modifiez pour correspondre au compilateur installé dans le conteneur. Au moment de la rédaction de ce blog, la dernière image «gcc» contenait le compilateur GNU GCC 9.2, qui a incité à sélectionner la configuration du compilateur «GNU GCC 9.x (x86_64)».
  • Exécutables du compilateur par défaut. Les exécutables par défaut du compilateur doivent être remplacés par des wrappers spéciaux pour appeler le compilateur intégré au conteneur au lieu du compilateur normal installé directement dans le système d'exploitation hôte. Ces emballages, remote-gcc et remote-g ++, sont livrés dans la distribution C / C ++ test 2020.1. Dans la capture d'écran ci-dessous, j'utilise une variable d'environnement d'assistance pour le répertoire d'installation de test C / C ++. Vous pouvez définir une variable similaire pour votre environnement ou utiliser des chemins complets pour localiser les scripts d'encapsulation.

Étape 4: Vérifiez que le conteneur est en cours d'exécution

Assurez-vous que le conteneur avec votre chaîne d'outils de compilation est opérationnel avant d'utiliser le test Parasoft C / C ++.

Les wrappers de compilateur que nous avons configurés à l'étape précédente sont conçus pour exécuter les commandes du compilateur dans le conteneur en cours d'exécution, ce qui est plus rapide que de démarrer le conteneur pour chaque appel.

Pour les Déploiements CI / CD, démarrer le conteneur avant l'exécution du test C / C ++ et l'arrêter après peut faire partie du travail Jenkins. Dans cet exemple, nous supposons que la base GUI est utilisée. Nous pouvons créer des configurations d'exécution d'éclipse à cet effet. Je suggère de créer deux configurations de type «Application C / C ++» et de les nommer comme suit:

  • "Démarrer le conteneur gcc"
  • "Arrêter le conteneur gcc"

1. Sélectionnez le menu Exécuter> Exécuter les configurations…

2. Créez deux configurations d'exécution nommées «Démarrer le conteneur gcc» et «Arrêter le conteneur gcc».

3. Dans l'onglet Principal pour les deux configurations, entrez votre chemin vers Docker en tant que «Application C / C ++» comme indiqué ci-dessous:

4. Pour les "Démarrer le conteneur gcc", dans l'onglet arguments, entrez la commande suivante:

style = "padding-left: 40px;">run –rm -d -it –name gcc -v $ {env_var: HOME}: $ {env_var: HOME}
-v
$ {env_var: CPPTEST_INSTALL}: $ {env_var: CPPTEST_INSTALL} gcc

Comme indiqué dans la capture d'écran ci-dessous:


La partie intéressante de cette commande sont les options -v, qui sont utilisées pour mapper les volumes.

La première option -v mappe le répertoire HOME local au système de fichiers du conteneur. L'intention ici est de permettre l'accès au code source pour le compilateur fonctionnant à l'intérieur du conteneur et également pour le test Parasoft C / C ++, qui s'exécute dans le système d'exploitation hôte.

J'utilise HOME dans mon exemple pour plus de commodité car j'ai placé mon espace de travail directement dans HOME.

Pour les configurations réelles, vous ne pouvez mapper strictement que la partie du système de fichiers qui contient l'arborescence source et l'espace de travail eclipse avec project.

La deuxième option -v mappe l'emplacement du répertoire d'installation de test C / C ++ pour permettre l'accès aux fichiers d'en-tête de test C / C ++ à l'intérieur du conteneur.

5. Pour les "Arrêter le conteneur gcc", dans l'onglet arguments, entrez la commande suivante comme indiqué dans l'image ci-dessous:

arrêter gcc

6. Utilisons la configuration d'exécution «Démarrer le conteneur gcc» pour exécuter le conteneur.

La console Eclipse devrait vous montrer le hachage du conteneur. Pour vous assurer que tout va bien, vous pouvez passer à la ligne de commande et appeler la commande suivante:

Si vous voyez notre conteneur «gcc» dans la liste, vous pouvez commencer à utiliser le test C / C ++ pour tester votre code.

7. Sélectionnons le projet dans le navigateur. À l'aide du menu Parasoft, sélectionnez Test avec> Intégré> Test unitaire> Générer des tests unitaires.

Vous devriez voir un nouveau répertoire «tests» créé dans votre projet avec un seul test unitaire créé pour la fonction «main».

8. Une fois les cas de test générés, vous êtes prêt à les exécuter. Pour l'exécution, sélectionnez Test en utilisant> Intégré> Test unitaire> Exécuter des tests unitaires dans le conteneur.

Le test C / C ++ doit appeler une collection de compilations dans le conteneur et des lignes de commande de liaison, se terminant par une création et une exécution binaires de test dans le conteneur.

C'est tout! Avec ces étapes, vous avez préparé le test Parasoft C / C ++ pour effectuer des activités de test à l'aide de la chaîne d'outils de compilation dans le conteneur.

Si vous avez besoin de changer le compilateur d'un projet ou de modifier quelque chose dans l'environnement d'exécution d'exécution, vous pouvez mettre à jour l'image du conteneur ou la changer vers une version différente. (N'oubliez pas de mettre à jour la variable CPPTEST_CONTAINER_NAME.)

Restez à l'écoute pour la deuxième partie à venir. Je vais vous expliquer comment créer une image de conteneur avec Parasoft C / C ++ test Standard.

Par Miroslaw Zielinski

Chef de produit pour les solutions de test embarquées de Parasoft, les spécialités de Miroslaw comprennent le C / C ++, les RTOS, l'analyse de code statique, les tests unitaires, la gestion de la qualité des logiciels pour les applications critiques pour la sécurité et la conformité des logiciels aux normes de sécurité.

Recevez les dernières nouvelles et ressources sur les tests de logiciels dans votre boîte de réception.