Part 1 : Introduction



Commençons par définir tout ce dont nous aurons besoin pour ce cours.

  • Test unitaire : Un test unitaire est un programme qui permet de s'assurer du bon fonctionnement d'une fonction. Par exemple en vérifiant que son résultat est conforme à ce que l'on attend suivant les arguments passés à cette fonction.
  • Couverture des tests : La couverture des tests est une mesure de la pertinence des tests unitaires d'un projet. En effet, il est important que les tests permettent de vérifier la plus grande partie du projet (tant en ligne de code qu'en branchement). Si l'ensemble des tests unitaires vérifient l'ensemble du projet, alors la couverture des tests est complète.
  • Intégration continue : L'intégration continue est une méthode qui permet d'évaluer un projet automatiquement et idéalement, à chaque changement, à l'aide des tests unitaires.
  • CMake : est un programme qui permet de gérer la compilation d'un projet efficacement sans avoir à écrire explicitement un MakefilenoteOn ne le dira jamais assez : n'écrivez pas vos Makefile vous-même, laissez un programme le faire à votre place.
  • GCovr : est un programme qui permet d'évaluer la couverture des tests d'un projet si celui-ci est compilé avec GCC ou G++.
  • Doxygen : est un programme qui permet de générer automatiquement la documentation développeur d'un projet en se basant sur des commentaires spéciaux qui documentent les fonctions, les classes, les structures, etc.
  • Git : est un logiciel qui permet de versionner un projet et de gérer ses modifications très efficacement.
  • Gitlab : est une plateforme qui permet d'héberger des projets git. Tout projet à alors un wiki, une documentation en ligne, une possibilité d'intégration continue et bien d'autres choses que nous découvrirons dans ce cours.
  • Docker : est un programme qui permet d'exécuter des programmes dans un environnement différent de celui de l'OS de la machine hôte. Par exemple : Ubuntu sur Fedora ou Ubuntu 18.04 sur Ubuntu 20.04, etc. Ces environnement ou images sont construites à partir de recette. Plus d'information ici.
  • kaniko : est un programme qui permet de créer des images docker (comme builda) sans pour autant les exécuter. Bien des gens ont râler quand Gitlab a désactiver l'utilisation de Docker In Docker mais il faut reconnaitre que, question faille de sécurité, ça se pose là. Au hasard, une image docker qui s'exécute sur une autre qui s'exécute elle-même sur une autre et une autre et une autre, etc. On voit bien que ça va finir par poser un problème.