全部产品
云市场

自定义 API/请求

更新时间:2019-08-27 14:04:31

在很多压测场景中,往往需要对 URL、Header、Body 进行自定义,或者将部分变量参数化,或者截取返回的 Response 中的内容提供给后续请求使用。您也可能希望能基于业务维度将某个出参的临界值作为异常判断标准,为是否继续压测提供参考(断言)。

URL、Header 和 Body 都可以通过参数化实现动态变化。参数化可使用“前置请求的出参”、“参数文件”、“系统函数”、字符串或者他们的组合,详细使用请参见参数化使用方法

基本请求信息

压测场景创建完成后,可以直接编辑压测请求。基本配置项见下表。

配置项 说明 示例
API 名称 一般用于标识该 API 的业务含义,最长支持 50 个字符。 获取商品列表
压测 URL 请求的 URL,可包含参数,如 http://域名/路径?key1=value1&key2=value2 。URL 输入框中最大支持 2083 个字符。 http://www.example.com
请求方式 HTTP 请求方式,可以选择 GET、POST、PUT 或 DELETE。 /
超时时间 请求发送之后该虚拟用户等待应答的最长时间,单位为毫秒。默认值 5000,即 5 秒。
对于在线业务,不建议超时时间超过 5000 毫秒。主要行业的响应时间建议如下:
- 互联网企业:500 毫秒以下,例如淘宝业务 10 毫秒左右;
- 金融企业:1000 毫秒以下为佳,部分复杂业务 3000 毫秒以下;
- 保险企业:3000 毫秒以下为佳;
- 制造业:5000 毫秒以下为佳。
500
允许 302 跳转 允许跳转即统计跳转终态页面的状态码(最大深度为 10),否则按照当前请求的返回结果统计。 /
数据轮询一次 当使用参数文件来组装压测请求参数时,勾选数据轮询一次,能够保证组装后的每条请求信息都不重复。 /

压测 URL 示例

