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
您的应用程序在您的笔记本电脑上完全有效。 单位测试通过。 集成测试通过。 您部署到制作中, 突然所有的东西都停止了。 500个真正的用户同时点击您的主页, 您的服务器开始返回503个错误。 您精心设计的缓存策略 ? 结果它不像您想象的那样有效 。 您认为数据库查询是快速的 。 它正在制造一个规模化的瓶颈 。
这是每个开发者恐惧的恶梦情景, 但大多数不进行测试。 性能测试不是可选的, 而是成功发射和3点的紧急页面的区别。 这个分为两部分的指南将展示您如何使用 k6 来预防这种情景, 这个现代载荷测试工具对企业应用程序来说足够强大, 但简单到可以运行在您的 CI/CD 管道中。
这是 第一部分 第一部分 k6 载荷测试的两部分系列:
性能测试对于任何生产 ASP. NET 核心应用程序都至关重要 。 您是否正在建立一个简单的博客、 一个复杂的微服务架构, 或者一个企业应用程序, 您需要知道您的应用程序在负荷中是如何运行的 。 它会处理100个同时使用的用户吗 ? 1000 ? 瓶颈在哪里? 您的缓存策略真的有效吗 ?
此全面指南演示您如何使用 ASP.NET 核心应用程序装入 ASP.NET 测试 k6 k6 - 最强大的开放源码载荷测试工具之一 最小浏览量 我们的示例应用程序( 简单的标记- 以标记为基础的博客, 带有内存和输出缓存) , 这里显示的技术和模式应用到 ASP.NET 任何核心应用程序.
在这两部分系列的结尾, 你会知道如何:
为何以最微小的Blog为例? 这是一个真正的 ASP.NET Core 9.0 应用程序, 具有常见模式 : Razor Pages、 内存缓存、 输出缓存、 文件 I/ O 和标记处理 。 您将学习的测试方法同样适用于您的 MVC 应用程序、 Web API、 Blazor 应用程序或最小的 API 。
k6 k6 是一个为开发者建造的现代负载测试工具。 不同于像 JMEMET 或 loadRunner 这样的老工具, k6 是 :
对于最小Blog, k6 是理想的, 因为 :
备选办法1:使用巧克力(建议)
choco install k6
备选案文2:使用翼
winget install k6 --source winget
备选方案3:手工安装
k6.exe 文件文件k6.exe 已经在 PATH 中的目录核查安装 :
k6 version
备选方案1:使用家居(推荐)
brew install k6
备选办法2:使用麦克插件
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:使用一揽子管理人
用于 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
用于 联邦/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 与流行的替代工具 :
阿帕奇·哈利梅特 是载荷测试工具的老兵(自1999年起)。
何时使用 JMEMET 代替 :
为什么 k6 对大多数 ASP. NET 核心应用程序来说更好:
蝗灾 是一种基于Python的负载测试工具,在Python商店很流行。
特写 @ k6 @ Locust @ |---------|----|---------| | 语言语言语言 * JavaScript * Python * * JavaScript * Python * * JavaScript * Python * * JavaScript * Python * * JavaScript * Python * Python * * JavaScript * Python * * JavaScript * Python * Python * * JavaScript * Python * * JavaScript * 和 JavaScript * Python * Python * * 和 JavaScript * 贾斯克里普特 * 派松 * 皮顿* * 皮森 * 皮森 * 皮瑟松 * * * | 业绩 业绩业绩 业绩业绩 非常快( 运行时间) 慢( Python GIL) | 使用范围 简单 JavaScript 音波音,简单 | 分布式测试 k6云(已支付) 内建(免费) | Web 界面 | 计量导出 许多格式 CSV,网络UI
何时使用 Loust 代替 :
为什么 k6 对大多数 ASP. NET 核心应用程序来说更好:
加注 是一个以Scala为基础的工具,其报告质量极佳。
特写 @ k6 @ Gatling @ |---------|----|---------| | 语言语言语言 * JavaScript * Scala/Java * * JavaScript * Scala/Java * * JavaScript * * Scala/Java * * JavaScript * 贾瓦* * 斯卡拉/贾瓦 * JavaScala/Java * * JavaScala/Java * * JavaScript * | 《报告报告》报告报告 * 基本 (+扩展) * 漂亮的内置 HTML 报告 * | 学习曲线 易 中 度 (Scala DSL) | 业绩 业绩业绩 业绩业绩 棒极了,棒极了,棒极了,棒极了,棒极了,棒极了,棒极了,棒极了,棒极了,棒极了,棒极了,棒极了,棒极了,棒极了,棒极了,棒极了,棒极了,棒极了,棒极了,棒极了,棒极了,棒极了,棒极了,棒极了,棒极了 | 开放源码 * 完全开放 * * 开放,加上企业附加项目 * | 云云服务处 k6 云端加特林企业
何时使用 Gatling 代替 :
为什么 k6 对大多数 ASP. NET 核心应用程序来说更好:
火炮 是另一个 JavaScript 负载测试工具。
何时使用火炮代替:
为什么 k6 对大多数 ASP. NET 核心应用程序来说更好:
w平方公里 是一个轻量级的 HTTP 基准工具。
何时使用 wrk 代替 :
为什么 k6 对大多数 ASP. NET 核心应用程序来说更好:
lay人赖 和 结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结 是浏览器自动化工具,有时用于负载测试。
功能 k6 |---------|----|---------| | 方 式 式 方法 协议级别 HTTP 真实浏览器 | 业绩 业绩业绩 业绩业绩 成千个VUs 成千上百个浏览器 | 资源使用量 *轻量级 *重(浏览器) * 轻 *重(浏览器) * 轻 *重 *重(浏览器) * | JavaScript 执行 不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不 | 首用个案 方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方
何时使用 Playwright/ Cypress 代替 :
为什么 k6 对大多数 ASP. NET 核心应用程序来说更好:
想要时选择 k6 :
k6 完美于 :
如有需要,可考虑替代方案:
既然你明白K6是什么, 如何安装它, 可用性能测试的类型, 为什么K6是 ASP. NET Core 应用程序的绝佳选择, 你准备开始写实际测试。
继续 第二部分:实际实施 在那里,我们将涵盖:
© 2026 Scott Galloway — Unlicense — All content and source code on this site is free to use, copy, modify, and sell.