k6 vs Artillery : quel outil de test de charge choisir ?
6 min de lecture
k6 et Artillery sont deux outils de test de charge open source où les tests s’écrivent sous forme de code, et l’un comme l’autre testera correctement une API HTTP sous charge. Choisissez k6 si vous voulez un binaire unique, une logique de test en JavaScript et des seuils de réussite intégrés. Choisissez Artillery si votre équipe vit déjà dans Node.js, préfère des scénarios YAML courts, ou veut des tests navigateur avec Playwright et des exécutions distribuées sur AWS ou Azure depuis la ligne de commande.
Les informations ci-dessous viennent de la documentation et du dépôt de chaque projet, vérifiées le 8 octobre 2026.
| k6 | Artillery | |
|---|---|---|
| Licence | AGPL-3.0 (dépôt) | MPL-2.0, certains modules Azure sous BSL (dépôt) |
| Environnement d’exécution | Un binaire Go avec un moteur JavaScript intégré | Node.js, dernière version LTS |
| Scripts de test | JavaScript | YAML, TypeScript ou JavaScript |
| Protocoles principaux | HTTP, WebSockets, gRPC | HTTP, WebSocket, Socket.IO (gRPC et Kinesis via des moteurs additionnels) |
| Tests navigateur | Module navigateur intégré | Playwright |
| Critères de réussite | Thresholds | Plugin ensure |
| Montée en charge distribuée | k6-operator sur Kubernetes, ou Grafana Cloud k6 | run-lambda ou run-fargate sur AWS, run-aci sur Azure |
Quelle est la différence entre k6 et Artillery ?
Ils diffèrent surtout par leur environnement d’exécution et par la façon de décrire la charge. k6 est un outil Go compilé qui exécute du code de test JavaScript, alors qu’Artillery est un outil Node.js qui lit des scénarios YAML ou JavaScript.
Cette différence se voit dès le premier jour. Installer k6 revient à installer un paquet ou un binaire autonome, sans environnement d’exécution à maintenir. Artillery a besoin de Node.js et s’installe avec npm, ce qui est naturel dans un projet JavaScript et ajoute un environnement de plus à tenir à jour partout ailleurs.
Côté protocoles, le socle commun couvre l’essentiel du travail web : les deux parlent HTTP et WebSockets d’origine. k6 fournit aussi gRPC, et Artillery Socket.IO. Artillery obtient gRPC et Kinesis par des moteurs additionnels à installer séparément (vérifié le 9 octobre 2026), et k6 va plus loin grâce à son écosystème d’extensions.
Comment écrit-on un test avec chaque outil ?
Avec k6, vous écrivez un module JavaScript avec les options en haut et une fonction par défaut que chaque utilisateur virtuel exécute. Avec Artillery, vous écrivez le plus souvent un fichier YAML avec un bloc config pour la charge et un bloc scenarios pour ce que fait chaque utilisateur virtuel.
Un test k6 qui monte à 20 utilisateurs virtuels et échoue si le 95e percentile du temps de réponse dépasse 500 ms :
import http from "k6/http";
import { check, sleep } from "k6";
export const options = {
stages: [
{ duration: "30s", target: 20 },
{ duration: "1m", target: 20 },
{ duration: "15s", target: 0 },
],
thresholds: { http_req_duration: ["p(95)<500"] },
};
export default function () {
const res = http.get("https://staging.example.com/api/users");
check(res, { "status is 200": (r) => r.status === 200 });
sleep(1);
}
La même idée dans le format YAML d’Artillery, avec dix nouveaux utilisateurs virtuels par seconde pendant une minute :
config:
target: "https://staging.example.com"
phases:
- duration: 60
arrivalRate: 10
plugins:
ensure:
thresholds:
- "http.response_time.p95": 500
scenarios:
- flow:
- get:
url: "/api/users"
Les deux exemples modélisent la charge différemment. Le script k6 fixe un nombre d’utilisateurs virtuels simultanés, et le fichier Artillery fixe combien de nouveaux utilisateurs virtuels arrivent chaque seconde. k6 sait aussi piloter un taux d’arrivée grâce à ses executors de scénarios, et Artillery peut plafonner la concurrence avec maxVusers : choisissez donc le modèle qui correspond à la façon dont le vrai trafic arrive sur votre système, plutôt que celui que chaque outil montre en premier.
Comment k6 et Artillery décident-ils qu’un test a réussi ?
Les deux traduisent un objectif de performance en code de sortie, ce dont un pipeline CI a besoin. Un objectif manqué termine l’exécution avec un code de sortie non nul dans les deux outils.
Dans k6, les objectifs s’appellent des thresholds et se placent dans les options du script, comme dans l’exemple ci-dessus. Dans Artillery, ils se trouvent dans le plugin ensure, qui accepte des seuils simples et des conditions combinant plusieurs métriques.
La différence pratique tient à l’endroit où vivent les objectifs. Les thresholds de k6 sont dans le même fichier que la logique de test. Les vérifications d’Artillery sont dans le bloc config, où quelqu’un qui ne touche jamais aux scénarios peut quand même les ajuster.
Comment lancer un test plus gros qu’une seule machine ne peut générer ?
Les deux outils savent répartir un test sur plusieurs machines, par des chemins très différents. k6 s’appuie sur Kubernetes ou sur le service hébergé de Grafana, et Artillery sur votre propre compte AWS ou Azure.
Pour k6, le k6-operator répartit un test sur des pods d’un cluster Kubernetes, et Grafana Cloud k6 exécute les mêmes scripts en tant que service hébergé. Pour Artillery, les commandes run-lambda et run-fargate lancent des workers dans votre compte AWS après une configuration IAM unique via une pile CloudFormation. Sur Azure, run-aci fait de même avec Azure Container Instances, mais exige un abonnement payant à Artillery au-delà d’une évaluation (vérifié le 9 octobre 2026). Si vous utilisez déjà Kubernetes, la voie de l’operator vous semblera familière. Si vous préférez ne rien exploiter vous-même, la voie serverless d’Artillery a moins de pièces mobiles, à condition que le test puisse tourner dans AWS ou Azure.
Il existe une troisième voie pour les scripts k6. LoadFocus exécute les scripts k6 sur sa propre infrastructure cloud depuis 25 régions, si bien que le script lancé sur votre portable devient un test distribué sans cluster ni compte AWS. LoadFocus n’exécute pas les scripts Artillery : pour Artillery, ses propres commandes AWS et Azure restent le moyen de monter en charge.
Où vont les résultats ?
Les deux outils affichent un résumé à la fin d’une exécution et peuvent envoyer leurs métriques vers d’autres systèmes pour les tableaux de bord et les alertes.
D’après son dépôt, k6 propose des statistiques résumées ou des métriques détaillées exportées vers le service de votre choix. Artillery annonce dans son dépôt plus de 20 intégrations pour le monitoring, l’observabilité et la CI/CD. Les deux peuvent donc alimenter les tableaux de bord que vous avez déjà. Vérifiez avant de vous engager que la sortie précise dont vous avez besoin figure dans la liste, car les deux listes changent d’une version à l’autre.
Lequel choisir ?
Choisissez k6 si vous voulez un binaire unique dans la CI, une logique de test JavaScript avec un vrai flux de contrôle, et des thresholds dans le même fichier que le test. Il convient aussi aux équipes qui utilisent déjà Grafana, puisque l’outil open source et le service hébergé partagent la même API de script.
Choisissez plutôt Artillery si votre équipe écrit du Node.js tous les jours, si un court fichier YAML est plus facile à relire pour le reste de l’équipe qu’un script, ou si vous avez besoin de tests navigateur Playwright et de Socket.IO dans le même outil. Sa montée en charge serverless est aussi le chemin le plus court si votre infrastructure vit déjà dans AWS et que Kubernetes n’en fait pas partie.
Si vous hésitez encore, écrivez le même test de fumée dans les deux outils. Vingt lignes suffisent pour voir lequel votre équipe lit le plus facilement en revue de code.
FAQ
k6 est-il gratuit ? Oui. k6 est open source sous licence AGPL-3.0 et tourne gratuitement sur vos propres machines. Grafana Cloud k6 est un service hébergé distinct, avec sa propre tarification.
Artillery est-il gratuit ? En grande partie. L’essentiel d’Artillery est sous licence MPL-2.0, mais certains modules propres à Azure utilisent une licence source-available qui exige une licence commerciale pour un usage en production sur Azure, selon le dépôt du projet (vérifié le 8 octobre 2026).
LoadFocus peut-il exécuter des tests Artillery ? Non. LoadFocus exécute des scripts k6 et JMeter. Pour faire monter un test Artillery au-delà d’une machine, utilisez les commandes d’Artillery pour AWS Lambda, Fargate ou Azure Container Instances dans votre propre compte cloud.
Quel outil consomme le moins de ressources sur le générateur de charge ? Nous ne l’avons pas mesuré nous-mêmes, donc nous ne désignons pas de gagnant. Le projet k6 indique que même des machines modestes peuvent simuler beaucoup de trafic, et la seule comparaison honnête consiste à lancer le même scénario avec les deux outils sur votre propre matériel.
À lire aussi
- Gatling vs k6 : simulations JVM ou un seul binaire Go ?
- Comment faire un test de charge : le guide pas à pas
- Outils de test de charge open source : six options
- Test de charge dans GitHub Actions : guide pratique
- k6 vs Locust : scripts JavaScript ou utilisateurs Python ?
- Test de charge Artillery : l’outil Node.js passé en revue
Les affirmations techniques de cet article n'ont pas été relues de façon indépendante.