Accueil🇫🇷Chercher

Test d'intégration

Dans le monde du développement informatique, le test d'intégration est une phase de tests, précédée par les tests unitaires et généralement suivie par les tests de validation, vérifiant le bon fonctionnement d'une partie précise d'un logiciel ou d'une portion d'un programme (appelée « unité » ou « module ») ; dans le test d’intégration, chacun des modules indépendants du logiciel est assemblé et testé dans l’ensemble.

Objectif

L'objectif de chaque phase de test est de détecter les erreurs qui n'ont pas pu être détectées lors de la précédente phase.

Pour cela, le test d’intégration a pour cible de détecter les erreurs non détectables par le test unitaire[1].

Le test d’intégration permet également de vérifier l'aspect fonctionnel, les performances et la fiabilité du logiciel. L'intégration fait appel en général à un système de gestion de versions, et éventuellement à des programmes d'installation. Cela permet d'établir une nouvelle version, fondée soit sur une version de maintenance, soit sur une version de développement.

L'organisation d'un test d’intégration

Le but de l'organisation d'un test d’intégration est de définir la stratégie de l'activité de test d’intégration en termes d'ordre d’intégration, de test à réaliser, du matériel sur lequel seront lancés les tests, ainsi que les outils et la procédure employée[2].

Il est recommandé d'employer la procédure suivante pour l'organisation d'un test d’intégration.

  1. Introduction et organisation
    • prĂ©sentation du document
    • dĂ©crire l'organisation en termes de procĂ©dure Ă  suivre et les outils et matĂ©riels disponibles pour l'Ă©quipe d’intĂ©gration
  2. Stratégie
    • identifier le produit fini du test d’intĂ©gration
    • identifier les spĂ©cifications du test d'intĂ©gration qui doivent ĂŞtre produites
    • mettre en Ă©vidence l’intĂ©rĂŞt de chaque test
    • dĂ©finir l'ordre dans lequel les tests doivent ĂŞtre effectuĂ©s
  3. Contenu des spécifications du test d’intégration
    • pour chaque spĂ©cification mentionnĂ©e dans la stratĂ©gie, dĂ©finir l’assemblage inhĂ©rent aux tests et les attentes du design qui sont Ă  vĂ©rifier
    • identifier la configuration matĂ©rielle requise pour le test
    • lister les outils et logiciels de test
    • identifier les assemblages prĂ©cĂ©demment testĂ©s nĂ©cessaires au test.

