6 bonnes pratiques pour vos tests d’Intégration Continue
De quelle façon les tests d’intégration s’intègrent-ils dans un environnement d’Intégration Continue ? Comment fonctionnent-ils dans ce contexte où le code est constamment restructuré et développé avec de nouvelles fonctionnalités.
L’objectif de cet article est de vous apporter la vision des meilleurs experts concernant les bonnes pratiques à mettre en place.
De quoi parle-t-on ? Test unitaire, test d’intégration, test de validation
Dans le domaine des suites de test du développement informatique, viennent d’abord les tests unitaires, suivis par les tests d’intégration puis arrivent enfin les tests de validation.
- Test unitaire : ce test est dédié à la vérification du bon fonctionnement d’une portion d’un logiciel autrement dit d’un bout de code.
- Test d’intégration : les modules et bouts de code sont combinés et testés dans leur ensemble.
- Test de validation : l’objectif de cette étape est d’aller vérifier que les exigences listées dans les spécifications fonctionnelles détaillées du logiciel ont bien été respectées. Et surtout que les fonctionnalités de la solution informatique répondent parfaitement à des scénarios utilisateurs précis.
Comment fonctionnent les tests d’intégration avec l’Intégration Continue et DevOps ?
Quand votre équipe de développeurs travaille dans un environnement agile, chaque bout de code développé déclenche le cycle de 3 types de tests susnommés: unitaire, intégration, validation. Dans un environnement agile, la délimitation des phases est plus floue. A quel moment précis les tests d’intégration vont ils alors s’activer ?
Stratégie à suivre pour vos tests d’intégration
- Lancez tous les tests unitaires,
- Ne démarrez les tests d’intégration qu’une fois tous les tests unitaires exécutés avec succès,
- Exécutez les tests d’intégration jusqu’à ce que quelque chose échoue,
- Au fur et à mesure de l’exécution des tests, déterminez ce qui doit être ajouté ou modifié,
- Réitérez le processus jusqu’à ce que tous les tests soient passés de bout en bout.
Passons à la description des bonnes pratiques qui vous permettront de réaliser ces tests de la façon la plus optimale possible.
6 bonnes pratiques d’Intégration Continue
Les pratiques suivantes vont vous aider à atteindre un processus d’Intégration Continue plus fluide.
#1. Effectuez les tests d’intégration avant les tests unitaires
Pour la majorité d’entre nous cette idée n’est pas logique. Nous savons que, plus tardivement nous décelons un défaut dans un logiciel plus il sera coûteux de le réparer. La logique voudrait que nous essayons de peaufiner au maximum tous les détails avant de passer aux « grandes manoeuvres », à savoir aux « tests d’intégration ». Cette façon de penser, convient parfaitement au cycle de développement en V, autrement appelé cycle de développement en cascade.
Pour une équipe qui développe des produits informatiques sous le mode Agile, cette idée perd de son intérêt. Avec l’agilité, vous avez la flexibilité de modifier la logique métier au fur et à mesure du développement logiciel incrémental de votre produit.
#2.Ne testez pas la logique métier de votre logiciel avec les tests d’intégration
C’est le rôle des tests unitaires d’aller tester la logique métier de votre application web. Des tests unitaires non pertinents suivis de tests d’intégration peuvent avoir des conséquences néfastes sur le temps nécessaire pour exécuter la suite de tests. Les tests unitaires sont généralement très rapides. Il sont déployés en premier à chaque lancement de suite de test dans un environnement d’intégration continue.
Les tests unitaires ont pour mission de cibler l’exactitude de base du code. Exécuter fréquemment des tests unitaires est essentiel pour détecter rapidement des bugs dans la logique métier du logiciel en développement. Ainsi le développeur à l’origine peut intervenir rapidement pour le corriger, plus le développeur intervient tôt pour corriger et fixer le bug plus ce sera simple pour lui et moins cela lui prendra de temps que si le bug était découvert plus tardivement.
Les tests d’intégration quant à eux mettent beaucoup de temps à s’exécuter. Il ne faut donc pas inclure les tests d’intégration dans chaque cycle de suite de test. Ils doivent plutôt être envisagés dans une approche plus quotidienne, moins répétitive et répondant à des objectifs précis.
#3. Bien comprendre pourquoi les tests d’intégration sont différents des tests unitaires
De nombreux signes permettent de faire la distinction entre ces deux types de test.
- Encapsulation : Les tests unitaires sont encapsulés et n’utilisent pas de ressources externes. Les tests d’intégration quant à eux font appel à des composants ou des infrastructures supplémentaires tels que le réseau, la base de données, le système de fichier etc.
- Complexité : Les tests unitaires ciblent des petites parties du code. Ils sont donc généralement simple à écrire. Les tests d’intégration sont plus complexes à écrire, ils nécessitent des outils et la mise en place de différentes infrastructures.
- Echec du test : Quand un test unitaire échoue, cela signifie qu’il y a clairement un bug dans la logique métier du code. Tandis que lorsqu’un test d’intégration échoue, il n’est normalement pas nécessaire que vous alliez examiner le code qui implémente la logique métier. C’est le rôle des tests unitaires d’éliminer les bugs au niveau de la logique métier du code. Un test d’intégration qui échoue peut probablement signifier qu’il y a eu un changement dans l’environnement et qu’il faut y remédier.
#4. Séparez bien les suites de test
Comme dit précédemment, n’exécutez pas les tests unitaires en même temps que les tests d’intégration. Les développeurs doivent être en mesure d’exécuter les tests unitaires et d’obtenir un retour quasi immédiat pour s’assurer qu’ils n’ont rien cassé avant de valider le code. Si leur suite de tests prend trop de temps et qu’ils ne peuvent pas se permettre d’attendre la fin avant de valider leur code, ils risquent de ne plus exécuter l’ensemble des test unitaires et d’intégration. En outre, cela signifie aussi que les tests unitaires ne sont pas correctement gérés et la mise à jour de la suite de tests peut alors entraîner des retards réels dans la livraison.
En séparant vos suites de tests, les développeurs sont alors beaucoup plus libres d’exécuter des tests unitaires rapides avant de valider le code. Les tests d’intégration peuvent alors être exécutés beaucoup moins fréquemment car ils sont plus fastidieux et plus long à mettre en place. Séparer les deux types de test est vraiment bénéfique pour l’efficacité de l’équipe de développement.
#5. Effectuez régulièrement une revue des logs
Le test unitaire a un objectif très précis à atteindre. En cas d’échec, il est généralement facile de comprendre pourquoi et de résoudre le problème sans trop d’encombres. Les tests d’intégration sont de plus grande envergure et peuvent concerner plusieurs modules du logiciel sans parler des différents composants matériels. Par conséquent, si un test d’intégration échoue, il est beaucoup plus difficile d’en identifier la cause.
Faire une revue des logs régulièrement, est le meilleur moyen d’identifier une panne et de trouver rapidement le problème sous-jacent.
#6. Ne vous cantonnez pas seulement aux tests d’intégration
Les tests d’intégration ne se limitent pas seulement à la manière dont vos modules logiciels communiquent les uns avec les autres, ni même dans leur communication avec d’autres systèmes extérieurs. Il faut voir au delà de tout cela. Votre logiciel va être déployé dans un écosystème complet de production qui dispose de ses propres outils de virtualisation, base de données, serveurs de messagerie, équilibreur de charges, serveur DNS, serveurs proxy etc.
Le déploiement de votre logiciel dans son environnement a autant d’importance que votre logiciel lui-même, si cette étape n’est pas correctement orchestré, votre logiciel n’a aucune raison d’être. Vous devez penser à cibler les composants de votre environnement de production.
Exécutez vos suites de test dans des environnements reproduisant votre environnement de production. Les tests d’intégration vous permettront de valider votre architecture de haut niveau.
Intégrez l’Intégration Continue dans vos projets avec Bocasay
Grace à l’offre Bocasay expert en développement informatique, vous bénéficiez d’un suivi complet sur l’ensemble du cycle de vie de votre projet informatique :
- Conseil et avant vente sur votre projet informatique (développement front-end, back-end et full stack),
- Qualification technico-fonctionnelle de votre projet IT,
- Conseil et orientation sur l’implémentation des technologies adéquates à la réalisation de votre projet et à la gestion de projet à mettre en oeuvre,
- Sélection des meilleurs profils dans nos centres de développement de logiciel à Madagascar, au Vietnam, ou à Maurice,
- Réunion de pré-lancement de démarrage de votre équipe dans un environnement incluant l’Agilité (Scrum) et l’Intégration Continue,
- Découvrez nos tarifs et contactez-nous pour discuter votre projet !
Source : Wikipedia; techbeacon.com