Close

Tutoriel sur les tests d'intégration avec Bitbucket Pipelines

Portrait de Sten Pittet
Sten Pittet

Auteur collaborateur

Découvrez comment exécuter des tests d'intégration avec Bitbucket Pipelines en exécutant plusieurs services dans des conteneurs Docker distincts à l'intérieur d'un pipeline.

Les tests sont un élément essentiel de l'intégration et de la livraison continues. Si vous pratiquez le déploiement continu, il s'agira de la dernière ligne de défense contre les bugs avant que les changements ne soient livrés à vos clients. Les tests unitaires qui permettent de valider les méthodes et les classes individuelles sont un excellent début pour éviter les problèmes, mais vous devrez également exécuter des tests d'intégration afin de vous assurer que les différents modules utilisés par votre application (serveur d'application, base de données, cache) interagissent correctement. Nous verrons dans ce tutoriel comment vous pouvez exécuter des tests d'intégration grâce à Bitbucket Pipelines en faisant fonctionner plusieurs services dans des conteneurs Docker séparés dans un pipeline.

Durée

30 minutes

Public

Vous êtes novice en matière d'intégration continue et/ou vous débutez dans Bitbucket Pipelines

Prérequis

  • Un compte Bitbucket
  • Node v4.6 ou version supérieure pour exécuter l'application

  • Docker Community Edition v17.03 ou version supérieure pour exécuter MongoDB sur votre machine locale

  • Un terminal pour exécuter une commande bash
  • Git to manage the repository and push it back to Bitbucket Cloud

Étape 1 : Exécutez l'exemple d'application en local

Nous utiliserons une application Node.js de base qui affiche un message sur la page d'accueil et consigne les visites dans une base de données. Pour vous concentrer sur la configuration de Bitbucket Pipelines, vous pouvez simplement cloner l'application depuis votre terminal.

git clone git@bitbucket.org:spittet/bitbucket-pipelines-services-tutorial.git

Maintenant, allez dans votre dépôt local et exécutez la commande npm install pour installer les dépendances requises par l'application.

cd bitbucket-pipelines-services-tutorial
npm install

Avant d'exécuter l'application, nous devons démarrer une nouvelle instance de MongoDB. Grâce à Docker, vous pouvez facilement le faire depuis votre terminal.

docker run --name mongodb -d -p 27017:27017 mongo

Démarrez ensuite votre application et allez à l'adresse http://localhost:3000 pour la voir en action.

npm start

Vous pouvez aller à l'adresse http://localhost:3000/visits pour vous assurer qu'une visite a été correctement consignée dans la base de données.

Enfin, il convient de s'assurer que les tests sont correctement réalisés en local à l'aide de la commande npm test. Une fois cette commande exécutée, vous devriez observer la réalisation de deux tests.

npm test

Cet exemple d'application exécute deux tests différents :

  • L'un vérifie que l'application affiche Hello World sur la page d'accueil.
  • L'autre vérifie qu'une nouvelle visite est consignée dans la base de données chaque fois que quelqu'un accède à la page d'accueil.

Le premier test réussira même si la base de données est en panne, mais le deuxième est un test d'intégration qui vérifie que l'application web interagit correctement avec le serveur de base de données. Il peut également être considéré comme un test fonctionnel puisqu'il vérifie certaines des exigences métier de l'application. Vous pouvez consulter notre guide pour en savoir plus sur les différents types de tests.

Nous allons maintenant voir comment vous pouvez utiliser Bitbucket Pipelines pour automatiser les tests de votre application et la configurer pour qu'elle fonctionne avec une base de données.

Étape 2 : Exécutez automatiquement des tests grâce à Bitbucket Pipelines

Créez tout d'abord un dépôt dans votre compte Bitbucket et mettez à jour l'URL distante d'origine pour qu'elle pointe vers votre dépôt Bitbucket.

git remote add bitbucket git@bitbucket.org:<account name>/<repository name>.git
git branch -m mainline
git push -u bitbucket mainline

