Découvrez comment la solution Parasoft Continuous Quality permet de contrôler et de gérer les environnements de test pour fournir des logiciels de haute qualité en toute confiance. Inscrivez-vous pour la démo >>

BLOG

Qu'est-ce que GraphQL et comment le tester?

Qu'est-ce que GraphQL et comment le tester? Temps de lecture : 6 minutes
Tester les points de terminaison GraphQL est aussi nécessaire que tout autre test de point de terminaison et les tests automatisés sont là pour donner un coup de main. En savoir plus sur la façon de tester les points de terminaison GraphQL avec l'automatisation des tests ci-dessous!

GraphQL est un langage de requête pour les API qui a débuté chez Facebook avant d'être open-source en 2016. La simplification des requêtes et des réponses fournies par GraphQL provient de l'utilisation dans les applications mobiles, mais il présente une utilité générale pour simplifier l'utilisation d'API complexes tout en réduisant les quantité de données renvoyées.

Qu'est-ce que GraphQL?

Lorsque le projet GraphQL a été créé à l'origine, il a été conçu pour résoudre un problème spécifique. En 2011, alors que la plupart des utilisateurs s'interfaçaient avec des applications à partir de leurs navigateurs, nous avons commencé à voir une forte migration des serveurs Web vers les mobiles. En particulier dans le cas de Facebook, cela nécessitait d'appeler plusieurs API à partir de plusieurs emplacements différents dans l'application. Selon ce que le scénario essayait de réaliser, ces API fourniraient trop ou trop peu d'informations. Donc, pour résoudre ce défi, la prochaine chose que Facebook a faite a été d'essayer de créer un moyen de simplifier la livraison des informations et de réduire le trafic total nécessaire pour accomplir leurs scénarios.

Cela a donné naissance à GraphQL. La technologie a été à l'origine entièrement utilisée par l'équipe mobile iOS de Facebook, puis a proliféré dans le reste des interfaces mobiles. Bientôt, la grande majorité de toutes les interactions mobiles exploitaient leurs API GraphQL. En 2015, Facebook a annoncé la mise en œuvre, le monde a vu les avantages de l'utilisation de la technologie et une adoption rapide s'est ensuivie.

Comment tester les implémentations d'API GraphQL?

GraphQL est une couche d'abstraction qui existe entre les systèmes frontaux et les API backend, ce qui rend essentiel les tests. Les requêtes GraphQL vous permettent d'accéder à plusieurs ressources dans le backend et d'agréger ces données en une seule réponse significative.

Capture d'écran de GraphQL montrant des échantillons de code de données de description, demandez ce que vous voulez, obtenez des résultats prévisibles.

Les API backend sont généralement granulaires car nous voulons créer de nouveaux blocs de construction réutilisables pour nos applications; cependant, cela ne se traduit pas directement par nos user stories ou par les actions que nous voulons pouvoir accomplir depuis le front-end. GraphQL est un moyen de simplifier les interactions avec vos données backend, en utilisant une interface dont les schémas décrivent le comportement du système afin que vous puissiez obtenir des données efficaces de vos API.

Chacune des correspondances du schéma GraphQL aux fonctions. Ces fonctions effectueront ensuite des appels ultérieurs au backend, selon votre logique métier, sur vos API REST, vos bases de données et toute autre ressource nécessaire pour collecter les données demandées.

Les fonctions assembleront ensuite les données nécessaires dans une réponse qui conservera la même forme que la demande, ce qui permettra de comprendre très facilement quelles données sont associées à quels éléments de la demande.

Demandez ce dont vous avez besoin,
obtenez exactement cela - graphql.org

De plus, GraphQL peut être configuré pour appeler plusieurs services de backend au fur et à mesure qu'il assemble sa réponse à la requête. Cela réduit le temps total dont un consommateur a besoin pour naviguer dans les documents d'API pour comprendre et lire les informations disponibles à partir d'un appel.

