Back to "测试 ASP.NET 核心应用程序的装入测试"

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 核心应用程序的装入测试

Tuesday, 02 December 2025

您的应用程序在您的笔记本电脑 . 单元测试 pass@. 集成测试 PassQ. 中完美运作。 您调用您制作了 @,}, 然后突然将所有磨碎到一个停止的. •500个真正的用户同时进入您的主页,\ 并且您的服务器开始返回 <503> 错误 MS K7 #你精心设计的缓冲策略\ mSSK8} 结果它像您想象的那样, “'” 相当有效 就像您认为“.” 这个数据库查询是快速的吗?

这是每个开发者都害怕的噩梦情景 ,,但大多数Don's '测试 性能测试是't可选的MS K1 it' 成功发射和MSC3AM紧急页面=.之间的差别 此两个“ - @ part ” 指南将展示您如何使用 k6,}这个现代载荷测试工具来防止这一场景的发生, 该工具对于企业应用程序来说足够强大但又简单到可以运行在您的 CIQ/\ CD Prouto@.}

这是 部分#1 以 k6: 来进行负载测试时的 2 -\ part 序列

  • 本篇文章=)@ :_ 介绍 k6,_ 安裝@ MS K2} 測試型態 @ MPK3} 以及為什麼 k6}
  • 《实际实施》:写测试@,CI/CD整合 @,剖析_,和真实的#-世界示例

一. 导言导言 导言 导言 导言

性能测试对于任何生产 ASP.NET Core application@.你是否正在建立一个简单的博客{,}(一个复杂的微服务架构_,)或企业应用程序{MS K5你需要知道 您的应用程序在 Matt.下是如何运行的吗?

此综合指南演示您如何使用 ASP.}NET 核心应用程序装入测试 k6 -}其中最强大的 Open@-}源载负载测试工具之一 最小浏览量 我们的示例应用程序 @ ( @ a a 简单标记@ MS K1}以博客为例,其中含有内存和输出 caching_ ),}% 这里显示的技术和模式应用到 ASP.NET 核心应用程序.

到了这两次-系列的结尾 你就知道该如何"MSC3"

  • 在任何平台上安装和配置 k6@ 窗口 @ , MacMS K3Linux @ MPK4
  • 编写不同情景的全面性业绩测试报告
  • 与 GitHub Action 连接到您的 CI/}CD 管道
  • 使用剖析工具@( @ dootTrace @ , @ dotMemory @)}与 k6一起寻找瓶颈
  • 实施不同的测试策略 @:烟_,load@,压力_,加注,和浸泡检测
  • 建立性能回归检测机制,防止低速代码进入生产

为何以 MiminimalBlog 为例? @? @ '它是一個真正的 ASP.NET Core &9.0應用程式, 有共同的樣式Name:Razor Pages,記憶力在抓取 ,產品 MS K6檔案 IMS K7OMSKO8和標記處理}.你MSOK10將學會的測試方法 平等适用于您的 MVC aptsMS k11Web APIsMPK12Blazor 應用軟體MS13或最小的 APIS{.

什么是K6 和为什么使用它□?

k6 是一个为开发者构建的现代负荷测试工具@. @ 不同于旧的工具, 如JMeter 或 MalodRunner,_ k 6 is\ :}

  • 开发者 @-# 友好“:”测试用 JavaScript {(}ES6+)}写成。
  • CLI=-=第一位“: 完美于CI/CD管道”
  • 轻重量: 單一二進位 *, 沒有依屬性
  • 准确性: 以 Go 寫入精确度量
  • 脚本* : 复杂情景的完整编程能力
  • 云云 M- 已就绪: 能夠與 k6 雲 MS K2 Grafana , 普羅米修斯

对于最小的Blog@ , @ k6 @ 是理想的, 因为 < :\

  1. 我们可以测试缓存@:@ k6}可以校验缓存信头和行为
  2. 我们可以模拟真实交通流量: 测试多个同时使用的用户
  3. 我们可以验证履约索赔衡量实际反应时间
  4. 我们可以与 CI/CD结合“: ” 我们管道中的自动测试
  5. 我们可以测试具体情景@:_ 分类过滤@,_ 个人邮件 @MS K2_ 主页

