Historique de la question :
SOAP et gRPC sont des protocoles d'échange de messages entre services. SOAP est apparu à l'époque de SOA, lorsque l'automatisation des processus métiers à grande échelle était nécessaire. gRPC est un framework RPC moderne de Google pour des services à haute performance. L'automatisation des tests de ces protocoles est traditionnellement plus complexe que pour REST, en raison de leur spécificité : formats de données, schémas de sérialisation et génération de code client.
Problème :
Solution :
Pour SOAP : utilisation d'outils spécialisés comme SoapUI, Postman (de manière limitée), automatisation au niveau fondamental par génération de clients SOAP dans le langage d'autotest (Python, Java). Il est important de valider non seulement les réponses, mais aussi les conventions WSDL.
Pour gRPC : génération de stubs clients via protoc, utilisation de bibliothèques compatibles gRPC (grpcio pour Python, grpc-java, etc.), runners de test (par exemple, grpcurl, BloomRPC). Une bonne pratique consiste à moquer les serveurs gRPC via des interceptors ou des services en mémoire.
Caractéristiques clés :
Peut-on tester les services gRPC aussi simplement et avec les mêmes moyens que REST ?
Non. gRPC utilise un protocole binaire et ne fonctionne pas avec HTTP directement (uniquement au-dessus de HTTP/2), nécessitant la génération de clients protobuf et des bibliothèques spécifiques.
Le SOAP permet-il la détection automatique de toutes les erreurs contractuelles grâce à WSDL ?
Non. Un schéma de données strict aide à attraper certaines erreurs lors de la compilation du client, mais ne protège pas contre les problèmes de logique métier et les erreurs d'intégration.
Est-il suffisant d'avoir uniquement des tests unitaires pour SOAP/gRPC ?
Non. Des tests d'intégration et E2E sont également nécessaires pour vérifier l'interaction entre les services, les limitations réseau et les particularités de sérialisation.
L'équipe a essayé de tester des services gRPC via curl et des outils similaires, en ignorant la nécessité de la génération protobuf. En fin de compte, les tests ont été exécutés de manière instable, certains scénarios n'étaient pas couverts du tout.
Avantages :
Inconvénients :
Un pipeline centralisé a été mis en place : pour chaque service gRPC/SOAP, des clients sont générés, tous les tests sont collectés automatiquement, des services mock sont levés en mémoire, et les tests valident les schémas et les réponses à l'aide de contrats.
Avantages :
Inconvénients :