DEV Community

Cover image for La meilleure alternative à Pacte
Antoine Laurent
Antoine Laurent

Posted on Originally published at apidog.com

La meilleure alternative à Pacte

Pact est une référence pour les tests contractuels pilotés par le consommateur. Les consommateurs écrivent des tests unitaires qui génèrent un contrat, les fournisseurs rejouent ce contrat sur leur code réel, un Pact Broker stocke les résultats, puis can-i-deploy indique au pipeline si une version peut être déployée en sécurité. Cette boucle détecte des ruptures d’intégration que des tests unitaires isolés ne voient pas. Son coût est toutefois réel : DSL spécifiques à chaque langage côté consommateur, états du fournisseur à maintenir, broker à héberger et vérifications difficiles à reproduire localement.

Essayez Apidog dès aujourd’hui

Voici le périmètre : Apidog est une alternative à Pact pour les équipes dont le problème principal est la dérive de schéma entre producteur et consommateur. Au lieu de générer des pacts par consommateur, Apidog utilise une spécification OpenAPI unique comme source de vérité, valide les réponses contre ce schéma pendant les tests, fournit des mocks dérivés de la spécification et exécute les scénarios en CI avec l’Apidog CLI.

Apidog ne reproduit pas le workflow de broker Pact : pas de fichier pact, pas de matrice de compatibilité et pas de can-i-deploy. Si vous avez besoin de cette coordination entre de nombreuses équipes qui déploient indépendamment, Pact reste adapté.

Ce que Pact fait réellement, et fait bien

Pact est un outil « code-first » de test d’intégrations HTTP et de messages. Le workflow est piloté par le consommateur :

  1. Le consommateur exécute ses tests contre un mock Pact.
  2. Pact enregistre les paires requête/réponse dans un fichier pact.
  3. Le fournisseur rejoue ces interactions sur son implémentation réelle.
  4. Les états du fournisseur préparent les données nécessaires à chaque interaction.

Seuls les champs utilisés par le consommateur sont inclus dans le pact. Un fournisseur peut donc faire évoluer les parties de sa réponse dont aucun consommateur ne dépend.

Le Pact Broker ajoute un contrôle de déploiement. Il stocke les vérifications entre versions de consommateurs et fournisseurs dans une matrice. Avant un déploiement, can-i-deploy vérifie que la version candidate est compatible avec les versions déjà présentes dans l’environnement cible :

can-i-deploy --pacticipant provider-api --version 1.4.0 --to-environment production
Enter fullscreen mode Exit fullscreen mode
  • Code de sortie 0 : déploiement autorisé.
  • Code de sortie 1 : incompatibilité détectée.

L’écosystème Pact couvre plus de 10 langages, notamment JVM, JavaScript, Go, .NET, Python, Ruby, Rust, PHP et Swift. Pour éviter l’auto-hébergement du broker, SmartBear propose PactFlow, avec un niveau Starter gratuit pour 2 intégrations, un niveau Team à 127 $ par mois pour 50 intégrations et une offre Enterprise sur devis.

Là où la cérémonie s’accumule

Le problème n’est pas la promesse de Pact, mais le coût opérationnel de la boucle complète.

Chaque consommateur écrit un DSL

Les pacts sont produits par du code de test. Chaque équipe doit donc apprendre le DSL Pact de son langage. Dans une organisation polyglotte, cela multiplie les bibliothèques, les règles de correspondance, les mocks et le code de test à maintenir.

Les états du fournisseur deviennent une suite de tests cachée

Une interaction Pact peut exiger un état tel que :

« L’utilisateur 42 existe avec une facture impayée. »

L’équipe fournisseur doit implémenter un gestionnaire qui prépare cet état. Avec plusieurs consommateurs, elle maintient progressivement un catalogue d’états correspondant à des besoins métier qu’elle ne contrôle pas directement.

Le broker devient une dépendance d’infrastructure

