性能测试 Jmeter随机生成/随机选取/csv读取关键字

Jmeter随机生成/随机选取/csv读取关键字

一、随机生成关键字

随机生成关键字,需要组件:随机变量配置元件(Random Variable)  该组件的作用是生成字符+随机数字格式的字符串,并保存在变量中,以便后续使用  下面几种格式的字符串都是可以通过该组件来生成的

  • 01-selenium
  • selenium-01
  • se001lenium
  • 2017

1、步骤详情:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

"""

步骤一:选择Web Test Plan模版

1、点击templates按钮

2、选择Building a Web Test Plan

3、最后点击create,完成创建。

 

步骤二:修改参数

1、修改测试计划名称为:Random Variable(随机生成关键字演示)

2、修改线程组线程数为:1,ramp-up period:1, 循环次数:1。

3、修改HTTP Request Defaults的web服务器名称修改为cn.bing.com

4、将HTTP请求中的http请求方法修改为L:get,路径修改成:/search,然后将断言注释

5、删除Page Returing 404节点

 

步骤三:随机变量配置元件

1、在测试计划上点右键,选择添加 -> Random Variable,将新添加的随机变量配置元件拖拽到最上面

2、在该配置原件中Variable Name设置为number,  Output Format设置0000,Minimum Value: 2010,Maximum Value: 2020

 

步骤四:运行

1、新增事务控制器,将http请求都挪至事务控制器下

2、将http请求取样器的名称改为:search date${number}, 同请求一起发送参数中,q设置为${number},并勾选编码checkbox

3、点击运行按钮(快捷键ctrl+r)

"""

2、效果图:

性能测试 Jmeter随机生成/随机选取/csv读取关键字

 

二、随机选取关键字

场景:随机让每个请求从:python类、python开发、python函数、pythonsocket、这些关键字中随机选择1个作为搜索的关键字呢?这种随机选择内容然后进行测试的场景在性能测试中是比较常见的,因为越随机越能模拟用户的真实行为,另外一些随机内容也有助于绕过服务器可能存在的缓存机制,从而形成更均匀更真实的压力

1、步骤详情:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

"""

步骤一:选择Web Test Plan模版

1、点击templates按钮

2、选择Building a Web Test Plan

3、最后点击create,完成创建。

 

步骤二:修改参数

1、修改测试计划名称为:Random Variable(随机生成关键字演示)

2、修改线程组线程数为:1,ramp-up period:1, 循环次数:1。

3、修改HTTP Request Defaults的web服务器名称修改为cn.bing.com

4、将HTTP请求中的http请求方法修改为L:get,路径修改成:/search,然后将断言注释

5、删除Page Returing 404节点

 

步骤三:添加用户定义变量配置元件

1、在测试计划上点右键,选择添加 -> 用户定义变量,将新添加的配置元件拖拽到最上面

2、在该配置原件中通过key-value的方式定义变量:如key1:爬虫,key2:函数,key3:类

 

 

步骤四:运行

1、新增事务控制器,将http请求都挪至事务控制器下

2、将http请求取样器的名称改为:search python${__V(key${__Random(1, 6)})}, 同请求一起发送参数中,q设置为python${__V(key${__Random(1, 6)})},并勾选编码checkbox,或者将http请求取样器的名称改为:search  python${__RandomFromMultipleVars(key1|key2|key3|key4|key5|key6)}, 同请求一起发送参数中,q设置为python${__RandomFromMultipleVars(key1|key2|key3|key4|key5|key6)},并勾选编码checkbox

3、点击运行按钮(快捷键ctrl+r)

"""

2、效果图:

性能测试 Jmeter随机生成/随机选取/csv读取关键字

3、PS:

