Back to "Завантажити основні програми ASP. NET з k6: Вступ"

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

ASP.NET k6 Performance Testing

Завантажити основні програми ASP. NET з k6: Вступ

Tuesday, 02 December 2025

Ваша програма чудово працює на вашому ноутбуці. Проходить тести з одиницями. Проходить тести з інтеграції. Ви вводитеся до виробництва, і раптом все зупиняється. 500 справжніх користувачів влучають у вашу домашню сторінку одночасно, і ваш сервер починає повертати 503 помилки. Ваша ретельно розроблена стратегія кешування? Виявляється, вона не працює так, як ви думали. Цей запит бази даних, як ви думали, був швидким? Вона створює в' язкість на шкалі.

Це сценарій жахів, для кожного побоюється розробника, але більшість не випробовується. Перевірка швидкодії не є необов' язковим - це різниця між успішним запуском і сторінкою аварійного завершення 3 ДО. Цей посібник з двох частин покаже вам, як точно запобігти цьому сценарію, використовуючи k6, сучасний інструмент для тестування навантаження, який достатньо потужний для програм підприємництва, але простий для запуску у вашій трубопроводі CI/CD.

Це Частина 1 серії з двома частинами перевірки завантаження за допомогою k6:

  • Частина 1 (ця стаття): Вступ до k6, встановлення, тестові типи і чому k6
  • Частина 2. Практичне впровадження: Тести запису, інтеграція CI/CD, профілювання та приклади реального світу

Вступ

Перевірка швидкодії має вирішальне значення для будь- якої програми ASP. NET. Незалежно від того, чи створюєте ви простий блог, складну архітектуру мікросхему або промислову програму, вам слід знати, як працює ваша програма під навантаженням. Чи буде вона працювати зі 100 послідовними користувачами? 1000 користувачів? Де насправді працює ваша стратегія кешування?

Цей універсальний посібник покаже вам, як завантажувати програми, які використовують ядро ASP. NET к6 - один з найпотужніших інструментів тестування з відкритим кодом. Мінімальний Blog у нашому прикладі програми (простий заснований на мітці блог з запам' ятовуванням пам' яті і кешуванням виводу), методики і шаблони, показані тут, стосуються будь- яка з програм ядра ASP. NET.

До кінця цієї серії з двома частинами ви знатимете, як:

  • Встановлення і налаштування k6 на будь- якій платформі (Windows, Mac, Linux)
  • Записувати комплексні перевірки швидкодії для різних сценаріїв
  • Інтегрувати k6 до вашої трубопроводу CI/CD за допомогою дій GitHub
  • Використовувати інструменти профілювання (dotTrace, dotMemory) поряд з k6 для пошуку вузьких місць
  • Впроваджуйте різні програми перевірки: дим, навантаження, стрес, шип і тести для вазу.
  • Налаштування визначення швидкодії, щоб запобігти повільній виробінню коду.

Чому прикладом є мінімальний Blog? Це справжня програма ASP. NET Core 9. 0 з типовими шаблонами: Pages Razor Pages, кешування пам' яті, кешування виводу, файл I/ O і обробка з позначенням. Під час тестування ви навчитеся застосовувати однакові методи роботи з програмами MVC, веб- API, програми Blazor або мінімальні API.

Що таке k6 і навіщо ним користуватися?

к6 є сучасним інструментом для тестування завантаження, створеним розробниками. На відміну від старих інструментів на зразок JMeter або BackRunner, k6 є:

  • Дружній розробник: Тести записані JavaScript (ES6+)
  • CLI- first: Ідеально для трубопроводів CI/CD
  • Незначна: Окремий бінарний файл, без залежностей
  • Точна: Автор у го для точних вимірів
  • Можливість написання скриптів: Повні можливості програмування складних сценаріїв
  • Хмара готова: Can consolation with k6 Hama, Grafana, Prometheus

Для мінімального журналу k6 є ідеальним, оскільки:

  1. Ми можемо випробувати кешування: k6 може перевіряти заголовки і поведінку кешу
  2. Ми можемо симулювати реальний трафік.: Перевірка кількості регулярних користувачів
  3. Ми можемо підтвердити вимоги до виконання.: Виміряти поточний час відповіді
  4. Ми можемо об'єднатися з CI/CD: Автомобільне тестування в трубопроводі
  5. Ми можемо перевірити специфічні сценарії: Фільтрування категорій, окремі дописи, домашня сторінка

Встановлення k6

Встановлення Windows

Варіант 1. Використання шоколаду (рекомендовано)

choco install k6

Варіант 2: Використання winget

winget install k6 --source winget

Параметр 3: Ручне встановлення

  1. Звантажити останні випуски Windows з Випуски GitHub
  2. Видобути k6.exe файл
  3. Додати каталог до вашої змінної PATH або пересунути k6.exe до каталогу, який вже знаходиться у PATH

Встановлення перевірки:

k6 version

Встановлення Mac

Параметр 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

Встановлення Linux

Параметр 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

Перш ніж ми зануримось у тестування, давайте зрозуміємо базову структуру тесту 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
}