正在安裝 k 6 @

Window 安装

使用巧克力的选项 @(}推荐@)

choco install k6

使用 winget 的选项@2:

winget install k6 --source winget

手册安装

  1. 下载最新的 Windows 释放 GitHub 释放
  2. 解开 k6.exe 文件文件
  3. 将目录添加到您的 PATH 或移动 k6.exe 已经在 PATH 中的目录

檢查安裝@: @%

k6 version

Mac 安装

使用主机的选项 @1:_@(}推荐{)}

brew install k6

使用 MacPorts 的选项 @2:%

sudo port install k6

手册安装

# 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 安装

使用软件包管理员

用于 乌本图(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

使用 Snap 选项“ 2:”

sudo snap install k6

手册安装

# 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

使用 docker 选项“ 4:”

docker pull grafana/k6:latest

# Run a test
docker run --rm -i grafana/k6:latest run - <script.js

檢查安裝@: @%

k6 version

理解 k6测试解剖

在我们潜入测试前 , Let's understand k6" test

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
}

关键概念@: @%

  • 虚拟用户 @(_VUs)}@: 模拟同时用户
  • 持续期限*:* 测试运行了多久
  • 检查检查@:_session 停止测试的语句
  • 阈下限: Pass/不合格标准
  • 计量数:反应时间,通过putMS K2错误率

性能测试类型

在测试您的应用程序前@, @ let @ ' @ 理解五个主要负荷测试类型, 以及何时使用每Q:}

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-2VUs (虚拟用户’)
  • 短时间 @(30 @s @sQ}-1_min)#
  • 测试基本功能

2. 装入测试

目的宗旨的目的评估预期正常载荷下的性能

何时使用:

  • 确定基准绩效
  • 为核实苏丹解放军是否得到满足
  • 定期业绩回归测试

特征特点:

  • 实际用户数
  • 持续负载
  • 典型持续时间@: @ @ @ 5-15 @ minutes

3.压力测试

目的宗旨的目的: 查找系统断点

何时使用:

  • 理解能力限度
  • 查明瓶颈
  • 按比例规划

特征特点:

  • 逐步增加的负载
  • 超出正常能力
  • 持续时间: : @ @ @ MS K1 @ 分钟

4.斯派克测试

目的宗旨的目的校对:Portnoy

何时使用:

  • 准备产品发布
  • 测试自动 *% -_ 缩放
  • 校验后退行为

特征特点:

  • 装载量突然大幅增加
  • 短短高峰期
  • 时间总长度 @: @ @ 5-10 @ 分钟@

5. 吸收测试 MS K1 延长试验 MSC2

目的宗旨的目的发现随时间推移的内存泄漏和退化

何时使用:

  • 重大释放前
  • 测试远程服务
  • 审定资源清理

特征特点:

  • 正常负载水平
  • 延长期限@(/小时或天数 @)
  • 降解监测器
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

{\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}为什么?

使用如此多的负载测试工具@ , @ 为何您要选择 k6? @ LetMS K2} 和流行的替代品比较 k6\ ?

k6vs Apache Jometer 诉阿帕奇

阿帕奇·哈利梅特 是载荷测试工具的老兵@(}自 @1999).

特写 @ @ k6} @ MS K3 @ Jometer @ @
安装装置 单二进制,没有依附关系MS K2需要 Java,更重的安裝}{
试验定义 JavaScript 代码 @ XML 或图形界面@
资源使用量 轻量级的(GO)}重力的
CD 融合 精美的 @CLI-第一位 @MS K3 需要插件{ }
学习曲线 “ 对开发商来说容易 ” @ Stepeper,GUIMS K3聚焦@ #
程序支持 HTTP,WebSocketesMS K2GRPC MSSK4FTPMPK5JDBC□,SMTP},等

