Qu'est-ce que le test d'interface ? Types et exemple

โšก Rรฉsumรฉ intelligent

Les tests d'interface vรฉrifient que deux systรจmes logiciels connectรฉs รฉchangent correctement des donnรฉes. Ils couvrent les liaisons entre le serveur web, le serveur d'applications et le serveur de base de donnรฉes qui acheminent chaque requรชte d'une application, ainsi que la gestion des erreurs associรฉes.

  • ๐Ÿ”— Dรฉfinition: Une interface est toute connexion โ€” une API, un service web ou une file d'attente de messages โ€” qui relie deux composants.
  • ๐Ÿงญ Deux segments : Les tests ciblent la liaison entre le serveur web et le serveur d'applications, ainsi que la liaison entre le serveur d'applications et le serveur de base de donnรฉes.
  • ๐Ÿ“„ Exemple concret : Les donnรฉes d'entrรฉe XML et de sortie JSON sont validรฉes par rapport ร  leurs spรฉcifications de format publiรฉes.
  • ๐Ÿงช Types de tests: Flux de travail, cas limites, performances et charge, ainsi que chaque systรจme individuel testรฉ isolรฉment.
  • ๏ธ Outillage: Les clients API et la virtualisation des services permettent de gรฉrer les requรชtes lorsqu'il n'existe aucune interface utilisateur sur laquelle cliquer.
  • ๐Ÿ” Limites du pรฉrimรจtre : Les tests d'interface sont un sous-type de tests d'intรฉgration axรฉs sur la connexion.traclui-mรชme.

Tests d'interface entre serveur web, serveur d'applications et serveur de base de donnรฉes

Quโ€™est-ce que le test dโ€™interface ?

Test d'interface est dรฉfini comme un type de test logiciel qui vรฉrifie si la communication entre deux systรจmes logiciels diffรฉrents est effectuรฉe correctement.

Une connexion qui intรจgre deux composants est appelรฉe interface. Dans le monde informatique, cette interface peut prendre diverses formes, comme des API, des services web, etc. Tester ces services de connexion ou interfaces est appelรฉ test d'interface.

Une interface est en fait un logiciel composรฉ d'ensembles de commandes, de messages et d'autres attributs permettant la communication entre un appareil et un utilisateur.

Le point important est qu'une interface a un contract : un format de requรชte convenu, un format de rรฉponse convenu, un ensemble convenu de codes d'erreur et un dรฉlai d'attente convenu. Exercices de test d'interface qui contracde part et d'autre, une modification apportรฉe par une รฉquipe n'affecte pas silencieusement l'autre. Comme la majeure partie de ce trafic n'atteint jamais un รฉcran, les dรฉfauts dรฉtectรฉs sont invisibles pour l'utilisateur. test de la boรฎte noire effectuรฉ uniquement via l'interface utilisateur.

Comment faire des tests d'interface

Les tests d'interface comprennent les tests de deux segments principaux :

  1. Interface du serveur Web et du serveur d'applications
  2. Interface du serveur d'applications et du serveur de base de donnรฉes.

Pour les scรฉnarios mentionnรฉs ci-dessus, les tests d'interface sont effectuรฉs pour

  • Vรฉrifier que les serveurs sont exรฉcutรฉs correctement ou non
  • Les erreurs sont gรฉrรฉes correctement ou renvoient un message d'erreur pour toute requรชte effectuรฉe par une application
  • Vรฉrifiez les rรฉsultats lorsque la connexion ร  un serveur Web est rรฉinitialisรฉe entre les deux

Le schรฉma ci-dessous reprรฉsente ces deux segments comme une seule chaรฎne, le navigateur communiquant avec le serveur web, le serveur web communiquant avec le serveur d'applications et le serveur d'applications communiquant avec le serveur de base de donnรฉes.

Tests d'interface sur la chaรฎne serveur web, serveur d'applications et serveur de base de donnรฉes

En pratique, un testeur parcourt cette chaรฎne รฉtape par รฉtape. Chaque รฉtape est d'abord testรฉe avec une requรชte valide, puis avec une requรชte malformรฉe, et enfin avec l'extrรฉmitรฉ distante dรฉlibรฉrรฉment indisponible, de sorte que le chemin de rรฉussite et le chemin d'รฉchec soient enregistrรฉs de la mรชme maniรจre. cas de test.

Exemple de test d'interface

