导入场景

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-urlencoded,如果需要切换为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或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

检查点配置:

  • 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提供的高级功能编排压测场景并发起压测,可参考以下文档: