Test de charge : décider sur des preuves, pas sur un ressenti

Nicolas Vincent
20 octobre 2026

Quand faut-il s’en préoccuper ?

Un site grand public, ce n’est pas qu’une vitrine. C’est parfois le canal principal et souvent le premier point de contact pour obtenir de l’information en temps réel, faire des démarches ou des réservations. Une lenteur ou une indisponibilité de quelques minutes se paie en termes d’ image, en appels au support. Et quand ça tombe le jour d’un lancement attendu par toute l’équipe, la tension monte vite en interne.

Les situations à risque se ressemblent : une migration de plateforme, une refonte, un pic saisonnier documenté chaque année dans vos analytics, une campagne qui concentre le trafic sur quelques URLs.

 

 

Ce que c’est, et ce que ce n’est pas

Un test de charge consiste à simuler du trafic sur un site pour voir comment il réagit quand le nombre de visiteurs augmente. Pour un client, nous organisons une campagne : cadrage, préparation des scénarios, plusieurs sessions de test à des niveaux de trafic différents, puis analyse des résultats ensemble.

Une campagne se prépare avec vous. Les simulations ont lieu sur des créneaux convenus, avec une intensité plafonnée. Votre équipe autorise nos adresses IP sur le pare-feu, et nous vérifions ensemble quels services externes les tests vont solliciter. Le but est de mesurer un périmètre précis et de le comparer aux critères de mise en production fixés au départ (le « GO »). Ce n’est pas une garantie qu’aucun incident n’arrivera jamais.

Tous les projets n’en ont pas besoin : un petit site interne avec peu de visiteurs a d’autres priorités.

 

On teste l’affluence et la performance, pas la sécurité

L’objectif d’une campagne, c’est de tester l’affluence : le site encaisse-t-il le volume de visites et de parcours attendu, avec des temps de réponse acceptables ? On parle de capacité, de montée en charge, de saturation éventuelle. La sécurité (failles, intrusions, règles du pare-feu applicatif) relève d’un audit à part, qui répond à d'autres types de questions comme "est-ce qu’un attaquant peut entrer ?".

Ce n’est PAS un audit de sécurité, un pentest ni une validation de votre politique WAF au sens cybersécurité. 

Les enjeux ne sont pas les mêmes : ici, la question est le service tient-il sous la foule légitime ? ; en sécurité, c’est quelqu’un de malveillant peut-il abuser du système ? 

Les tests ne sont pas les mêmes (parcours utilisateurs réalistes, paliers de charge, seuils de latence et d’échec HTTP, pas recherche de failles ou d’injection). 

Les moyens de mitigation non plus : dimensionner, optimiser, répartir la charge, ajuster le cache ou l’infra, plutôt que corriger une vulnérabilité, durcir l’authentification ou revoir les règles d’accès.

 

Test de charge

Audit de sécurité

Question poséeLe site tient-il face à un afflux de visiteurs légitimes ?Une personne malveillante peut-elle détourner le système ?
Ce qu’on testeParcours réalistes, paliers de trafic, temps de réponse, taux d’erreurFailles, injections, contrôle d’accès
Ce qu’on corrige ensuiteDimensionnement, cache, répartition de charge, infrastructureVulnérabilités, authentification, règles d’accès

 

Les deux sujets se complètent sur un site grand public, mais il ne faut pas attendre d’un test de charge qu’il remplace le volet sécurité, ni l’inverse. Sur notre campagne, la whitelist IP ne servait qu’à permettre la simulation appelée aussi “le tir” dans un cadre maîtrisé ; elle ne constituait pas le livrable « sécurité » du projet.

 

Ce qui est en jeu 

Une mauvaise expérience se raconte vite, sur les réseaux sociaux comme autour de soi. Sur un site où l’on fait des démarches ou des réservations, une panne empêche aussi les gens de faire ce pour quoi ils sont venus. Et après une migration qui a demandé des mois de travail, une seule journée de panne peut suffire à faire passer tout le projet pour un échec, surtout si personne n’avait vérifié la tenue en charge avant.

 

Est-ce utile pour votre projet ?

