Build & Delivery
L’objectif de l'intégration continue est de vérifier que toute nouvelle mise à jour du code source, d’une application en cours de développement, ne génère pas d’erreurs : régressions ou anomalies.
L’intégration continue correspond à une brique logicielle qui va permettre d’automatiser de nombreuses tâches : la compilation du code, les tests unitaires, les tests fonctionnels etc.
GitFlow est un outil de gestion des versions (système de branches) que nous utilisons. Le principal objectif de GitFlow est de pouvoir exécuter des commandes de haut niveau sur les branches de développement. Cela représente un important gain de temps pour les développeurs.
La mise en oeuvre du versioning et de l'IC/DC implique la mise en place d'un certain nombre de bonnes pratiques.
L’importance du versionning et de l’unicité du code source.
L’un des prérequis à l’intégration continue est que le gestionnaire des sources soit unique et versionné. Pour ce faire nous utilisons déjà un logiciel de gestion de versions : Git.
Le gestionnaire de source contient toutes les sources versionnées du produit, plus précisément la chronologie de toutes les modifications apportées à l’application. L’intérêt de cet outil est de pouvoir facilement revenir en arrière sur une version antérieure.
En complément nous travaillons avec la méthodologie GitFlow. L’extension “Flow” reliée à notre Git apporte des contrôles supplémentaires et permet aux développeurs d’effectuer des opérations complexes sur un dépôt de code source.
Intégrer régulièrement les modifications (commits).
Les développeurs intègrent leurs modifications tous les jours, ainsi les testeurs peuvent tester de façon régulière les derniers changements. Par conséquent le risque de conflits dans le code est diminué et surtout il est décelé plus rapidement car les commits ne sont pas beaucoup espacés. Cela permet de corriger tôt les problèmes détectés et donc de maintenir un produit de qualité et fonctionnel.
Mettre en place des tests d'intégration.
Quand un morceau de fonction est réalisé, un bout de code est développé en parallèle pour le tester. Le principe est de concevoir les tests avant de coder les composants de l’application. Par conséquent, c'est la manière dont on va concevoir les tests qui vont influencer la manière de coder.
Ce cercle vertueux, qui nécessite d’être méthodique dans la réalisation des développements, engendre une hausse de la qualité des modifications et donc de l’application finale.
Tester l'application dans un environnement identique à l'environnement de production.
La configuration de l’environnement de test doit être similaire à celle de l’environnement de production. Ainsi les tests sont effectués dans les conditions “réelles” de l’environnement final ce qui permet d'être plus serein quand les modifications sont livrées en production. Un grand nombre de mauvaises surprises sont évitées.
Nos ingénieurs utilisent actuellement plusieurs environnements de travail :
- Un environnement de développement.
- Un environnement de préproduction.
Notre approche progressive d'implémentation de l'intégration continue sur nos nombreux projets, répond à notre volonté constante d'améliorer la qualité des applications que nous développons. Cette méthode augmente significativement la qualité du codage et donc du produit final.
Les avantages de l’intégration continue pour vos projets digitaux*
- Sérénité et visibilité : au-delà de la tranquillité d’esprit qu’apporte les tests automatisés, tous les développeurs voient ce qui se passe, ce qui leur permet de mieux anticiper et d’adapter leurs prochains développements.
- Détection rapide des anomalies dans le code : les développeurs sont rapidement informés des régressions, des bugs ou autres anomalies et peuvent engager des actions correctrices en continu. Plus les erreurs sont détectées tôt dans un projet moins elles prennent de temps à être corrigées.
- Disponibilité immédiate de l’application : une version de l’application fonctionnelle est toujours disponible pour un test ou bien une démonstration.
*Selon le type de projet, l’intégration continue pourra être implémentée plus ou moins facilement.
À la recherche d'un partenaire IT? Rencontrons-nous.
Test Driven Development (TDD)
Les tests automatisés et le Test Driven Development (TDD) sont des principes complémentaires mais distincts.
Le TDD est un ensemble de tâches successives correspondant à 3 composants Red-Green-Refactor :
- Red : Créer un test qui est en échec.
- Green : Écrire le morceau de code qui fait passer ce test en réussi.
- Refactor : Refactoriser le code.
De nombreux outils existent pour mettre en place des tests automatisés et faire du Test Driven Development : PHP Code Sniffer, PHPUnit, Selenium, Selenium IDE, Selenium WebDriver, Jenkins etc.
Contrôle de la qualité des développements : les tests automatisés
Il est d'usage de mettre en oeuvre différents niveaux de test. Les tests sont effectués dans un ordre spécifique : nous commençons par lancer les tests unitaires, puis viennent les tests d'intégration et enfin nous lançons les tests fonctionnels de bout en bout.
Tests unitaires
Ces tests sont automatisés. Ils s'assurent que les composants de l'application fonctionnent correctement de manière isolé. Nous pouvons également les appelés les "tests de qualification".
Tests d'intégration
Les tests d'intégration sont aussi automatisés. Leur mission est de vérifier que les fonctionnalités communiquent bien être elles. Ces tests garantissent que toutes les fonctionnalités interagissent correctement les unes avec les autres, selon les spécifications du projet.
Tests fonctionnels de bout en bout
Ils peuvent être effectués de façon manuelle ou automatisée. Leur mission est d'être sûr que le logiciel contient bien les plans de test d'usage décrits par les utilisateurs finaux. Le testeur va effectuer ses tests d'acceptation sur les processus métiers afin de s'assurer qu'ils répondent bien aux attentes des clients. Si tous les tests issus des plans de test sont réalisés avec succès, alors l'objectif de l'application est atteint.
L'ensemble de ces campagnes de test permet d'atteindre une couverture de code complète.
Les effets positifs sur la qualité du produit :
- Réduction significative du nombre de bugs et de régressions.
- La mise en oeuvre de tests avancés certifient un produit final entièrement et régulièrement testé,
- Un produit évolutif : la garantie d'avoir un produit robuste et facilement maintenable sur le long terme.
- Un logiciel fonctionnel à n'importe quel moment : l'assurance de toujours avoir à disposition un logiciel fonctionnel, pour une démonstration par exemple.
- Réduction des risques : la découverte des défauts n'est pas tardive.
Technical Director
Tech, méthodes et actualités
Collaborer avec une ESN permet aux entreprises de bénéficier d'une expertise technique, d'une flexibilité sur mesure, et d'une optimisation des coûts.
L'externalisation informatique offre une opportunité sans précédent pour les organisations désireuses d'innover tout en optimisant leurs coûts.
Planifiez une démo ou contact-nous pour découvrir comment nous travaillons.
Recevez gratuitement notre eBook
Curieux et désireux d'en savoir plus sur le développement informatique offshore ?
Recevoir l'eBook