Supposons que pour toute application xyz, l'interface prenne XML fichier en entrรฉe et fournit JSON Le fichier de sortie est requis. Pour tester l'interface de cette application, seules les spรฉcifications des formats de fichiers XML et JSON sont nรฉcessaires.

Grรขce ร  ces spรฉcifications, nous pouvons crรฉer des exemples de fichiers XML d'entrรฉe et les intรฉgrer ร  l'interface. La validation des fichiers d'entrรฉe (XML) et de sortie (JSON) par rapport aux exigences constitue ensuite un test d'interface.

Remarquez ce dont cet exemple n'a pas besoin : ni รฉcran, ni interface utilisateur, ni connaissance du code interne. Deux spรฉcifications de format suffisent pour รฉcrire les tests ; c'est pourquoi les tests d'interface peuvent commencer bien avant mรชme que l'interface utilisateur ne soit disponible.

Pourquoi faire des tests d'interface

Les tests d'interface sont effectuรฉs

  • Pour garantir que les utilisateurs finaux ou le client ne rencontrent aucun problรจme lors de l'utilisation d'un produit logiciel particulier
  • Identifier les domaines d'application habituellement consultรฉs par les utilisateurs finaux et vรฉrifier รฉgalement leur convivialitรฉ.
  • Pour vรฉrifier les exigences de sรฉcuritรฉ pendant que la communication se propage entre les systรจmes
  • Pour vรฉrifier si une solution est capable de gรฉrer les pannes de rรฉseau entre un serveur d'applications et un site Web

Il y a aussi la question du coรปt. Corriger un dรฉfaut de format de requรชte est peu coรปteux tant que les deux systรจmes sont en cours de connexion, mais onรฉreux une fois que le systรจme en aval a dรฉjร  stockรฉ les donnรฉes malformรฉes.

Types de tests d'interface

Pendant les tests d'interface, divers types de tests sont effectuรฉs sur l'interface, qui peuvent inclure

  • Workflow: Il garantit que le moteur d'interface gรจre vos flux de travail standard comme prรฉvu.
  • Cas limites - valeurs inattendues : Ceci est pris en compte lors des tests incluant la date, le mois et le jour inversรฉs.
  • Tests de performance, de charge et de rรฉseau : Une interface ร  haut volume peut nรฉcessiter davantage test de charge qu'une interface ร  faible volume, en fonction du moteur d'interface et de l'infrastructure de connectivitรฉ
  • Systรจmes individuels : Cela inclut le test de chaque systรจme individuellement. Par exemple, le systรจme de facturation et le systรจme de gestion des stocks du magasin de dรฉtail devraient pouvoir fonctionner sรฉparรฉment.

Le premier รฉlรฉment est assez proche de tests de flux de travail rรฉutiliser ses scรฉnarios, et le dernier รฉlรฉment recoupe avec test de modulecar un systรจme qui tombe en panne de lui-mรชme tombera de nouveau en panne une fois connectรฉ.

Stratรฉgie de test d'interface

La stratรฉgie de test d'interface est une mรฉthode utilisรฉe pour tester les interfaces avec des tests communs, indรฉpendamment de leur implรฉmentation. Nous pouvons utiliser des tests absolus.tracCrรฉez des cas de test et des instances concrรจtes pour chaque implรฉmentation de la stratรฉgie de test d'interface. La base/abstracLes cas de test t effectuent des tests indรฉpendants de l'implรฉmentation, tandis que les tests concrets prennent en charge l'instanciation des objets ร  tester et effectuent des tests spรฉcifiques ร  l'implรฉmentation.

L'avantage de cette structure est la rรฉutilisation. Lorsqu'une troisiรจme implรฉmentation de la mรชme interface apparaรฎt, l'abstracLa suite t s'exรฉcute sans modification, et seul le code d'instanciation doit รชtre รฉcrit. La mรชme idรฉe est appliquรฉe ร  plus grande รฉchelle dans test de composants, oรน un contrat partagรฉtract suite est exรฉcutรฉ sur chaque composant qui prรฉtend le satisfaire.

Outils de test d'interface