Un broker auto-hébergé implique une base de données, des mises à jour, l’authentification et des webhooks CI. Un broker managé ajoute un fournisseur externe. Dans les deux cas, les équipes doivent maîtriser les conventions de versioning, les branches, les environnements et les pacts en attente.

La vérification fournisseur est difficile à stabiliser

La vérification rejoue les requêtes des consommateurs sur une instance réelle du fournisseur. Elle implique donc souvent :

  • des jeux de données ;
  • des stubs d’authentification ;
  • des tâches d’arrière-plan ;
  • des dépendances réseau ;
  • des environnements de test reproductibles.

Quand le build échoue, le test défaillant a parfois été écrit par une autre équipe et bloque un déploiement via can-i-deploy.

PactFlow reconnaît ce compromis avec son test contractuel bidirectionnel : le fournisseur publie une spécification OpenAPI, les consommateurs publient des contrats issus de mocks, puis PactFlow compare les contrats statiquement. Pour de nombreuses intégrations, la comparaison de schémas suffit. C’est également l’approche décrite dans le test contractuel bidirectionnel.

La réponse : Apidog

Apidog est une plateforme de développement d’API utilisée par plus de 500 000 développeurs. Elle place OpenAPI au centre et génère autour de cette spécification la documentation, les mocks, la validation et les tests automatisés.

L’approche repose sur le principe présenté dans le test contractuel d’API : faire de la spécification le contrat, puis l’appliquer mécaniquement dans chaque étape du cycle de développement.

  1. Un contrat, sans DSL Pact.

    La spécification OpenAPI devient l’accord partagé entre producteur et consommateurs. Les équipes modifient un document unique, visuellement ou sous forme de code.

  2. Validation de schéma à chaque exécution.

    Chaque requête et chaque scénario de test peut valider la réponse contre OpenAPI. Un champ supprimé, renommé ou dont le type change provoque un échec de validation.

  3. Mocks disponibles dès la définition de l’endpoint.

    Le serveur de mock intelligent génère des réponses réalistes à partir du schéma. Les consommateurs peuvent commencer à intégrer l’API avant que l’implémentation fournisseur soit terminée.

  4. Exécution CI sans broker.

    La commande apidog run exécute les scénarios de test dans le pipeline. Un changement fournisseur qui ne respecte plus la spécification fait échouer sa propre CI avant le déploiement.

À quoi ressemble la transition, étape par étape

1. Centraliser le contrat dans OpenAPI

Avec Pact, le contrat est un fichier JSON d’interactions générées à partir des tests consommateurs. Avec Apidog, le contrat est une spécification OpenAPI qui décrit notamment :

  • les endpoints ;
  • les paramètres ;
  • les types ;
  • les propriétés obligatoires ;
  • les énumérations ;
  • les réponses d’erreur.

Le compromis est clair : Pact indique précisément les champs réellement utilisés par chaque consommateur. Une spécification partagée ne porte pas ce signal d’usage individuel. En revanche, elle fournit un artefact commun aux documents, mocks, tests et clients.

Pour approfondir ce modèle, consultez qu’est-ce qu’un contrat API.

2. Vérifier le fournisseur avec des scénarios de test

Pact rejoue les interactions générées par les consommateurs contre le fournisseur. Avec Apidog, créez des scénarios couvrant les endpoints du fournisseur, puis activez la validation du schéma.

Exemple de commande CI :

apidog run --environment ci
Enter fullscreen mode Exit fullscreen mode

Le fournisseur reste vérifié contre son contrat, sans devoir maintenir un catalogue d’états créés par les consommateurs.

3. Donner aux consommateurs une URL de mock partagée

Pact fournit un mock intégré aux tests unitaires de chaque consommateur. Apidog propose une URL de mock hébergée, dérivée de la spécification OpenAPI.

Utilisez cette URL pour :

  • développer un frontend avant l’API réelle ;
  • tester une intégration mobile ;
  • simuler des erreurs documentées ;
  • partager un comportement contractuel entre équipes.