Go to the Pipelines section of your repository to enable Bitbucket Pipelines.

Vous pouvez utiliser le modèle JavaScript par défaut dans l'écran suivant. Il contient déjà les commandes npm install et npm test dont vous avez besoin pour installer les dépendances et exécuter la suite de tests.

The bitbucket-pipelines.yml file should look something like this.

image: node:16

pipelines:
  default:
    - parallel:
        - step:
            name: Build and Test
            caches:
              - node
            script:
              - npm install
              - npm test

The database service is missing, but we will add it later on.

Once you commit your file, you will be redirected to the Pipelines section of your repository where you can see your first pipeline in progress. Your pipeline will fail because the second test cannot run properly without a database connection. If you click through to your pipeline, you should see a screen similar to the one below where it says that 1 test passed and 1 test failed.

Dans la section suivante, nous allons résoudre ce problème en ajoutant une nouvelle définition de service à votre configuration Pipelines.

Étape 3 : Ajoutez une définition de service pour la base de données

Grâce à Bitbucket Pipelines, vous pouvez exécuter jusqu'à trois conteneurs Docker supplémentaires en plus de l'application principale exécutée dans un pipeline. Vous pouvez utiliser ces conteneurs pour exécuter des services tels qu'un magasin de données, un outil d'analyse ou tout autre service tiers dont votre application peut avoir besoin pour compléter le pipeline. Dans notre cas, nous utiliserons un conteneur de service séparé pour exécuter MongoDB.

Go to the source section of your repository to see the list of files.

Cliquez sur le fichier de configuration bitbucket-pipelines.yml pour y accéder. Vous trouverez un bouton d'édition dans le coin supérieur droit qui vous permettra de modifier le fichier et de le commiter directement depuis votre navigateur.

Nous devons ajouter une définition de service pour notre base de données à la fin du fichier de configuration.

bitbucket-pipelines.yml

image: node:16

pipelines:
  default:
    - step:
        script:
          - npm install
          - npm test

definitions:
  services:
    database:
      image: mongo

Dans le cas de MongoDB, nous n'avons pas besoin de paramètres supplémentaires dans la définition de l'image, mais certaines images Docker pour les bases de données et les services peuvent nécessiter que vous spécifiiez certaines variables d'environnement. Vous trouverez une liste d'exemples de bases de données dans la documentation de Bitbucket Pipelines.

Avant de commiter le fichier, vous devez ajouter le nouveau service au niveau de l'étape qui exécute les tests. La configuration finale de Pipelines devrait ressembler au code ci-dessous.

bitbucket-pipelines.yml

image: node:16

pipelines:
  default:
    - step:
        script:
          - npm install
          - npm test
        services:
          - database

definitions:
  services:
    database:
      image: mongo

Go to your Pipelines section after committing the file to see the pipeline in progress. It should normally complete successfully.

Vous pouvez cliquer sur l'onglet correspondant à la base de données dans le panneau des journaux pour afficher les journaux du conteneur MongoDB.

Voilà, le tour est joué ! Vous savez maintenant comment ajouter des services à votre pipeline pour exécuter des tests d'intégration. N'oubliez pas de lire la documentation pour en savoir plus sur l'utilisation de ces services.

Sten Pittet
Sten Pittet

Cela fait maintenant dix ans que je travaille dans le secteur logiciel et j'ai occupé différentes fonctions, du développement à la gestion de produits. Après avoir passé les cinq dernières années chez Atlassian à travailler sur des outils de développement, j'écris désormais des articles sur le développement des logiciels. En dehors de mon travail, j'affine mes compétences de père au contact d'un adorable bébé.


Partager cet article

Lectures recommandées

Ajoutez ces ressources à vos favoris pour en savoir plus sur les types d'équipes DevOps, ou pour les mises à jour continues de DevOps chez Atlassian.

Illustration DevOps

Communauté DevOps

Illustration DevOps

Parcours de formation DevOps

Illustration d'une carte

Essayez la solution gratuitement

Inscrivez-vous à notre newsletter DevOps

Thank you for signing up