gRPC est un framework d’appel de procédure à distance (RPC) développé par Google.
Il y a un remarque intéressante derrière pourquoi il s’appelle ainsi. Un appel de procédure distante est un moyen d’exécuter une fonction ou une méthode sur une machine distante comme s’il s’agissait d’une fonction locale. C’est une abstraction qui supprime la difficulté de gérer les appels HTTP et d’autres terminologies réseau.
gRPC rend la communication et le transfert de données entre les microservices beaucoup plus faciles et plus rapides. Il s’appuie sur le protocole HTTP/2 sous le capot mais permet aux développeurs de tout connecter plus facilement.
Les microservices peuvent être présents dans plusieurs langues, vous devez donc écrire un programme pour qu’ils communiquent entre eux.
gRPC facilite les choses car il prend en charge plusieurs langues. Il utilise des tampons de protocole comme langage de définition d’interface pour définir la structure du message.
Table des matières
Test des applications gRPC
Pas seulement pour les applications gRPC, les tests sont essentiels pour tout logiciel complexe développé. Le test des applications gRPC garantit que les microservices et autres services peuvent communiquer entre eux de manière fiable et efficace.
Il garantit que tous les services, bien que rédigés dans des langues différentes, puissent communiquer sans barrière linguistique. C’est possible car gRPC utilise des tampons de protocole indépendants du langage.
La gestion des erreurs et des exceptions devient également claire lorsque vous testez votre application. En dehors de cela, on peut également effectuer des tests de performances pour voir comment les services se comportent sous différentes charges de trafic réseau.
Maintenant que vous connaissez gRPC, examinons quelques outils de test gRPC.
Kreya
Kreya est un client API avec une interface utilisateur graphique pour gRPC ainsi que pour les API REST. Son client gRPC prend en charge le streaming de requêtes, les appels unaires, la validation, etc. Pour tester l’API, vous pouvez également générer de fausses données au sein même de Kreya.
De plus, les requêtes et leur configuration sont stockées dans un système de fichiers, vous pouvez donc utiliser git ou tout autre système de contrôle de version pour synchroniser vos projets. Kreya vous permet de définir des tests en écrivant des scripts afin que vous puissiez tester l’API à chaque appel.
Kreya propose un niveau gratuit pour les utilisateurs individuels, qui comprend un client gRPC complet, des configurations d’authentification réutilisables, des environnements et des modèles, et bien plus encore.
GHz
GHz, un utilitaire de ligne de commande open source d’analyse comparative gRPC et de test de charge écrit en Go, pour tester l’API et obtenir les résultats. ghz prend en charge un fichier proto, un ensemble de protosets prédéfinis ou une réflexion de serveur. À l’aide de variables de modèle dans Go, il vous permet d’ajouter des données personnalisées aux requêtes.
Outre un utilitaire de ligne de commande, ghz donne également accès à une interface d’application Web complémentaire, que vous pouvez utiliser pour afficher, suivre et enregistrer les résultats des tests. Vous pouvez afficher les résultats des tests dans différents formats de fichiers tels que CSV, JSON et HTML. Au moment de la rédaction de cet article, l’interface Web qu’il fournit est encore en phase bêta.
Facteur
Facteur est une plate-forme de développement d’API qui prend en charge la création et les tests de presque tous les types d’API, y compris gRPC. Dans Postman, vous pouvez écrire des tests pour des requêtes individuelles, des collections ou des dossiers dans une collection.
Lorsque vous effectuez une requête gRPC dans Postman, accédez à l’onglet Scripts dans la vue des requêtes, puis sélectionnez le moment où vous souhaitez effectuer le test : avant la requête ou après avoir obtenu une réponse. Vous pouvez également utiliser des extraits de code pour écrire des tests plus rapidement.
Insomnie
Insomnie est un outil pour concevoir, tester et déboguer des API. Il prend en charge les requêtes REST, GraphQL, WebSockets et gRPC. Lorsque vous créez une nouvelle requête dans Insomnia, vous pouvez sélectionner gRPC, puis saisir le point de terminaison URL de l’API.
Vous devez également ajouter un fichier .proto pour définir vos messages. Des requêtes unaires au streaming bidirectionnel, Insomnia prend en charge presque tous les types de requêtes, y compris le streaming client et serveur.
Afin de tester les API dans Insomnia, vous devez ajouter un document de conception pour votre API, puis, dans l’onglet Test, vous pouvez créer une suite de tests. Notez qu’Insomnia utilise le framework Mocha pour les tests unitaires et Chai pour les assertions.
Stackhawk
Stackhawk est un outil de test de sécurité API qui fournit également une solution pour les services gRPC. Avec l’aide de cet outil, vous pouvez assurer la sécurité de vos points de terminaison API. Pour analyser une application gRPC à l’aide de Stackhawk, vous devez définir un stackhawk.yml fichier avec les configurations requises.
Stackhawk propose un niveau gratuit avec des tests automatisés modernes intégrés à DAST dans le pipeline CI/CD pour une seule application. Cependant, des fonctionnalités telles que l’authentification, l’automatisation, les informations, les notifications et la prise en charge de tous les types d’API sont incluses dans tous les plans tarifaires.
gRPCurl
gRPCurl est un utilitaire de ligne de commande open source permettant de se connecter à des serveurs compatibles gRPC. Comme son nom l’indique, il est appelé « curl pour les serveurs gRPC ». La raison pour laquelle vous ne pouvez pas utiliser cURL pour envoyer une requête aux serveurs gRPC est qu’il ne prend pas en charge les tampons de protocole, qui sont des messages binaires. cURL ne traite que les chaînes JSON.
Vous pouvez consulter le schéma des services gRPC soit en interrogeant un serveur qui prend en charge la réflexion du serveur, en lisant les fichiers sources des protos ou en chargeant des fichiers « protoset » compilés (fichiers contenant des protos de descripteurs de fichiers codés).
gRPCurl n’est pas un outil de test à part entière, mais vous pouvez néanmoins effectuer des requêtes et des tests de base à l’aide de l’utilitaire de ligne de commande.
ReadyAPI de Smartbear
PrêtAPI by Smartbear prend en charge les tests de l’API gRPC mais uniquement les opérations unaires. Afin de tester un service gRPC, vous devez d’abord configurer le Connexion API étape de test. Ce faisant, vous pouvez ensuite envoyer des demandes et recevoir des réponses de votre service gRPC.
ReadyAPI ne prend en charge que les opérations unaires pour l’instant, ce qui signifie que ReadyAPI n’attendra qu’une seule réponse du serveur.
NosySouris
Nosysouris est un outil qui comprend un testeur gRPC pour exécuter des tests fonctionnels, de performances et de sécurité manuellement ou automatiquement. Il offre des fonctionnalités telles que les utilisateurs virtuels simultanés, la montée en puissance, les critères de réussite, les temps de réflexion, les 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 la méthodologie de test basée sur les données, garantissant que vous bénéficiez toujours d’une prise en charge de données de test distinctes, de variables, de vérifications automatisées et de cas d’utilisation réels. Vous pouvez exécuter vos tests avec différentes entrées et vérifier les sorties dans l’interface.
Il propose un essai gratuit de 14 jours pour tester deux utilisateurs simultanés du service.
Derniers mots
Avec l’essor des services et outils gRPC, il peut être difficile pour vous de choisir le bon outil de test gRPC. Choisir le bon outil est important car il a un impact direct sur les fonctionnalités de votre API. Une chose importante à considérer est la prise en charge de diverses fonctionnalités de gRPC telles que la réflexion du serveur, le streaming, etc. Recherchez les fonctionnalités spécifiques à gRPC lors du choix d’un outil de test.
Ensuite, découvrez les meilleures plateformes de tests de charge API pour améliorer les performances.