"""

函数${__V(key${__Random(1, 6)})}解释:

 

1、${__Random(1, 6)}:随机生成1-6之间的整数

2、key${__Random(1, 6)}:随机生成key1, key2, key3 ....key6中的任意1个字符串

3、${__V(key${__Random(1, 3)})}对形如key1的字符串求值。也就是不把key1当成字符串来看,而是把key1当作是1个变量,并获取这个变量的值。key1的值是我们在用户自定义变量中定义过的,也就是将刚刚从用户定义的变量值取出来

4、python${__V(key${__Random(1, 3)})}就是随机组合生成:python类、python函数、python基础中的任意一个字符串

 

 

 

 

函数${__RandomFromMultipleVars(key1|key2|key3|key4|key5|key6)}解释:

 

1、${__RandomFromMultipleVars(key1|key2|key3|key4|key5|key6)}:这个函数用法比上面的简单,直接从key1,key2....key6中,任意取一个key的值出来

2、python${__RandomFromMultipleVars(key1|key2|key3|key4|key5|key6)}就是随机组合生成:python类、python函数、python基础中的任意一个字符串

"""

  

 

三、csv读取关键字

由于随机数的生成的时候会耗cpu和内存,当脚本并发很大的时候,这种损耗是值得关注的,所以这个时候变量的获取从csv文件中读取更适合,实现这个读取csv的配置元件叫做:CSV Data Set Config,下面是CSV Data Set Config的常用配置项:

  • Filename(文件名): 支持相对和绝对路径。相对路径是以脚本保存的路径为当前的相对路径的
  • Variable Name(变量名): 有多少列数据我们就设置多少个变量,以逗号分隔。如果这一项为空,jemter会去解析csv文件的header,也就是说,如果你的csv文件是有表头的,那么你可以不设置变量名,jmeter会自动将表头的名称解析成变量名
  • Allow quoted data?: 如果你的csv文件的内容里包含了分隔符,默认的分隔符是逗号,那么把这项勾选一下,用双引号将值括起来就可以了
  • Sharing mode: 这个比较难理解,我们可以简单的认为这个选项就是配置jmeter怎么打开csv文件的
  1. All threads: 所有的虚拟用户都使用同一个csv文件
  2. Current thread group: 每个线程组使用一个csv文件
  3. Current thread: 每个线程(虚拟用户)使用一个csv文件
  4. Identifier: 自定义

 

1、新建一个keyword.csv文件,里面存放如下关键字:

python  os,python sys

python random,python socket

2、步骤详情:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

"""

步骤一:选择Web Test Plan模版

1、点击templates按钮

2、选择Building a Web Test Plan

3、最后点击create,完成创建。

  

步骤二:修改参数

1、修改测试计划名称为:Random Variable(随机生成关键字演示)

2、修改线程组线程数为:1,ramp-up period:1, 循环次数:2。

3、修改HTTP Request Defaults的web服务器名称修改为cn.bing.com

4、将HTTP请求中的http请求方法修改为L:get,路径修改成:/search,然后将断言注释

5、删除Page Returing 404节点

  

步骤三:添加CSV Data Set Config配置元件

1、在测试计划上点右键,选择添加 ->  CSV Data Set Config,将新添加的 CSV Data Set Config配置元件拖拽到最上面

2、在该配置原件中在Fliename输入框中输入创建的keyword.csv文件路径,Variable Names输入框中添加两个值(变量名): keyword1,keyword2

  

  

步骤四:运行

1、新增事务控制器,将http请求都挪至事务控制器下

2、将http请求取样器1的名称改为:search ${keyword1}, 同请求一起发送参数中,q设置为${keyword1},并勾选编码checkbox,将http请求取样器2的名称改为:search ${keyword2}, 同请求一起发送参数中,q设置为${keyword2},并勾选编码checkbox

3、点击运行按钮(快捷键ctrl+r)

"""

3、效果图:

性能测试 Jmeter随机生成/随机选取/csv读取关键字

4、执行顺序

将线程组的循环次数改为1,执行脚本,会发现取值是第一行的csv数据

python  os     python sys

将线程组的循环次数改为2,执行脚本,会发现取值是第一行和第二行的csv数据

1

2

python  os  python sys

python random   python socket 

将线程组的循环次数改为3,执行脚本

1

2

3

python  os  python sys

python random   python socket 

python  os  python sys

这里就能很容易的看出,每次循环时jmeter会读一行csv文件的内容了。另外由于在CSV Data Set Config中默认选择了Recycle on EOF,当jemter读到文件结束的时候,jmeter会自动回到第1行再去读,这就是为什么循环3次的时候,第三次搜索的内容跟第一次是一样的了