Aller au contenu

Content slides

Introduction

Les tests de charge sont cruciaux pour évaluer la performance d'une application sous une charge importante.

Grafana k6 est un outil open-source conçu pour effectuer des tests de charge, capable de simuler des utilisateurs virtuel**s, de **générer des métriques de performance, et de suivre des résultats de test via des dashboards.


Pourquoi Grafana K6 ?

  • Scalabilité : Permet d’exécuter des tests avec un grand nombre d’utilisateurs (écrit en golang)
  • Intégration facile/Utilisation : Facilité d'intégration en CI/CD
  • Flexibilité : Basé sur JavaScript, il est facile d’écrire des scénarios complexes.
  • Visualisation : Peut être combiné avec Grafana pour des rapports visuels, même si il en propose un built-in
  • Extensible : Nombreuse extensions (prometheus, kafka, loki, OTEL, elastic, etc.)

Example de test

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

export let options = {
  vus: 50, // Nombre d'utilisateurs virtuels
  duration: '30s', // Durée du test
};

export default function () {
  let res = http.get('https://exemple.com');
  check(res, {
    'status est 200': (r) => r.status === 200,
    'temps de réponse < 500ms': (r) => r.timings.duration < 500,
  });
  sleep(1);
}

Explication: - options : Définit le nombre d’utilisateurs virtuels et la durée. - check : Permet de valider certains critères (statut de la réponse, temps de réponse, etc.). - sleep : Met en pause chaque itération pour simuler des utilisateurs réels.


Intégration dans GitLab CI

stages:
  - test

load_test:
  stage: test
  image: grafana/k6
  script:
    - k6 run tests/load-test.js
  artifacts:
    paths:
      - test-results/
    expire_in: 1 day

Analyse des Résultats et Optimisation

Une fois les tests effectués, analysez les résultats :

Temps de réponse moyen : Vérifiez si les temps de réponse sont conformes aux objectifs. Taux de succès : Assurez-vous qu'un maximum de requêtes répondent avec un statut 200. Métriques Grafana : Utilisez Grafana pour surveiller l’évolution des performances dans le temps.


☕️ Si tu souhaites soutenir mon travail, tu peux m'offrir un café ici.