jmeter 学习笔记

Posted 猎人在吃肉

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了jmeter 学习笔记相关的知识,希望对你有一定的参考价值。

文章目录

1、CSV Data Set Config

D盘中,data.txt 的内容:

CSV Data Set Config 的配置如下:

各参数说明:

  • Filename(文件名) : 支持相对和绝对路径。相对路径是以脚本保存的路径为当前的相对路径的

  • Variable Name(变量名) :有多少列数据我们就设置多少个变量,以逗号分隔。
    如果这一项为空,jemter会去解析csv文件的header,也就是说,如果你的csv文件是有表头的,那么你可以不设置变量名,jmeter会自动将表头的名称解析成变量。

  • Allow quoted data : 如果你的csv文件的内容里包含了分隔符,默认的分隔符是逗号,那么把这项勾选一下,用双引号将值括起来就可以了

  • Sharing mode :这个比较难理解,我们可以简单的认为这个选项就是配置jmeter怎么打开csv文件的。它有4个选项:

    选项参数含义
    All threads所有的虚拟用户都使用同一个csv文件
    Current thread group每个线程组使用一个csv文件
    Current thread每个线程(虚拟用户)使用一个csv文件
    Identifier自定义

2、正则表达式提取器

正则表达式提取器的使用场景:

把应用中动态变化返回的数据获取到,把它保存为一个参数,提供给后面需要用到的地方进行使用。

比如,下一个接口的参数中需引用到前面某一接口返回数据中的值,可以通过 正则表达式提取器 来取得该值。

各参数值的含义:

参数释义
引用名称在HTTP等请求中,引用此数据,需要用到的名称
正则表达式用于将需要的数据提取出来
模板表示使用提取到的第几个值:
$1$:表示取第1个(列)
$2$:表示取第2个(列)
以此类推:$n$:表示取第n个
匹配数字(0代表随机)0 代表随机取值,1 代表全部取值
缺省值如果正则表达式没有搜找到值,则使用此缺省值

2.1、正则表达式 —— 只有一个的匹配值

(1)正则表达式测试

文本内容如下 ,已知 9 这个数字。

javawind:9

测试使用的正则表达式如下:

正则表达式测试器 使用说明:
第1列是匹配的文件原始内容,不是匹配结果。
从第2列开始是匹配的提取结果。

正则表达式是 javawind:(.*) ,从测试结果中看出, 第2列(即索引是 1 )即是 提取的结果。

(2)正则表达式提取器的配置

因为只有一个值(索引从 1 开始计算),取值使用 $1$ ,如下图所示:

(3)在其它组件中引用

使用变量时,引用名称即可。

2.2、正则表达式 —— 有多个匹配的值

(1)正则表达式测试

如下图所示,一行中,有两个匹配的值。

(2)正则表达式提取器的配置

上一步中,一行中有两个匹配的值,如果要取第1个值 ,则使用 $1$ ,如果要取第2个值,则使用 $2$ ,以此类推。

(3)在其它组件中引用

使用变量时,引用名称即可。

2.3、正则表达式 —— 有多行多列的匹配值

有多行多列的匹配数据,是不常见的。

(1)正则表达式测试

如下图所示,有3行2列的匹配的数据。

(2)正则表达式提取器的配置

分析,假如要获取 第2列、第2行的值,则对应的J是($2$, $javawd_g2) ,如果是第3列、第4行的值,则对应的是($3$,$javawd_g4)

下面,我们以取 第2列,第2行,值是17 的为例 。

首先,正则表达式提取器的模板填写 $2$ ,表示获取 第2列的数据 。

(3)在其它组件中引用

在上一步的 第2列 的基础上,如果想取 第1行 的数据 16 ,则填写 $javawd_g1

如果想取 第2行 的数据 17 ,则填写 $javawd_g2

2.4、示例,jmeter 使用正则表达式提取器获取值 和 设置全局变量

接口测试中,很多的接口先登录后,获取 token ,将 token 设置为全局变量,然后才能调用其它的接口。

登录后返回信息中会有一个 token 值,使用正则表达式提取 token的值,

然后,使用 后置处理器中BeanShell PostProcessor 设置 token为全局变量。

(1)查看 token值:

查看token的方式有很多,常见的有如下方式。

- 用fiddler抓包
  - F12查看接口信息
  - 用jmeter登录查看

(2)正则表达式提取token

(3)BeanShell PostProcessor 设置 token 为全局变量。

(4)其他接口使用该全局变量:

添加http信息头管理器

3、数据提取的两种方法

把前一个步骤中返回的数据获取到,把它保存为一个参数,提供给后面步骤使用。

如下图所示,密码登录接口 执行成功后,返回一些数据。这个数据中的 tokenuserId 是后续接口调用时必须使用的。

提取 密码登录接口 返回值中的 tokenuserId 有两种方法,第1种是正则表达式提取器,第2种是 JSON Extractor 。

3.1、方法1,正则表达式提取器

提取 密码登录接口 返回值中的 tokenuserId ,如下图所示。

debug sampler

可以看到userId、token已被提取;引用写法为:$token$userId

3.2、方法2,JSON Extractor

提取 密码登录接口 返回值中的 tokenuserId ,如下图所示。

debug sampler

可以看到userId、token已被提取;引用写法为:$token$userId

3.3、值引用 $

前面有两种方式提取参数, 接下来是在下一个接口参数中引用提取值。

如下图所示,在 http 中引用 token 值,

点击执行按钮,在 http 结果树 中 查看 请求数据 ,可以看到 token 引用情况。

执行结果,如下图所示,在 http 的 结果树 中查看 响应数据 ,接口也执行成功。

4、函数助手

(1)打开 函数助手对话框

(2)选择 __CSVRead 功能函数。

(3)准备数据,如下图所示。

在D盘创建data.txt文件,内容如下:

(4)配置 __CSVRead 函数的参数值

选项参数含义
CSV file to get values from要读取文件的全路径
CSV文件列号要读取数据的第几列。默认是从0开始的,0 表示 第1列 。
0 表示第1列
1表示第2列
以此类推

上面的值填写完成后,点击 生成 按钮,生成 引用的变量

(4)引用参数

username 是第1列,填写 $__CSVRead(D:\\data.txt,0)
pwd 是第2列,填写 $__CSVRead(D:\\data.txt,1)

(5)验证

以上是关于jmeter 学习笔记的主要内容,如果未能解决你的问题,请参考以下文章

Jmeter+JDK的安装学习笔记

jmeter学习笔记

jmeter学习笔记——关联

jmeter 学习笔记

jmeter 学习笔记

JMeter学习笔记15-如何用JMeter做接口测试