如果只需对相同的 URL 做简单的批量请求(比如打开 http://www.example.com )压测,那么直接在 URL 定义中填写需要压测的 URL 即可(此处最多可输入 2083 个字符)。

简单API

不同请求使用不同参数的情况,可以通过参数化来实现。

Header 定义

对 API Header 的定义,可以通过以下三种方式,使 Header 在不同范围内生效。您可以根据实际场景,选择最适合的方式设置 Header。

  • 单个 API Header:该 Header 仅对当前 API 生效。
  • 串联链路 Header:压测时,该 Header 将自动添加到当前串联链路的所有 API 中。
  • 全局 Header:压测时,该 Header 将自动添加到压测全场景的所有 API 中。

说明

  • 若通过以上方式设置的 Header 的 Key 相同,则范围小的 Header 定义生效。
  • 若通过以上方式设置的 Header 的 Key 均不相同,则三种 Header 定义均生效。

设置单个 API Header

为单个压测请求定义 Header 信息,您可以在每个 API 的 Header定义 页签下,填写固定 KeyValue

示例

header参数

说明

  • Value 中可以填写参数化的表达式。

    函数、字符串的组合嵌套等更高级的参数编写方法,参见系统函数及字符串如何组合嵌套使用

  • 单击 Header 定义页签右上角文本编辑,可切换为文本形式,查看已输入 Key 和 Value。您也可以在文本编辑形式下,批量写入多个 Header。示例如下:

    1. token : 123abc
    2. Cookie : session=12345
  • Key 输入框中,根据您填入的信息,会模糊匹配通用的 HTTP Request Header,您可以快速选择目标 Header。

  • Content-type 需要在 Body 定义页签进行设置。

设置串联链路 Header

如果某串联链路中的多个压测请求需要同一个 Header,您可以通过设置串联链路 Header 的方式实现 Header 批量添加。

例如,在线选课业务中需要区分一年级学生、二年级学生,模拟这两种类型的用户同时发起请求的情况。您可以为一年级、二年级学生分别创建一个串联链路,在串联链路级别设置 Header,以更好地区分用户类型。

操作步骤如下:

  1. 创建场景编辑场景页面,单击串联链路最右侧的点号,在下拉列表中,选择链路 Header

    串联链路header

  2. 单击串联链路 Header 行,展开编写区域,填写 Header 的 KeyValue。示例如下:

    链路header

    说明:

    • Value 中可以填写参数化的表达式。

      函数、字符串的组合嵌套等更高级的参数编写方法,参见系统函数及字符串如何组合嵌套使用

    • 单击 Header 定义页签右上角文本编辑,可切换为文本形式,查看已输入 Key 和 Value。您也可以在文本编辑形式下,批量写入多个 Header。示例如下:

      1. Grade : 1
      2. Cookie : abc
    • Key 输入框中,根据您填入的信息,会模糊匹配通用的 HTTP Request Header,您可以快速选择目标 Header。

    • Content-type 需要在 Body 定义页签进行设置。

设置全局 Header

如果整个压测场景中的所有请求都需要同一个 Header,您可以设置全局 Header 参数。

例如,页面压测中,为区分页面在 Chrome 和 Firefox 浏览器中的不同表现,可以创建两个压测场景,同时在每个压测场景中设置全局 Header,以更好地区分每个请求所属的场景。

操作步骤如下:

  1. 创建场景编辑场景页面,单击页面右上角的数据源管理

  2. 全局自定义参数对话框中,选择下方的全局 Header

  3. 填写全局 Header 的 KeyValue。示例如下:

    注意:全局 Header 的 Value 需填写确定值,不支持参数化表达式的解析。

    全局header

    说明

    • 单击 Header 定义页签右上角文本编辑,可切换为文本形式,查看已输入 Key 和 Value。您也可以在文本编辑形式下,批量写入多个 Header。示例如下:

      1. explorer_identification : chrome
      2. Cookie : 123abc
    • Key 输入框中,根据您填入的信息,会模糊匹配通用的 HTTP Request Header,您可以快速选择目标 Header。

Body 定义

Body 定义的内容取决于请求参数类型。Content-Type,即请求参数类型,有三种:

  • x-www-form-urlencoded:即 application/x-www-form-urlencoded,数据被编码为名称/值对;
  • raw
    • TEXT(text/plain):即文本,纯文本格式的编码形式(text/xml/html);
    • JSON(application/json):JSON 字符串。
    • JavaScript(application/javascript):JavaScript 字符串。
    • XML(application/xml):application/xml 类型的 XML 字符串。
    • application/xml:application/xml 类型的 XML 字符串。
    • HTML(text/html):HTML 字符串。
  • 自定义:不支持 multipart、video、image 这三个开头的类型。

Body 定义内容示例如下:

  • 表单(x-www-form-urlencoded) 示例:

    • 以 Key/Value 形式输入:

      KV表单

    • 单击 Body 定义页签右上角编辑文本框,可切换为文本形式,最多可输入 65535 个字符。格式如下:

      1. name=test&passwd=123456&itemid=2
    • 对 Body 进行 decode:如果定义的 Body 已编码,例如“%25”即为“%”编码后的值,那么压测前需要先对 Body 解码,以避免 PTS 对已编码的请求再次编码引起错误。单击编辑框右上角的对 Body 进行 decode 并选择解码格式 UTF-8 或者 GBK。

  • JSON(application/json) 示例:

    1. {"code":200,"data":{"items":[{"id":"123","name":"yaozhuang"},{"id":"456","name":"fuzhuang"}]},"requestId":"Cf2HJKEf-197B-JK47-79E9-FA82BH64KA40","successResponse":false}
  • 文本 TEXT(text/plain) 示例:

    1. <?xml version="1.0"?><resource><id>123</id><params><name><value>test</value></name></params></resource>

出参和断言

出参是从应答(Response)中截取需要的内容,作为断言,或者在后续的请求中作为参数使用。出参支持的形式有 Body:JSON、Body:TEXT 和 Header:K/V。

断言提供了业务维度成功与否的判断功能,即将某个出参的临界值定义为异常判断标准,类似检查点。

示例 1 :将出参设置为断言

当请求的响应状态码为 200 至 399 时,则代表业务正常。

  1. 基于请求的响应详情,提取出响应状态码作为出参。填写出参名(如 http_code)和具体的解析表达式(如 code)。

  2. 勾选设为断言,并在断言区域框中填写条件和数值,如下图所示。

    出参与断言

更多出参及断言的使用,参见出参与断言

示例 2 :在后续请求中使用出参

理财业务中,需要根据用户的消费能力,推荐适当产品。则需要在前置接口中提取出消费能力等级作为出参,在当前的产品推荐接口中,使用该出参。

操作步骤如下:

  1. 创建压测页面,基于请求的响应详情,提取消费能力信息作为出参。填写出参名(如 output)和具体的解析表达式(如 data.items[0].value)。

    出参提取

    单击创建压测页面右上角的参数列表,可查看已创建的出参参数。

    出参列表

  2. 单击出参参数名称或 图标,系统将自动复制参数内容。

  3. 假设需要在产品推荐 API 的 Body 中带入已提取的出参,在 Body 定义编辑框内,粘贴参数内容。

    参数使用

    此外,您也可以对 Body 内容进行编辑,如组合字符串、参数或函数等。

关于出参与断言的更多信息,参见出参与断言