Ваша програма чудово працює на вашому ноутбуці. Проходить тести з одиницями. Проходить тести з інтеграції. Ви вводитеся до виробництва, і раптом все зупиняється. 500 справжніх користувачів влучають у вашу домашню сторінку одночасно, і ваш сервер починає повертати 503 помилки. Ваша ретельно розроблена стратегія кешування? Виявляється, вона не працює так, як ви думали. Цей запит бази даних, як ви думали, був швидким? Вона створює в' язкість на шкалі.
Це сценарій жахів, для кожного побоюється розробника, але більшість не випробовується. Перевірка швидкодії не є необов' язковим - це різниця між успішним запуском і сторінкою аварійного завершення 3 ДО. Цей посібник з двох частин покаже вам, як точно запобігти цьому сценарію, використовуючи k6, сучасний інструмент для тестування навантаження, який достатньо потужний для програм підприємництва, але простий для запуску у вашій трубопроводі CI/CD.
Це Частина 1 серії з двома частинами перевірки завантаження за допомогою k6:
Перевірка швидкодії має вирішальне значення для будь- якої програми ASP. NET. Незалежно від того, чи створюєте ви простий блог, складну архітектуру мікросхему або промислову програму, вам слід знати, як працює ваша програма під навантаженням. Чи буде вона працювати зі 100 послідовними користувачами? 1000 користувачів? Де насправді працює ваша стратегія кешування?
Цей універсальний посібник покаже вам, як завантажувати програми, які використовують ядро ASP. NET к6 - один з найпотужніших інструментів тестування з відкритим кодом. Мінімальний Blog у нашому прикладі програми (простий заснований на мітці блог з запам' ятовуванням пам' яті і кешуванням виводу), методики і шаблони, показані тут, стосуються будь- яка з програм ядра ASP. NET.
До кінця цієї серії з двома частинами ви знатимете, як:
Чому прикладом є мінімальний Blog? Це справжня програма ASP. NET Core 9. 0 з типовими шаблонами: Pages Razor Pages, кешування пам' яті, кешування виводу, файл I/ O і обробка з позначенням. Під час тестування ви навчитеся застосовувати однакові методи роботи з програмами MVC, веб- API, програми Blazor або мінімальні API.
к6 є сучасним інструментом для тестування завантаження, створеним розробниками. На відміну від старих інструментів на зразок JMeter або BackRunner, k6 є:
Для мінімального журналу k6 є ідеальним, оскільки:
Варіант 1. Використання шоколаду (рекомендовано)
choco install k6
Варіант 2: Використання winget
winget install k6 --source winget
Параметр 3: Ручне встановлення
k6.exe файлk6.exe до каталогу, який вже знаходиться у PATHВстановлення перевірки:
k6 version
Параметр 1. Використання Homebrew (рекомендовано)
brew install k6
Параметр 2: Використання MacPorts
sudo port install k6
Параметр 3: Ручне встановлення
# 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
Встановлення перевірки:
k6 version
Параметр 1: Використання менеджерів пакунків
for 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
for Fedora/CentOS/RHEL:
sudo dnf install https://dl.k6.io/rpm/repo.rpm
sudo dnf install k6
Параметр 2: Використання прив' язки
sudo snap install k6
Параметр 3: Ручне встановлення
# 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
Варіант 4: Використання панелі
docker pull grafana/k6:latest
# Run a test
docker run --rm -i grafana/k6:latest run - <script.js
Встановлення перевірки:
k6 version
Перш ніж ми зануримось у тестування, давайте зрозуміємо базову структуру тесту 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
}
Ключові концепції:
Перш ніж перевірити вашу програму, з' ясуймо п' ять основних типів завантажувальних тестів і коли користуватися кожним з них:
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
Мета: Перевірити роботу системи під мінімальним навантаженням
Коли використовувати:
Характеристики:
Мета: Оцінює швидкодію під очікуваним нормальним навантаженням
Коли використовувати:
Характеристики:
Мета: Знайти точку перетину системи
Коли використовувати:
Характеристики:
Мета: Перевірка поведінки під раптовими стрибками на дорогах
Коли використовувати:
Характеристики:
Мета: З бігом часу знайдіть протоку і деградацію пам'яті
Коли використовувати:
Характеристики:
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
Оскільки існує стільки інструментів для тестування, чому вам слід обрати k6? Давайте порівняємо k6 з популярними альтернативами:
Apache JMedia є ветераном інструментів для тестування завантаження (від 1999 року).
*
|---------|----|---------|
| Встановлення ♪ Одинарний бінарний файл, без залежностей ♪'s Java, high install ♪
| Визначення тесту код JavaScript} XML або GUI}
| Використання ресурсу ♫ Світла (Go) * (Java) ♪
| Інтеграція CI/CD
| Крива навчання ♪Shea для розробників ♪Sieper, GUI-posed ♪
| Підтримка протоколів ♪ HTTP, WebSockets, gRPC} (FTP, JDBC, SMTP тощо)}
Замість цього використовувати JMeter:
Чому k6 є кращим для більшості програм ядра ASP. NET:
СаранатCity in Florida USA це заснований на Python інструмент тестування, популярний у крамницях Python.
Дівчино. |---------|----|---------| | Мова JavaScript @ title: window | Швидкодія ♪ Solar speed (Go runtime) } ♪ (Python GIL) ♪ | Легкість у використанні Теж саме JavaScript} Pythonic, легко | Розподілити тестування k6 хмар (каштовний) сягне- ін (безкоштовний) ♪ | Веб- інтерфейс Час реального часу | Експорт до матриці Щось таке? , web UI}
Коли замість цього використовувати ГМТ:
Чому k6 є кращим для більшості програм ядра ASP. NET:
ГатлінгCity in Germany є заснованим на Scala інструментом з чудовим звітом.
Азартна фаза: |---------|----|---------| | Мова +5] +1Scala/Java} | Звіти ♫ separe (+повторення) } }Вбудувати- у HTML звітах} | Крива навчання ♪SIGE Mode} (Scala DSL) | Швидкодія ♪ | Відкрити джерело ♪plasma_ec_mas.eu.int.int. | Служба хмар *
Коли використовувати Gatling замість цього:
Чому k6 є кращим для більшості програм ядра ASP. NET:
Artillery є ще одним інструментом тестування завантаження JavaScript.
Дзвінок Каттерлі
|---------|----|---------|
| Визначення тесту pass JavaScript cance ♪ YAML + JS гаки ♪
| Швидкодія
| Легкість у використанні cod- based} Виконуваний файл YAML}
| Вбудовано для ♪ Load ⁄ Loop + function pirc ♪
| Умовні вирази Дівчата/ д'ІІІ
| Витонченість Дівчатаunit synonyms for matching user input
Коли замість цього використовувати Artillery:
Чому k6 є кращим для більшості програм ядра ASP. NET:
wkk Це невибагливий інструмент для роботи з ігровими полями HTTP.
Дівчино. |---------|----|---------| | Легкість у використанні ♪ High-} API} нижня точка C + Lua} | Сценарії ♪Screen Description of a condition. Do not translate the keyword between brackets (e. g. ServerName, ServerAdmin, etc.) | Метрики Дівчино | Написання скриптів Д. О.Л. | Випадок використання Перезавантаження_BAR
Замість цього використовувати wrk:
Чому k6 є кращим для більшості програм ядра ASP. NET:
Playwright і Cypress є інструментами автоматизації переглядача, які іноді використовуються для тестування завантаження.
Дзвінок: |---------|----|---------| | Підйом Передбачуваний переглядач@ info: whatsthis | Швидкодія ⇩ Тисячі VUs сягнуть десятих браузерів | Використання ресурсу Світа * * * * * * * | Виконання JavaScript ♪ Ні ♪ Так ♪ | Основний випадок використання Д_ д. д. д. д. д. д. д. д. д. д. д. д. д. д. д. д. д. д. д. д. д. д. д. д. д. д. д. д. д. д. д. д.
Коли замість цього використовувати Playwright/ Cypress:
Чому k6 є кращим для більшості програм ядра ASP. NET:
За бажання, виберіть k6:
k6 ідеально підходить для:
Подумайте про альтернативи, якщо вам потрібно:
Тепер, коли ви розумієте, що таке k6, як встановити його, доступні типи тестів швидкодії, і чому k6 є чудовим вибором для програм ASP.NET, ви готові почати писати справжні тести.
Продовжити до Частина 2. Практичне впровадження Там, где мы закроем.
© 2026 Scott Galloway — Unlicense — All content and source code on this site is free to use, copy, modify, and sell.