View a markdown version of this page

分布式负载测试 API - AWS 上的分布式负载测试

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

分布式负载测试 API

此负载测试解决方案可帮助您以安全的方式公开测试结果数据。该 API 充当访问存储在亚马逊 DynamoDB 中的测试数据的 “前门”。您还可以使用 API 来访问您在解决方案中内置的任何扩展功能。

该解决方案使用与亚马逊 API 网关集成的亚马逊 Cognito 用户池进行身份识别和授权。当用户池与 API 一起使用时,客户端只有在提供有效的身份令牌后才能调用用户池激活的方法。

有关直接通过 API 运行测试的更多信息,请参阅 Amazon API Gateway REST API 参考文档中的签名请求。

解决方案的 API 中提供以下操作。

注意

有关testScenario和其他参数的更多信息,请参阅 GitHub 存储库中的场景和负载示例。

堆栈信息

场景

测试运行

基准

任务

区域

获取 /stack-info

说明

该GET /stack-info操作检索有关已部署堆栈的信息,包括创建时间、区域和版本。前端使用此端点。

响应

200-成功

Name 说明

created_time

创建堆栈时的 ISO 8601 时间戳(例如,)2025-09-09T19:40:22Z

region

部署堆栈的 AWS 区域(例如,us-east-1)

version

已部署解决方案的版本(例如,v4.0.0)

错误响应

  • 403-禁止:访问堆栈信息的权限不足

  • 404-未找到:堆栈信息不可用

  • 500-内部服务器错误

获取 /场景

说明

该GET /scenarios操作允许您检索测试场景列表。

响应

Name 说明

data

场景列表,包括每个测试的 ID、名称、描述、状态、运行时间、标签、总运行次数和上次运行次数

帖子/场景

说明

该POST /scenarios操作允许您创建或安排测试场景。

请求正文

Name 说明

testName

测试的名称

testDescription

测试的描述

testTaskConfigs

一个对象,它指定concurrency(并行运行次数)、taskCount(运行测试所需的任务数)和场景region的对象

testScenario

测试定义包括并发性、测试时间、主机和测试方法

nativeRunMode

选择交通形状模式的对象。省略它以使用标准模式。将其包括在内,maxTestDurationSeconds安全持续时间长达 24 小时,以选择原生模式并让上传的脚本控制负载。只有基于脚本的测试支持原生模式。有关更多信息,请参阅交通形态模式。

testType

测试类型(例如,simple,jmeter)

fileType

上传文件类型(例如、nonescript、zip)

tags

用于对测试进行分类的字符串数组。最大长度为 5 的可选字段(例如,["blue", "3.0", "critical"])

scheduleDate

运行测试的日期。仅在安排测试时提供(例如,2021-02-28)

scheduleTime

是时候进行测试了。仅在安排测试时提供(例如,21:07)

scheduleStep

计划流程中的步骤。仅在安排定期测试时提供。(可用步骤包括create和start)

cronvalue

用于自定义循环计划的 cron 值。如果使用,请省略 scheduleDate 和 scheduleTime。

cronExpiryDate

必填日期,以便 cron 过期且不会无限期运行。

recurrence

预定测试的复发。仅在安排定期测试(例如、、dailyweeklybiweekly、或monthly)时提供

响应

Name 说明

testId

测试的唯一 ID

testName

测试的名称

status

测试的状态

选项/场景

说明

该OPTIONS /scenarios操作使用正确的 CORS 响应标头为请求提供响应。

响应

Name 说明

testId

测试的唯一 ID

testName

测试的名称

status

测试的状态

获取 /scenarios/ {testID}

说明

该GET /scenarios/{testId}操作允许您检索特定测试场景的详细信息。

请求参数

testId
  • 测试的唯一 ID

    类型:字符串

    是否必需:是

latest
  • 仅返回最新测试运行的查询参数。默认为 true

    类型:布尔值

    必需:否

history
  • 在响应中包含测试运行历史记录的查询参数。默认值为 true。设置false为排除历史记录

    类型:布尔值

    必需:否

响应

Name 说明

testId

测试的唯一 ID

testName

测试的名称

testDescription

测试的描述

testType

正在运行的测试类型(例如simple,jmeter)

fileType

上传的文件类型(例如、nonescript、zip)

tags

用于对测试进行分类的字符串数组

status

测试的状态

startTime

上次测试开始的时间和日期

endTime

上次测试结束的时间和日期

testScenario

测试定义包括并发性、测试时间、主机和测试方法

taskCount

运行测试所需的任务数量

taskIds

用于运行测试的任务 ID 列表

results

测试的最终结果

history

过去测试的最终结果清单(不包括以下情况history=false)

totalRuns

此场景的测试运行总数

lastRun

上次测试运行的时间戳

errorReason

发生错误时生成的错误消息

nextRun

下一次计划运行(例如,2017-04-22 17:18:00)

scheduleRecurrence

测试的重复次数(例如,daily、weekly、biweekly、monthly)

