你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

使用 Azure 负载测试为负载测试定义失败条件

本文介绍如何使用 Azure 负载测试为负载测试定义失败条件或自动停止条件。 失败条件用于定义承受负载的应用程序的性能和质量期望。 Azure 负载测试支持使用各种客户端和服务器指标来定义失败标准,例如 Azure 资源的错误率或 CPU 百分比。 自动停止条件使你能够在错误率超过给定阈值时自动停止负载测试。

先决条件

  • 具有活动订阅的 Azure 帐户。 如果没有 Azure 订阅,请在开始之前创建一个免费帐户
  • 一个 Azure 负载测试资源。 如果需要创建 Azure 负载测试资源,请参阅创建并运行负载测试快速入门。

负载测试失败条件

负载测试失败条件是测试应满足的指标条件。 在 Azure 负载测试中的负载测试级别定义测试条件。 一个负载测试可以有一个或多个测试条件。 当至少有一个测试条件计算为 true 时,负载测试的状态为“失败”

可以为负载测试定义最多 50 个测试条件。 如果同一指标有多个条件,则使用阈值最低的条件。

客户端指标的失败条件结构

Azure 负载测试中失败条件的格式遵循受支持指标的条件语句格式。 例如,确保每秒平均请求数大于 500。

对于客户端指标,可以在两个级别定义测试条件。 负载测试可以组合不同级别的条件。

  • 在负载测试级别。 例如,为了确保总错误百分比不超过阈值。 条件的结构为 Aggregate_function (client_metric) condition threshold
  • 在 JMeter 请求级别(JMeter 采样器)。 例如,可以指定 getProducts 请求的响应时间阈值,但忽略登录请求的响应时间。 条件的结构为 Request: Aggregate_function (client_metric) condition threshold

下表介绍了各种组件:

参数 说明
Client metric 必填。 应用该条件时所依据的客户端指标。
Aggregate function 必需。 要应用于客户端指标的聚合函数。
Condition 必需。 比较运算符,例如 greater thanless than
Threshold 必需。 要与客户端指标进行比较的数值。
Request 可选。 条件应用于的 JMeter 脚本中的采样器的名称。 如果未指定请求名称,则条件将适用于脚本中所有请求的集合。
请勿在 JMeter 脚本的采样器名称中包含任何个人数据。 采样器名称显示在 Azure 负载测试结果仪表板中。

失败条件支持的客户端指标

Azure 负载测试支持以下客户端指标:

指标 聚合函数 阈值 条件 说明
response_time_ms avg(平均)
min(最小值)
max(最大值)
pxx(百分位),xx 可以是 50、75、90、95、96、97、98、99、999 和 9999
整数值,表示毫秒数 (ms)。 >(大于)
<(小于)
响应时间或经过的时间,以毫秒为单位。 在 Apache JMeter 文档中详细了解经过的时间
latency avg(平均)
min(最小值)
max(最大值)
pxx(百分位),xx 可以是 50、90、95、99
整数值,表示毫秒数 (ms)。 >(大于)
<(小于)
延迟,以毫秒为单位。 在 Apache JMeter 文档中详细了解延迟
error percentage 0-100 范围的数值,表示百分比。 >(大于) 失败请求数百分比。
requests_per_sec avg(平均) 最多包含两位小数的数值。 >(大于)
<(小于)
每秒请求数。
requests count 整数值。 >(大于)
<(小于)
总请求数。

为客户端指标定义负载测试失败条件

在本部分,你将在 Azure 门户中为负载测试配置客户端指标的测试条件。

  1. Azure 门户中,转到 Azure 负载测试资源。

  2. 在左侧窗格中,选择“测试”以查看负载测试列表

  3. 从列表中选择你的负载测试,然后选择“编辑”

    Azure 门户中 Azure 负载测试资源的测试列表的屏幕截图,其中突出显示了“编辑”按钮。

  4. 在“测试条件”窗格中,填写测试的“指标”、“聚合函数”、“条件”和“阈值”值

    Azure 门户中负载测试的“测试条件”窗格的屏幕截图,其中突出显示了用于添加测试条件的字段。

    (可选)输入“请求名称”信息以添加特定 JMeter 请求的测试条件。 该值应与 JMX 文件中 JMeter 采样器的名称匹配。

    JMeter 用户界面的屏幕截图,其中突出显示了请求名称。

  5. 选择“应用”保存更改。

    现在,在运行负载测试时,Azure 负载测试将使用测试条件来确定负载测试运行的状态。

  6. 运行测试并在负载测试仪表板中查看状态。

    仪表板会显示每个测试条件及其状态。 如果至少满足一个条件,则总体测试状态为失败。

    一个屏幕截图,其中显示了负载测试仪表板中的测试条件。