何时使用 Jimeter 代替@ : @

  • 用于非{-} 技术测试器的 GUI
  • 超过 HTTP 的测试规程@( @JDBC,}LDAPMS K2_SOAP})}%
  • 已经拥有Jimeter团队中的专门知识
  • 需要广泛的插件生态系统

为什么对大多数 ASP=.=NET Core appts@:}来说K6#是更好的?

  • 快速写入测试@ ( @ JavaScript vs XML=)}
  • 较轻资源足迹
  • 更好地整合 CI/CD
  • 更现代的开发者经验

k6 与 Locust 之比

蝗灾 是一个基于 Python 的负载测试工具@,}在 Pytheon 商店很受欢迎 @.}

@ @ 地貌 @ @ k6 @ @ I @ Locust @ MPK4 @
语言语文 JavaScript PythonMS K2
业绩表现 实绩 @ }非常快 (#Go runtime~) #慢速{($Python GIL_)}@ #
使用范围 简单 JavaScript @ @ Pythonic@,# 简便 @ }
分布式测试 @ @ k6 @ 云端 @ I} 已付的 MS K3 @ * # 内建了-@ in @ NSK6 @ free @ MPK7 @ * @ O #
Web 界面 -=YTET -伊甸园字幕组=- 翻译:
计量导出 @ @ 多种格式 @ @ CSV#, @ web UI # @

何时使用 Locust 代替@ : @

  • Python - 第一队
  • 需要免费分发检测
  • 测试时想要真实的网络界面@- @time Web UI
  • 测试中复杂的 Python逻辑

为什么对大多数 ASP=.=NET Core appts@:}来说K6#是更好的?

  • 提高准确衡量指标的绩效
  • JavaScript 更熟悉网络开发者
  • 更清洁的下限@ / @ assertion 语法
  • 更好的普罗米修斯 /Grafana融合

k6 诉 Gatling

加注 是一个基于 Scala-}工具,其报告功能极佳 @.

@ @ 地貌 @ @ k6} @ I @ 加特林 @ MPK4 @
语言语文 @ @ JavaScript @ * Scala+/# #Java @ @
《报告》报告 @ _Basic {(+} 扩展)} #美丽的建筑_-}#HTML reports@ }*
学习曲线 “ 简单”“ 中调” “MS K2”“Scala DSL ) MSC4 ”
业绩表现 实绩 {\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}太棒了!
开放源码 @ _ 完全打开@ } 打开企业加+#-ons *% }
云云服务处 -=YTET -伊甸园字幕组=- 翻译:

何时使用 Gatling 代替@ : @

  • JVM /+Scala团队专长
  • 需要令人惊叹的建筑 -报告
  • 测试复杂的HTTP假设情景
  • 企业支助所需资源

为什么对大多数 ASP=.=NET Core appts@:}来说K6#是更好的?

  • JavaScript 更方便使用
  • 简易设置和执行
  • 更方便快速的 CI/}CD检查
  • 简单 HTTP 测试更直接

k6对火炮

火炮 是另一个 JavaScript 负载测试工具@. @%

@ @ 地物 @ @ k6} @ I @ 火炮 @ #
试验定义 JavaScript代码 -YAML JS勾起
业绩表现 实绩 @ _ ahead@ MS K1_ Go_ } @ I _ 慢速 @ MPK4 @ node. @jsQ @ #
使用范围 =代码-=基于 =YAML config}-=以 =
建于 负载测试 @ 加载 *+ 功能测试@
发售 -=YTET 翻译:
扩展性 扩展@ 插件 @

何时使用火炮代替:

  • 优先选择YAML超过代码
  • 需要 [email protected] 测试
  • 想要合并加载 *+}功能测试
  • 已经使用节点@ . @js 生态系统

为什么对大多数 ASP=.=NET Core appts@:}来说K6#是更好的?

  • 更精确的量度@(Go 相对于NOde.}js)
  • 更好的门槛值制度
  • 清洁的 JavaScript API
  • 更加成熟和稳定