GraphQL et API REST traditionnelles

GraphQL peut offrir de nombreux avantages par rapport aux interfaces API REST traditionnelles. Comme la plupart des implémentations technologiques, il n'y a pas de solution miracle ou une pile technologique meilleure qu'une autre. Mais l'une des raisons pour lesquelles GraphQL gagne du terrain est sa flexibilité dans la récupération des informations.

Lorsque vous utilisez une API REST traditionnelle, l'appel que vous souhaitez effectuer pour récupérer vos informations n'est généralement pas le seul que vous effectuez dans le système. Par exemple, si je souhaite récupérer le solde de mon compte, la première chose à faire est de récupérer mon numéro de client, puis d'utiliser ce numéro de client pour récupérer mes numéros de compte. Une fois que j'ai mes numéros de compte, je peux alors faire une requête sur le solde de ce compte:

  1. Connexion = identifiant client
  2. CustomerId = ID de compte
  3. AccountID = Solde

Il n'y a rien de mal avec les API REST. Ce sont simplement eux qui travaillent pour nous permettre de construire des actions discrètes qui peuvent être exploitées de nombreuses manières différentes. Mais dans ce cas particulier, afin de récupérer les informations que je souhaitais, j'ai dû passer des appels avec une séquence de trois API enchaînées. De plus, si nous réfléchissons au volume de données échangées dans cette interaction pour chacun de ces appels d'API, nous devions envoyer la requête appropriée et recevoir une réponse complète définie par le schéma. Dans notre cas, je n'avais vraiment besoin de traiter que les trois valeurs de l'ID client, de l'ID de compte et du solde.

Voyons donc comment cette transaction se déroulerait dans le monde GraphQL:

mettre en doute {
Client (nom: "Chris Colosimo") {
    identifiant de compte{
        Balance
  }
 }
}

Si vous êtes un utilisateur chevronné de GraphQL, veuillez prendre cette demande avec un grain de sel. Je l'utilise pour illustrer que ce qui serait traditionnellement accompli avec trois appels d'API peut être accompli avec un en utilisant GraphQL. La meilleure partie est qu'il ne nécessite pas de réimplémentation de vos fonctionnalités existantes.

Il existe de nombreux autres avantages et inconvénients entre REST et GraphQL, mais il est important de noter que les API GraphQL et REST ne s'excluent pas mutuellement et que l'adoption de l'une n'exclut pas l'autre. En fait, les deux fonctionnent assez harmonieusement ensemble. Que vous fassiez des tests d'API, des tests GraphQL ou des tests de charge. GraphQL est quelque chose qui doit toujours être pris en compte lorsque vous envisagez d'ajouter à vos ressources frontales.

En théorie: vous devez utiliser GraphQL lorsque vous souhaitez créer une interface simple et efficace pour les consommateurs qui souhaitent exploiter vos API. De plus, vous pouvez envisager de tirer parti de GraphQL lorsque vous souhaitez réduire le trafic total échangé entre votre frontend et le backend, comme Facebook l'a fait pour le trafic mobile.

Test automatisé des points de terminaison GraphQL

GraphQL est une technologie très puissante qui permettra à vos consommateurs d'API d'accéder à leurs informations de manière plus efficace, mais afin de vous assurer que l'expérience fonctionne comme vous le souhaitez, vous devez valider vos API GraphQL. C'est là qu'intervient l'automatisation des tests.

Il existe de nombreux outils d'automatisation pour décider comment tester vos API GraphQL. Je vais vous donner un exemple utilisant Parasoft SOAtest, une solution de test d'API largement utilisée qui simplifie le défi souvent intimidant de valider vos API critiques sur plusieurs technologies. Il prend en charge une large gamme de formats de message et protocoles et prend en charge GraphQL depuis un certain temps maintenant.

Découvrez la principale solution de test fonctionnel d'API et d'interface utilisateur optimisée par l'IA et le ML en action.
Essayez Parasoft SOAtest maintenant

