PTS支持将Postman(JSON)、HTTP Archive Format(.har)、YAML和Swagger脚本(.yml,.json)转换为PTS原生的能力进行压测,提供RPS压测模式,支持实时调速、细致到单接口的监控等。
脚本说明
对HTTP或HTTPS协议的压测,PTS支持将Postman(JSON)、HTTP Archive Format(.har)、YAML和Swagger脚本(.yml,.json)中有关请求的基础信息解析为压测场景中的API。
Postman与PTS API压测的字段对应关系
Postman脚本字段 | PTS API压测字段 | |
info.name | 业务会话名 | |
item[] | 为多个API | |
item[0].name | API名称 | |
item[0].request.method | 请求方法 | |
item[0].request.url.raw | 请求URL | |
item[0].request.header | key | header的key |
value | 对应的value值 | |
item[0].request.body | 请求体- POST类型下,根据content-type决定展示形式。 |
JSON脚本中,可以有多个info.name(业务会话),但info平级的只能是info不可以是item。
若从Postman中Collections导出JSON脚本,建议使用V2.1。
Postman(JSON)脚本仅支持GET、POST、PUT或DELETE方法。
Postman(JSON)脚本中不支持File模式。
暂未支持文件上传及二进制类的Content-Type,无法进行转换。
YAML与PTS API压测的字段对应关系
表 1. 基本概念类型
YAML脚本字段 | PTS API压测字段 |
Relations | 业务会话的集合 |
Relation | 单个业务会话 |
Disabled | 业务会话是否被禁用 |
ID | 业务会话ID |
Name | 业务会话名称 |
Nodes | 节点集合 |
Name | 节点名称 |
NodeId | 节点ID |
NodeType | 节点类型 |
Config | 节点配置 |
表 2. 节点类型
YAML脚本字段 | PTS API压测字段 |
chain | API节点 |
wait | 思考时间节点 |
condition | 条件跳转节点 |
dam | 集合点 |
dataInit | 数据配置节点 |
dataStore | 数据导出节点 |
dataDefine | 数据指令节点 |
delay | 延时节点 |
repeatBegin | 循环指令开始节点 |
repeatEnd | 循环指令结束节点 |
ifBegin | 判断指令开始节点 |
ifEnd | 判断指令结束节点 |
表 3. 节点配置类型
类型 | YAML脚本字段 | PTS API压测字段 |
chain | accessId | 协议ID。 |
beginStep | 虚拟用户模式时表示业务会话上的起始虚拟用户;RPS模式时表示API上的起始RPS。 | |
checkPoints | 检查点配置:
| |
endStep | 虚拟用户模式时表示业务会话上的最大虚拟用户;RPS模式时表示API上的最大RPS。 | |
headers | HTTP header配置:
| |
method | 请求方法,只支持 GET/POST/PUT/DELETE。 | |
postActions | 后置操作:
| |
body | 请求方法为POST或PUT时,对应的请求body:
| |
preActions | 前置操作。 | |
protocol | 协议类型,默认http。 | |
redirectCountLimit | 是否重定向,0表示否,10表示是。 | |
timeoutInMilliSeconds | 以毫秒为单位的超时时间。 | |
condition | defaultAction | 默认行为:
|
actions | 叠加条件。 | |
dam | type | 配置类型。
|
target | 目标量级。 | |
datalnit | definitions | 键值对结构,对应自定义参数。 |
references | 引用的文件参数:
| |
dataDefine | definitions | 键值对结构。 |
dataStore | dataSize | 数据导出量级。 |
dataConfig | 数据导出配置:
| |
delay | duration | 延时时长,单位为毫秒。 |
ifBegin | ifEndNodeId | 匹配的判断结束指令节点ID。 |
operator | 操作符。 | |
param | 表达式。 | |
value | 对比值。 | |
ifEnd | ifBeginNodeId | 匹配的判断开始指令节点ID。 |
repeatBegin | repeatEndNodeId | 匹配的循环结束指令节点ID。 |
repeatEnd | repeatBeginNodeId | 匹配的循环开始指令节点ID。 |
repeatCount | 循环次数。 | |
wait | type |
|
base | 对于固定分布代表固定值,对于均匀分布代表延迟基准,对于正态分布代表均值。 | |
scope | 对于固定分布无意义,对于均匀分布代表可变跨度,对于正态分布代表方差。 |
Swagger脚本与PTS API压测的字段对应关系如下:
Swagger脚本字段 | PTS API压测字段 |
paths.key | 请求URL。 |
paths.key.key | 请求方法。 |
paths.key.key.parameters | 请求Query参数或请求体。 |
definitions | 请求体中使用的Schema。 |
tags[0].name | 业务会话名。 |
操作步骤
在创建场景页面选择脚本类型,并上传脚本,然后单击确认。
导入成功后,在创建PTS场景页面,您可以看到脚本内容已转化为对应的API压测信息。
可选择的脚本类型有Postman(JSON)、HTTP Archive Format(.har)、YAML和Swagger脚本(.yml,.json)。一个压测场景仅能导入一个脚本,在未保存场景配置前,可重新上传脚本覆盖之前的导入内容。
PTS支持导入的脚本说明及字段含义,请参见脚本说明。请勿导入包含PTS不支持的类型或协议的脚本,若导入的脚本不合规,控制台将弹出错误提示框。