Skip to main content

Tests de performance

Les tests de performance sont réalisés avec K6.

K6 est un outil open-source conçu pour effectuer des tests de performance, de charge et de stress pour vos applications, services et APIs. Il est simple à utiliser, basé sur JavaScript pour l'écriture des scripts, et se focalise sur la performance avec une interface en ligne de commande facile à intégrer dans vos pipelines CI/CD.

Fonctionnement des Tests de Performance avec K6

1. Installation de K6

Avant de commencer à utiliser K6, vous devez l'installer.

2. Écriture d'un Script de Test K6

Les scripts de test K6 sont écrits en JavaScript. Voici un exemple simple de script K6 pour tester une API :

import http from 'k6/http';
import { check, sleep } from 'k6';

export const options = {
vus: 10, // Nombre d'utilisateurs virtuels (virtual users)
duration: '30s', // Durée du test
};

export default function () {
const res = http.get('https://openent.tech.fr/api/endpoint');

check(res, {
'status was 200': (r) => r.status === 200,
'response time was < 500ms': (r) => r.timings.duration < 500,
});

sleep(1); // Attente de 1 seconde entre les itérations
}

Dans cet exemple :

  • options : Cette section vous permet de configurer les paramètres de votre test, tels que le nombre d'utilisateurs virtuels (vus) et la durée totale du test (duration).
  • http.get : Effectue une requête HTTP GET vers l'API que vous souhaitez tester.
  • check : Effectue des assertions sur la réponse, par exemple vérifie si le code de statut est 200 et si le temps de réponse est inférieur à 500ms.
  • sleep : Pause d'une seconde entre chaque itération pour simuler un utilisateur réel.

3. Exécution du Test de Performance

Une fois le script prêt, vous pouvez exécuter le test de performance en utilisant la commande suivante :

k6 run script.js

Ici, script.js est le nom de votre fichier de script.

Pendant l'exécution, K6 affichera des métriques en temps réel, telles que le taux de réussite des requêtes, le temps de réponse moyen, et plus encore.

4. Analyser les Résultats

Les résultats des tests K6 sont affichés en temps réel dans le terminal avec des statistiques comme :

  • http_req_duration : Le temps moyen, min et max de chaque requête.
  • http_req_failed : Le pourcentage de requêtes qui ont échoué.
  • vus : Le nombre actuel d'utilisateurs virtuels actifs.
  • iteration_duration : Le temps total pour compléter une itération de votre script.

Voici un exemple de sortie :

          /\      |‾‾| /‾‾/  /‾‾/
/\ / \ | |/ / / /
/ \/ \ | ( / ‾‾‾‾
/ \ | |\ \ | |‾‾|
/ __________ \ |__| \__\|__| |_ Welcome to k6 v0.53.0!

execution: local
script: script.js
output: -

scenarios: (100.00%) 1 scenario, 10 max VUs, 40s max duration (incl. graceful stop):
* default: 10 looping VUs for 30s (gracefulStop: 30s)

checks.........................: 100.00% ✓ 300 ✗ 0
http_req_duration..............: avg=241.22ms min=236.15ms med=240.53ms max=270.57ms p(90)=247.36ms p(95)=252.91ms

5. Configuration Avancée

K6 permet également des configurations plus avancées pour simuler différents types de charges et scénarios complexes :

  • **Stages **: Pour simuler une montée en charge progressive.

    export const options = {
    stages: [
    { duration: '1m', target: 20 }, // 20 VUs pendant 1 minute
    { duration: '3m', target: 50 }, // 50 VUs pendant 3 minutes
    { duration: '2m', target: 0 }, // Retour à 0 VUs pendant 2 minutes
    ],
    };
  • **Scénarios **: Pour définir plusieurs scénarios de test simultanément.

    export const options = {
    scenarios: {
    scenario1: {
    executor: 'constant-vus',
    vus: 50,
    duration: '1m',
    },
    scenario2: {
    executor: 'ramping-vus',
    startVUs: 10,
    stages: [
    { duration: '1m', target: 50 },
    { duration: '3m', target: 100 },
    { duration: '2m', target: 0 },
    ],
    },
    },
    };

5. Configuration Open ENT

Les variables suivantes doivent être configurées avec k6 et les scripts réalisés

k6 run -e ROOT_URL=https://openent.tech.fr --compatibility-mode=experimental_enhanced script/script.ts