3 questions avant de se lancer

  • Quel est votre trafic habituel et quel a été votre pic le plus haut ?
  • Quels parcours comptent le plus pour votre activité  (accueil, recherche, fiches détail, services, démarches en ligne) ?
  • Qui décide du GO (côté métier et côté technique), avec quels seuils ?

Si vous avez une échéance, un ordre de grandeur de votre trafic et quelques parcours sensibles, une campagne sur deux paliers (trafic habituel et pic) est pertinente. 
L’objectif n’est pas de « casser » l’infrastructure (palier de stress explicité plus loin). Elle sert à vérifier, chiffres à l’appui, que l’infrastructure tient à ces deux niveaux avant la bascule

 

Quels parcours simuler ?

Si toutes les visites simulées ciblent uniquement la page d’accueil, on obtient des chiffres flatteurs, et faux : c’est souvent la page la plus légère et la mieux mise en cache du site. Un vrai visiteur passe de l’accueil à une liste, ouvre une fiche détail, lance une recherche, consulte une page de service, parfois dans la version anglaise du site. Et tous les visiteurs ne suivent pas le même chemin.

Pour nos campagnes, nous sommes partis de trois mois de statistiques de fréquentation. Chaque visite simulée suit un parcours qui respecte les analytics  observées sur le site. On retrouve ainsi 2,2 pages vues par visite en moyenne, comme dans la réalité.

 

Nominal, pic, stress : trois paliers de trafic

PalierCe que cela représenteOrdre de grandeur (campagne)
Nominal / Trafic habituelTrafic cible quotidien~30 requêtes/s
PicAffluence forte (×3)~90 requêtes/s
Stress / au-delàMarge exploratoire (sert à voir ce qui cède en premier)Hors critère de mise en prod

Le pic de référence peut venir d’une journée record dans vos outils d’audience.

 

Think time : affiner entre deux vagues

Lors de la deuxième vague, nous avons ajouté de courtes pauses aléatoires entre les pages (comme quelqu’un qui lit, réfléchi entre deux clics, cherche le bouton…). Le débit mesuré baisse un peu ; le scénario devient plus crédible. Les temps de réponse moyens montent par rapport à une rafale « machine » et c’est ce qui est attendu, c’est ce qu’on voulait montrer en itérant sur la méthode. Le scénario se rapproche du comportement réel, donc les chiffres sont plus fiables pour décider.

 

Comment se déroule une campagne ?

L’outil : Grafana k6

k6 est un outil open source édité par Grafana Labs. Il rejoue en parallèle les parcours que nous avons décrits dans des scripts, en augmentant le trafic palier par palier. À la fin de chaque simulation, il produit des rapports chiffrés.

Il peut tourner sur nos machines ou sur un serveur chez vous, sans passer par l’offre cloud de Grafana. On garde ainsi la main sur les créneaux, et on sait exactement d’où part le trafic.

Si vous utilisez déjà Grafana pour surveiller votre infrastructure, rien ne change : c’est le même éditeur, mais un autre outil. Pendant la campagne, nous comparons ce que montre k6 avec vos propres tableaux de bord.

schema_carre.png

 

Déroulé type d’une campagne Codéin

  1. Atelier de cadrage : on fixe ensemble les pages à tester, les créneaux, les seuils d’erreur acceptables et les critères de GO. 
  2. Préparation : validation des scripts à blanc (aucun appel réel au site).
  3. Simulations (Tirs réels) : elles tournent sur un environnement dédié ou sur une production isolée du public, avec nos IP autorisées sur le pare-feu.
  4. Lecture en direct avec votre équipe infrastructure : on ajuste les paliers si besoin et on lit les courbes ensemble. 
  5. Compte-rendu décisionnel :  notre recommandation, GO migration, réserves, actions à mener.

 

Ce que vous recevez

  • Une synthèse d’une page (recommandation et chiffres clés);
  • Un rapport PDF à archiver, et le rapport détaillé de chaque simulation ; 
  • Une liste d’actions priorisées, par exemple refaire une simulation après la mise en place d’un CDN, ou ajouter des parcours. 

 

Votre rôle dans le processus

Vous validez les parcours issus de vos statistiques, les niveaux de trafic, les critères de succès et le cadre opérationnel (créneaux, services tiers réellement appelés part vos pages). 

