你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
了解如何使用适用于 Visual Studio Code 的 Azure 负载测试扩展,通过 Copilot 轻松创建 Locust 负载测试,在本地进行迭代测试,并在 Azure 中轻松扩展。 无论你是 Locust 的新手还是性能测试专家,Azure 负载测试扩展都能够直接从 VS Code 环境简化测试的创建、迭代和扩展。 Azure 负载测试是一项托管服务,可用于在云规模上运行负载测试。 Locust 是一种开源负载测试工具,可用于在 Python 代码中编写所有测试。
本快速入门将指导你完成生成、优化和运行实际负载测试。 最后,你拥有一个从 Postman 集合、 Insomnia 集合或 .http 文件生成的功能完整的负载测试脚本,经过 Copilot 提供的增强功能改进,并已准备好在 Azure 负载测试中进行扩展。
先决条件
- 适用于 VS Code 的 Azure 负载测试扩展。 在此处下载并安装它。
- GitHub Copilot。 在 VS Code 中设置 Copilot 以生成和优化测试脚本。 如果没有订阅,可以激活免费试用版。
- Python 和 Locust。 需要从 VS Code 在本地运行和验证 Locust 测试脚本。 在此处安装 Locust。
- 具有活动订阅的 Azure 帐户。 需要在 Azure 负载测试中大规模运行负载测试。 免费创建帐户。
小窍门
VS Code 的 GitHub Copilot Chat 提供了多个 AI 模型。 可以使用聊天输入字段中的模型选取器切换模型。 如果你不确定要使用哪一个,我们建议使用 GPT-4o。
打开演练
若要开始,请在 VS Code 中打开命令面板并运行: 负载测试:打开演练。 本指南提供了扩展的关键入口点。
还可以使用 负载测试 前缀直接从命令面板访问功能。 一些常用的命令包括:
使用 Copilot 生成 Locust 脚本
可以从任何现有的 Postman 集合、失眠集合或 .http 文件生成 Locust 脚本。 如果文件包含多个请求,Copilot 会尝试将它们整合成一个一致的情境。
单击演练中的“ 创建负载测试 ”按钮,或运行 负载测试:从命令面板创建 Locust 测试 。
可以选择源来自动生成 Locust 测试脚本:
- 选择 Postman 集合、 失眠集合或 .http 文件 可让 Copilot 提取多个 API作、请求数据和身份验证详细信息,从而创建更完整、更真实的负载测试。
- 选择 单个 URL 可以输入单个终结点 URL,并生成一个简单的脚本,可以自定义或展开。
对于本演练,可以选择“尝试示例: Pet Shop API”,该 API 使用
petstore-sample.http
文件生成示例 Locust 测试脚本。Copilot 分析所选文件并生成 基于 Locust 的负载测试脚本,自动对 API 请求进行排序,以安全地模拟真实使用情况和处理身份验证。
生成脚本后, Copilot Chat 窗口将建议其他设置步骤,例如定义 环境变量。 如果 Copilot 建议环境变量,请在项目中创建一个
.env
文件并添加建议的值。
自定义负载测试脚本
在运行测试之前,可以使用 Copilot 对其进行优化。 例如,通过检查脚本,你可能会注意到每个请求都会发送相同的请求有效负载:
payload = {
"id": self.pet_id,
"name": "Fluffy",
"category": {"id": 1, "name": "Dogs"},
"photoUrls": ["https://example.com/photo.jpg"],
"tags": [{"id": 1, "name": "cute"}],
"status": "available"
}
若要通过随机化请求有效负载使测试更加动态:
- 打开 Copilot 聊天 面板。
- 键入:
Randomize request payloads
然后按 Enter。 - Copilot 生成建议的修改来引入随机化。
- 在 Copilot 聊天窗口中,单击位于生成代码片段上方的 编辑器中的“应用”。
- 查看更改后,单击“ 保留 ”以接受并更新脚本。
- 保存文件
现在,每个请求都会模拟更真实的用户交互。 代码类似于以下代码片段:
payload = {
"id": self.pet_id,
"name": f"Pet{random.randint(1, 1000)}",
"category": {"id": random.randint(1, 10), "name": random.choice(["Dogs", "Cats", "Birds"])},
"photoUrls": [f"https://example.com/photo{random.randint(1, 100)}.jpg"],
"tags": [{"id": random.randint(1, 10), "name": random.choice(["cute", "friendly", "playful"])}],
"status": random.choice(["available", "pending", "sold"])
}
运行负载测试
可以通过两种方式运行负载测试:
- 在本地运行以快速验证
- 在 Azure 负载测试中运行以实现大规模多区域负载
在本地运行以快速验证
若要快速验证测试,请使用 Visual Studio Code 中的 Locust 在本地运行它:
打开命令面板并运行:负载测试:运行负载测试(本地)。
Locust Web UI 在浏览器中自动启动。 Locust 服务器准备好并打开浏览器可能需要几秒钟时间。
在 “开始新的负载测试 ”页中,查看输入字段,然后单击“ 开始”。 Locust 开始发送请求、记录任何故障以及跟踪性能统计信息。
浏览 Locust UI 以分析响应时间、错误率和请求吞吐量。
小窍门
如果 Locust 报告 Retrieve Pet
和 Update Pet
请求失败,则可能是由于 Pet Store API 处理请求的方式造成的。 尝试要求 Copilot“在 run_scenario 中的请求之间添加随机延迟”。 如果怀疑脚本本身出现问题,请设置为 DEBUG_MODE=True
环境变量并重新运行测试以获取更详细的调试信息。
如果希望从 VS Code 终端运行测试:
在 VS Code 中打开终端。
运行下面的命令:
locust -f path/to/locustfile.py -u 10 -r 2 --run-time 1m
-f path/to/locustfile.py
:指定 Locust 测试脚本。-u 10
:最多模拟 10 个虚拟用户。-r 2
:每秒增加两个虚拟用户。--run-time 1m
:运行测试 1 分钟。
打开浏览器并访问
http://0.0.0.0:8089
以查看 Locust 的 Web UI。
在 Azure 负载测试中扩展规模
对于需要跨多个区域模拟数千个并发虚拟用户的高负载方案,可以在 Azure 负载测试中运行测试。
若要执行大规模测试,请执行:
打开命令面板并运行:负载测试:运行负载测试(Azure 负载测试)。
选择“ 创建配置文件...”。
按照引导式设置进行操作,该设置包括:
登录到 Azure 并选择订阅。
创建新的 Azure 负载测试资源或选择现有资源。
选择负载测试区域以全局分发流量。
设置完成后,将生成一个 YAML 配置文件(例如,
loadtest.config.yaml
),并将其添加到工作区根文件夹。此文件定义 Locust 脚本、加载参数、环境变量、区域和任何其他文件(例如 CSV 数据集)。
默认值为每个选定区域中运行 120 秒的 200 个虚拟用户。
在存储库中提交此文件,以重复使用并自动执行将来的负载测试。
Copilot 在执行之前验证配置。 按照聊天窗口中提供的任何说明进行操作。 如果一切验证无误,测试脚本及其相关工件将上传到 Azure 负载测试并准备执行。 此过程最多可能需要一分钟,进度会显示在 “输出 ”面板中。
测试启动时,VS Code 右下角会显示一条通知(toast 消息)。 单击“ 在 Azure 门户中打开 ”按钮,实时监视测试执行。
测试开始时,右下角会出现一条通知(toast 消息)。 单击“ 在 Azure 门户中打开 ”按钮,实时监视测试执行。
小窍门
若要快速访问先前运行的测试结果,请使用命令: 负载测试:查看负载测试运行。
在本快速入门中,敏感变量(如 API_KEY
)被存储在 .env
文件中,并上传到云服务。 但是,最佳做法是在 Azure Key Vault 中安全地管理机密。 该扩展提供有关设置过程的指导。
在本快速入门中,像 API_KEY
这样的敏感变量被存储在 .env
文件中,并上传到云服务。 但是,最佳做法是在 Azure Key Vault 中安全地管理机密。 该扩展提供有关设置此功能的指导。
打开 Copilot Chat 窗口,键入
@testing /setupLoadTestSecretsInAzure
并按 Enter。Copilot 指导你完成以下步骤:
Copilot 指导你完成以下步骤:
- 创建 Azure Key Vault。
- 将托管标识分配给 Azure 负载测试资源。
- 将机密添加到 Azure Key Vault。
- 将 YAML 文件配置为引用 Key Vault 机密而不是
.env
。
每当修改 Locust 脚本或 YAML 配置时,都可以通过执行 运行负载测试(Azure 负载测试)重新运行测试。
概要
在本快速入门中,你使用适用于 Visual Studio Code 的 Azure 负载测试扩展,通过 Copilot 轻松创建 Locust 负载测试,进行本地迭代,并在 Azure 中轻松实现扩展。 适用于 VS Code 的 Azure 负载测试扩展简化了为测试方案创建真实测试脚本的过程。 Azure 负载测试抽象化了设置基础结构以模拟应用程序大规模用户负载的复杂性。
可以进一步扩展负载测试,以监视负载下应用程序的服务器端指标,并指定测试失败指标,以在应用程序不满足要求时收到警报。 为了确保应用程序继续运行良好,还可以将负载测试作为持续集成和持续部署 (CI/CD) 工作流的一部分进行集成。
相关内容
- 了解如何监视应用程序的服务器端指标。
- 了解如何 使用 CI/CD 配置自动化性能测试。