Skip to content
Learni
Voir tous les tutoriels
Performance & Tests

Comment réaliser des tests de charge experts en 2026

Read in English

Introduction

Les tests de charge sont essentiels pour garantir que vos applications résistent à un trafic réel sans dégradation. En 2026, les outils comme k6 permettent de simuler des milliers d'utilisateurs virtuels avec un code JavaScript simple et puissant. Ce tutoriel vous guide à travers des scénarios experts incluant ramp-up progressif, seuils de performance stricts et métriques personnalisées. Vous apprendrez à identifier les goulots d'étranglement avant qu'ils n'impactent vos utilisateurs en production.

Prérequis

  • Node.js 20+ et k6 installé
  • Connaissances solides en JavaScript et HTTP
  • Une application cible exposée (API REST ou frontend)
  • Docker pour les tests distribués
  • Accès à un environnement de test isolé

Installation et configuration de base

terminal
brew install k6
k6 version
mkdir load-tests && cd load-tests

Installation de k6 via Homebrew sur macOS. Vérifiez la version et créez un dossier dédié pour organiser vos scripts de test de charge.

Script de test basique avec ramp-up

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

export const options = {
  stages: [
    { duration: '2m', target: 100 },
    { duration: '5m', target: 500 },
    { duration: '2m', target: 0 },
  ],
  thresholds: {
    http_req_duration: ['p(95)<250'],
    http_req_failed: ['rate<0.01'],
  },
};

export default function () {
  const res = http.get('https://votre-api.com/health');
  check(res, { 'status is 200': (r) => r.status === 200 });
  sleep(1);
}

Ce script définit un ramp-up vers 500 VUs sur 9 minutes avec seuils stricts. Les checks valident les réponses et sleep simule le comportement utilisateur réel.

Scénario avancé avec métriques personnalisées

advanced-metrics.js
import http from 'k6/http';
import { Trend } from 'k6/metrics';

const apiLatency = new Trend('api_latency');

export const options = {
  vus: 200,
  duration: '10m',
};

export default function () {
  const res = http.get('https://votre-api.com/users');
  apiLatency.add(res.timings.duration);
  if (res.status !== 200) {
    console.error(`Erreur: ${res.status}`);
  }
}

Ajout d'une métrique personnalisée Trend pour suivre précisément la latence API. Utile pour des rapports détaillés et l'analyse des percentiles au-delà des seuils standards.

Test distribué avec Docker

Dockerfile
FROM grafana/k6:latest
COPY . /scripts
WORKDIR /scripts
ENTRYPOINT ["k6", "run", "--out", "experimental-prometheus-rw", "advanced-metrics.js"]

Créez une image Docker pour exécuter k6 en mode distribué. L'output vers Prometheus permet une visualisation temps réel et l'agrégation de métriques sur plusieurs nœuds.

Intégration dans une pipeline CI/CD

.github/workflows/load-test.yml
name: Load Test
on: [push]
jobs:
  load-test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Run k6
        uses: grafana/k6-action@v0.3.0
        with:
          filename: advanced-metrics.js
          flags: --vus 100 --duration 5m

Intégrez les tests de charge dans GitHub Actions. Le workflow s'exécute automatiquement sur chaque push et échoue si les seuils ne sont pas respectés.

Bonnes pratiques

  • Définissez toujours des seuils stricts (p95, taux d'erreur) et faites échouer le build en cas de non-respect
  • Utilisez des données dynamiques et des variables d'environnement pour éviter le caching
  • Exécutez les tests sur un environnement identique à la production
  • Analysez les traces avec Prometheus/Grafana plutôt que les logs bruts
  • Limitez la durée des tests à 10-15 minutes pour les tests de pic

Erreurs courantes à éviter

  • Oublier de valider les réponses HTTP (status 200 uniquement) conduit à des faux positifs
  • Utiliser trop de VUs sans ramp-up provoque un pic artificiel et des timeouts
  • Ignorer les métriques de latence réseau et se concentrer uniquement sur le temps de réponse serveur
  • Ne pas isoler l'environnement de test, ce qui fausse les résultats à cause d'autres processus

Pour aller plus loin

Approfondissez vos compétences avec nos formations avancées sur la performance et les tests de charge. Découvrez nos formations Learni.