POST /scenarios/ {testID}

说明

该POST /scenarios/{testId}操作允许您取消特定的测试场景。

请求参数

testId
  • 测试的唯一 ID

    类型:字符串

    是否必需:是

响应

Name 说明

status

测试的状态

删除 /scenarios/ {testID}

说明

该DELETE /scenarios/{testId}操作允许您删除与特定测试场景相关的所有数据。

请求参数

testId
  • 测试的唯一 ID

    类型:字符串

    是否必需:是

响应

Name 说明

status

测试的状态

选项 /场景/ {testID}

说明

该OPTIONS /scenarios/{testId}操作使用正确的 CORS 响应标头为请求提供响应。

响应

Name 说明

testId

测试的唯一 ID

testName

测试的名称

testDescription

测试的描述

testType

正在运行的测试类型(例如simple,jmeter)

fileType

上传的文件类型(例如、nonescript、zip)

status

测试的状态

startTime

上次测试开始的时间和日期

endTime

上次测试结束的时间和日期

testScenario

测试定义包括并发性、测试时间、主机和测试方法

taskCount

运行测试所需的任务数量

taskIds

用于运行测试的任务 ID 列表

results

测试的最终结果

history

过去测试的最终结果清单

errorReason

发生错误时生成的错误消息

GET /scenarios/ {testID} /testruns

说明

该GET /scenarios/{testId}/testruns操作检索特定测试场景的测试运行 ID,可以选择按时间范围进行筛选。W latest=true hen,仅返回最近一次的测试运行。

请求参数

testId
  • 测试场景 ID

    类型:字符串

    是否必需:是

latest
  • 仅返回最新的测试运行 ID

    类型:布尔值

    默认值:false

    必需:否

start_timestamp
  • 用于筛选测试运行时间的 ISO 8601 时间戳(包括)。例如,2024-01-01T00:00:00Z

    类型:字符串(日期时间格式)

    必需:否

end_timestamp
  • ISO 8601 时间戳,用于筛选测试运行直到(含)。例如,2024-12-31T23:59:59Z

    类型:字符串(日期时间格式)

    必需:否

limit
  • 要返回的最大测试运行次数(时忽略latest=true)

    类型:整数(最小值:1,最大值:100)

    默认值:20

    必需:否

next_token
  • 从上一次回复中提取分页令牌以获取下一页

    类型:字符串

    必需:否

响应

200-成功

Name 说明

testRuns

测试运行对象数组,每个对象包含testRunId(字符串)和startTime(ISO 8601 日期时间)

pagination

包含limit(整数)和next_token(字符串或空值)的对象。如果没有更多结果,则令牌为空

错误响应

  • 400-时间戳格式或参数无效

  • 404-未找到测试场景

  • 500-内部服务器错误

示例用法

  • 仅限最新试运行:GET /scenarios/test123/testruns?latest=true

  • 时间范围内的最新消息:GET /scenarios/test123/testruns?latest=true&start_timestamp=2024-01-01T00:00:00Z

  • 下一页请求:GET /scenarios/test123/testruns?limit=20&next_token=eyJ0ZXN0SWQiOiJzZVFVeTEyTEtMIiwic3RhcnRUaW1lIjoiMjAyNC0wMS0xM1QxNjo0NTowMFoifQ==

GET /scenarios/ {testID} /testruns/ {test} RunId

说明

该GET /scenarios/{testId}/testruns/{testRunId}操作检索特定测试运行的完整结果和指标。(可选)省略历史记录结果history=false以加快响应速度。

请求参数

testId
  • 测试场景 ID

    类型:字符串

    是否必需:是

testRunId
  • 特定的测试运行 ID

    类型:字符串

    是否必需:是

history
  • 在响应中包含历史数组。设置为省略历史记录false以加快响应速度

    类型:布尔值

    默认值:true

    必需:否

响应

200-成功

Name 说明

testId

测试的唯一 ID(例如,seQUy12LKL)

testRunId

特定的测试运行 ID(例如,2DEwHItEne)

testDescription

负载测试的描述

testType

测试的类型(例如,simple,jmeter)

status

测试运行的状态:complete、runningfailed、或 cancelled

startTime

测试开始的时间和日期(例如,2025-09-09 21:01:00)

endTime

测试结束的时间和日期(例如,2025-09-09 21:18:29)

succPercent

成功百分比(例如,100.00)

testTaskConfigs

包含region、taskCount和的任务配置对象数组 concurrency

completeTasks

将区域映射到已完成任务数的对象

results

包含详细指标的对象,包括avg_lt(平均延迟)、百分位数(p0_0p50_0p90_0、p95_0、p99_0、p99_9、、、p100_0)、avg_rt(平均响应时间)、avg_ct(平均连接时间)、stdev_rt(标准差响应时间)、concurrencythroughput、succ(成功次数)、fail(失败次数)、bytes、testDurationmetricS3Location、rc(响应代码数组)和labels数组

testScenario