Pendant les simulations, l’équipe infra commente ses courbes et nous faisons le lien avec les nôtres. Les chiffres ne correspondent pas toujours : vos outils peuvent compter beaucoup moins de connexions que k6 ne compte de requêtes, parce qu’une seule connexion transporte plusieurs requêtes. Ce sont simplement deux façons de compter.

 


Retour d'expérience - deux campagnes, une décision

Acte I : Campagne « référence » (soir, deux stacks)

Objectif : comparer l’ancienne et la nouvelle plateforme CMS avant la bascule, sans pauses « lecture » entre les pages (charge serveur plus soutenue).

Au trafic habituel comme au pic (×3), nous n’avons constaté aucune régression notable. Au pic, moins de 0,5 % des requêtes ont échoué, et plus de 99 % des vérifications de contenu étaient bonnes.

Nous avons aussi poussé jusqu’à huit fois le trafic habituel. À ce niveau, environ 5 % des requêtes échouaient sur la nouvelle plateforme. Nous l’avons signalé comme une réserve, sans en faire une alerte, car les critères de GO fixés avant la campagne portaient sur le trafic habituel et le pic. Nous revenons plus bas sur la façon de lire ce chiffre.

 

La migration n’est pas validée sur un ressenti, mais sur des seuils écrits à l’avance.

Figure 1 — Synthèse trafic nominal, succès 100%

Figure 1 — Synthèse trafic nominal, succès 100%

 

Acte II — Campagne « réalisme + infra » (journée, équipe réseau)

Cette fois, les visites simulées incluaient des pauses de lecture, et l’équipe infrastructure du client suivait les simulations en direct. L’environnement de test n’avait pas de CDN : tout le trafic arrivait directement sur les serveurs, ce qui rendait le test plus exigeant que les conditions réelles.

  • Pic ×3 métier : 0 % d’échec HTTP et 100 % des vérifications de contenu réussies. Le critère contractuel est validé.
  • Exploration ×6 (~180 requêtes/s au meilleur moment) : environ 99 % de succès, avec quelques délais d’attente dépassés sur la page d’accueil et les fiches détail. Il reste donc de la marge au-delà du besoin.
  • Transparence : une dernière simulation, lancée après plusieurs montées en charge dans la même journée, a montré une dégradation. Nous l’avons gardée dans le rapport : ne retenir que la meilleure courbe aurait donné une image trop flatteuse.

 

 

Campagne référence

Campagne réalisme

Profil visiteur

Charge soutenue (Visites enchaînées sans pause )

Avec pauses de lecture

Décision pic ×3

GOGO

Au-delà du pic

Stress ~5 % échecs (exploratoire)

×6 ~99 % succès

Apprentissage (Ce que la campagne a apporté )

Des seuils écrits et vérifiés 

Alignement avec l’infra

 

Pendant la session en direct, l’équipe infrastructure voyait ses propres courbes monter en même temps que les nôtres. La discussion a porté sur des chiffres observés ensemble, et plus sur des hypothèses.

 

Ce que les chiffres veulent dire (sans cours de stats)

  • Le taux d’échec HTTP : la part des requêtes qui n’ont pas abouti (délai dépassé ou erreur). On le compare au seuil fixé au cadrage. 
  • Les vérifications de contenu (checks métier) : la page a répondu et elle affiche bien ce qu’elle doit afficher. Une page peut répondre « OK » au navigateur tout en étant vide ou incomplète, et cette vérification le détecte.
  • Le temps de réponse moyen : utile mais incomplet seul.
  • Le 95e percentile (p95) : 95 % des requêtes ont été plus rapides que cette valeur (C’est souvent le plus parlant pour l’expérience utilisateur car cela correspond à ce que vivent les visiteurs).

 

Dans nos campagnes, les échecs aux paliers les plus hauts étaient surtout des délais dépassés (délai fixé, souvent 30 s), et non des pages en erreur. Autrement dit, le site ralentissait au point de ne plus répondre à temps, mais les pages n’étaient pas cassées.

 

5 % d’échec au stress, est-ce grave ?