Des attentes personnalisées peuvent être ajoutées lorsque des données précises sont nécessaires. Pour comparer les approches, consultez tests contractuels et serveurs de mock.

4. Contrôler les changements de spécification

Apidog ne remplace pas la matrice can-i-deploy de Pact. Son contrôle se situe au niveau du contrat :

  1. Modifiez la spécification sur une branche.
  2. Faites relire la modification comme tout changement d’API.
  3. Mettez à jour les scénarios et les mocks si nécessaire.
  4. Exécutez la validation en CI.
  5. Déployez uniquement si l’implémentation respecte le contrat.

Pour des services déployés via quelques pipelines coordonnés, cette approche couvre la majorité des cas. Pour des dizaines d’équipes qui déploient à des moments indépendants, la matrice Pact reste utile.

Pact et PactFlow vs Apidog en un coup d’œil

Pact + PactFlow Apidog
Artefact de contrat Fichiers pact générés par consommateur Une spécification OpenAPI
Qui écrit le code du contrat Chaque équipe consommateur, avec un DSL par langage Personne ; la spécification est éditée visuellement ou comme code
Vérification fournisseur Rejeu des interactions + états fournisseur Scénarios de test + validation automatique du schéma
Mocks consommateur Fournisseur de mock intégré aux tests Mock intelligent hébergé à partir de la spécification
Détection de dérive Pendant les vérifications À chaque requête et exécution CI
Contrôle de déploiement Matrice broker + can-i-deploy CI contrôlée par contrat, service par service
Infrastructure Broker auto-hébergé ou PactFlow SaaS Espace de travail cloud inclus
Documentation et conception Hors périmètre Documentation interactive et éditeur visuel
Coût OSS gratuit ; PactFlow gratuit pour 2 intégrations, Team à 127 $/mois Gratuit jusqu’à 4 utilisateurs ; payant à partir de 9 $ par utilisateur/mois

Le calcul des coûts et de l’adéquation

Les bibliothèques Pact sont open source et gratuites. Le coût se situe dans la coordination : hébergement du broker ou PactFlow, code DSL, gestionnaires d’état, maintenance des pipelines et débogage inter-équipes.

Le plan gratuit d’Apidog couvre 4 utilisateurs avec :

  • l’éditeur de spécifications ;
  • l’utilisation illimitée du serveur de mock ;
  • les scénarios de test ;
  • la validation de schéma ;
  • les exécutions CLI.

Les plans payants commencent à 9 $ par utilisateur et par mois.

Le choix ne porte donc pas uniquement sur le prix des licences. Il dépend surtout de votre besoin : maintenir une plateforme de tests contractuels pilotée par le consommateur, ou utiliser une plateforme centrée sur la spécification qui couvre aussi le développement, les mocks, la documentation et les tests API.

Pour consolider vos outils, commencez par la meilleure alternative à Postman. Pour une pile complète orientée spécification, consultez la pile d’outils de développement « contract-first ».

Migrer depuis Pact

Vous ne convertissez pas directement les fichiers pact. Vous faites évoluer la spécification OpenAPI pour qu’elle devienne le contrat central.

  1. Obtenez une vraie spécification OpenAPI.

    Importez votre spécification existante dans Apidog. Elle devient immédiatement une base pour la documentation, les mocks et les validations. Si vous n’en avez pas, générez-en une depuis les annotations de code et utilisez les fichiers pact comme liste de contrôle des endpoints réellement utilisés.

  2. Ajoutez la validation de schéma à la CI.

    Créez des scénarios de test pour les endpoints du fournisseur, puis exécutez-les à chaque build.

   apidog run --environment ci
Enter fullscreen mode Exit fullscreen mode
  1. Basculez les consommateurs vers le mock intelligent.

    Remplacez progressivement les mocks Pact par l’URL de mock issue de la spécification. Retirez le code DSL à mesure que les consommateurs migrent.

  2. Verrouillez les changements de spécification.

    Traitez les modifications OpenAPI comme des changements révisés sur branche. Les changements cassants deviennent alors visibles dans une différence de spécification avant de devenir un incident.

  3. Retirez le broker en dernier.

    Conservez can-i-deploy là où des déploiements indépendants créent un risque réel. Supprimez-le là où il ne fait qu’ajouter de la cérémonie.

