Toujours la référence, Postman continue de dominer le marché grâce à son interface complète, sa capacité à gérer des tests complexes et son intégration fluide avec d'autres services. Cet outil reste incontournable pour de nombreuses équipes grâce à son écosystème robuste et son adoption massive dans l'industrie, alors pourquoi s'intéresser à des alternatives ? Selon nous, Postman dispose d'inconvénients notables qui nous poussent à envisager d'autres outils :
- Un modèle économique qui évolue au fil des versions et qui représente un coût croissant sur les dernières années pour de nombreuses équipes.
- Un format de partage et de gestion des versions propriétaires et qui impose l'utilisation d'un abonnement payant. Il est possible de le contourner en échangeant « manuellement » des collections (fichiers source) par un autre canal, avec toutes les problématiques de désynchronisation que cela peut engendrer dans l'équipe.
Depuis quelque temps, deux outils se démarquent dans ce domaine : Bruno et Yaak. Tous deux offrent des fonctionnalités pour tester des APIs basées sur des spécifications OpenAPI, mais ils ont des approches et des fonctionnalités distinctes. Cet article explore les différences entre Bruno et Yaak pour vous aider à choisir l'outil qui vous conviendra le mieux.
Présentation Générale
Bruno et Yaak sont des outils modernes conçus pour faciliter les tests d'API en se basant sur des spécifications OpenAPI. Ils permettent de valider les API en vérifiant leur conformité aux spécifications et en automatisant les tests.
- Bruno : Un outil open-source qui offre une interface web intuitive (ainsi que des extensions pour navigateurs et un module CLI) pour importer des spécifications OpenAPI, générer des tests automatiques, et visualiser les résultats. Il se distingue par sa facilité d'utilisation et son interface claire.
- Yaak : Un outil de test d'API axé sur la performance et l'intégration fluide dans les pipelines CI/CD. Yaak met l'accent sur la rapidité des tests et l'efficacité, tout en offrant une interface simplifiée.
Fonctionnalités clés annoncées
Bruno
- Support des spécifications OpenAPI : Bruno prend en charge les fichiers OpenAPI, y compris ceux découpés avec des références externes (
$ref
). Il permet d'importer des fichiers au format JSON ou YAML. - Interface utilisateur : Bruno propose une interface web conviviale pour gérer les tests, configurer des scénarios, et visualiser les résultats. Celle-ci est très proche de l'interface de Postman.
- Automatisation des tests : Génère automatiquement des tests basés sur les spécifications OpenAPI, avec une validation des requêtes et des réponses.
- Facilité d’Utilisation : Conçu pour être accessible même aux utilisateurs moins techniques, avec une courbe d'apprentissage douce.
Yaak
- Support des spécifications OpenAPI : Comme Bruno, Yaak gère les fichiers OpenAPI et résout les références
$ref
. - Performance : Yaak est optimisé pour des tests rapides et performants, ce qui est un atout dans des environnements à forte demande.
- Intégration CI/CD : Bien intégré dans les pipelines d'intégration continue et de déploiement continu, facilitant l'automatisation des tests.
- Interface simplifiée : Offre une interface épurée axée sur la performance, idéale pour les utilisateurs qui cherchent une solution rapide et efficace.
Points Forts et Faiblesses
Bruno
Points Forts :
- Interface utilisateur : Interface web intuitive et facile à utiliser.
- Automatisation : Bonne génération automatique de tests avec une configuration minimale.
- Intégration CI/CD : Les fichiers Bruno sont facilement intégrables dans le dépôt git de votre projet et l'utilisation du runner CLI intégré rend aisé le lancement des tests d'intégration.
- Accessibilité : Conçu pour les utilisateurs non techniques et une courbe d'apprentissage douce.
- Modèle économique : Opensource et gratuit, il dispose d'une édition « Golden » offrant des fonctionnalités avancées à prix modique (licence perpétuelle à 19€ par utilisateur).
Points Faibles :
- Scénarios complexes : Moins flexible pour des tests très complexes ou personnalisés.
- Fonctionnalités avancées : Moins de fonctionnalités avancées comparé à des outils plus robustes.
Yaak
Points Forts :
- Performance : Optimisé pour des tests rapides et efficaces.
- Intégration CI/CD : Excellente intégration dans les pipelines CI/CD, facilitant l'automatisation.
- Simplicité : Interface épurée et facile à utiliser pour des tests performants.
- Modèle économique : Opensource et gratuit.
Points Faibles :
- Maturité : Étant plus récent, il peut manquer de certaines fonctionnalités ou d'une communauté établie.
- Documentation : Documentation et support communautaire très limité et encore en cours de développement
Intégration d'une documentation OpenAPI
L'équipe Pomlo a donc testé les deux outils pouar voir s'ils pouvaient correspondre à nos besoins. Nous avons commencé par importer nos spécifications OpenAPI, y compris des fichiers découpés, afin de tester la compatibilité et l'efficacité de Bruno et Yaak. Malheureusement, l'import des fichiers OpenAPI n'a pas fonctionné correctement sur les deux outils. Malgré leur promesse de support des références externes, cela n'a pas fonctionné. Cette limitation nous a empêchés d'exploiter pleinement leurs fonctionnalités et a soulevé des questions sur leur maturité dans la gestion de scénarios OpenAPI complexes. Espérons que ce point sera rapidement corrigé.
Cependant, en utilisant Postman, l'import des mêmes spécifications OpenAPI s'est déroulé sans encombre, même avec des fichiers fragmentés. Postman a parfaitement géré la résolution des références, confirmant qu'il reste le meilleur choix pour ce type d'opération.
Choisir le bon outil
Le choix entre Bruno et Yaak dépend de vos besoins spécifiques :
- Optez pour Bruno si vous recherchez un outil avec une interface simple, proche de Postman et une automatisation facile des tests, surtout si vous êtes moins technique ou si vous privilégiez une utilisation simple et directe.
- Optez pour Yaak si vous avez besoin d’un outil performant capable de gérer des tests rapides, avec une forte intégration dans vos pipelines CI/CD. Yaak est idéal pour les environnements à haute demande où la rapidité des tests est cruciale.
Pomlo a retenu Bruno pour la majorité des nouveaux projets et envisage une migration progressive des projets de complexité moyenne utilisant Postman. Toutefois, sur des projets très complexes ou disposant de collections très nombreuses, nous conserverons Postman tant que cette approche restera possible en tenant compte des évolutions de l’outil et de son modèle économique.
Nous avons intégré Bruno sur un de nos projets récents, comportant une API relativement petite et peu complexe. L’un des principaux atouts de Bruno est la portabilité des tests : nos fichiers de test sont intégrés directement dans le projet, ce qui nous permet de les exécuter via une image Docker de Bruno et une simple commande make
(voir notre article sur l’utilisation des Makefiles). Cela garantit que tous les développeurs utilisent les mêmes scripts de test et les exécutent dans un environnement homogène, un avantage difficile à reproduire avec Postman. De plus, la syntaxe des scripts Bruno (.bru
) est intuitive et permet d’écrire des assertions directement en JavaScript, rendant les tests très simples à mettre en place et à interpréter.
Conclusion
Bruno et Yaak sont tous deux outils puissants pour les tests d'API basés sur OpenAPI, mais ils répondent à des besoins différents. Ils seront certainement largement suffisants pour des projets de complexité moyenne, pour une utilisation occasionnelle ou en phase de prototypage. Choisissez l'outil qui correspond le mieux à votre contexte de développement et à vos objectifs de test pour optimiser la qualité et la conformité de vos API.
Malgré l'apparition de ces alternatives modernes, Postman reste un bon choix pour beaucoup d’équipes de développement, notamment celles qui disposent d’un fort patrimoine de collections, ceci en dépit d'un coût bien plus élevé.