全部产品

参数化使用方法

更新时间:2019-06-14 17:52:52

在一些业务场景下,压测的请求中动态可变的部分是需要参数化的,比如以下常见场景:模拟不同用户登陆、当前接口依赖前置接口的部分返回信息、请求参数中需要带上当前的时间戳甚至还需要二次加签等。

本文将介绍参数类型、如何创建各类型参数和使用参数。

参数类型

压测请求配置时,能够为某个 API 的 URL、Header 或 Body 添加特定的参数,使 URL、Header 或 Body 动态变化。

PTS 支持配置以下参数来源及他们之间的组合。

适用范围 参数类型 说明
全局 文件参数 将存在关联的参数放在一个文件的不同列中,通过文件上传相应的参数值。
全局 自定义参数 将字符串、系统函数组合成一个自定义的变量,便于在全局使用,适用于全局需要经常调整某部分设置(如某个 Header 设置)。
全局 系统函数 包括加密函数、随机函数、四则运算和其他常用函数类型。可以对字符串、全局自定义变量及串联链路变量做函数再处理。例如,对前置接口返回的 UUID 输出做 MD5 加签。
全局 全局 Header 为压测全场景的所有 API 设置同样的 Header。具体用法参见 Header 定义
串联链路 串联链路 Header 为串联链路下的所有 API 设置同样的 Header。具体用法参见 Header 定义
- 数据导出参数 导出串联链路中的参数后,供其他串联链路使用,具体参见数据导出
串联链路 自定义参数 通过数据指令定义的自定义参数,具体参见数据指令
串联链路 出参 在创建串联链路时,将前置接口的部分返回信息作为参数(即出参)。

使用系统函数

下面以对 Body 进行参数化为例(URL 和 Header 类似)介绍如何使用系统函数。通过复制所需函数变量,粘贴至可编辑的文本区域。同时,可以按需进行组合、替换、嵌套或者追加需要的字符串等。

  1. PTS 控制台创建压测页面,填写压测 API 名称和 URL。

  2. 选择请求方法(如 POST)和请求参数类型

    说明:在本示例中,将对 Body 参数化进行举例,请求方法选择 POSTPUT。在实际压测中,请根据您的具体情况进行选择。

  3. 单击创建压测页面右上角的系统函数,查看系统支持的函数列表。

  4. 单击某个函数名称或 图标,系统将自动复制函数样例。

  5. (可选)函数生成器通过参数示例及说明,辅助您编写函数表达式。

    1. 单击系统函数列表底部的函数生成器,或某函数行的 图标,打开函数生成器

      para_generator

    2. 根据实际情况,编辑函数表达式,将示例值替换为实际压测请求使用的值。单击调试,可查看调试结果是否符合预期。

    3. 单击复制并添加,复制该函数表达式。

    4. (可选)勾选添加为全局自定义参数,并输入变量名。再单击复制并添加,复制函数的同时,此函数将添加到全局变量列表中,供整个压测场景调用。

  6. 在 API 的 Body 编辑框内,粘贴函数内容,并进行编辑,如组合字符串、参数或函数等。

关于四则运算函数的使用,参见四则运算的使用

使用已创建的参数

下面以对 Body 进行参数化为例(URL 和 Header 类似)介绍如何使用您已经创建的参数,包括文件参数、自定义参数、出参参数。通过复制所需参数变量,粘贴至可编辑的文本区域,同时,可以按需进行组合、替换、嵌套或者追加需要的字符串等。

具体参数创建方法,参见:

使用参数的操作步骤如下:

  1. PTS 控制台创建压测页面,填写压测 API 名称和 URL。

  2. 选择请求方法(如 POST)和请求参数类型

    说明:在本示例中,将对 Body 参数化进行举例,请求方法选择 POSTPUT。在实际压测中,请根据您的具体情况进行选择。

  3. 单击创建压测页面右上角的参数列表,查看所有已创建的参数。

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

  5. 在 API 的 Body 编辑框内,粘贴参数内容,同时对 Body 内容进行编辑,如组合字符串、参数或函数等。

    参数使用

  6. 可选)当使用参数文件来组装压测请求参数时,勾选数据轮询一次,能够保证组装后的每条请求信息都不重复。

    数据轮询

创建文件参数

  1. 创建压测页面,单击右上角的全局自定义变量

  2. 文件参数定义部分,点击+上传文件来上传参数文件。

    文件限制:

    • 文件格式支持 .csv 及 .zip 格式,.zip 压缩包内的文件需是以 .csv 结尾的单个文件。

      注意请不要直接修改 xlsx 文件的后缀。推荐使用 EXCEL、Numbers 等软件导出,或使用 Apache Commons-csv 程序生成。

    • 建议您在参数文件第一行不写列名,直接写参数数据即可。如果参数文件第一行是列名(不是参数数据),可以使用首行作为参数名功能,则导入的文件参数将不计算第一行。

    • 可上传多个文件,单个文件大小限制在 60 MB,超过 60 MB 可以尝试压缩为 .zip 文件。

    • 文件中单行不能超过 2 万个字符。

    • 若需要多个数据关联组合为一组参数,请将这几个入参对应的几列数据放置在一个数据文件中。例如,下面示例中的两列分别表示 Username 和 Password:

      1. john,123456
      2. mike,234567
      3. lilei,345678
      注意:如果参数文件中有多列数据,请保持每一行中多个列的数据是完整的,否则会出现空字段,可能影响压测数据。
    • 如果引用多个文件中的参数,根据行数少的文件组合后进行重复。具体说明,可参考并发模式和 RPS 模式下,是如何读取多文件参数的

  3. 上传文件后,系统自动根据文件中的列生成多个变量。可自定义每个变量的变量名

    说明:如果参数文件第一行是列名(不是参数数据),可以使用首行作为参数名功能,则导入的文件参数将不计算第一行。

    file_parameter

  4. 单击确定,完成创建。

创建自定义参数

  1. 创建压测页面,单击右上角的全局自定义变量

  2. 自定义参数列表中,填写参数名和参数逻辑,单击确定

    说明

    • 自定义参数只能是字符串与系统函数的结合,不可使用文件参数和出参。
    • 当自定义参数中使用了系统函数,且在串联链路中的两个 API 上使用,那么同一个虚拟用户的一次串联链路(事务)操作里的两个 API 里的值是相同的

    自定义参数

创建出参参数(前置接口的返回截取)

在一些业务中,多个请求参数之间需要有前后传参关系。比如理财业务中根据用户的消费能力,推荐适当产品,这时就需要把消费能力等级从前置接口的返回中截取出来,并传到当前的产品推荐接口中。

前置 API 的出参提取有多种方式,本文以 Body:JSON 为例。其他出参提取方式,参见出参与断言

API 的 Response 示例如下:

  1. {
  2. "info": "success",
  3. "message": "处理成功",
  4. "data": {
  5. "id":13509, "code":0,
  6. "items": [
  7. {"name": "name1", "value": "1234"},
  8. {"name": "name4", "value": "7648"}
  9. ]
  10. }
  11. }
期望获取出参的位置 解析表达式
获取 info 的值 info
获取 data 的 id 的值 data.id
获取 items 第一个对象的 value 的值 data.items[0].value

例如提取 items 第一个对象的 value 值,设置为出参变量为 “value_out”,则设置如下:

json提取

说明:

  • PTS 仅提供数据生成能力,不对依据您的指令(包括数据生成方式)进行测试后产生的目标服务器或者业务异常承担任何责任。 详情请见:阿里云产品服务协议(通用)