Ключові концепції:

  • Віртуальні користувачі (VU): Імітувати регулярних користувачів
  • Тривалість: Тривалість виконання тесту
  • Перевірки: Умовні вирази, які не зупиняють тест
  • Поріг: Критерії проходу/ знешкодження
  • Метрики: Час відповіді, передача, частота помилок

Види перевірок швидкодії

Перш ніж перевірити вашу програму, з' ясуймо п' ять основних типів завантажувальних тестів і коли користуватися кожним з них:

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. Тести на дим

Мета: Перевірити роботу системи під мінімальним навантаженням

Коли використовувати:

  • Після кожної зміни коду
  • Перед тим як пройти більш інтенсивні тести
  • Як перевірку пам'яті у CI/CD

Характеристики:

  • 1- 2 VUs (Virtual Users)
  • Скорочена тривалість (30s- 1min)
  • Перевірка базових функціональних можливостей

2. Завантажити тести

Мета: Оцінює швидкодію під очікуваним нормальним навантаженням

Коли використовувати:

  • Щоб встановити базову швидкодію
  • Щоб перевірити, що SLAs знайдено
  • Перевірка регулярної регресії швидкодії

Характеристики:

  • Реалістична кількість користувачів
  • Підтримуване завантаження
  • Типова тривалість: 5- 15 хвилин

3) Стресові випробування.

Мета: Знайти точку перетину системи

Коли використовувати:

  • Щоб зрозуміти обмеження потужності
  • Щоб визначити вузькі місця
  • Планування масштабування

Характеристики:

  • Поступове збільшення навантаження
  • Штовхнути за рамки нормальних можливостей
  • Тривалість: 10- 30 хвилин

4. Тести на скаке.

Мета: Перевірка поведінки під раптовими стрибками на дорогах

Коли використовувати:

  • Підготовка до запуску продукту
  • Перевірка автоматичної caling
  • Перевірка зворотного зв' язку

Характеристики:

  • Раптове збільшення навантаження
  • Тривалість короткого піку
  • Загальна тривалість: 5- 10 хвилин

5 Тести Soak (дострокове тестування)

Мета: З бігом часу знайдіть протоку і деградацію пам'яті

Коли використовувати:

  • Перед основними випусками
  • Перевірка служб з довгостроковим запуском
  • Перевірка спорожнення ресурсів

Характеристики:

  • Звичайні рівні завантаження
  • Розширена тривалість (години або дні)
  • Слідкування за деградацією
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

Почему к6 и нет...?

Оскільки існує стільки інструментів для тестування, чому вам слід обрати k6? Давайте порівняємо k6 з популярними альтернативами:

k6 проти Apache JMeter

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:

  • Потрібний графічний інтерфейс для нетехнологічних тестувальників
  • Перевірка протоколів поза HTTP (JDBC, LDAP, SOAP)
  • У JMeter вже є досвід у команді
  • Потрібна широкомасштабна екосистема додатків

Чому k6 є кращим для більшості програм ядра ASP. NET:

  • Швидше за запис тестів (JavaScript vs XML)
  • Слідувати за ресурсами з підсвічуванням
  • Краща інтеграція CI/CD
  • Більш сучасний досвід розробника

k6 проти ГМТ

СаранатCity in Florida USA це заснований на Python інструмент тестування, популярний у крамницях Python.

Дівчино. |---------|----|---------| | Мова JavaScript @ title: window | Швидкодія ♪ Solar speed (Go runtime) } ♪ (Python GIL) ♪ | Легкість у використанні Теж саме JavaScript} Pythonic, легко | Розподілити тестування k6 хмар (каштовний) сягне- ін (безкоштовний) ♪ | Веб- інтерфейс Час реального часу | Експорт до матриці Щось таке? , web UI}

Коли замість цього використовувати ГМТ:

  • Команда Python- перша
  • Потрібне безкоштовне тестування
  • Бажати у режимі реального часу веб- інтерфейс під час тестування
  • Складна логіка Python в тестах

Чому k6 є кращим для більшості програм ядра ASP. NET:

  • Краща продуктивність для точних вимірів
  • JavaScript, більш звичний для веб- розробників
  • Синтаксис порогової або кульмінації чистки
  • Краща інтеграція з Prometheus/Graphafana

k6 проти Gatling

ГатлінгCity in Germany є заснованим на Scala інструментом з чудовим звітом.

Азартна фаза: |---------|----|---------| | Мова +5] +1Scala/Java} | Звіти ♫ separe (+повторення) } }Вбудувати- у HTML звітах} | Крива навчання ♪SIGE Mode} (Scala DSL) | Швидкодія ♪ | Відкрити джерело ♪plasma_ec_mas.eu.int.int. | Служба хмар *

Коли використовувати Gatling замість цього:

  • Експерт з JVM/Scala у команді
  • Потрібні приголомшливі вбудовані звіти
  • Перевірка складних сценаріїв HTTP
  • Вимоги підтримки підприємництва

