doc-locale/fr-fr/ci/testing/load_performance_testing.md
{{< details >}}
{{< /details >}}
Utilisez les tests de performance de charge pour mesurer l'impact des modifications de code sur les performances backend de votre application. GitLab utilise k6 pour simuler une charge sur les endpoints de l'application tels que les API et les contrôleurs web, et génère les résultats dans un fichier appelé load-performance.json.
Contrairement aux tests de performance de navigateur, qui mesurent le rendu des pages web dans un navigateur, les tests de performance de charge ciblent le côté serveur et permettent d'évaluer les temps de réponse et le débit sous charge.
Les résultats s'affichent directement dans la merge request, ce qui vous permet de détecter les régressions de performance dans le cadre de votre processus de revue.
Définissez un job dans votre fichier .gitlab-ci.yml qui génère l'artefact de rapport de performance de charge. GitLab vérifie ce rapport, compare les métriques clés de performance de charge entre la branche source et la branche cible, et affiche les résultats dans la merge request.
Les métriques clés affichées dans le widget de la merge request sont :
[!note] Le widget ne s'affiche pas tant que le job n'a pas été exécuté au moins une fois sur la branche cible.
Utilisez le modèle Verify/Load-Performance-Testing.gitlab-ci.yml inclus avec GitLab pour exécuter des tests de charge k6 contre votre application.
Prérequis :
Pour configurer les tests de performance de charge, ajoutez les éléments suivants à votre fichier .gitlab-ci.yml :
include:
template: Verify/Load-Performance-Testing.gitlab-ci.yml
load_performance:
variables:
K6_TEST_FILE: <PATH TO K6 TEST FILE IN PROJECT>
GitLab crée un job load_performance qui exécute le test k6 et enregistre les résultats sous forme d'artefact de rapport de performance de charge. Le dernier artefact disponible est toujours utilisé. Si GitLab Pages est activé, vous pouvez consulter le rapport directement dans votre navigateur.
Vous pouvez personnaliser le job avec des variables CI/CD :
| Variable | Valeur par défaut | Description |
|---|---|---|
K6_IMAGE | grafana/k6 | Image Docker à utiliser. Ne contrôle pas la version. |
K6_VERSION | 0.54.0 | Version de l'image Docker. |
K6_TEST_FILE | aucune | Chemin vers le fichier de test k6 dans le dépôt du projet. |
K6_OPTIONS | aucune | Options k6 supplémentaires. Pour plus d'informations, voir référence des options k6. |
K6_DOCKER_OPTIONS | aucune | Options supplémentaires transmises à docker run, telles que --env-file pour passer des variables d'environnement au conteneur k6. |
Par exemple, pour remplacer la durée du test :
include:
template: Verify/Load-Performance-Testing.gitlab-ci.yml
load_performance:
variables:
K6_TEST_FILE: <PATH TO K6 TEST FILE IN PROJECT>
K6_OPTIONS: '--duration 30s'
[!note] Ce modèle ne fonctionne pas avec les clusters Kubernetes. Utilisez plutôt
Jobs/Load-Performance-Testing.gitlab-ci.yml.
Pour les tests k6 à grande échelle, assurez-vous que l'instance GitLab Runner peut gérer la charge. Les runners GitLab.com partagés par défaut ne disposent probablement pas de spécifications suffisantes pour la plupart des tests k6 de grande envergure. Pour plus de détails, voir les recommandations de k6 pour l'exécution de tests à grande échelle.
Prérequis :
load_performance doit s'exécuter après le démarrage de l'environnement dynamique.Pour configurer les tests de performance de charge pour les environnements éphémères, capturez l'URL dynamique dans un fichier .env et transmettez-la au conteneur k6 à l'aide de K6_DOCKER_OPTIONS. k6 peut ensuite utiliser les variables d'environnement du fichier dans les scripts de test avec du JavaScript standard, par exemple : http.get(`${__ENV.ENVIRONMENT_URL}`).
Par exemple :
stages:
- deploy
- performance
include:
template: Verify/Load-Performance-Testing.gitlab-ci.yml
review:
stage: deploy
environment:
name: review/$CI_COMMIT_REF_SLUG
url: http://$CI_ENVIRONMENT_SLUG.example.com
script:
- run_deploy_script
- echo "ENVIRONMENT_URL=$CI_ENVIRONMENT_URL" >> review.env
artifacts:
paths:
- review.env
rules:
- if: $CI_COMMIT_BRANCH
load_performance:
dependencies:
- review
variables:
K6_DOCKER_OPTIONS: '--env-file review.env'
rules:
- if: $CI_COMMIT_BRANCH