Quand Pact a encore du sens

Pact reste un bon choix si vous avez besoin d’une réponse vérifiable par machine à la question suivante :

« La version X peut-elle être déployée en production avec les versions déjà en cours d’exécution ? »

Sa matrice de broker et can-i-deploy répondent précisément à ce besoin, qu’Apidog ne reproduit pas.

Pact est également adapté au test contractuel de files de messages. Si vous souhaitez réduire la cérémonie de rejeu tout en restant dans l’écosystème Pact, le mode bidirectionnel de PactFlow est une étape intermédiaire pertinente.

En revanche, si votre problème principal est la dérive de schéma, les mocks et les vérifications CI, une approche OpenAPI-first évite de payer le coût complet du workflow Pact pour une partie seulement de ses bénéfices.

Questions fréquemment posées

Apidog est-il un outil de test contractuel comme Pact ?

Il applique les contrats différemment. Pact génère des contrats par consommateur à partir du code de test, puis les rejoue sur les fournisseurs. Apidog utilise OpenAPI comme contrat et valide les requêtes ainsi que les exécutions CI contre cette spécification. Cette approche couvre la dérive de schéma sans broker.

Voir aussi : test contractuel d’API.

Apidog prend-il en charge can-i-deploy ou un Pact Broker ?

Non. Apidog ne propose pas de matrice de vérification ni de contrôle de déploiement inter-services. Son contrôle repose sur le contrat : une implémentation qui viole la spécification fait échouer son propre pipeline.

Les équipes qui ont besoin d’un contrôle au niveau de la matrice doivent conserver Pact pour ces intégrations. Une autre option est le test contractuel bidirectionnel.

Apidog peut-il remplacer les mocks consommateurs de Pact ?

Oui, dans la plupart des cas. Le serveur de mock intelligent génère des réponses conformes au schéma depuis la spécification, sans configuration initiale. Des attentes personnalisées permettent ensuite de traiter les cas nécessitant des données spécifiques.

Voir également : outils de test contractuel et de mocking.

Qu’en est-il du fuzzing du fournisseur par rapport à la spécification ?

Associer les scénarios Apidog à un testeur de propriétés basé sur la spécification permet de couvrir davantage de cas négatifs que le simple rejeu d’exemples. L’option principale est détaillée dans qu’est-ce que Schemathesis.

Combien coûte PactFlow par rapport à Apidog ?

Le niveau Starter de PactFlow est gratuit pour 2 intégrations. Le niveau Team est affiché à 127 $ par mois, soit environ 1 385 $ facturés annuellement, pour 50 intégrations. L’offre Enterprise est sur mesure.

Apidog est gratuit jusqu’à 4 utilisateurs, puis les plans commencent à 9 $ par utilisateur et par mois. Les fonctions liées au contrat sont incluses dans la plateforme plutôt que facturées comme un broker distinct.

Pour comparer les outils de capture et rejeu, consultez la meilleure alternative à Keploy.

Supprimez la cérémonie, conservez le contrat

Si votre installation Pact sert principalement à détecter la dérive de schéma, une spécification OpenAPI unique peut fournir cette garantie avec moins de composants :

  1. Importez votre fichier OpenAPI dans Apidog.
  2. Créez les scénarios de test des endpoints critiques.
  3. Connectez apidog run à votre CI.
  4. Distribuez l’URL de mock aux consommateurs.
  5. Faites réviser chaque changement de spécification.

Téléchargez Apidog ou commencez dans le navigateur. Pour une équipe de 4 personnes, le plan gratuit couvre l’éditeur, les mocks, les tests, la validation et les exécutions CLI.

Top comments (0)