Чому k6 є кращим для більшості програм ядра ASP. NET:

  • JavaScript є більш доступним
  • Просте налаштування і виконання
  • Краще для швидких перевірок CI/CD
  • Простіше для простого перевірки HTTP

k6 проти Artillery

Artillery є ще одним інструментом тестування завантаження JavaScript.

Дзвінок Каттерлі |---------|----|---------| | Визначення тесту pass JavaScript cance ♪ YAML + JS гаки ♪ | Швидкодія
| Легкість у використанні cod- based} Виконуваний файл YAML} | Вбудовано для ♪ Load ⁄ Loop + function pirc ♪ | Умовні вирази Дівчата/ д'ІІІ | Витонченість Дівчатаunit synonyms for matching user input

Коли замість цього використовувати Artillery:

  • Надавати перевагу YAML над кодом
  • Потрібне тестування сокета.io
  • Бажати об' єднаних завантажень і функціональних тестів
  • Вже використано екосистему вузла.js

Чому k6 є кращим для більшості програм ядра ASP. NET:

  • Точніші виміри (Йди проти вузла.js)
  • Краща порогова система
  • Очищення програмного інтерфейсу JavaScript
  • Більш зріла і стабільна

k6 проти wrk/ wkrk2

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:

  • Потрібна абсолютна мінімальна надкладка
  • Швидкі одноособічні позначки
  • Перевірка сирої швидкодії HTTP
  • Перевірка протоколу низького рівня

Чому k6 є кращим для більшості програм ядра ASP. NET:

  • Набагато простіше писати тести
  • Краща доповідь і вихідні дані
  • Підтримка сценаріїв (програма, етапи)
  • Приязний CI/CD

k6 проти Playwright/ Cypress (Browser-Based)

Playwright і Cypress є інструментами автоматизації переглядача, які іноді використовуються для тестування завантаження.

Дзвінок: |---------|----|---------| | Підйом Передбачуваний переглядач@ info: whatsthis | Швидкодія ⇩ Тисячі VUs сягнуть десятих браузерів | Використання ресурсу Світа * * * * * * * | Виконання JavaScript ♪ Ні ♪ Так ♪ | Основний випадок використання Д_ д. д. д. д. д. д. д. д. д. д. д. д. д. д. д. д. д. д. д. д. д. д. д. д. д. д. д. д. д. д. д. д.

Коли замість цього використовувати Playwright/ Cypress:

  • Потрібно перевірити виконання JavaScript
  • Потрібно перевірити відображення навігатора
  • Перевірка комплексу SPEAs
  • Фіктивне тестування E2E

Чому k6 є кращим для більшості програм ядра ASP. NET:

  • Потрібна перевірка рівня для програм, що виконуються сервером
  • Потрібна симуляція 100+ регулярних користувачів
  • Значно ефективніше використання ресурсів

Резюме: солодка пляма k6

За бажання, виберіть k6:

  • Швидка, акуратна перевірка завантаження
  • Дружній до розробника API JavaScript
  • Чудова інтеграція з CI/CD
  • Перевірка рівня HTTP (не потрібен переглядач)
  • Багата підтримка сценаріїв (смоктування, завантаження, стрес, шип, вода)
  • Сучасне знаряддя з хорошою екосистемою
  • Невибагливе використання ресурсів

k6 ідеально підходить для:

  • API і веб- служби
  • Програми, що відтворюються з боку сервера
  • Ворота швидкодії CI/CD
  • Перевірка швидкодії на основі розробників
  • Програми для роботи з хмарамиComment

Подумайте про альтернативи, якщо вам потрібно:

  • Тестування, засноване на переглядачі (використовує Playwright)
  • Підтримка широких протоколів поза HTTP (використовуйте JMeter)
  • Перевірка вільного розподілу (використовує СаранатCity in Florida USA)
  • Прекрасні вбудовані звіти (використовуйте ГатлінгCity in Germany)
  • Графічний інтерфейс для нетехнологічних тестувальників (використовуйте JMeter)

Наступні кроки

Тепер, коли ви розумієте, що таке k6, як встановити його, доступні типи тестів швидкодії, і чому k6 є чудовим вибором для програм ASP.NET, ви готові почати писати справжні тести.

Продовжити до Частина 2. Практичне впровадження Там, где мы закроем.

  • Налаштування середовища перевірки
  • Пишучи дим, вантаж, стрес, шип і тести з соку.
  • Перевірка поведінки кешу
  • Реалістична симуляція маршрутів користувача
  • Інтеграція CI/CD з діями GitHub
  • Виявлення регресії швидкодії
  • Профілювання dotTrace і dotMemory
  • Найкращі методи і усунення проблем

Ресурси

k6 Документація

Альтернативні інструменти для тестування завантаження

  • Apache JMedia - Програмне тестування завантаження на основі Java
  • СаранатCity in Florida USA - Засновані на Python перевірки завантаження
  • ГатлінгCity in Germany - Тестування завантаження на основі Scala
  • Artillery - Перевірка навантаження на вузол.js
  • wkk - Утиліта для позначення за допомогою HTTP
  • Playwright - Автоматизація і тестування навігатора
logo

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