Puisqu'une interface n'a pas d'รฉcran, les outils doivent construire directement les requรชtes et traiter les rรฉponses brutes. Les รฉquipes combinent gรฉnรฉralement trois catรฉgories d'outils.

  • Clients API et gรฉnรฉrateurs de requรชtes : Des outils tels que Postman, SoapUIInsomnia et Hoppscotch envoient des requรชtes REST, SOAP ou GraphQL, les stockent sous forme de collections rรฉutilisables et vรฉrifient les codes d'รฉtat, les en-tรชtes et les corps de rรฉponse.
  • Code- bibliothรจques de test de niveau : Les bibliothรจques qui s'exรฉcutent au sein de la suite de tests existante permettent aux vรฉrifications d'interface de coexister avec les tests unitaires et de s'exรฉcuter ร  chaque compilation, ce qui les empรชche de devenir obsolรจtes.
  • Outils de chargement et de protocole : Un outil tel que JMeter pilote la mรชme interface ร  volume รฉlevรฉ, ce qui transforme un contrรดle fonctionnel en Test de performance de la connexion.
  • Virtualisation des services et simulations : Un cรขble de test faisant office d'extrรฉmitรฉ permet de tester un cรดtรฉ pendant que l'autre est indisponible, inachevรฉ ou trop coรปteux ร  appeler ร  plusieurs reprises.

Le choix du client importe moins que la couverture. Quel que soit le client choisi, l'ensemble des requรชtes doit รชtre stockรฉ dans un systรจme de contrรดle de version avec le code, afin qu'une modification de l'interface et une modification de ses tests soient incluses dans le mรชme commit. Les dรฉtails de cette catรฉgorie plus large sont traitรฉs dans [rรฉfรฉrence manquante]. Test d'API.

Liste de contrรดle et meilleures pratiques pour les tests d'interface

Une courte liste de vรฉrification permet de garantir une couverture d'interface cohรฉrente entre les versions. Il convient de la suivre pour chaque connexion plutรดt que pour l'application dans son ensemble.

  • Avectract premier : Vรฉrifiez que les schรฉmas de requรชte et de rรฉponse correspondent ร  la spรฉcification publiรฉe, champ par champ, y compris les types de donnรฉes et les champs optionnels.
  • Valeurs limites : Envoyer des charges utiles vides, des champs de longueur maximale, des jeux de caractรจres inattendus et des formats de date inversรฉs.
  • Chemins d'erreur : Vรฉrifiez que chaque รฉchec renvoie un code et un message explicites plutรดt qu'une pile d'erreurs. trace ou un succรจs silencieux.
  • Dรฉlais d'attente et nouvelles tentatives : Interrompre la connexion en cours de requรชte et vรฉrifier que l'appelant rรฉessaie en toute sรฉcuritรฉ sans dupliquer la transaction.
  • Sรฉcuritรฉ : Vรฉrifiez l'authentification, l'autorisation et le chiffrement du lien, et assurez-vous que les messages d'erreur ne divulguent pas d'informations internes.
  • La cohรฉrence des donnรฉes: Relisez l'enregistrement depuis l'autre cรดtรฉ et vรฉrifiez qu'aucun รฉlรฉment n'a รฉtรฉ tronquรฉ, rรฉencodรฉ ou rรฉorganisรฉ pendant le transport.
  • Volume: Rรฉpรฉtez l'appel le plus sollicitรฉ en cas de charge simultanรฉe et surveillez l'รฉpuisement du pool de connexions.

Trois pratiques permettent de garantir la reproductibilitรฉ de cette liste de contrรดle. Premiรจrement, automatisez la suite de tests et exรฉcutez-la ร  chaque compilation, car les interfaces รฉvoluent plus discrรจtement que les รฉcrans. Deuxiรจmement, consignez l'intรฉgralitรฉ de la requรชte et de la rรฉponse pour chaque รฉchec, car un dรฉfaut d'interface est quasiment impossible ร  reproduire ร  partir d'une capture d'รฉcran. Troisiรจmement, assurez-vous que la suite de tests soit indรฉpendante des donnรฉes de test crรฉรฉes par d'autres suites, afin qu'un รฉchec pointe vers l'interface et non vers un enregistrement manquant.

Ces contrรดles s'inscrivent naturellement dans le plan plus large dรฉcrit dans types de tests logicielset elles s'exรฉcutent avant que les mรชmes connexions ne soient exercรฉes de bout en bout pendant test du systรจme.

Tests d'interface et tests d'intรฉgration

Ces deux termes sont liรฉs plutรดt qu'opposรฉs : les tests d'interface dรฉsignent la partie du travail d'intรฉgration qui se concentre sur la connexion elle-mรชme. Le tableau ci-dessous met en รฉvidence les points communs et les diffรฉrences.