Cette procédure est adaptée en fonction des besoins. Pour un système comprenant plusieurs sous-systèmes, la procédure no 3 (contenu des spécifications des tests d'intégration) sera usuellement effectuée pour chacun des sous-systèmes, par exemple.

Méthode d’approche de l’intégration

1 est le module principal (main), chaque module appelle les méthodes des modules inférieurs.

Il existe plusieurs méthodes pour les tests d’intégration dont voici les plus courants : Top-down, Bottom-up, Sandwich et Big-bang[3].

Pour une meilleure compréhension, ce schéma va être employé comme exemple pour chaque cas :

Top-down

On teste les modules les plus hauts puis ceux en dessous[4].

On obtient donc les tests de :

  • première Ă©tape
    • 1
  • seconde Ă©tape
    • 1, 2 et 3
  • troisième Ă©tape
    • 1, 2, 3, 4, 5 et 6
  • quatrième Ă©tape
    • 1, 2, 3, 4, 5, 6, 7, 8 et 9

Les avantages

  • Localisation des erreurs plus facile
  • NĂ©cessite peu de driver (ou Mock)
  • PossibilitĂ© d'obtenir un prototype rapidement
  • Plusieurs ordres de test/ implĂ©mentation(s) possible(s)
  • Les erreurs de conception majeures sont dĂ©tectĂ©es en premier dans les modules au plus haut niveau

Les désavantages

  • NĂ©cessite beaucoup de stubs (bouchon de test[5])
  • Des modules de bas niveau potentiellement rĂ©utilisables risquent d'ĂŞtre mal testĂ©s

Il convient de noter qu'il est parfois possible de vérifier un programme informatique, c'est-à-dire prouver, de manière plus ou moins automatique, qu'il assure certaines propriétés.

Bottom-up

On teste les modules du plus bas niveau puis ceux plus hauts qui les appellent[4]. On obtient donc :

  • première Ă©tape
    • 7
    • 8
    • 9
  • seconde Ă©tape
    • 4
    • 5, 7 et 8
    • 6 et 9
  • troisième Ă©tape
    • 2, 4, 5, 7 et 8
    • 3, 6 et 9
  • quatrième Ă©tape
    • 1, 2, 3, 4, 5, 6, 7, 8 et 9

Les avantages

  • Localisation facile des erreurs
  • Aucun besoin de stub
  • Les modules rĂ©utilisables sont testĂ©s correctement
  • Les tests peuvent se faire en parallèle avec le dĂ©veloppement

Les désavantages

  • NĂ©cessite des drivers
  • Les modules de haut niveau sont testĂ©s en dernier
  • Aucun squelette de système n'est conceptualisĂ©

Sandwich

On combine ici les intégrations Top-down et Bottom-up[6]. Il faut distinguer trois niveaux :

  • Niveau logique (haut) ;
  • Niveau cible (milieu) ;
  • Niveau opĂ©rationnel (bas).

On teste en même temps les modules de haut et bas niveau, puis on avance vers le centre, méthode réunissant les avantages des deux précédentes.

  • première Ă©tape
    • 1
    • 7 et 8
    • 9
  • seconde Ă©tape
    • 1, 2 et 3
    • 5, 7 et 8
    • 6 et 9
    • 4
  • troisième Ă©tape
    • 1, 2, 3, 4, 5 et 6
    • 2, 4, 5, 7 et 8
    • 3, 6 et 9
  • quatrième Ă©tape
    • 1, 2, 3, 4, 5, 6, 7, 8 et 9

Les avantages

  • Les niveaux haut et bas peuvent ĂŞtre testĂ©s en parallèle
  • Diminuer les besoins en driver et en stub.

Les désavantages

  • Plus complexe Ă  planifier
  • Le niveau cible peut ĂŞtre difficile Ă  dĂ©finir

Big-bang

Il s’agit d'une intégration non incrémentale[7]. On intègre tous les modules d'un coup juste après les tests unitaires.

Les avantages

  • Convient aux petits systèmes
  • Gain de temps

Les désavantages

  • Besoin de driver et de stub pour chaque module
  • Ne permet pas le dĂ©veloppement en parallèle
  • Rend la localisation des erreurs difficile
  • Les erreurs d'interface peuvent facilement passer inaperçues

Outils utilisés

Pour les applications utilisant les nouvelles technologies et donc des ateliers de génie logiciel (Eclipse - Visual Studio - JBuilder - JDeveloper…), les tests d’intégration ont évolué vers de l’intégration continue.

L’intégration continue est la fusion des tests unitaires et des tests d’intégration, car le programmeur détient toute l’application sur son poste et peut donc faire de l’intégration tout au long de son développement.

Notes et références

  1. Paul C. Jorgensen & Carl Erickson, Object-oriented integration testing, p. 31, Communications of the ACM, septembre 1994.
  2. (en) Martyn A Ould et Charles Unwin (ed), Testing in Software Development, BCS, , 73-74 p. (lire en ligne).
  3. G. J. Myers, Software Reliability: Principles and Practices, New York: Wiley-Interscience, 1976.
  4. (en) « Integration Testing | Visual Studio .NET 2003 ».
  5. Benoit Baudry, Test d’intégration, p. 12 [PDF].
  6. (en) Armin B. Cremers, Sascha Alda et Tobias Rho (fondé sur Bruegge et Dutoit), « Object-Oriented Software Construction, p. 15 » (version du 3 mars 2016 sur Internet Archive) [PDF].
  7. (en) Anand Ramdeo, Big Bang Integration Testing, 5 mai 2011.
Cet article est issu de wikipedia. Text licence: CC BY-SA 4.0, Des conditions supplémentaires peuvent s’appliquer aux fichiers multimédias.