包含带有executionreporting、和scenarios属性的测试配置的对象

history

历史测试结果数组(不包括以下情况history=false)

错误响应

  • 400-testID 或测试无效 RunId

  • 404-未找到试运行

  • 500-内部服务器错误

删除 /scenarios/ {testID} /testruns/ {test} RunId

说明

该DELETE /scenarios/{testId}/testruns/{testRunId}操作将删除与特定测试运行相关的所有数据和工件。测试运行数据将从 DynamoDB 中移除,而 S3 中的实际测试数据保持不变。

请求参数

testId
  • 测试场景 ID

    类型:字符串

    是否必需:是

testRunId
  • 要删除的特定测试运行 ID

    类型:字符串

    是否必需:是

响应

204-成功

测试运行已成功删除(未返回任何内容)

错误响应

  • 400-testID 或测试无效 RunId

  • 403-禁止:权限不足,无法删除测试运行

  • 404-未找到试运行

  • 409-冲突:测试运行当前正在运行,无法删除

  • 500-内部服务器错误

获取 /scenarios/ {testID} /baseline

说明

该GET /scenarios/{testId}/baseline操作会检索场景的指定基准测试结果。根据data参数返回基准测试运行 ID 或完整基准结果。

请求参数

testId
  • 测试场景 ID

    类型:字符串

    是否必需:是

data
  • 如果只是测试true,则返回完整的基准测试运行数据 RunId

    类型:布尔值

    默认值:false

    必需:否

响应

200-成功

何时data=false(默认):

Name 说明

testId

测试场景 ID(例如,seQUy12LKL)

baselineTestRunId

基准测试运行 ID(例如,2DEwHItEne)

什么时候data=true:

Name 说明

testId

测试场景 ID(例如,seQUy12LKL)

baselineTestRunId

基准测试运行 ID(例如,2DEwHItEne)

baselineData

完整的测试运行结果对象(与结构相同GET /scenarios/{testId}/testruns/{testRunId})

错误响应

  • 400-testID 参数无效

  • 404-未找到测试场景或未设置基准

  • 500-内部服务器错误

PUT /scenarios/ {testID} /基线

说明

该PUT /scenarios/{testId}/baseline操作将特定的测试运行指定为性能比较的基准。每个场景只能设置一个基准。

请求参数

testId
  • 测试场景 ID

    类型:字符串

    是否必需:是

请求正文

Name 说明

testRunId

要设置为基准的测试运行 ID(例如,2DEwHItEne)

响应

200-成功

Name 说明

message

确认消息(例如,Baseline set successfully)

testId

测试场景 ID(例如,seQUy12LKL)

baselineTestRunId

设置的基准测试运行 ID(例如,2DEwHItEne)

错误响应

  • 400-testID 或测试无效 RunId

  • 404-未找到测试场景或测试运行

  • 409-冲突:无法将测试运行设置为基准(例如,测试失败)

  • 500-内部服务器错误

删除 /scenarios/ {testID} /基线

说明

该DELETE /scenarios/{testId}/baseline操作通过将场景的基准值设置为空字符串来清除该场景的基准值。

请求参数

testId
  • 测试场景 ID

    类型:字符串

    是否必需:是

响应

204-成功

已成功清除基线(未返回任何内容)

错误响应

  • 400-testID 无效

  • 500-内部服务器错误

获取 /任务

说明

该GET /tasks操作允许您检索正在运行的亚马逊弹性容器服务 (Amazon ECS) 任务的列表。

响应

Name 说明

tasks

用于运行测试的任务 ID 列表

选项/任务

说明

OPTIONS /tasks任务操作使用正确的 CORS 响应标头为请求提供响应。

响应

Name 说明

taskIds

用于运行测试的任务 ID 列表

获取 /区域

说明

该GET /regions操作允许您检索在该地区进行测试所需的区域资源信息。

响应

Name 说明

testId

区域 ID

ecsCloudWatchLogGroup

该地区中 AWS Fargate 任务的亚马逊 CloudWatch 日志组的名称

region

表中资源所在的区域

subnetA

该区域中一个子网的 ID

subnetB

该区域中一个子网的 ID

taskCluster

该地区中 AWS Fargate 集群的名称

taskDefinition

区域中任务定义的 ARN

taskImage

区域中任务图像的名称

taskSecurityGroup

该区域中安全组的 ID

选项/区域

说明

该OPTIONS /regions操作使用正确的 CORS 响应标头为请求提供响应。

响应

Name 说明

testId

区域 ID

ecsCloudWatchLogGroup

该地区中 AWS Fargate 任务的亚马逊 CloudWatch 日志组的名称

region

表中资源所在的区域

subnetA

该区域中一个子网的 ID

subnetB

该区域中一个子网的 ID

taskCluster

该地区中 AWS Fargate 集群的名称

taskDefinition

区域中任务定义的 ARN

taskImage

区域中任务图像的名称

taskSecurityGroup

该区域中安全组的 ID