Aucun garde-fou de performance n'existait, et le dépôt ne chiffrait aucun temps de réponse. tests/load, quatre scénarios : - smoke : une minute sur chaque route de lecture, joué à chaque PR ; - charge : 50 utilisateurs, 40 sur le tableau de bord au rythme de son rafraîchissement, 10 qui explorent les sites ; - stress : débit croissant jusqu'à la rupture, arrêt au-delà de 10 % d'erreurs ; - limitation-debit : par le proxy, vérifie que nginx répond 429 et jamais 5xx. Seuils : p95 < 500 ms et p99 < 1 s sur les lectures, moins de 1 % d'échecs. k6 tourne en service Compose (profil load) sur le réseau du projet : il vise backend:8000 et mesure l'API plutôt que la limite de 20 req/s par adresse de nginx. Chaque tir écrit un rapport HTML, une synthèse Markdown et le JSON brut dans tests/load/results. make load-smoke, load-test, load-stress et load-limits ; le job E2E enchaîne le smoke et le test de limitation après Playwright. Closes #47
20 lines
695 B
JavaScript
20 lines
695 B
JavaScript
export const BASE_URL = __ENV.K6_BASE_URL || 'http://backend:8000';
|
|
export const API = `${BASE_URL}/api/v1`;
|
|
export const PROXY_URL = __ENV.K6_PROXY_URL || 'https://proxy';
|
|
|
|
export const COMPTE = {
|
|
email: __ENV.K6_EMAIL,
|
|
password: __ENV.K6_PASSWORD,
|
|
};
|
|
|
|
// Seuils posés par l'ADR 0015, faute d'exigence chiffrée dans le cahier des charges.
|
|
export const SEUILS = {
|
|
http_req_failed: ['rate<0.01'],
|
|
checks: ['rate>0.99'],
|
|
'http_req_duration{type:lecture}': ['p(95)<500', 'p(99)<1000'],
|
|
'http_req_duration{name:stats_summary}': ['p(95)<500'],
|
|
'http_req_duration{name:readings}': ['p(95)<800'],
|
|
};
|
|
|
|
export const STATISTIQUES = ['avg', 'min', 'med', 'p(90)', 'p(95)', 'p(99)', 'max'];
|