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
Sovelluksenne toimii täydellisesti kannettavalla tietokoneellanne. Yksikkötestit läpäisevät. Integraatiotestit läpäisevät tuotannon, ja yhtäkkiä kaikki pysähtyy. Viisisataa oikeaa käyttäjää osuu sivullesi yhtä aikaa, ja palvelimesi alkaa palauttaa 503 virhettä. Huolellisesti laadittu välimuististrategiasi ei siis toimi aivan niin kuin luulit. Se tietokanta, jonka luulit olevan nopea? Se luo pullonkaulan mittakaavassa.
Tätä painajaista jokainen kehittäjä pelkää, mutta suurin osa ei testaa. Suorituskykytestit eivät ole valinnaisia - se on ero onnistuneen lanseerauksen ja 3 AM:n hätäsivun välillä. Tämä kaksiosainen opas näyttää tarkalleen, miten tämä skenaario voidaan estää k6-koneella, joka on riittävän tehokas yrityssovelluksiin, mutta riittävän yksinkertainen toimimaan CI/CD-putkessa.
Tämä on Osa 1 kaksiosaisesta sarjasta, joka koskee kuormitustestausta k6:lla:
Suorituskykytestit ovat kriittisiä kaikissa tuotannon ASP.NET Core -sovelluksissa. Rakennatpa yksinkertaista blogia, monimutkaista mikropalveluarkkitehtuuria tai yrityssovellusta, sinun täytyy tietää, miten sovelluksesi käyttäytyy kuormitettuna. Kestääkö se 100 samanaikaista käyttäjää? 1 000? Missä pullonkaulat ovat? Toimiiko välimuististrategiasi?
Tämä kattava opas näyttää, kuinka ASP.NET Core -sovellukset ladataan k6 - yksi tehokkaimmista avoimen lähdekoodin testauksen työkaluista. MinimalBlog Esimerkkisovelluksenamme (yksinkertainen markdown-pohjainen blogi, jossa on muistia ja välimuistia) tässä esitetyt tekniikat ja kuviot koskevat mikä tahansa ASP.NET-ydinsovellus.
Tämän kaksiosaisen sarjan loppuun mennessä osaat:
Miksi esimerkkinä on minimalBlog? Se on todellinen ASP.NET Core 9.0 -sovellus, jossa on yhteiset kuviot: Razor-sivut, muistivälimuistit, välimuistit, tiedostojen I/O ja maaliviivakäsittely. Testit koskevat yhtä lailla MVC-sovelluksia, verkkorajapintoja, Blazor-sovelluksia tai minimaalisia rajapintoja.
k6 Toisin kuin vanhemmat työkalut, kuten JMeter tai LoadRunner, k6 on:
MinimalBlogille k6 on ihanteellinen, koska:
Vaihtoehto 1: Suklaan käyttö (suositeltu)
choco install k6
Vaihtoehto 2: Wingetin käyttö
winget install k6 --source winget
Vaihtoehto 3: Manuaalinen asennus
k6.exe tiedostok6.exe jo PDH:ssa olevaan hakemistoonVarmista asennus:
k6 version
Vaihtoehto 1: Homebrew'n käyttö (suositeltu)
brew install k6
Vaihtoehto 2: MacPortsin käyttö
sudo port install k6
Vaihtoehto 3: Manuaalinen asennus
# 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
Varmista asennus:
k6 version
Vaihtoehto 1: Pakettipäälliköiden käyttö
FINREP:n puolesta 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
FINREP:n puolesta Fedora/CentOS/RHEL:
sudo dnf install https://dl.k6.io/rpm/repo.rpm
sudo dnf install k6
Vaihtoehto 2: Snap-toiminnon käyttö
sudo snap install k6
Vaihtoehto 3: Manuaalinen asennus
# 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
Vaihtoehto 4: Dockerin käyttö
docker pull grafana/k6:latest
# Run a test
docker run --rm -i grafana/k6:latest run - <script.js
Varmista asennus:
k6 version
Ennen kuin sukellamme testaukseen, ymmärretään k6-testin perusrakenne:
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
}
Avainkäsitteet:
Ennen sovelluksen testaamista selvitetään viisi pääasiallista kuormitustestiä ja niiden käyttöajankohta:
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
Aihe: Varmista, että järjestelmä toimii minimilatauksessa
Milloin valmistetta käytetään:
Ominaispiirteet:
Aihe: Arvioi suorituskykyä odotetulla normaalikuormalla
Milloin valmistetta käytetään:
Ominaispiirteet:
Aihe: Etsi järjestelmän rikkoutumispiste
Milloin valmistetta käytetään:
Ominaispiirteet:
Aihe: Testikäyttäytyminen äkillisten liikennepiikkien alla
Milloin valmistetta käytetään:
Ominaispiirteet:
Aihe: Etsi muistivuotoja ja muistin heikkenemistä ajan myötä
Milloin valmistetta käytetään:
Ominaispiirteet:
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
Kun käytössä on niin paljon kuormaustestaustyökaluja, miksi valitsisit k6:n? Verrataan k6:ta suosittuihin vaihtoehtoihin:
Apache JMeter on kuormituksen testaustyökalujen veteraani (vuodesta 1999).
Aihe: JMeter |---------|----|---------| | Asennus Yksittäinen binääri, ei riippuvuuksia Vaatii Javaa, raskaampi asentaa | Testin määritelmä JavaScript-koodi XML tai GUI | Resurssien käyttö Kevytsarjalainen (Go) Raskas (Java) | CI/CD-integraatio Erinomainen (CLI-ensimmäinen) Vaatii liitännäisiä | Opettele kurveja Easy kehittäjille Steeper, GUI-focused | Protokollan tuki HTTP, WebSockets, GRPC Broader (FTP, JDBC, SMTP jne.)
Milloin JMeteriä käytetään sen sijaan:
Miksi k6 on parempi useimmille ASP.NET Core -sovelluksille:
Heinäsirkka on Python-pohjainen kuormitustestaustyökalu, joka on suosittu Python-liikkeissä.
Aihe: heinäsirkka |---------|----|---------| | Kieli JULKAISUEHDOTUS Python | Suorituskyky Erittäin nopea (juokseminen) Hitaampi (Python GIL) | Helppokäyttöisyys Yksinkertainen Javascript Pythonic, helppo | Jaettu testaus K6 Pilvi (maksullinen) Sisäänrakennettu (ilmainen) | Web UI Erinomaisen reaaliaikaisen käyttöliittymän luominen | Metriikan vienti Monia formaatteja CSV, web UI
Milloin sen sijaan käytetään heinäsirkkaa:
Miksi k6 on parempi useimmille ASP.NET Core -sovelluksille:
Gatling on Scala-pohjainen työkalu, jossa on erinomainen raportointi.
Aihe: Gatling |---------|----|---------| | Kieli JavaScript Scala/Java | Kertomukset Perustiedot (+ laajennukset) Kaunis sisäänrakennettu HTML-raportti | Opettele kurveja Kohtuullinen (Scala DSL) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . | Suorituskyky Erinomaisesti! Erinomaisesti! | Avaa lähdekoodi Avoinna yritysten lisäjäsenillä | Pilvipalvelu K6 Pilvi Gatling Enterprise
Milloin Gatlingia käytetään sen sijaan:
Miksi k6 on parempi useimmille ASP.NET Core -sovelluksille:
Tykistö on toinen JavaScript-kuorman testaustyökalu.
Aihe: Tykistö |---------|----|---------| | Testin määritelmä JavaScript-koodi YAML + JS-koukut | Suorituskyky Nopeampi (Go) Hitaampi (Node.js) | Helppokäyttöisyys Koodipohjainen YAML-konfiguraatiopohjainen | Rakennettu Kuormitustestaus Kuormitus + Toiminnallinen testaus | Aserminaatiot Erinomaiset raja-arvot Perusodotukset | Laajamittaisuus Laajennukset Liitännäiset
Milloin tykistöä käytetään sen sijaan:
Miksi k6 on parempi useimmille ASP.NET Core -sovelluksille:
Wrk on kevyt HTTP-benchmarking-työkalu.
Ominaisuus k6 t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t ä t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t |---------|----|---------| | Helppokäyttöisyys Korkeatasoinen API Matalatasoinen C + Lua | Skenaariot Rikas skenaario tukee vain perus-HTTP:tä | Metriikka Kokonaisvaltainen perusasia | Käsikirjoitus JavaScript Lua | Käytä tapausta Täyden kuormituksen testaus Nopeat viitearvot
Milloin sen sijaan käytetään wrk:tä:
Miksi k6 on parempi useimmille ASP.NET Core -sovelluksille:
Näytelmäkirjailija sekä Sypressi ovat selaimen automaatiotyökaluja, joita joskus käytetään kuorman testaukseen.
Näytelmäkirjailija/Cypress-kirjailija |---------|----|---------| | Lähestyminen Protokollan taso HTTP Oikea selain | Suorituskyky Tuhansia matkailijoita, kymmeniä selaimia | Resurssien käyttö Kevytsarjalaiset Heavy (selaajat) | Javascript- suoritus "Kyllä" | Ensisijainen käyttötapa Kuormitustestaus E2E Toiminnallinen testaus
Milloin Playwrightia/Cypressiä käytetään sen sijaan:
Miksi k6 on parempi useimmille ASP.NET Core -sovelluksille:
Valitse k6, kun haluat:
k6 sopii täydellisesti:
Harkitse vaihtoehtoja, jos tarvitset:
Nyt kun ymmärrät, mikä k6 on, miten se asennetaan, millaisia suoritustestejä on saatavilla ja miksi k6 on hyvä valinta ASP.NET Core -sovelluksiin, olet valmis aloittamaan todellisten testien kirjoittamisen.
Jatka Osa 2: Käytännön toteutus jossa käsittelemme:
© 2026 Scott Galloway — Unlicense — All content and source code on this site is free to use, copy, modify, and sell.