Skip to content
Learni
View all tutorials
Performance Web

Comment effectuer des tests de charge avec k6 en 2026

Introduction

Les tests de charge permettent de vérifier comment une application se comporte sous une forte sollicitation. En 2026, ils sont essentiels pour garantir la fiabilité des API et sites web face à des pics de trafic. k6, outil open-source moderne, rend ces tests accessibles grâce à son langage JavaScript familier. Ce tutoriel vous apprend à installer k6, écrire des scripts complets et interpréter les métriques clés comme le temps de réponse et le taux d'erreur. Vous obtiendrez rapidement des résultats actionnables pour améliorer vos performances.

Prérequis

  • Node.js 18 ou supérieur installé
  • Connaissances de base en JavaScript
  • Un terminal (bash ou PowerShell)
  • Une application web accessible via HTTP (ex: API REST locale)

Installation de k6

terminal
# Linux / macOS
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys C5AD17C747E3415A
sudo sh -c 'echo "deb https://dl.k6.io/deb stable main" | tee /etc/apt/sources.list.d/k6.list'
sudo apt-get update
sudo apt-get install k6

# Vérification
k6 version

Cette commande installe k6 depuis le dépôt officiel. Elle ajoute la clé GPG et le repository pour obtenir la dernière version stable. Vérifiez l'installation avec k6 version avant de continuer.

Script de test de base

load-test.js
import http from 'k6/http';
import { sleep } from 'k6';

export default function () {
  const response = http.get('https://jsonplaceholder.typicode.com/posts/1');
  console.log(`Status: ${response.status}`);
  sleep(1);
}

Ce script effectue une requête GET simple sur une API publique. La fonction sleep simule un utilisateur réel. Exécutez-le avec k6 run load-test.js pour tester le comportement de base.

Exécution du test

terminal
k6 run load-test.js

Lance le script de test. k6 affiche en temps réel les métriques : requêtes par seconde, temps de réponse moyen et erreurs. Appuyez sur Ctrl+C pour arrêter.

Ajout de scénarios de charge

load-test.js
import http from 'k6/http';
import { sleep } from 'k6';

export const options = {
  stages: [
    { duration: '30s', target: 10 },
    { duration: '1m', target: 50 },
    { duration: '30s', target: 0 },
  ],
};

export default function () {
  http.get('https://jsonplaceholder.typicode.com/posts/1');
  sleep(1);
}

Les options stages définissent une montée progressive à 50 utilisateurs virtuels. Cela simule un pic de trafic réaliste et permet d'observer la stabilité de l'application.

Ajout de vérifications et seuils

load-test.js
import http from 'k6/http';
import { check, sleep } from 'k6';

export const options = {
  thresholds: {
    http_req_duration: ['p(95)<500'],
    http_req_failed: ['rate<0.01'],
  },
};

export default function () {
  const res = http.get('https://jsonplaceholder.typicode.com/posts/1');
  check(res, {
    'status is 200': (r) => r.status === 200,
    'response time OK': (r) => r.timings.duration < 500,
  });
  sleep(1);
}

Les thresholds arrêtent le test si les conditions ne sont pas respectées. Les checks valident le statut et le temps de réponse. C'est indispensable pour automatiser la validation de performance.

Bonnes pratiques

  • Toujours définir des seuils (thresholds) stricts avant de lancer les tests
  • Utiliser des données dynamiques pour éviter le cache
  • Commencer par de faibles charges et augmenter progressivement
  • Exécuter les tests depuis plusieurs régions géographiques
  • Intégrer les tests dans votre pipeline CI/CD

Erreurs courantes à éviter

  • Oublier de valider les réponses avec des checks
  • Utiliser des URLs en dur sans variables d'environnement
  • Ne pas simuler des pauses réalistes entre les requêtes
  • Ignorer les erreurs 4xx/5xx dans les rapports

Pour aller plus loin

Approfondissez vos compétences avec nos formations complètes sur les tests de performance. Découvrez le programme détaillé sur https://learni-group.com/formations.