Comprendre gRPC et son importance
gRPC, acronyme de g Remote Procedure Call, est un cadre de communication RPC développé par Google. L’histoire derrière son nom est assez intéressante. Un appel de procédure à distance permet d’exécuter une fonction ou une méthode sur une machine distante comme s’il s’agissait d’une action locale. C’est une abstraction qui simplifie la complexité liée à la gestion des appels HTTP et d’autres aspects des réseaux.
gRPC facilite grandement la communication et les échanges de données entre microservices, en les rendant plus efficaces et plus rapides. Il repose sur le protocole HTTP/2, mais il offre aux développeurs un moyen plus intuitif de connecter les différents éléments de leur architecture.
Étant donné que les microservices peuvent être développés dans divers langages, la nécessité d’un mécanisme de communication inter-services se fait sentir.
gRPC comble ce besoin en prenant en charge une multitude de langages. Il emploie des tampons de protocole comme langage de définition d’interface pour structurer les messages.
L’importance du test des applications gRPC
Les tests sont indispensables pour tout projet logiciel complexe, et cela vaut également pour les applications gRPC. Le test assure une communication fiable et efficace entre les microservices et autres composantes.
Il garantit l’interopérabilité, même si les services sont développés dans différents langages, grâce à l’utilisation des tampons de protocole.
De plus, le test met en lumière la gestion des erreurs et des exceptions. Il permet également d’effectuer des tests de performance pour évaluer le comportement des services sous diverses charges de trafic.
Maintenant que les bases sont posées, explorons les outils disponibles pour le test d’applications gRPC.
Kreya
Kreya est un client API qui offre une interface utilisateur pour les APIs gRPC et REST. Son client gRPC supporte le streaming des requêtes, les appels unitaires, la validation, et plus encore. Kreya permet aussi la génération de données factices pour tester vos API.
Les requêtes et leurs configurations sont stockées dans un système de fichiers, ce qui permet l’utilisation d’un système de contrôle de version comme Git pour la gestion des projets. De plus, Kreya permet de définir des tests via des scripts pour tester l’API à chaque appel.
Kreya offre un niveau gratuit pour les utilisateurs individuels, incluant un client gRPC complet, des configurations d’authentification réutilisables, des environnements et des modèles, entre autres.
GHz
GHz est un outil en ligne de commande open source écrit en Go, spécialement conçu pour le benchmarking et le test de charge gRPC. Il est capable de travailler avec un fichier proto, un ensemble de protos prédéfinis, ou en utilisant la réflexion du serveur. L’utilisation de variables modèles Go permet d’ajouter des données personnalisées aux requêtes.
En plus de son interface en ligne de commande, ghz offre également une interface Web complémentaire pour visualiser, suivre et enregistrer les résultats des tests. Les résultats peuvent être exportés dans différents formats, comme CSV, JSON et HTML. L’interface Web est actuellement en version bêta.
Postman
Postman est une plateforme de développement d’API polyvalente, prenant en charge la création et le test de différents types d’APIs, y compris gRPC. Postman vous permet d’écrire des tests pour des requêtes individuelles, des collections, ou des dossiers au sein d’une collection.
Lors d’une requête gRPC dans Postman, il suffit d’aller dans l’onglet « Scripts » de la vue de requête et de choisir le moment d’exécution du test : avant ou après la réception d’une réponse. Postman met également à disposition des extraits de code pour faciliter la rédaction des tests.
Insomnia
Insomnia est un outil permettant de concevoir, tester et déboguer des API, et prend en charge les requêtes REST, GraphQL, WebSocket et gRPC. Pour créer une nouvelle requête gRPC dans Insomnia, il faut sélectionner l’option gRPC et spécifier l’URL du point d’extrémité de l’API.
Il est également nécessaire d’ajouter un fichier .proto pour définir les messages. Insomnia supporte presque tous les types de requêtes gRPC, comme le streaming client, serveur ou bidirectionnel.
Pour tester l’API dans Insomnia, il est nécessaire d’ajouter un document de conception, puis de créer une suite de tests dans l’onglet « Test ». Insomnia utilise le framework Mocha pour les tests unitaires et Chai pour les assertions.
Stackhawk
Stackhawk est un outil de test de sécurité pour API qui offre une solution pour les services gRPC. Il permet de sécuriser les points de terminaison d’API. Pour analyser une application gRPC avec Stackhawk, il faut configurer un fichier stackhawk.yml avec les paramètres nécessaires.
Stackhawk propose un niveau gratuit offrant des tests automatisés intégrés à DAST pour une seule application. Tous les plans payants incluent des fonctionnalités telles que l’authentification, l’automatisation, les informations, les notifications et le support pour tous les types d’APIs.
gRPCurl
gRPCurl est un outil en ligne de commande open source permettant de se connecter à des serveurs gRPC. Il est souvent décrit comme l’équivalent de « curl pour les serveurs gRPC ». En effet, cURL ne peut pas être utilisé pour les serveurs gRPC, car il ne prend pas en charge les tampons de protocole, qui sont des messages binaires, contrairement à cURL qui traite uniquement les chaînes JSON.
gRPCurl permet de consulter le schéma des services gRPC soit en interrogeant un serveur supportant la réflexion du serveur, en lisant les fichiers sources protos, ou en chargeant des fichiers « protoset » (des fichiers contenant les descriptors de fichiers codés).
Bien que gRPCurl ne soit pas un outil de test complet, il permet d’effectuer des requêtes et des tests basiques via l’interface en ligne de commande.
ReadyAPI de Smartbear
ReadyAPI de Smartbear prend en charge le test des API gRPC, mais uniquement les opérations unaires. Pour tester un service gRPC, il faut configurer l’étape de test Connexion API. Cela permet d’envoyer des requêtes et de recevoir des réponses du service gRPC.
Pour le moment, ReadyAPI ne prend en charge que les opérations unaires, ce qui signifie qu’il n’attendra qu’une seule réponse du serveur.
NosyMouse
NosyMouse est un outil qui inclut un testeur gRPC pour exécuter des tests fonctionnels, de performance et de sécurité, manuellement ou automatiquement. Il offre des fonctionnalités telles que la simulation d’utilisateurs virtuels simultanés, la montée en puissance, la définition de critères de réussite, la gestion des temps de réflexion, des données de test et la prise en charge de scénarios de test ainsi que plusieurs cas d’utilisation pondérés.
Il suit une méthodologie de test axée sur les données, garantissant une prise en charge de données de test distinctes, de variables, de vérifications automatisées et de cas d’utilisation réels. Il permet de tester différentes entrées et de vérifier les sorties dans l’interface.
NosyMouse propose un essai gratuit de 14 jours permettant de tester avec deux utilisateurs simultanés.
En guise de conclusion
La multitude d’outils et de services gRPC disponibles peut rendre le choix de l’outil de test approprié difficile. Le bon outil est crucial car il impacte directement les fonctionnalités de votre API. La prise en charge des fonctionnalités de gRPC telles que la réflexion du serveur et le streaming est un facteur essentiel à considérer. Privilégiez un outil qui propose ces fonctionnalités spécifiques lors de votre choix.
Pour améliorer les performances, pensez également à explorer les plateformes de tests de charge API.