访问应用组件以获取服务器指标的测试条件

在应用组件中为指标设置失败条件时,负载测试资源将使用托管标识来访问该组件。 配置托管标识后,需要向负载测试资源的托管标识授予从应用组件读取这些值的权限。

若要为 Azure 负载测试资源授予从应用组件中读取指标的权限,请执行以下操作:

  1. Azure 门户中,转到你的应用组件。

  2. 在左侧窗格中,依次选择“访问控制(IAM)”、“+ 添加”、“添加角色分配”

    屏幕截图显示要设置失败条件的应用程序组件中的访问控制 (IAM)。

  3. 在“角色”选项卡的“工作职能角色”下,搜索“监视读取者”或“监视参与者”

  4. 在“成员”选项卡上的“将访问权限分配给”部分下,选择“托管标识”

  5. 单击“选择成员”,搜索并选择负载测试资源的托管标识,然后选择“下一步”。 如果使用系统分配的托管标识,托管标识的名称与 Azure 负载测试资源的名称匹配。

  6. 选择“查看 + 分配”,为标识分配权限

    屏幕截图显示如何向负载测试资源分配读取指标的权限。

测试运行时,与负载测试资源关联的托管标识现在可以从应用组件读取负载测试的指标。

为服务器指标定义负载测试失败条件

重要

Azure 负载测试不支持从 Azure Pipelines/Github Actions 配置服务器端指标的失败条件。

在本部分,你将在 Azure 门户中为负载测试配置服务器端指标的测试失败条件。

  1. Azure 门户中,转到 Azure 负载测试资源。

  2. 选择“创建测试”

  3. 在“监视”选项卡下,配置要在测试期间监视的应用组件

  4. 配置“指标引用标识”。 标识可以是负载测试资源的系统分配的标识,也可以是用户分配的标识之一。 确保使用以前已授予访问权限的同一标识。

    配置指标引用标识的屏幕截图。

  5. 在“测试条件”窗格中,填写测试的“资源 ID”、“命名空间”、“指标”、“聚合”、“条件”、“阈值”值。 只能为测试期间监视的那些资源/应用组件设置失败条件。

    屏幕截图显示如何配置服务器指标失败条件。

  6. 选择“应用”保存更改。 现在,在运行负载测试时,Azure 负载测试将使用测试条件来确定负载测试运行的状态。

  7. 运行测试并在负载测试仪表板中查看状态。 仪表板会显示每个测试条件及其状态。 如果至少满足一个条件,则总体测试状态为失败。

    显示测试结果的仪表板的屏幕截图。

自动停止配置

如果错误百分比超过特定时间范围内给定的阈值,Azure 负载测试会自动停止负载测试。 自动停止可避免因测试失败(例如因终结点 URL 配置错误)而产生更多成本。

在负载测试配置中,可以启用或禁用自动停止功能,并配置错误百分比阈值和时间范围。 默认情况下,Azure 负载测试会自动停止在任意 60 秒时间范围内错误百分比至少为 90% 的负载测试。

可以将 Azure 负载测试自动停止功能与 JMeter 脚本中的自动停止侦听程序结合使用。 当满足自动停止配置或 JMeter 自动停止侦听程序中的某个条件时,负载测试会自动停止。

注意

如果为负载测试禁用自动停止,即使负载测试配置不正确,也可能会产生费用。

在 Azure 门户中为负载测试配置自动停止:

  1. Azure 门户中,转到 Azure 负载测试资源。

  2. 在左侧窗格中,选择“测试”以查看负载测试列表

  3. 从列表中选择你的负载测试,然后选择“编辑”。 或者,选择“创建”>“上传 JMeter 脚本”,创建新的测试

  4. 转到“测试条件”选项卡,配置自动停止功能

    • 使用“自动停止测试”控件启用或禁用自动停止负载测试

    • 如果启用自动停止,则可以填充“错误百分比”和“时间窗口”字段。 指定时间范围(以秒为单位)。

      Azure 门户中负载测试的“测试条件”窗格的屏幕截图,其中突出显示了自动停止功能。

  5. 选择“应用”或“查看 + 创建”(如果要创建新的负载测试),以保存更改

后续步骤