Test d'interface Test d'intรฉgration
Un type de test d'intรฉgration qui consiste ร  tester les interfaces entre les composants ou les systรจmes Tests effectuรฉs pour exposer les dรฉfauts dans les interfaces et dans les interactions entre composants ou systรจmes intรฉgrรฉs.
La concentration est le point faibletract โ€” format de requรชte, format de rรฉponse, codes d'erreur et dรฉlais d'attente Le focus est le comportement combinรฉ des composants une fois qu'ils sont assemblรฉs.
Peut รชtre exรฉcutรฉ dรจs que la spรฉcification existe, l'extrรฉmitรฉ distante รฉtant stubรฉe. Nรฉcessite que les composants participants soient construits et dรฉployรฉs ensemble.
Une dรฉfaillance indique un point de connexion Une dรฉfaillance peut indiquer n'importe quel composant du groupe assemblรฉ.

Toute personne dรฉcouvrant cette discipline plus vaste trouvera les niveaux environnants dรฉcrits dans test d'intรฉgration et en gรฉnรฉral test logiciel Dans l'introduction, la terminologie utilisรฉe ci-dessus provient de la norme. gรฉnie logiciel En pratique, pour les systรจmes accessibles via un navigateur, les mรชmes connexions sont finalement rรฉutilisรฉes lors de la phase d'entraรฎnement. tests d'applications Web.

FAQ

Gรฉnรฉralement, ce sont les ingรฉnieurs QA responsables de l'intรฉgration qui travaillent avec les dรฉveloppeurs des deux systรจmes. Pour les produits ร  forte composante de services, un testeur d'API dรฉdiรฉ prend le relais, car ce travail requiert des compรฉtences en construction de requรชtes plutรดt qu'en navigation web.

Absence de rรฉsultats visibles ร  inspecter, points de terminaison tiers non librement accessibles, donnรฉes de test devant exister des deux cรดtรฉs et spรฉcifications susceptibles d'รฉvoluer sans prรฉavis : les stubs et les collections de requรชtes versionnรฉes permettent de rรฉduire la plupart de ces problรจmes.

Ils se recoupent largement. Une API est un type d'interface, donc Test d'API Les tests d'interface sont-ils appliquรฉs ร  cette technologie spรฉcifique ? Ils couvrent รฉgalement les dรฉpรดts de fichiers, les files d'attente de messages et les liaisons de base de donnรฉes qui ne comportent pas d'API.

Non. Le nom est le mรชme, mais la cible est diffรฉrente. Les tests d'interface vรฉrifient les connexions entre systรจmes ; les tests d'interface utilisateur vรฉrifient les รฉcrans, les commandes et la mise en page. Confondre les deux revient ร  ne pas tester les connexions cรดtรฉ serveur.

Dรจs que les spรฉcifications de requรชte et de rรฉponse sont validรฉes, gรฉnรฉralement avant la finalisation de l'un ou l'autre systรจme, le test du cรดtรฉ distant permet une exรฉcution anticipรฉe de la suite de tests. Cette mรชme suite est ensuite rรฉutilisรฉe une fois les deux systรจmes opรฉrationnels.

La proportion de points de terminaison documentรฉs avec au moins un test positif et un test nรฉgatif, la proportion de codes d'erreur dรฉclarรฉs effectivement dรฉclenchรฉs et le nombre de dรฉfauts d'interface escaping aux phases ultรฉrieures. Les rรฉsultats bruts des tests ne prouvent pas grand-chose.

L'apprentissage automatique analyse un schรฉma et gรฉnรจre des limites et des charges utiles nรฉgatives qu'un humain ignorerait, puis regroupe les rรฉponses erronรฉes afin d'รฉviter qu'une mรชme cause racine ne soit signalรฉe huit fois. Il signale รฉgalement les modifications de schรฉma auxquelles les requรชtes existantes ne correspondent plus.

Oui. ร€ partir d'un schรฉma ou d'un exemple de charge utile, il gรฉnรจre rapidement des constructeurs de requรชtes, des assertions et des rรฉponses factices. La spรฉcification doit toutefois รชtre fournie par un humain, car la validitรฉ d'une assertion gรฉnรฉrรฉe dรฉpend de la validitรฉ de la configuration.tract derriรจre รงa.

Rรฉsumez cet article avec :