Load Testing ASP.NET Core Applications with k6: Introduction (Français (French))

Load Testing ASP.NET Core Applications with k6: Introduction

Tuesday, 02 December 2025

//

16 minute read

Votre application fonctionne parfaitement sur votre ordinateur portable. Les tests d'unité réussissent . Les essais d'intégration réussint M SK2 Vous vous déployez à la production , et soudainement, tout se met en train de s'arrêter MSC4 Cinquante cent utilisateurs réels atteignent simultanément votre page d'accueil MST5 et votre serveur commence à retourner M ST6 erreurs M st7 Votre stratégie de caching soigneusement conçue M S ST8 Il est apparu qu'elle ne fonctionne pas M St 9 comme vous l'avez pensé M T 10 Cette demande de base de données que vous pensaviez être rapide M टी 11 C'est ce qui constitue un créneau d'étranglement à grande échelleM S ST 13

C’est le scénario du cauchemar que tous les développeurs craignent, mais la plupart ne testent pas. Les essais de performance ne sont pas optionnels. Ce guide de deux parties vous montrera exactement comment prévenir ce scénario en utilisant k6, l’outil moderne d’essai des charges qui est suffisamment puissant pour les applications d’entreprise mais assez simple à exploiter dans votre pipeline CD.

Il s'agit de Partie 1 d'une série de deux pièces - sur l'essai de charge avec kM SK1

  • Partie 1: Introduction à l’installation de kM SK1 Types d’essai de , , et pourquoi k6
  • Partie 2: Mise en œuvre pratique: Essais de rédactionM SK1 CI/ Intégration à la CD , profilageMNK4 et exemples réelsMRK5world

Introduction

Les tests de performance sont essentiels pour toute production ASP.NET Application de base. Que vous construisiez un simple blogM SK3 une architecture complexe de microservices , ou une application d’entrepriseMSC5 vous devez savoir comment votre application se comporte sous la chargeMNK6 Est-ce qu’elle traite des utilisateurs concurrents MRK7 concurrentsMMK8 SNK9 Où se trouvent les embouteillages?? Votre stratégie de cache fonctionne-t-elle réellement?

Ce guide complet vous montre comment charger les applications de base ASP.NET en utilisant k6 - l’un des outils d’essai de chargement source les plus puissants disponibles, - . Alors que nous utilisons MinimalBlog comme notre exemple d’application (a simple markdown-blog basé sur la mémoire et le caching des sorties ), les techniques et les modèles présentés ici s’appliquent à toute application ASP.NET Core.

À la fin de cette série de deux pièces, vous saurez comment procéder.

  • Installer et configurer k6 sur n'importe quelle plate-forme (Windows, MacM SK3 LinuxMSC4
  • Rédiger des tests de performance exhaustifs pour différents scénarios
  • Intégrer k6 dans votre pipeline CI/CD avec les actions de GitHub
  • Utiliser les outils de profilage (dotTraceM SK1 dotMemory) à côté de kMSC3 pour repérer des lacunes
  • Mettre en oeuvre différentes stratégies d'essai: fumée , charge, stressM SK3 spikeMSC4 et essais de suction
  • Détecter la régression de performance afin d'empêcher que le code lent ne parvienne à la production

Pourquoi MinimalBlog comme exemple? Il'est une application ASP réelle .NET Core 9.0 avec des patrons communsMSC3 Pages RazorM SK4 caching de la mémoire,, cachage de l’ output,, fichier IMST7OMSST8 et traitement du marquage,MST9 Les méthodes d’essai que vous apprenez à appliquer aux applications MVC sont les mêmes pour vos applications Web MST11 API Web,M ST12 Application Blazor,M st13 ou API minimales,Mst14

Qu'est-ce que k6 et pourquoi l'utiliser?

k6 est un outil moderne d'essai de chargement conçu pour les développeurs. Contrairement à des outils plus anciens comme JMeter ou LoadRunner

  • Developer-friendly: Les essais sont écrits en langage JavaScript
  • CLI-première: Perfect pour les pipelines CIM SK1CD
  • Peu de poids: Binaire unique, aucune dépendance
  • Précision: Written in Go for precise metrics
  • Écribles: Capacité de programmation complète pour des scénarios complexes
  • Nuages-à l'avance: Peut s'intégrer à kM SK1 Cloud , Grafana, Prometheus

