AccueilFrChercher
ZAPTEST screenshot

L'intégration continue est un ensemble de pratiques utilisées en génie logiciel consistant à vérifier à chaque modification de code source que le résultat des modifications ne produit pas de régression dans l'application développée. Le concept a pour la première fois été mentionné par Grady Booch[1] et se réfère généralement à la pratique de l'extreme programming. Le principal but de cette pratique est de détecter les problèmes d'intégration au plus tôt lors du développement. De plus, elle permet d'automatiser l'exécution des suites de tests et de voir l'évolution du développement du logiciel.

L'intégration continue est de plus en plus utilisée en entreprise afin d'améliorer la qualité du code et du produit final[2].

Intérêt

L'intégration continue repose souvent sur la mise en place d'une brique logicielle permettant l'automatisation de tâches : compilation, tests unitaires et fonctionnels, validation produit, tests de performances… À chaque changement du code, cette brique logicielle va exécuter un ensemble de tâches et produire un ensemble de résultats, que le développeur peut par la suite consulter. Cette intégration permet ainsi de ne pas oublier d'éléments lors de la mise en production et donc ainsi améliorer la qualité du produit[3].

Pour appliquer cette technique, il faut d'abord que :

  • le code source soit partagé (en utilisant des logiciels de gestion de versions tels que CVS, Subversion, git, Mercurial, etc.) ;
  • les développeurs intègrent (commit) quotidiennement (au moins) leurs modifications ;
  • des tests d'intégration soient développés pour valider l'application (avec JUnit par exemple).

Un outil d'intégration continue est ensuite nécessaire, tel que CruiseControl, Jenkins ou Travis CI. D'autres outils, comme SonarQube ou Jacoco, peuvent être mis en place afin de superviser la qualité du code[2].

Les principaux avantages d'une telle technique de développement sont :

  • le test immédiat des modifications ;
  • la notification rapide en cas de code incompatible ou manquant ;
  • les problèmes d'intégration sont détectés et réparés de façon continue, évitant les problèmes de dernière minute ;
  • une version est toujours disponible pour un test, une démonstration ou une distribution.

Articles connexes

  • CI/CD ; Livraison continue
  • GitLab, plateforme git proposant des outils d'intégration continue avec GitLab CI
  • Jenkins, serveur d'intégration continue
  • Travis CI, logiciel libre d'intégration continue
  • SonarQube, logiciel de supervision de la qualité du code
  • Treeherder, serveur d'intégration continue de la Mozilla Foundation
  • Team Foundation Server, serveur Microsoft
  • Chaos Monkey, outil de tests de résilience en continu

Références

  1. (en) Grady Booch, Object Oriented Design : With Applications, Benjamin Cummings, , 580 p. (ISBN 978-0-8053-0091-8, lire en ligne), p. 209.
  2. 1 2 « Approfondissement Technique : Intégration continue », (consulté le ).
  3. « Usine Logicielle, Qualité & Tests », sur zenika.com (consulté le ).