Pour la mise en production, non, tant que les critères de GO portent sur le trafic habituel et le pic. C’est en revanche un signal utile pour la suite : il situe la limite actuelle et aide à prévoir l’évolution de l’infrastructure si le trafic augmente.

Les chiffres varient aussi d’une campagne à l’autre, selon les pauses de lecture, la présence ou non d’un CDN, ou le nombre de simulations enchaînées dans la journée. Le rapport explique ces écarts pour qu’ils ne soient pas lus comme des incohérences.

 

Les chiffres peuvent varier entre vagues (think time, chemin réseau avec ou sans CDN, enchaînement de tirs) : ce n’est pas une incohérence, c’est le contexte à expliquer dans le rapport PDF.

 

Pour les curieux

k6 simule des « utilisateurs virtuels » (VU). Chacun déroule un parcours complet, de la première à la dernière page : c’est ce que k6 appelle une itération.

Les rapports affichent donc deux compteurs. Les requêtes par seconde comptent chaque page demandée, les itérations par seconde comptent les parcours complets. Comme un parcours contient en moyenne 2,2 pages dans nos campagnes, le premier chiffre est toujours plus élevé que le second.

 

Figure 3 — Vue des métriques d’un tir/simulation avec le report k6

Figure 3 - Vue des métriques d'un tir/simulation avec le report k6

 

Gouvernance et bonnes pratiques

Quelques règles simples encadrent chaque campagne :

  • Les paliers les plus élevés, à partir de trois fois le trafic habituel, sont lancés en soirée quand l’activité du site l’impose, pour ne pas gêner les vrais visiteurs.
  • Quand vos pages appellent des services externes, ces appels sont réels pendant les simulations.
  • Nous prévenons donc les fournisseurs concernés et vérifions leurs limites avant de commencer.
  • L’intensité est plafonnée. On vérifie la tenue aux niveaux prévus, et on s’arrête bien avant l’effondrement complet du site.
  • Nos adresses IP sont autorisées sur le pare-feu, et les simulations tournent sur un environnement isolé chaque fois que c’est possible.
  • Après la bascule, une dernière simulation passe par l’adresse publique du site, CDN compris, pour valider le chemin réellement emprunté par les visiteurs.

 

Comment Codéin vous accompagne

Nous prenons en charge la campagne de bout en bout, du cadrage à la présentation des résultats.

Les scripts sont versionnés et réutilisables : après une évolution du site, les mêmes simulations peuvent être relancées, depuis nos machines ou directement sur votre infrastructure.

  1. Cadrage : objectifs, KPI, parcours, environnements, critères de GO.
  2. Industrialisation : scripts versionnés, reproductibles (Docker ou k6 natif côté DSI).
  3. Exécution : nominal, pics, scénarios exploratoires si besoin.
  4. Restitution : présentation, rapport PDF, rapports HTML, backlog d’actions (perf, cache, infra).

 

Un test de charge réussi, ce n’est pas le chiffre le plus haut atteint : c’est une décision partagée avec des preuves. Nous simulons vos parcours les plus fréquents ( pas une rafale artificielle sur la page d’accueil). Grafana k6 apporte la précision ; votre équipe infra apporte le contexte ; ensemble, on limite les surprises le jour du pic.

 

En bref 

QuestionRéponse
Pourquoi ?Éviter de découvrir la saturation le jour J ou à la migration
Est-ce utile pour vous ? Si trafic, échéance et/ou parcours critiques
Est-ce un test de sécurité ?Non. On mesure la capacité face à l'affluence, et la sécurité demande un audit à part
Quel est votre rôle ?Valider les parcours, les niveaux de trafic, les critères de GO et les créneaux, puis suivre une session en direct avec votre équipe infrastructure.
Quels sont les livrables ?Une présentation des résultats, une synthèse d’une page, un rapport PDF, le rapport détaillé de chaque simulation et une liste d’actions classées par priorité. 

 

Ressources

Documentation Grafana k6 

https://grafana.com/docs/k6/latest/

 

k6 Web Dashboard (export HTML) 

https://grafana.com/docs/k6/latest/results-output/web-dashboard/

A lire aussi

La gestion de la performance des applications avec New Relic
Et vous, devez-vous migrer votre site web vers le cloud ?
Voir tous les articles