Pour MinimalBlog, kM SK1 est idéal parce:

  1. Nous pouvons tester le caching: k6 peut vérifier les titres de cache et le comportement
  2. Nous pouvons simuler le trafic réel.: Tester plusieurs utilisateurs concurrents
  3. Nous pouvons valider les revendications de rendement: Mesure des temps de réponse réels
  4. Nous pouvons nous intégrer à CI/CD: Essais automatisés dans notre pipeline
  5. Nous pouvons tester des scénarios spécifiques: Filtration des catégoriesM SK1 Postes individuels , page d'accueil

Installer k6

Installation de Windows

Option 1: Utilisation de chocolat (RecommandéM SK2

choco install k6

Option 2: Utilisation de Winget

winget install k6 --source winget

Option 3: Installation manuelle

  1. Téléchargez la version la plus récente de Windows Publications de GitHub
  2. Extraire le k6.exe Le fichier
  3. Ajouter le répertoire à votre PATH ou déménager k6.exe vers un répertoire déjà dans la PATH

Vérifier l’installation:

k6 version

Installation de Mac

Option 1: Utilisation de l'alcool à base de bois d'oeuvre (RecommandéM SK2

brew install k6

Option 2: Utilisation de MacPorts

sudo port install k6

Option 3: Installation manuelle

# Download and install the latest release
curl -O -L https://github.com/grafana/k6/releases/latest/download/k6-macos-amd64.zip
unzip k6-macos-amd64.zip
sudo cp k6-macos-amd64/k6 /usr/local/bin/
sudo chmod +x /usr/local/bin/k6

Vérifier l’installation:

k6 version

Installation de Linux

Option 1: Utilisation de gestionnaires de paquet

Pour Debian/Ubuntu:

sudo gpg -k
sudo gpg --no-default-keyring --keyring /usr/share/keyrings/k6-archive-keyring.gpg --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys C5AD17C747E3415A3642D57D77C6C491D6AC1D69
echo "deb [signed-by=/usr/share/keyrings/k6-archive-keyring.gpg] https://dl.k6.io/deb stable main" | sudo tee /etc/apt/sources.list.d/k6.list
sudo apt-get update
sudo apt-get install k6

Pour Fedora/CentOS/RHEL:

sudo dnf install https://dl.k6.io/rpm/repo.rpm
sudo dnf install k6

Option 2: Utilisation de Snap

sudo snap install k6

Option 3: Installation manuelle

# Download the latest release
curl -O -L https://github.com/grafana/k6/releases/latest/download/k6-linux-amd64.tar.gz
tar -xzf k6-linux-amd64.tar.gz
sudo cp k6-linux-amd64/k6 /usr/local/bin/
sudo chmod +x /usr/local/bin/k6

Option 4: Utilisation de Docker

docker pull grafana/k6:latest

# Run a test
docker run --rm -i grafana/k6:latest run - <script.js

Vérifier l’installation:

k6 version

Comprendre k6 Anatomie d'essai

Avant de nous plonger dans l’essai, laissez-nous comprendre la structure fondamentale d’un test k6

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

// Test configuration
export const options = {
  vus: 10,              // Virtual users
  duration: '30s',      // Test duration
};

// Setup function (runs once before test)
export function setup() {
  // Prepare test data
  return { baseUrl: 'http://localhost:5000' };
}

// Main test function (runs for each VU)
export default function(data) {
  const response = http.get(data.baseUrl);

  // Assertions
  check(response, {
    'status is 200': (r) => r.status === 200,
    'response time < 200ms': (r) => r.timings.duration < 200,
  });

  sleep(1); // Wait between iterations
}

// Teardown function (runs once after test)
export function teardown(data) {
  // Clean up
}

Principaux concepts:

  • Utilisateurs virtuels (VUs): Utilisateurs concurrents simulés
  • Durée: Combien de temps dure l'essai
  • Contrôles: Affirmations qui n’arrêtent pas le test
  • Seuils: PasserM SK1 Critères de défaillance
  • Metriques: Temps de réponseM SK1 Proportion d'entrée , Taux d'erreur

Types d'essais de performance

Avant d’essayer votre application, laissez 's comprendre les cinq principaux types de tests de charge et quand utiliser chacune:

graph TD
    A[Performance Testing Types] --> B[Smoke Test]
    A --> C[Load Test]
    A --> D[Stress Test]
    A --> E[Spike Test]
    A --> F[Soak Test]

    B --> B1[1-2 VUs<br/>30s-1min<br/>Basic Functionality]
    C --> C1[Normal Load<br/>5-15 minutes<br/>Verify SLAs]
    D --> D1[Gradual Increase<br/>10-30 minutes<br/>Find Breaking Point]
    E --> E1[Sudden Spike<br/>5-10 minutes<br/>Test Recovery]
    F --> F1[Normal Load<br/>Hours/Days<br/>Memory Leaks]

    style B stroke:#90EE90
    style C stroke:#87CEEB
    style D stroke:#FFD700
    style E stroke:#FF6347
    style F stroke:#DDA0DD

1. Essais de fumée

Objectif: Vérifier si le système fonctionne sous une charge minimale

Quand utiliser:

  • Après chaque changement de code
  • Avant d'effectuer des tests plus intensifs
  • À titre de vérification sanitaire dans CI/CD

Caractéristiques:

  • 1-2 VUs (Usagers virtuels)
  • Durée courte (30s-1minM SK2
  • Essais de fonctionnalités de base

2. Essais de chargement

Objectif: Évaluer le rendement en fonction de la charge normale prévue

Quand utiliser:

  • Établir le rendement de base
  • Veiller à ce que les SLA soient respectés
  • Essais réguliers de régression du rendement

Caractéristiques:

  • Nombre réel d'utilisateurs
  • Charge soutenue
  • Durée typique: M SK1 minutes

3. Essais de stress

Objectif: Trouver le point de rupture du système

Quand utiliser:

  • Pour comprendre les limites de capacité
  • Détermination des lacunes
  • Planification de l'agrandissement

Caractéristiques:

  • Augmentation graduelle de la charge
  • Supprimer au-delà de la capacité normale
  • Durée: M SK1 minutes

4. Essais d'étalonnage

Objectif: Comportement d'essai en cas de ralentissement soudain du trafic

Quand utiliser:

  • Préparation des lancements de produits
  • Évaluation automatique-scaling
  • Validation du comportement de régression

Caractéristiques:

  • Augmentation soudaine de la charge
  • Durée de l'éruption courte
  • Durée totale: M SK1 minutes

5. Essais d'écoulement Essai de durabilité

Objectif: Trouver les fuites de mémoire et la dégradation au fil du temps

Quand utiliser:

  • Avant les grandes sorties
  • Essai des services de fonctionnement longs-
  • Validation du nettoyage des ressources

Caractéristiques:

  • Niveaux de charge normal
  • Durée prolongée (heures ou joursM SK1
  • Surveillance de la dégradation
graph LR
    A[Start] --> B{Smoke Test Pass?}
    B -->|No| C[Fix Issues]
    C --> A
    B -->|Yes| D{Load Test Pass?}
    D -->|No| E[Optimize]
    E --> D
    D -->|Yes| F{Stress Test}
    F --> G{Found Limit?}
    G -->|Yes| H[Document Capacity]
    G -->|No| I[Increase Load]
    I --> F
    H --> J{Spike Test Pass?}
    J -->|No| K[Improve Resilience]
    K --> J
    J -->|Yes| L{Soak Test}
    L --> M{Memory Stable?}
    M -->|No| N[Fix Memory Leaks]
    N --> L
    M -->|Yes| O[Production Ready]

    style O stroke:#90EE90

Pourquoi k6 et nonM SK1

Avec tant d’outils de test de charge disponibles, pourquoi choisir k6? LaissezM SK2s comparer k 6 avec les solutions de rechange populairesMSC4

k6 vs Apache JMeter

Apache JMeter est l’ancienneté des outils d’essai de charge ( depuis 1999).

Caractéristiques kM SK2 JMeter SSK4
Installation Binaire uniqueM SK1 aucune dépendance requiert Java, installation plus lourde
Définition d'essai Code JavaScript XML ou GUI
Utilisation des ressources Poids léger (Go) Peu lourd
CI/Intégration du CD Excellent (CLI-firstM SK3
Curve d'apprentissage Facile pour les développeurs Plus facile à utiliser
Soutien du protocole HTTPM SK1 Sockets Web, gRPC Broader

Quand utiliser JMeter plutôt:

  • Besoin de GUI pour les essais techniques non -
  • Examen des protocoles au-delà de HTTP (JDBC, LDAP , SOAPM SK3
  • JMeter possède déjà une expertise en équipe
  • Besoin d'un écosystème de plugin étendu

Pourquoi k6 est meilleur pour la plupart des applications ASP.NET Core

  • Plus rapide à écrire les tests (JavaScript vs XML)
  • Écart des ressources plus léger
  • Amélioration de l’intégration CI/CD
  • Plus d'expérience de développeur moderne

k6 vs Locust

Les locus est un outil de test de charge basé sur Python - , populaire dans les magasins de Python

Caractéristique kM SK2 Locust SSK4
Langue JavaScript Python
Rendement Très rapide (Durée d'exécution de l'essai
Facilité d'utilisation JavaScript simple Pythonic, facile
Essais distribués kM SK1 Nuage (payé) ConstruitMSC5dans MSC6sans frais
L'interface Web Limitée Excellent réel-interface de travail temps
Exportation de métriques Bon nombre de formats CSV, UI Web MSC3

Quand utiliser Locust plutôt:

  • Python-première équipe
  • Besoin de tests distribués gratuits
  • Besoin d'interface Web réelle-au cours des essais
  • Logique complexe de Python dans les tests

Pourquoi k6 est meilleur pour la plupart des applications ASP.NET Core

  • Meilleure performance pour des mesures précises
  • JavaScript plus familier pour les développeurs Web
  • seuil plus propre/syntaxe d'affirmation
  • Une meilleure intégration Prometheus/Grafana

k6 vs Gatling

Gatling (Québec) est un outil basé sur Scala- avec une excellente présentation de rapports

Caractéristique kM SK2 MSC3 Gatling SMC4
Langue JavaScript Scala/Java
Rapports Extensions de base (+ extensions d'extensions
Curve d'apprentissage Facile Moyenne Scala DSLM SK3 S
Rendement Excellent Excellent
Source ouverte Ouvrir complètement Ouvertre avec l'entreprise ajouter-ons
Service en nuage kM SK1 Cloud Gatling Enterprise

Quand utiliser Gatling en remplacement:

  • JVM/Scala expertise en équipe
  • Besoin d’une construction stunning- dans les rapports
  • Évaluation de scénarios HTTP complexes
  • Exigences relatives au soutien aux entreprises

Pourquoi k6 est meilleur pour la plupart des applications ASP.NET Core

  • JavaScript est plus accessible
  • Établissement et exécution plus simples
  • Améliorer les contrôles CI/CD rapides
  • Plus simple pour les tests HTTP simples

k6 vs Artillerie

Artillerie est un autre outil d’essai de chargement JavaScript.

Caractéristiques de l'artillerie kM SK2
Définition d'essai Code JavaScript YAML + crochets de JS M
Rendement Plus rapide (Go) Moteur plus faible SSK4NodeM SK5js
Facilité d'utilisation Code
Élaboré pour Essais de charge Essai de charge
Affirmations Seuils extrêmement élevés Expectations de base
Extensibilité Extensions Plugins

Quand utiliser l'artillerie plutôt:

  • Préférer YAML au-dessus du code
  • Besoin de tester le socket.io
  • Besoin de tests fonctionnels de charge combinée +
  • Utiliser déjà Node.js écosystème

Pourquoi k6 est meilleur pour la plupart des applications ASP.NET Core

  • Mesures plus précises (Go vs NodeM SK1js)
  • Un meilleur système de seuil
  • API de JavaScript plus propre
  • Plus mûre et plus stable

k6 vs wrk/wrkM SK2

États-Unis d'Amérique est un outil de référence HTTP léger.

Caractéristiques kM SK2 wrk SSK4
Facilité d'utilisation API de niveau élevé - d'un niveau élevé
Scénarios Soutien de scénarios riches HTTP de base seulement
Metriques Comprehensive Basic
Écrire JavaScript Lua
Utiliser le cas Essais de pleine charge Critères rapides MSC2

Quand utiliser wrk plutôt:

  • Besoin de frais généraux minimes absolus
  • Évaluation rapide des points de repère
  • Évaluation de la performance brute HTTP
  • Essais de protocole à faible niveau

Pourquoi k6 est meilleur pour la plupart des applications ASP.NET Core

  • Il est beaucoup plus facile de rédiger des tests
  • Amélioration des rapports et de la mesure
  • Soutien du scénario (ramp-upM SK2 étapesMSC3
  • CI/CD amiable

k6 vs PlaywrightM SK1Cypress (Browser-BasedMSC4

Playwright et Cypresse sont des outils d’automatisation du navigateur parfois utilisés pour les essais de chargement.

Caractéristiques k6 MSC3 PlaywrightM SK4Cypress SMC5
Approche Protocole-niveau HTTP navigateur réel
Rendement milliers de VUs dizaines de navigateurs
Utilisation des ressources Moins lourds Peu lourds
Exécution de JavaScript Non Oui
Cas d'utilisation primaire Essais de chargement E2E essais fonctionnels

Quand utiliser Playwright/Cypress plutôt:

  • Besoin de tester l'exécution JavaScript
  • Besoin de vérifier la traduction du navigateur
  • Essai de SPA complexes
  • Essais fonctionnels E2E

Pourquoi k6 est meilleur pour la plupart des applications ASP.NET Core

  • Protocole-essais de niveau suffisants pour le serveur-applications remises
  • Il faut simuler des utilisateurs concurrents 100+
  • Utilisation beaucoup plus efficace des ressources

Résumé: kM SK1s Sweet Spot

Choisissez k6 lorsque vous le souhaitez:

  • Essais de charge rapides,
  • Developer-friendly JavaScript API
  • Excellente intégration CI/CD
  • Protocole-test HTTP de niveau (aucun navigateur n'est requis )
  • Soutien à des scénarios riches (smoke,loadMSC2stressM SK3 spike , soakMST5
  • Outils modernes avec un bon écosystème
  • Utilisation de ressources légères

k6 est parfait pour

  • APIs et services Web
  • Applications rendues par le serveur-
  • Ports de performance CI/CD
  • Tests de performance dirigés par le développeur-
  • Cloud-applications natives

Pensez aux solutions de rechange si vous avez besoin:

  • Examen basé sur le navigateur-User ( Playwright)
  • Soutien du protocole étendu au-delà de HTTP (use JMeter)
  • Essais distribués gratuits (utiliser Les locus)
  • Pièce construite-dans les rapports (usage Gatling (Québec))
  • GUI pour les essais techniques non -User JMeter)

Prochaines étapes

Maintenant que vous comprenez ce qu’est k6, , comment l’installer, , les types d’essais de performance disponibles, , et pourquoi k 6 est une excellente solution pour ASP,. applications centrales NET,,, vous,M SK7 êtes prêts à commencer à rédiger des essais réels.

Continuer à Partie 2: Mise en œuvre pratique où nous devons couvrir

  • Établissement de votre environnement d'essai
  • Évaluation de la fumée , charge , stress
  • Essai du comportement de cache
  • Simulations réalistes des voyages de l'utilisateur
  • CI/CD intégration avec les actions de GitHub
  • Détection de la régression du rendement
  • Profilage avec dotTrace et dotMemory
  • Pratiques exemplaires et résolution des problèmes

Ressources

k6 Documentation

Autres outils d'essai de chargement

Finding related posts...
logo

© 2026 Scott Galloway — Unlicense — All content and source code on this site is free to use, copy, modify, and sell.