[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"pack-detail-api-testing-stack-fr":3,"seo:pack:api-testing-stack:fr":65},{"code":4,"message":5,"data":6},200,"操作成功",{"pack":7},{"slug":8,"icon":9,"tone":10,"status":11,"status_label":12,"title":13,"description":14,"items":15,"install_cmd":64},"api-testing-stack","🧪","#A16207","stable","Stable","Stack de Tests API","Bruno, Hoppscotch, Hurl, k6, Artillery, Locust — remplaçants open-source de Postman + JMeter, sans verrou SaaS.",[16,28,36,43,50,57],{"id":17,"uuid":18,"slug":19,"title":20,"description":21,"author_name":22,"view_count":23,"vote_count":24,"lang_type":25,"type":26,"type_label":27},996,"89ca3775-356f-11f1-9bc6-00163e2b0d79","bruno-open-source-ide-api-exploration-testing-89ca3775","Bruno — Open-Source IDE for API Exploration & Testing","Bruno is an open-source IDE for exploring and testing APIs — a lightweight, offline-first alternative to Postman and Insomnia. Stores collections as plain text files in your filesystem so they version-control naturally with Git.","Script Depot",324,0,"en","skill","Skill",{"id":29,"uuid":30,"slug":31,"title":32,"description":33,"author_name":34,"view_count":35,"vote_count":24,"lang_type":25,"type":26,"type_label":27},467,"1a83c479-0009-482b-9b11-bb41fb93d5be","hoppscotch-open-source-api-development-platform-1a83c479","Hoppscotch — Open-Source API Development Platform","Test APIs with a beautiful UI. REST, GraphQL, WebSocket, SSE, and gRPC. Self-hostable Postman alternative. 78K+ GitHub stars.","AI Open Source",307,{"id":37,"uuid":38,"slug":39,"title":40,"description":41,"author_name":22,"view_count":42,"vote_count":24,"lang_type":25,"type":26,"type_label":27},1118,"42405722-364b-11f1-9bc6-00163e2b0d79","hurl-run-test-http-requests-plain-text-42405722","Hurl — Run and Test HTTP Requests with Plain Text","Hurl is a command-line tool that runs HTTP requests defined in a simple plain text format. Chain requests, capture values, assert responses, and use it for API testing in CI\u002FCD. Written in Rust on top of libcurl for maximum compatibility.",266,{"id":44,"uuid":45,"slug":46,"title":47,"description":48,"author_name":22,"view_count":49,"vote_count":24,"lang_type":25,"type":26,"type_label":27},1116,"4240522f-364b-11f1-9bc6-00163e2b0d79","k6-modern-load-testing-tool-using-go-javascript-4240522f","k6 — Modern Load Testing Tool Using Go and JavaScript","k6 is a modern load testing tool built by Grafana Labs. Write test scripts in JavaScript, run them in a high-performance Go runtime. Developer-centric with CLI-first workflow, CI\u002FCD integration, and Grafana Cloud for result analysis.",279,{"id":51,"uuid":52,"slug":53,"title":54,"description":55,"author_name":34,"view_count":56,"vote_count":24,"lang_type":25,"type":26,"type_label":27},1396,"729c7c2c-38d7-11f1-9bc6-00163e2b0d79","artillery-modern-load-testing-http-websocket-more-729c7c2c","Artillery — Modern Load Testing for HTTP, WebSocket & More","Node.js load testing toolkit with YAML scenarios covering HTTP, WebSocket, gRPC and Playwright, plus distributed runs on AWS Fargate.",262,{"id":58,"uuid":59,"slug":60,"title":61,"description":62,"author_name":34,"view_count":63,"vote_count":24,"lang_type":25,"type":26,"type_label":27},1117,"42405496-364b-11f1-9bc6-00163e2b0d79","locust-scalable-load-testing-pure-python-42405496","Locust — Scalable Load Testing in Pure Python","Locust is an open-source load testing tool where you define user behavior in plain Python code. Distributed, scalable, and with a real-time web UI for monitoring. No DSL to learn — just write Python.",271,"tokrepo install pack\u002Fapi-testing-stack",{"pageType":66,"pageKey":8,"locale":67,"title":68,"metaDescription":69,"h1":13,"tldr":70,"bodyMarkdown":71,"faq":72,"schema":88,"internalLinks":98,"citations":111,"wordCount":124,"generatedAt":125},"pack","fr","Stack Tests API : Bruno, Hoppscotch, Hurl, k6, Artillery","Pack open-source de tests API : clients Bruno + Hoppscotch, Hurl en CI, k6 + Artillery + Locust pour la charge. Remplace Postman et JMeter, sans SaaS lock-in.","Six outils open-source qui remplacent Postman + JMeter de bout en bout : deux clients interactifs, un runner CI, trois générateurs de charge. Installation TokRepo.","## Ce que contient ce pack\n\nCe pack rassemble les **six outils open-source** qui ont remplacé Postman et JMeter dans les équipes d'ingénierie modernes. Les changements de prix de Postman et la sync cloud forcée depuis 2023 ont poussé beaucoup d'équipes hors de la plateforme ; JMeter marche encore mais ses scripts XML et son écosystème Java-only font mal à côté des alternatives JavaScript-natives. Le pack divise la surface en trois problèmes : exploration interactive, assertions CI, génération de charge.\n\n| # | Ressource | Rôle | Particularité |\n|---|---|---|---|\n| 1 | Bruno | Client interactif | Fichiers `.bru` texte brut, collections versionnables git |\n| 2 | Hoppscotch | Client interactif | Browser-first, auto-hébergeable, collaboration temps réel |\n| 3 | Hurl | Runner CI | DSL texte brut, binaire unique, parfait pour Makefiles |\n| 4 | k6 | Tests de charge | Scripting JavaScript, dashboards Grafana natifs |\n| 5 | Artillery | Tests de charge | Scénarios YAML, charge navigateur via Playwright |\n| 6 | Locust | Tests de charge | Tests Python purs, modèle distribué master-worker |\n\nLe triptyque client interactif + runner CI + générateur de charge couvre tout le cycle. Bruno ou Hoppscotch c'est là où vous cliquez en écrivant les endpoints. Hurl c'est ce qui tourne en CI pour confirmer que le contrat n'a pas dérivé. k6 \u002F Artillery \u002F Locust c'est ce qui tourne contre staging avant chaque release.\n\n## Pourquoi quitter Postman et JMeter\n\nTrois forces ont convergé. **Postman est devenu cloud-only par défaut** en 2023 — les collections se synchronisent sur leurs serveurs, le partage exige des comptes, le tier gratuit a rétréci. **L'UX de JMeter date de 2005** — configs XML, GUI-first, pas d'histoire de scripting agréable. **CI exige la diffabilité** — Postman exporte des blobs JSON qui produisent des diffs PR illisibles ; le `.bru` de Bruno et le texte brut de Hurl produisent des diffs lisibles que les reviewers peuvent auditer.\n\nAu-delà de la migration, le pack open-source ajoute des capacités que Postman n'a jamais eues :\n\n- Lancer **le même test de charge dans trois moteurs** pour trianguler (k6 pour HTTP-heavy, Artillery pour les flux navigateur, Locust quand votre équipe Python veut rester en Python).\n- **Les fichiers Hurl font office de documentation** — collez un `.hurl` dans un runbook et tout ingé avec curl peut le lire.\n- **Auto-hébergez Hoppscotch** pour garder les données enterprise sur votre réseau — le tier enterprise de Postman facture par siège.\n\n## Installer en une commande\n\n```bash\n# Installe le pack entier dans le projet actuel\ntokrepo install pack\u002Fapi-testing-stack\n\n# Ou choisissez des ressources individuelles\ntokrepo install hurl\ntokrepo install k6\n```\n\nLe TokRepo CLI écrit des squelettes de collection Bruno, un répertoire `tests\u002Fapi\u002F*.hurl` et un dossier `loadtest\u002F` avec templates pour k6, Artillery et Locust. Snippets CI GitHub Actions et GitLab CI inclus par ressource.\n\n## Pièges courants\n\n- **Traiter les résultats k6 comme réalistes sans warm-up.** k6 monte vite par défaut ; si vous démarrez à 1000 VUs, votre service passe les 30 premières secondes à remplir les caches et votre p99 paraît pire qu'il n'est. Utilisez `stages` avec une rampe 30-60s.\n- **Assertions Hurl sur le texte du body.** Assertez sur les paths JSON (`jsonpath \"$.user.id\"`), pas des sous-chaînes. Les comparaisons de texte échouent à tort quand votre sérialiseur change les espaces ou l'ordre des clés.\n- **Partager des collections Bruno sans stratégie `environments\u002F`.** Bruno supporte des variables par environnement ; si vous committez des credentials directement dans les `.bru`, vous avez fuité des secrets dans git. Utilisez `bru env` et patterns `.env.local`.\n- **Locust à très haut RPS sur une machine.** Le GIL de Locust signifie qu'un process Python plafonne autour de 1k-2k RPS ; utilisez `--master` + plusieurs `--worker`, ou passez à k6 pour les scénarios >5k RPS.\n- **Oublier d'enregistrer p99 à côté du throughput.** Un test à 10k RPS avec p50=20ms est dénué de sens si p99=8s. Exportez toujours l'histogramme de latence, pas que la moyenne.\n\n## Relation aux autres packs\n\nCe pack s'apparie avec **Orchestration de Workflows** (lancer des tests de charge nocturnes via cron Inngest ou Prefect) et **Générateurs Sites Statiques & Docs** (publier des docs OpenAPI alignées avec ce que vos tests Hurl assertent — source unique de vérité entre docs et tests). Pour l'observabilité complète, ajoutez **Charts & Data Viz** pour rendre la sortie CSV de k6 via Apache ECharts ou Grafana.",[73,76,79,82,85],{"q":74,"a":75},"Le pack est-il gratuit de bout en bout ?","Oui. Chaque outil est open source sous licence permissive (MIT, Apache 2.0, AGPL pour l'auto-hébergement Hoppscotch). k6 a un service payant Grafana Cloud k6 pour stockage géré des résultats, mais le binaire OSS lance des tests illimités en local ou en CI. Artillery a un tier pro payant avec rapport géré ; le CLI core est gratuit. Locust et Hurl sont inconditionnellement gratuits.",{"q":77,"a":78},"Comment ça se compare à Postman ?","Postman reste l'expérience la plus fluide pour la première exploration d'API grâce à son UX mature. Le pack open-source égale la parité fonctionnelle pour collections, environnements et scripts de test, avec deux gros avantages : fichiers texte qui difent proprement en code review, et auto-hébergement pour que les secrets ne sortent pas du réseau. Compromis : UX de collaboration moins mature, pas de monitoring API intégré (utilisez Workflow Orchestration à la place).",{"q":80,"a":81},"Ça fonctionnera avec Claude Code ou Cursor ?","Oui. Claude Code peut écrire des collections Bruno, tests Hurl et scripts k6 depuis une spec OpenAPI — les pages de ressource TokRepo incluent des prompts subagent. Workflow courant : donnez à Claude un `openapi.yaml`, demandez de générer `tests\u002Fapi\u002F*.hurl` couvrant chaque endpoint, puis lancez `hurl --test tests\u002Fapi\u002F*.hurl` en CI. Les utilisateurs Cursor obtiennent des règles équivalentes dans `.cursor\u002Frules\u002F`.",{"q":83,"a":84},"Quelle différence entre Bruno et Hoppscotch ?","Bruno est desktop-first, basé sur fichiers — les collections vivent sur votre disque comme `.bru` texte. Idéal pour petites équipes qui utilisent déjà git comme source de vérité. Hoppscotch est browser-first avec auto-hébergement optionnel, avec un modèle de collaboration temps réel plus riche — meilleur quand product managers et QA doivent voir les résultats des requests. La plupart choisissent l'un, mais les deux coexistent si vous migrez progressivement.",{"q":86,"a":87},"Piège opérationnel en lançant k6 en CI ?","k6 émet un exit code 0 même quand les thresholds échouent à moins de mettre `--quiet=false` et regarder stderr — ou mieux, utilisez `thresholds` avec `abortOnFail: true` par check. Beaucoup d'équipes livrent du CI vert qui a secrètement violé les SLOs p99 parce qu'elles ont fait confiance à l'exit code. Aussi : pipez le `--out` de k6 en JSON et archivez-le comme artefact CI pour comparer les runs dans le temps.",{"@context":89,"@type":90,"name":91,"description":92,"numberOfItems":93,"publisher":94},"https:\u002F\u002Fschema.org","CollectionPage","API Testing Stack","Open-source replacements for Postman and JMeter — Bruno, Hoppscotch, Hurl, k6, Artillery, Locust.",6,{"@type":95,"name":96,"url":97},"Organization","TokRepo","https:\u002F\u002Ftokrepo.com",[99,103,107],{"url":100,"anchor":101,"reason":102},"\u002Ffr\u002Fpacks\u002Fworkflow-orchestration","Orchestration de Workflows","planifier les tests de charge comme jobs récurrents",{"url":104,"anchor":105,"reason":106},"\u002Ffr\u002Fpacks\u002Fstatic-site-docs","Générateurs Sites Statiques & Docs","publier des docs API alignées avec les contrats testés",{"url":108,"anchor":109,"reason":110},"\u002Ffr\u002Ftools\u002Fclaude-code","Claude Code","agent qui génère scripts Hurl + k6 depuis OpenAPI",[112,116,120],{"claim":113,"source_name":114,"source_url":115},"Bruno is an open-source API client that stores collections as plain text files for git versioning","Bruno","https:\u002F\u002Fwww.usebruno.com",{"claim":117,"source_name":118,"source_url":119},"k6 is a developer-centric load testing tool from Grafana Labs, scripting in JavaScript","grafana\u002Fk6","https:\u002F\u002Fgithub.com\u002Fgrafana\u002Fk6",{"claim":121,"source_name":122,"source_url":123},"Hurl runs HTTP requests defined in plain text and asserts on responses for CI","hurl.dev","https:\u002F\u002Fhurl.dev",736,"2026-05-02T15:00:00Z"]