This is a viewer only at the moment see the article on how this works.
To update the preview hit Ctrl-Alt-R (or ⌘-Alt-R on Mac) or Enter to refresh. The Save icon lets you save the markdown file to disk
This is a preview from the server running through my markdig pipeline
Tuesday, 02 December 2025
Uw applicatie werkt perfect op uw laptop. Unit tests passeren. Integratie tests passeren. U implementeert naar de productie, en plotseling alles maalt tot stilstand. Vijfhonderd echte gebruikers raken uw homepage tegelijkertijd, en uw server begint terug te keren 503 fouten. Uw zorgvuldig vervaardigde caching strategie? Blijkt dat het niet werkt helemaal zoals je dacht. Die database query dacht dat was snel? Het is het creëren van een bottleneck op schaal.
Dit is het nachtmerrie scenario elke ontwikkelaar vreest, maar de meeste niet testen voor. Prestaties testen is niet optioneel - het is het verschil tussen een succesvolle lancering en een 3 AM noodpagina. Deze twee-delige handleiding zal u precies laten zien hoe u dit scenario kunt voorkomen met behulp van k6, de moderne load testing tool die krachtig genoeg is voor enterprise toepassingen maar eenvoudig genoeg om te draaien in uw CI/CD pijplijn.
Dit is Deel 1 van een tweedelige serie belastingstests met k6:
Performance testing is cruciaal voor elke productie ASP.NET Core applicatie. Of u nu een eenvoudige blog, een complexe microservice architectuur, of een enterprise applicatie bouwt, u moet weten hoe uw applicatie zich gedraagt onder belasting. Zal het omgaan met 100 gelijktijdige gebruikers? 1000? Waar zijn de knelpunten? Werkt uw caching strategie eigenlijk?
Deze uitgebreide gids laat u zien hoe u test ASP.NET Core toepassingen met behulp van k6 - een van de meest krachtige open source load testtools die beschikbaar zijn. MinimaleBlog als onze voorbeeld applicatie (een eenvoudige markdown-based blog met geheugen en output caching), de technieken en patronen die hier worden getoond zijn van toepassing op elke ASP.NET kerntoepassing.
Aan het einde van deze twee-delige serie, weet je hoe je:
Waarom MinimalBlog als voorbeeld? Het is een echte ASP.NET Core 9.0 applicatie met gemeenschappelijke patronen: Scheermes, geheugen caching, output caching, bestand I/O, en markdown processing. De testbenaderingen die je leert zijn gelijk van toepassing op uw MVC apps, Web API's, Blazor applicaties, of minimale API's.
k6 is een moderne load test tool gebouwd voor ontwikkelaars. In tegenstelling tot oudere tools zoals JMeter of LoadRunner, k6 is:
Voor MinimalBlog is k6 ideaal omdat:
Optie 1: Gebruik van chocolade (aanbevolen)
choco install k6
Optie 2: Winget gebruiken
winget install k6 --source winget
Optie 3: Handmatige installatie
k6.exe bestandk6.exe naar een map die al in PATH staatInstallatie verifiëren:
k6 version
Optie 1: Homebrew gebruiken (aanbevolen)
brew install k6
Optie 2: MacPorts gebruiken
sudo port install k6
Optie 3: Handmatige installatie
# 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
Installatie verifiëren:
k6 version
Optie 1: Pakketbeheerders gebruiken
Voor 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
Voor Fedora/CentOS/RHEL:
sudo dnf install https://dl.k6.io/rpm/repo.rpm
sudo dnf install k6
Optie 2: Snap gebruiken
sudo snap install k6
Optie 3: Handmatige installatie
# 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
Optie 4: Gebruik van Docker
docker pull grafana/k6:latest
# Run a test
docker run --rm -i grafana/k6:latest run - <script.js
Installatie verifiëren:
k6 version
Voordat we in testen duiken, laten we de basisstructuur van een k6-test begrijpen:
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
}
Kernbegrippen:
Voordat het testen van uw toepassing, laten we begrijpen de vijf belangrijkste soorten belastingstests en wanneer te gebruiken elk:
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
Betreft: Controleer of het systeem werkt onder minimale belasting
Wanneer moet u dit middel gebruiken?:
Kenmerken:
Betreft: Beoordeel de prestaties onder verwachte normale belasting
Wanneer moet u dit middel gebruiken?:
Kenmerken:
Betreft: Zoek systeembreekpunt
Wanneer moet u dit middel gebruiken?:
Kenmerken:
Betreft: Test gedrag onder plotselinge verkeerspieken
Wanneer moet u dit middel gebruiken?:
Kenmerken:
Betreft: Zoek geheugenlekken en degradatie na verloop van tijd
Wanneer moet u dit middel gebruiken?:
Kenmerken:
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
Met zoveel load test tools beschikbaar, waarom zou je kiezen voor k6? Laten we k6 vergelijken met populaire alternatieven:
Apache JMeter is de veteraan van gereedschap voor het testen van de belasting (sinds 1999).
Kenmerk K6 JMeter |---------|----|---------| | Installatie Single binaire, geen afhankelijkheden vereist Java, zwaardere installatie | Testdefinitie JavaScript-code XML of GUI | Gebruik van hulpbronnen Lichtgewicht (Go) Zwaar (Java) | CI/CD-integratie Uitstekend (Cli-first) Vereist plugins | Leercurve Gemakkelijk voor ontwikkelaars Steeper, GUI-gefocust | Protocolondersteuning • HTTP, WebSockets, gRPC • Broder (FTP, JDBC, SMTP, enz.) •
Wanneer JMeter te gebruiken in plaats daarvan:
Waarom k6 beter is voor de meeste ASP.NET Core apps:
Locust is een Python-gebaseerde load test tool, populair in Python winkels.
Kenmerk K6 Locust Locust Locust Locust Locust Locust Locust Locust Locust Locust Locust Locust Locust Locust Locust Locust Locust Locust Locust Locust Locust Locust Locust Locust Locust Locust Locust Locust Locust Locust Locust Locust Locust Locust Locust Locust Locust Locust Locust Locust Locust Locust Locust Locust Locust Locust Locust Locust Locust Locust Locust Locust Locust Locust Locust Locust Locust |---------|----|---------| | Taal JavaScript, Python, Python, Python, Python, Python, Python, Python, Python, Python, Python, Python, Python, Python, Python, Python, Python, Python, Python, Python, Python, Python, Python, Python, Python, Python, Python, Python, Python, Python, Python, Python, Python, Python, Python, Python, Python, Python, Python, Python, Python, Python, Python, Python, Python | Prestaties Zeer snel (Go runtime) Langzamer (Python ) | Gebruiksgemak Eenvoudig JavaScript, Pythonisch, eenvoudig | Gedistribueerde test K6 Cloud (betaald) Ingebouwd (gratis) | Web-UI Uitstekende real-time UI | Metrics-export Veel formaten CSV, web UI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Wanneer Locust te gebruiken in plaats daarvan:
Waarom k6 beter is voor de meeste ASP.NET Core apps:
Gatling is een Scala-gebaseerde tool met uitstekende rapportage.
Kenmerken K6 Gatling |---------|----|---------| | Taal JavaScript Scala/Java | Verslagen Basis (+ extensies) Mooie ingebouwde HTML-rapporten | Leercurve Gemakkelijk uit te stellen (Scala DSL) | Prestaties Uitstekend. Uitstekend. | Bron openen Openen met enterprise add-ons | Cloud Service K6 Cloud Gatling Enterprise
Wanneer moet Gatling in plaats daarvan worden gebruikt:
Waarom k6 beter is voor de meeste ASP.NET Core apps:
Artillerie is een andere JavaScript load test tool.
Feature K6 Artillerie |---------|----|---------| | Testdefinitie JavaScript-code YAML + JS hooks | Prestaties Sneller (Go) Langzamer (Node.js) | Gebruiksgemak Op code gebaseerde YAML config-based | Gebouwd voor Beproeving van de belasting Beproeving van de belasting + functionele tests | Asserties Uitstekende drempels Basisverwachtingen | Extensibiliteit Extensions . . Plugins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Wanneer Artillerie te gebruiken in plaats daarvan:
Waarom k6 beter is voor de meeste ASP.NET Core apps:
wrik is een lichtgewicht HTTP benchmarking tool.
Feature K6 Wrk |---------|----|---------| | Gebruiksgemak API op hoog niveau Low-level C + Lua | Scenario's Rijk scenario ondersteuning Basic HTTP alleen | Metrics Uitgebreid Basic | Scripting JavaScript Lua | Geval gebruiken Snelle ijkpunten voor de volledige belasting
Wanneer wrk gebruikt moet worden:
Waarom k6 beter is voor de meeste ASP.NET Core apps:
Playwright en Cypress zijn browser automatisering tools die soms worden gebruikt voor het testen van de belasting.
Playwright/Cypress |---------|----|---------| | Aanpak Echte browser op protocolniveau HTTP | Prestaties Duizenden VU's Tientallen browsers | Gebruik van hulpbronnen Lichtgewicht zwaar (browsers) | JavaScript-uitvoering - Nee. Ja. | Primaire gebruikscase Beproeving van de belasting E2E functionele tests
Wanneer Playwright/Cypress te gebruiken in plaats daarvan:
Waarom k6 beter is voor de meeste ASP.NET Core apps:
Kies k6 wanneer u wilt:
k6 is perfect voor:
Overweeg alternatieven indien nodig:
Nu je begrijpt wat k6 is, hoe je het moet installeren, de soorten prestatietests die beschikbaar zijn, en waarom k6 een geweldige keuze is voor ASP.NET Core toepassingen, ben je klaar om te beginnen met het schrijven van echte tests.
Doorgaan naar Deel 2: Praktische uitvoering waar we het over hebben:
© 2026 Scott Galloway — Unlicense — All content and source code on this site is free to use, copy, modify, and sell.