全部产品
云市场

如何使用指令

更新时间:2019-09-27 16:35:53

参数化可以丰富压测请求,如果需要进一步模拟业务压测流量,可以使用指令功能。指令是一种可以改变、控制串联链路中压测行为和流程的功能组件。

指令包括思考时间、集合点、条件跳转、数据指令和数据导出。在场景配置页签,单击 API 右侧的 指令图标图标即可选择需要配置的指令。

指令

思考时间

功能:模拟用户在前后两个节点间思考、反应花费的时间,支持多种模式。

使用限制:无

固定时间模式

经过的请求固定等待 N 秒之后继续,其中 N 为输入的停顿时长,单位为秒。

固定

均匀分布

经过的请求固定等待 N 秒之后继续,其中 N=[延时基准延时基准+可变跨度] 区间内的任意随机值。例如延迟基准=3,可变的跨度=2,那么延时时间范围=[3,5],请求会随机等待 3、4、5秒。

均匀分布

正态分布

经过的请求固定等待 N 秒之后继续,其中 N 满足正态分布,即高斯分布。其中均值(μ)表示分布的中心值,方差表示距离均值的分布密度。方差越小密度越高、越集中;方差越大密度越低,越分散。

正态分布

如下图均值(μ)和标准差的设定:

0021

集合点

功能:使虚拟用户在集合点处等待,满足条件后一次性释放所有等待的用户,继续后续业务,例如整点秒杀场景。支持根据时间集合或者根据用户量集合两种工作模式。

使用限制:使用上无限制。需要注意,虽然集合点一次性释放所有用户,但释放的速率仍受后续节点的并发或者 RPS 限制。

根据时间集合

从压测启动开始计时,堆积用户请求,直到等待时间结束,一次性释放所有等待的用户。等待时间单位为秒,例如等待时间=600,那么集合点在 10 分钟之后释放。

集合点只能生效一次

时间集合

根据用户量集合

持续堆积用户等待,直到积压的用户数达到用户量时,一次性释放所有等待的用户,并且只生效一次。即实现上一个节点完成的请求数的累加。

用户量

条件跳转

功能:根据链路的出参判断改变串联链路请求的执行路径,支持跳转继续结束等。支持多个条件叠加(“且”的关系),按照顺序从前到后依次匹配。如果都没有匹配到,则执行默认 Action。您也可以在一个跳转条件的基础上继续增加条件跳转(条件跳转之间是“或”的关系)。

  • 跳转:跳转到所在串联链路之前的其他链路;
  • 继续:继续执行下一个节点,如果没有下一个节点则结束;
  • 结束:中止当前用户执行流程。

示例:

假设串联链路为:用户登录>充值>加购>付费。在加购环节设置条件跳转,判断如果是实名认证用户但未充值,则跳回到充值环节;如果已充值,则继续;如果账户未充值且非实名认证,则流程结束。

使用限制:条件跳转不能位于串联链路的第一个。条件判断只对当前用户的当前请求有效,每个请求之间互不影响。

条件跳转

数据指令

功能:在串联链路中,可以添加一个或多个数据指令,对前置压测 API 的出参做二次处理,如拼接字符串或使用加密函数再处理,然后提供给该串联链路中的后续压测 API 使用。

同时,数据指令也支持对数据导出的参数做二次加工。

使用限制

  • 数据指令不支持二次加工全局参数,包括全局文件参数和自定义参数。
  • 若对出参参数做二次加工,需要前置 API 已定义出参。关于如何定义出参,参见出参与断言

示例:下文以前置 API 出参的二次加工为例,说明数据指令的使用方法。

某串联链路内包含请求:浏览产品>加购>付费。加购和付费请求(后续压测 API)都需要使用浏览产品(前置压测 API)的产品 ID,并截取产品 ID 的前五位,作为参数使用。

  1. 在 API “浏览产品”出参/断言定义页签下,配置出参(如 ProductID)。

    配置出参

  2. 单击 API 右侧的 指令图标 图标 > 添加数据指令,输入参数名。

  3. 编辑参数逻辑表达式。

    该示例中,要实现“截取产品 ID 的前五位,作为参数使用”,您可以使用函数逻辑表达式:${sys.substring(“${ProductID}”, 0, 4)}。其中 “${ProductID}” 为上一步串联链路中定义的出参。

    数据指令

数据导出

功能:在压测场景中,可以导出某个串联链路中的数据(如 Cookie、出参或通过数据指令定义的参数),供其他串联链路使用,做到导出数据在全局共享。

示例:下文以导出 API 的出参为例,说明数据导出的使用方法。

  • 串联链路 A 包含:打开登录页面->账号登录。

  • 串联链路 B 包含:查看商品详情->加购->提交订单

  • 串联链路 C 包含:查看收藏夹->加购->提交订单

其中 B 和 C 中使用到的登录信息来源于 A 登录后的 Body 里的 Token 信息,所以需要将 A 中 Token 做数据导出,供另外两个串联链路中 API 使用。

数据导出

使用限制

  • 一个场景仅可以有一条数据导出指令;
  • 一次最多导出 5 个数据,可以为 Cookie 或者参数(出参或者数据指令定义的参数);
  • 导出数据的量级不做限制,总大小不超过 100w 条;
  • 导出 Cookie 后,其他串联链路会自动带上 Cookie 信息,无需手动设置;导出参数后,使用时需要按照参数使用方法进行设置(如${token})。

添加数据配置节点

功能:使用数据配置节点功能,可以根据实际需求指定全局文件参数中的某个参数为基准列,充分利用参数文件中的所有数据。还可以根据二次定义文件中的参数,适用范围为本串联链路。

示例:username 文件包含 q1 和 q12 两个参数,若需实现以 q1 为基准列使用参数文件,操作步骤如下:

  1. 使用 username 文件创建文件参数,参见创建文件参数

  2. 场景配置页签中添加待压测 API,单后单击 +增加压测 API 右侧的下拉箭头,选择添加数据配置节点

  3. 单击数据配置右侧区域,然后再单击文件参数设置页签。

  4. 文件参数设置页签中添加 q1 和 q12 两个参数,并按需进行配置。

    字段说明:

    • 读取方式:可选择为顺序、随机。

    • 数据轮询一次:设为轮询一次之后,在整个压测过程中,数据只会被使用一次;被指定为轮询一次的数据,即也为基准列。

    • 基准列:设为基准列的数据,其他数据将以它为基准进行数据的组合。例如基准列为 100 行,其它列多余 100 行的数据会被截断、少于 100 行的数据会重复到 100 之后再进行组合。本示例中选择 q1 为基准列。

  5. 若需二次定义参数,可以在数据配置区域单击自定义参数页签,然后进行参数定义。

使用限制

  • 进行文件参数配置时,参数名不可修改。若需修改参数名,需要在自定义参数页签进行二次定义。

  • 轮询一次基准列均只能指定一个参数,设置轮询一次之后基准列无法设置。

  • 非草稿态中不能配置空数据配置节点。

  • 数据配置节点适用范围为本串联链路。