Ceci est une série en 10 parties expliquant comment Apidog a développé Apidog CLI, un outil en ligne de commande pour les tests d'API et la gestion du cycle de vie des API. Lisez dans l'ordre ou accédez à n'importe quel article qui vous intéresse :
| Titre | Objectif | |
|---|---|---|
| 1 | Nous avons créé 126 outils MCP. Mais ce n'est pas la meilleure solution pour l'agent | Découverte du problème |
| 2 | Pourquoi nous avons développé le tout nouveau Apidog CLI | Développement de l'architecture |
| 3 | La règle d'or : le CLI produit des faits, le modèle agit sur les faits | Philosophie fondamentale |
| 4 | agentHints : Enseigner aux CLI à communiquer avec les agents |
Sortie structurée |
| 5 | SKILL : Transformer l'expérience opérationnelle en code | Expérience opérationnelle |
| 6 | Les chiffres ne mentent pas : 30 % d'appels d'outils en moins, 25 % de tokens en moins | Résultats quantitatifs |
| 7 | Du PRD à la boucle de test : un flux de travail complet de l'agent avec Apidog CLI | Tutoriel pratique |
| 8 | Pourquoi la compatibilité CI/CD est non négociable pour les outils d'agent | Perspective DevOps |
| 9 | Branche IA : Des changements de projet plus sûrs avec les agents IA | Couche de sécurité |
| 10 | La spécification d'abord, c'était hier. Bienvenue au "Skill-First". | Vision et avenir |
Découvrez un exemple concret : une équipe dispose d'un PRD (Document de Spécification des Exigences Produit) et d'une base de code pour le remboursement de commandes. Voyez comment un Agent utilise Apidog CLI + SKILL pour générer des spécifications OpenAPI, créer des tests, valider et vérifier—de bout en bout.
Le Scénario
Rendons tout cela concret avec un véritable flux de travail.
Contexte :
Une équipe vient de terminer la rédaction d'un PRD "Remboursement de commande". La base de code dispose déjà des routes et contrôleurs correspondants.
Demande de l'utilisateur à l'Agent :
"Générez des tests API pour la fonctionnalité de remboursement basés sur le PRD et la base de code, puis exécutez la vérification."
Le Problème de l'Ancienne Approche
Avec les outils MCP, l'Agent est confronté à une série de dilemmes :
| Point de Décision | Incertitude |
|---|---|
| Interroger le projet en premier ? | Ou créer un point d'accès en premier ? |
| Écrire le cas de test en premier ? | Ou générer le Schéma en premier ? |
| Exécuter les tests directement ? | Ou relire les ressources en premier ? |
| Quel outil pour chaque étape ? | Rechercher parmi 126 outils |
L'Agent passe un temps considérable à décider du chemin à suivre—plutôt qu'à exécuter la tâche.
Le Chemin CLI + SKILL
CLI + SKILL satisfait les véritables flux de R&D avec une séquence claire :
Générer OpenAPI à partir du PRD et de la base de code
↓
Importer dans Apidog
↓
Ajouter des cas de test pour un seul point d'accès
↓
Valider avant d'écrire
↓
Générer un scénario de test pour le flux métier
↓
Valider avant d'écrire
↓
Exécuter des tests automatisésPassons en revue chaque étape.
Étape 1 : Générer et Importer OpenAPI
L'Agent lit le PRD et la base de code, puis génère la spécification OpenAPI.
Extrait du PRD :
Order Refund API
POST /api/orders/{orderId}/refund
- Request body: { "reason": string, "amount": number }
- Response: { "refundId": string, "status": string, "processedAt": datetime }
GET /api/orders/{orderId}/refund/{refundId}
- Response: { "refundId": string, "status": string, "amount": number }L'Agent génère OpenAPI :
{
"openapi": "3.0.0",
"paths": {
"/api/orders/{orderId}/refund": {
"post": {
"summary": "Create refund request",
"parameters": [...],
"requestBody": {...},
"responses": {...}
}
},
"/api/orders/{orderId}/refund/{refundId}": {
"get": {
"summary": "Get refund status",
...
}
}
}
}Importer dans Apidog :
apidog import --project <projectId> --format openapi --file ./openapi.jsonSortie CLI :
{
"success": true,
"data": {
"importedEndpoints": ["POST /refund", "GET /refund/{refundId}"],
"endpointIds": ["ep-001", "ep-002"]
},
"agentHints": {
"summary": "OpenAPI importé avec succès. 2 points d'accès créés.",
"nextSteps": [
"Liste les points d'accès importés pour confirmer la structure.",
"Ajoutez des cas de test pour chaque point d'accès.",
"Créez un scénario de test pour le flux de remboursement complet."
]
}
}Étape 2 : Cas de Test pour Point d'Accès Unique
L'Agent se concentre d'abord sur le "point d'accès de remboursement".
L'Agent lit le point d'accès :
apidog endpoint get ep-001 --project <projectId>Le CLI renvoie la structure du point d'accès :
{
"id": "ep-001",
"method": "POST",
"path": "/api/orders/{orderId}/refund",
"requestBody": {
"schema": {
"type": "object",
"properties": {
"reason": { "type": "string" },
"amount": { "type": "number" }
},
"required": ["reason", "amount"]
}
},
"responses": {
"200": {...}
}
}L'Agent génère un cas de test :
{
"name": "Create refund - success",
"endpointId": "ep-001",
"request": {
"path": "/api/orders/order-123/refund",
"body": {
"reason": "Customer request",
"amount": 99.99
}
},
"assertions": [
{
"subject": "responseJson.status",
"comparator": "equal",
"target": "processed"
}
]
}Valider avant d'écrire :
apidog cli-schema validate test-case-create --file ./test-case-create.jsonRésultat de la validation CLI :
{
"success": true,
"agentHints": {
"summary": "La structure du cas de test est valide.",
"nextSteps": [
"Créez le cas de test dans Apidog.",
"Relisez le cas de test créé pour confirmer.",
"Ajoutez d'autres assertions si nécessaire."
]
}
}Créer un cas de test :
apidog test-case create --project <projectId> --file ./test-case-create.jsonSortie CLI :
{
"success": true,
"data": {
"id": "tc-001",
"name": "Create refund - success"
},
"agentHints": {
"summary": "Cas de test créé avec succès.",
"nextSteps": [
"Relisez le cas de test tc-001 pour confirmer les assertions.",
"Créez un cas de test pour GET /refund/{refundId}.",
"Construisez un scénario de test pour le flux de remboursement complet."
]
}
}Étape 3 : Scénario de Test pour le Flux Complet
Basé sur le PRD, le flux métier complet est le suivant :
Créer la commande → Payer → Rembourser → Interroger le statut du remboursementL'Agent génère le scénario :
{
"name": "Order Refund Complete Flow",
"steps": [
{ "type": "case", "caseId": "tc-create-order" },
{ "type": "case", "caseId": "tc-pay" },
{ "type": "case", "caseId": "tc-001" },
{ "type": "case", "caseId": "tc-get-refund" }
]
}Valider avant d'écrire :
apidog cli-schema validate test-scenario-update --file ./scenario-update.jsonCréer un scénario :
apidog test-scenario create --project <projectId> --file ./scenario-update.jsonÉtape 4 : Exécuter la Vérification
Une fois les cas de test et les scénarios prêts :
apidog run --project <projectId> \
--test-scenario scenario-001 \
--environment env-production \
-r "cli,html,junit" \
--out-dir ./apidog-reportsSortie CLI :
{
"success": true,
"stats": {
"total": 4,
"passed": 4,
"failed": 0
},
"reportFiles": {
"cli": "./apidog-reports/cli-report.txt",
"html": "./apidog-reports/report.html",
"junit": "./apidog-reports/junit.xml"
},
"agentHints": {
"summary": "Tous les tests ont réussi. 4 étapes exécutées avec succès.",
"nextSteps": [
"Examinez le rapport HTML pour des résultats détaillés.",
"Si des échecs se sont produits, déboguez en utilisant les détails d'erreur du CLI.",
"Intégrez ce test dans le pipeline CI."
]
}
}La Chaîne Complète
Tous les éléments sont maintenant connectés :
| Élément | Statut |
|---|---|
| PRD | Lu et traité |
| Base de code | Analysée pour les routes |
| OpenAPI | Générée et importée |
| Actifs des points d'accès | Créés dans Apidog |
| Tests de point d'accès unique | Créés et validés |
| Scénario métier | Construit et vérifié |
Tout est vérifiable et traçable.
agentHints Tout au Long du Flux
Remarquez comment agentHints guide chaque transition :
| Après | agentHints Suggère |
|---|---|
| Importation des points d'accès | "Lister les points d'accès, ajouter des cas de test" |
| Création d'un cas de test | "Relire, créer plus de cas de test, construire un scénario" |
| Création d'un scénario | "Ajouter des assertions, valider, exécuter" |
| Exécution des tests | "Examiner le rapport, déboguer si nécessaire, intégrer au CI" |
L'Agent n'a jamais à deviner la prochaine étape.
Comparaison : MCP vs. CLI + SKILL pour cette Tâche
| Dimension | Approche MCP | Approche CLI + SKILL |
|---|---|---|
| Point de départ | L'Agent recherche les outils de projet | SKILL identifie le type de tâche |
| Création de point d'accès | L'Agent devine quel outil, quels champs | Importation CLI depuis OpenAPI |
| Création de cas de test | Plusieurs tentatives en cas d'erreurs de champ | Validation locale avant l'écriture |
| Construction de scénario | L'Agent écrit la structure à la main | Importer les étapes, relire, mettre à jour |
| Vérification | L'Agent trouve l'outil d'exécution | agentHints suggère après le scénario |
| Nombre total d'étapes | ~20-25 appels avec des tentatives | ~10-12 appels validés |
Quelle Est la Suite
Cet exemple pratique montre comment CLI + SKILL fonctionne dans un flux de travail réel.
Mais il y a une fondation sous tout cela : la compatibilité CI/CD.
Dans la partie 8, Pourquoi la compatibilité CI/CD est non négociable pour les outils d'agent, nous explorerons pourquoi apidog run sert à la fois les pipelines CI et les Agents IA—et pourquoi cette double finalité est importante pour la conception d'outils durables.
Points Clés à Retenir
- Flux de travail complet : PRD → OpenAPI → Importation → Cas de Test → Scénario → Vérification
- Chaque étape comprend une commande CLI + validation +
agentHints - L'importation d'étapes + la relecture est plus sûre que l'écriture manuelle de scénarios
--with-case-detailfournit une structure réelle pour les mises à jouragentHintsguide chaque transition- Tout est vérifiable et traçable
Téléchargez Apidog pour concevoir, simuler, tester et documenter des API dans un seul espace de travail. Apprenez-en davantage sur Apidog CLI pour les tests d'API en ligne de commande, l'automatisation CI et les flux de travail des Agents IA.
bouton
