PTS支持将JMeter(JMX)、Postman(JSON)、HTTP Archive Format(.har)、YAML和Swagger脚本(.yml,.json)转换为PTS原生的能力进行压测,提供RPS压测模式,支持实时调速、细致到单接口的监控等。

脚本说明

对HTTP或HTTPS协议的压测,PTS支持将JMeter(JMX)、Postman(JSON)、HTTP Archive Format(.har)、YAML和Swagger脚本(.yml,.json)中有关请求的基础信息解析为压测场景中的API。

JMeter脚本与PTS API压测的字段对应关系如下:

JMeter脚本字段 PTS API压测字段
Test Plan(测试计划) 压测场景
Thread Group(线程组) 串联链路
Sampler(采样器)
说明 仅支持HTTP Request。
Name 压测API名称
Server Name or IP Path Port Number 压测URL
Method 请求方法
Parameters/Body Data Body定义下的内容
HTTP Header Manager(HTTP Header管理) Headers Header定义下的Key和Value。全局或者区域生效的Header会填充到对应区域的API中。
HTTP Cookie Manager(HTTP Cookie管理) User-Defined Cookies Header定义下的Cookie。全局或者区域生效的Cookie会填充到对应区域的API中。
说明
  • HTTP Header Manager、HTTP Cookie Manager和HTTP Request Default会取所有的并集导入到每个API中。
  • Cookie相关的设置中,暂不支持导入domain和path。
  • 导入时Content-Type默认都为x-www-form-urlencode,如果需要切换为raw请先复制,否则会清空Body的内容。
  • 对于不支持导入的信息,您可以使用PTS提供的功能实现,例如检查点(断言)指令(思考时间、集合点等)、参数化等。

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或DELECT方法。
  • 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 检查点配置:
  • checkers:单个检查点配置。
    • expectValue:期望值。
    • operator:操作符;有gt|gte|lt|lte|eq|n_eq|ctn|n_ctn|exist|n_exist|belong|n_belong|regex_match,分别表示:大于|大于等于|小于|小于等于|等于|不等于|包含|不包含|存在|不存在|属于|不属于|正则匹配。
  • point:检查对象。
  • type:检查点类型:
    • BODY_TEXT表示文本响应体。
    • BODY_JSON表示JSON格式的响应体。
    • HEADER表示header。
    • COOKIE表示cookie。
    • STATUS_CODE表示响应状态码。
    • EXPORTED_PARAM表示出参。
endStep 并发模式时表示串联链路上的最大并发;RPS模式时表示API上的最大RPS。
headers HTTP header配置:
  • name:header的key。
  • value:header的value。
method 请求方法,只支持 GET/POST/PUT/DELETE。
postActions 后置操作:
  • type:类型,目前只支持 export,表示出参。
  • params:出参配置:
    • name:出参名。
    • value:出参表达式。
    • type:同检查点类型type。
body 请求方法为POST|PUT时,对应的请求body:
  • contentType:类型。
  • value:body内容。
preActions 前置操作。
protocol 协议类型,默认http。
redirectCountLimit 是否重定向,0表示否,10表示是。
timeoutInMilliSeconds 以毫秒为单位的超时时间。
condition defaultAction 默认行为:
  • action:动作,jump|continue|return 分别表示跳转|继续|结束。
  • target:目标API的ID。
  • conditions:判断条件:
    • param:参数名。
    • operator:运算符。
    • value:对比值。
actions 叠加条件。
dam type 配置类型,BY_TIME|BY_USER 分别表示按时间、按用户集合。
target 目标量级。
datalnit definitions 键值对结构,对应自定义参数。
references 引用的文件参数:
  • column:列名。
  • fileKey:文件索引。
  • fileName:文件名。
  • useOnce:是否只轮询一次。
  • asBase:是否作为基准列。
  • accessMethod:读取方式,inOrder|inRandom分别表示按顺序读取及随机读取。
  • index:列索引。
dataDefine definitions 键值对结构。
dataStore dataSize 数据导出量级。
dataConfig 数据导出配置:
  • type:COOKIE|FILE|PARAM|INSTRUCTION 分别表示 cookie|文件参数|出参|数据指令。
  • params:参数列表。
delay duration 延时时长,单位为毫秒。
ifBegin ifEndNodeId 匹配的判断结束指令节点ID。
operator 操作符。
param 表达式。
value 对比值。
ifEnd ifBeginNodeId 匹配的判断开始指令节点ID。
repeatBegin repeatEndNodeId 匹配的循环结束指令节点ID。
repeatEnd repeatBeginNodeId 匹配的循环开始指令节点ID。
repeatCount 循环次数。
wait type FIXED|NORMAL|UNIFORM分别表示固定分布、均匀分布、正态分布。
base 对于固定分布代表固定值,对于均匀分布代表延迟基准,对于正态分布代表均值。
scope 对于固定分布无意义,对于均匀分布代表可变跨度,对于正态分布代表方差。

Swagger脚本与PTS API压测的字段对应关系如下:

Swagger脚本字段 PTS API压测字段
paths.key 请求URL。
paths.key.key 请求方法。
paths.key.key.parameters 请求Query参数或请求体。
definitions 请求体中使用的Schema。
tags[0].name 串联链路名。

操作步骤

  1. 登录PTS控制台,在左侧导航栏选择性能测试 > 导入场景
  2. 导入场景页面选择脚本类型,并上传脚本,然后单击确认
    导入成功后,在创建PTS场景页面,您可以看到脚本内容已转化为对应的API压测信息。Import Script Result
    说明
    • 可选择的脚本类型有JMeter(JMX)、Postman(JSON)、HTTP Archive Format(.har)、YAML和Swagger脚本(.yml,.json)。一个压测场景仅能导入一个脚本,在未保存场景配置前,可重新上传脚本覆盖之前的导入内容。
    • PTS支持导入的脚本说明及字段含义,请参见脚本说明。请勿导入包含PTS不支持的类型或协议的脚本,若导入的脚本不合规,控制台将弹出错误提示框。

相关操作

脚本导入成功后,您可以使用PTS提供的高级功能编排压测场景并发起压测,可参考以下文档: