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

一、随机生成关键字

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

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

1、步骤详情:

"""
步骤一:选择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、效果图:

二、随机选取关键字

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

1、步骤详情:

"""
步骤一:选择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、效果图:

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、步骤详情:

"""
步骤一:选择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、效果图:

4、执行顺序

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

python  os	   python sys

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

python  os	python sys
python random python socket 

将线程组的循环次数改为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次的时候,第三次搜索的内容跟第一次是一样的了

性能测试--Jmeter随机生成/随机选取/csv读取关键字的更多相关文章

  1. PHP随机生成随机个数的字母组合示例

    在很多系统环境下大家都会用到字母组合各种编码,下面推荐大家非常实用的PHP代码. $num由几个字母组合. $s字母包含大小写,可以自己调配大写还小写. <?php function makec ...

  2. jmeter之http请求用csv读取中文乱码

    jmeter3.2版本中CSV Data Set Config从本地读取静态文件的时候,遇到中文乱码的解决方式如下: CSV Data Set Config设置 http请求数据显示乱码 把txt文档 ...

  3. mysql生成随机测试数据

    一个demo: CREATE TABLE dept_InnoDB(  deptno MEDIUMINT NOT NULL DEFAULT 0 ,  dname VARCHAR(20) NOT NULL ...

  4. 生成随机id对比

    生成随机id 最近公司的项目游戏生成的随机不重复id,重复概率有点大, 代码如下: private static int id = 0; public static int serverID = 0; ...

  5. C#产生不重复的随机数并生成随机文件名

    本文转自:http://blog.ciznx.com/post/csharprandomnumberandrandomfilename.aspx 在项目中会遇到需要批量生成文件的时候,比如 asp.n ...

  6. 用python随机生成数据,再插入到postgresql中

    用python随机生成学生姓名,三科成绩和班级数据,再插入到postgresql中. 模块用psycopg2 random import random import psycopg2 fname=[' ...

  7. java生成随机字符串

    学习java comparable特性时候,定义如下Student类,需要需要随机添加学生姓名以及学号和成绩,这是java如何随机生成名字,根据我的查询,我找到目前java库支持两种方法. 1. or ...

  8. 利用Java随机,生成随机学生数据

    为模拟向数据库中大量插入学生数据(注:此处应该用PreparedStatement.batchUpdate等批处理提高效率)的情形,通过Java随机来生成学生数据. 一.要生成的学生数据 studen ...

  9. PYTHON练习题 二. 使用random中的randint函数随机生成一个1~100之间的预设整数让用户键盘输入所猜的数。

    Python 练习 标签: Python Python练习题 Python知识点 二. 使用random中的randint函数随机生成一个1~100之间的预设整数让用户键盘输入所猜的数,如果大于预设的 ...

随机推荐

  1. ABP开发框架前后端开发系列---(3)框架的分层和文件组织

    在前面随笔<ABP开发框架前后端开发系列---(2)框架的初步介绍>中,我介绍了ABP应用框架的项目组织情况,以及项目中领域层各个类代码组织,以便基于数据库应用的简化处理.本篇随笔进一步对 ...

  2. centos7.3 开放端口 防火墙端口

    1. 查看已打开的端口 # netstat -anp 2. 查看想开的端口是否已开 # firewall-cmd --query-port=666/tcp 若此提示 FirewallD is not ...

  3. PHP实现RabbitMQ的Publish/Subscribe

    <?php /** * Created by PhpStorm. * User: 豆腐居士 * Date: 2018/5/30 * Time: 上午11:01 */ class AqiTask ...

  4. 【spring cloud】【spring boot】项目启动报错:Cannot determine embedded database driver class for database type NONE

    解决参考文章:https://blog.csdn.net/hengyunabc/article/details/78762097 spring boot启动报错如下: Error starting A ...

  5. SFTP &amp; FTP Upload

    简述 >> FTP: 1. Install FTP service on Linux(Red Hat) as root user    [root]# yum install ftp 2. ...

  6. ADO.NET-temple

    ylbtech-ADO.NET:ADO.NET-Oracle|SQLServer|MySql|Access|Excel-dddd 介绍及讲解 1.A,插入数据(Create) 1.B,读取数据(Rea ...

  7. Python--图像处理(2)

    skimage提供了io模块,顾名思义,这个模块是用来图片输入输出操作的.为了方便练习,也提供一个data模块,里面嵌套了一些示例图片,我们可以直接使用. 引入skimage模块可用: 1 from  ...

  8. Codis连接异常问题处理

    报错信息可以看出:由于没有正常的关闭连接,导致连接异常 Caused by: redis.clients.jedis.exceptions.JedisConnectionException: Unex ...

  9. 【前端GUI】—— 网站美工必须掌握的PS知识点&思维导图

    前言:前端离不开与设计的沟通,有时候还需要自己上手改动甚至设计网页,所以这里简单梳理一下近期学习的“网站美工”相关知识及练习.(工作用不上的时候,自己玩儿着也蛮有意思的,哈哈(*゚∀゚*)~) 一.P ...

  10. 2017.2.15 开涛shiro教程-第二十一章-授予身份与切换身份(一) table、entity、service、dao

    原博客地址:http://jinnianshilongnian.iteye.com/blog/2018398 根据下载的pdf学习. 第二十一章 授予身份与切换身份(一) 1.使用场景 某个领导因为某 ...