{\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}

w平方公里 是轻量级 HTTP 基准工具@.

@ @ 地貌 @ @ k6 @ @ I @ wrk @ MPK4 @
使用范围 -=YTET -伊甸园字幕组=- 翻译:
假设情景 丰富场景支持 @ 基本 HTTP 只@
计量数 -=YTET -伊甸园字幕组=- 翻译:
脚本 ~ JavaScript ~ Lua ~ 马斯克2 ~
使用大小写 @ 全面负载测试 }快速基准 @MS K2#

何时使用 wrk 代替@ : @

  • 需要绝对最低限度的间接费用
  • 快速一-关闭基准
  • 测试原HTTP性能
  • Low - 协议级别测试

为什么对大多数 ASP=.=NET Core appts@:}来说K6#是更好的?

  • 更容易写作测试
  • 改进报告和衡量标准
  • 方案支持 @(ramp@-_up},}阶段=)
  • CD 友好型

k6 @ vs Playwright@ / @ Cypress @ MS K2_ browser @ MPK3}% based @ )

lay人赖 和 闪压缩 是浏览器自动化工具,有时用于装载测试@. @%

@ @ 地物 @ I @ k6 @ @ MPK3} 播放机@ MS K4 @ 网络记者 @ MISSK5 @
方 式方法 协议-级 HTTP @ 真正的浏览器 @MS K3
业绩表现 实绩 上千个VUs * * 10个浏览器* *
资源使用量 *轻量级 轻度 *重度 * *browser MS K3 MSC4
JavaScript 执行 # @ 不,不, # 是 @ @
首用个案 负载测试 @ E2E 功能测试@

何时使用 Playwright @ / @ 网络按键代替@ MS K1

  • 需要测试 JavaScript 执行
  • 必须验证浏览器配置
  • 测试复合SPA
  • 功能性 E2E测试

为什么对大多数 ASP=.=NET Core appts@:}来说K6#是更好的?

  • 协议@- @ level 测试足够服务器@ - @ rendered apps
  • 需要模拟同时用户@ 100+ @% 1}
  • 提高资源使用效率

摘述: : @ k6'}甜点

当您想要 :\ \ 时选择 k6\

  • 快速,}准确的负载测试
  • 开发者@- @% 友好 JavaScript API
  • 优秀的CI/CD融合
  • 协议 - 级别 HTTP 测试 @(no 浏览器需要@)
  • 富有的情景支持 @( @smoke@,}load_,压力=,加注+,
  • 利用良好生态系统的现代工具
  • 轻量资源使用

@ k6_ 完美地适合@ :}

  • AIP和网络服务
  • Server - @%side 已提供应用程序
  • CD 性能大门
  • 开发者@- @% 驱动的性能测试
  • Cloud M- 本地应用

需要时,可考虑替代方案 @: @

  • 浏览器@ - @ 基于 broad 测试 #% MS K1_ use lay人赖)
  • HTTP @(use 以外的广泛的协议支持 赫米特)
  • 免费分发测试@(_use 蝗灾)
  • 美丽的建筑@- @in reports @(_use 加注)
  • 用于非{-} 技术测试器的 GUI @ (_ use 赫米特)

下一步步骤

现在,你明白什么是 k\ 6 @\ MPK1 是如何安装它的 , _ 可用的性能测试类型@ MS K3\ 和为什么 k\ 6\ 是一个伟大的选择 对于 ASP\ I. NET Core application_ , 您已经准备好开始写实际的测试@.}

继续 《实际实施》 {\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}在哪里?

  • 设置测试环境
  • 填充烟雾@,load @,压力 @ ,加注 @ I,和浸泡测试
  • 测试缓存行为
  • 现实的用户旅途模拟
  • 与GitHub行动整合的CD
  • 性效回归检测
  • 用点跟踪和点记忆分析
  • 最佳做法和排除故障

资源资源资源 资源和资源资源资源

k6文档

替代性负载测试工具

logo

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