Les points de terminaison GraphQL acceptent les requêtes (sous forme de chaînes) et retournent des réponses JSON avec les résultats de la requête. Cela correspond parfaitement à SOAtest, car les requêtes peuvent être effectuées par les clients REST pour envoyer les requêtes et la validation peut être effectuée par les outils de vérification JSON existants.

Considérez l'exemple simple de requête GraphQL suivant:

mettre en doute {
   utilisateurs{
      Prénom
      nom de famille
      }
   }

Un retour attendu serait quelque chose comme:

{
   "Les données" : {
      "utilisateurs" : [
         {
            «Firstname»: «John»,
            "Lastname": "Doe"
         },
         {
            «Prénom»: «Alicia»,
            «Nom de famille»: «Smith»
         }
      ]
   }
}

Cette même requête peut être créée dans Parasoft SOAtest en tant que client REST:

Capture d'écran de la création d'une requête dans Parasoft SOAtest en tant que client REST.

Dans SOAtest, les requêtes GraphQL sont envoyées sous forme de chaîne nommée «query». Les réponses sont renvoyées dans JSON que SOAtest est facilement capable d'interpréter et de représenter dans son visualiseur de trafic:

Capture d'écran de Parasoft SOAtest Traffic Viewer.

Les valeurs renvoyées sont attendues. De toute évidence, nous avons besoin d'un moyen automatisé pour vérifier ces résultats et l'asserteur SOAtest JSON est utile ici.

Vérification des réponses GraphQL

SOAtest vérifie les réponses JSON à l'aide d'assertions configurées avec son outil d'asserteur JSON. Voici un exemple de vérification pour voir si le prénom renvoyé est une chaîne «Luis» (dont nous savons que ce n'est pas une valeur valide.)

Capture d'écran montrant SOAtest vérifiant les réponses JSON à l'aide d'assertions.

En exécutant à nouveau le test, le test échoue:

Capture d'écran de l'onglet Tâches qualité montrant l'échec du test.

Comme vous pouvez le voir, il est simple de tester les points de terminaison GraphQL dans SOAtest en utilisant des fonctionnalités déjà existantes.

Qu'en est-il de l'authentification? Ceci est déjà géré par SOAtest et les outils d'authentification client existants fonctionneront également avec les points de terminaison GraphQL:

Capture d'écran des options HTTP.

Pourquoi Parasoft SOAtest pour les tests GraphQL?

Les avantages que SOAtest apporte aux tests REST, SOAP et autres API restent les mêmes pour GraphQL. Conçu pour s'intégrer dans une infrastructure de test existante, Parasoft SOAtest accélère les tests qui permettent un développement agile en aidant les testeurs à travailler plus intelligemment, avec des tests sans script qui facilitent la collaboration entre les équipes de développement, de test, de performance et de sécurité.

Parasoft SOAtest rend les tests faciles à créer, à gérer et à orchestrer, et faciles à exécuter, à écrire et à analyser. Au-delà de GraphQL, la prise en charge par SOAtest de plus de 120 formats / protocoles de message, ainsi que la génération de tests assistée par l'IA et l'apprentissage automatique, facilite les tests d'API.

Vous voulez voir les tests GraphQL en action?

Jetez un œil à cette vidéo, où nous faisons exactement cela:

Découvrez la principale solution de test fonctionnel d'API et d'interface utilisateur optimisée par l'IA et le ML en action.
Essayez Parasoft SOAtest maintenant
Écrit par

Chris Colosimo

Chef de produit chez Parasoft, Chris élabore des stratégies de développement de produits pour les solutions de test fonctionnel de Parasoft. Son expertise en accélération SDLC grâce à l'automatisation l'a conduit à des déploiements majeurs en entreprise, tels que Capital One et CareFirst.

Recevez les dernières nouvelles et ressources sur les tests de logiciels dans votre boîte de réception.