jmeter的脚本增强之参数化
jmeter作为一款开源的测试工具,功能广泛,深受测试同胞们的喜爱,这次来讲讲关于如何参数化及其方式。那为什么要进行一个参数化呢,如做压测时,要有大量的数据来模拟用户的真实场景,像登录页面操作,系统是不允许相同的用户同时登录,那这就需要对用户名进行一个参数化;或者是订票系统,每个用户在订票时时间都是不一样的,那为了达到真实的场景,就需要对时间进行一个参数化。参数化对于大量的重复的批量的数据保存一个变量,从而每次执行时,只需读取这个变量即可
jmeter有三大种参数化方式①读取文本,②程序生成,③从数据库里读取
一读取文本:
读取文本呢又有三种方法,这简直了。在桌面上新建一个文本文档,里面输入要参数化的数据 (前提是都有在数据库里),这些是用户名跟密码,那为了工作方便,密码我都是设一样的

第一种方法:打开jmeter,点击选项—函数助手对话框,这列表开头是按abc顺序排列的,选择—CSVRead

然后将你新建的文本目录地址复制到名称对应的值里

把拷贝下来的字符串放在你要变量的位置上,那我这边是对用户名进行的参数化

我在线程组里添加四个线程,运行一下看下察看结果树

参数化成功
第二种方法:在测试计划右键添加—配置文件—csv数据文件设置

在CSV数据文件页面设置一下:


第三种方法:在测试计划右键添加—配置文件—bzm-Random CSV Data Set Config

我用的jmeter是4.0版本,可能有一些同学没有这个,或者是这个插件
,打开jmeter目录,在这目录下F:\testing\tour\apache-jmeter-4.0\lib\ext加一个jar包文件 jmeter-plugins-manager-0.20.jar ,这个插件如果有同学需要可以网上下载也可以找我拿,然后重启jmeter,这个图标就出现了,然后点击这个图标搜索安装Random Csv Data Set ,安装好后再重启一下jmeter
这个参数化方式是官方新推出的功能,好使,能够随机提取

二程序生成:
程序生成也是有很多种,这边来列几个常用的。点击选项—函数助手对话框
1、__machineIP:读取你当前的电脑IP地址
2、__machineName:读取你的机器名字
3、__Random:随机生成一个数字,如设最小值1,最大值100,会随机生成1~100间的数字,可用于年龄,手机号,不适用于注册
4、__RandomDate:随机生成日期,日期:yyyy-MM-dd,key可用于订票,下订单,出生年月日等等
5、__RandomString:随机生成字符串,如英文名,性别等
6、__time:生成实时时间,yyyy-MM-dd HH:mm:ss(固定格式)
这边来搞一搞如何来批量注册用户名,我们可以录制注册操作的脚本或是使用fiddle抓包工具来获取,那在注册那边参数改一下

关于关联下篇会继续更新
在线程组右键添加-配置文件—计时器

在计时器页面设置一下

由这个方法可以很容易的快速制造大量数据
三数据库读取:
首先连接数据库,关于连接数据库上篇就有详细唠嗑过,先在测试计划页面里添加一个驱动

在测试计划右键添加如下:

然后在JDBC Connection 页面设置

然后继续在线程组右键添加—sampler—JDBC Requst,在这页面上呢写一个SQL语句,查询表里的所有用户名

查询出来表里的所有用户名,把这些放入到name里

线程组右键添加—逻辑控制—ForEach控制器,把每个用户迭代出来

应用场景,如果说你要看每个用户的个人信息,它的URL后都是username=tname(name表里的每一个用户)
那么直接在URL后加入参数化

线程组就只有一个线程,你点击运行后会一直运行,运行多少回呢,直到把name里的所有用户都运行完就会结束
这三大种参数化方式就又唠嗑完了。。。。。
下篇唠唠关联等等
jmeter的脚本增强之参数化的更多相关文章
- JMeter脚本增强之参数化
JMeter测试脚本录制或者编写,在Web应用和App上的操作方式可能有一点点区别(其实也差不多,哈哈),但是当脚本录制好了之后,对测试脚本的强化,包括参数化.关联.文本检查.集合点设置,甚至再往后的 ...
- jmeter调试脚本之变量参数化
前言 对于参数化,觉得用得最多的应该是csvread函数.csv data config以及用户自定义变量(前一篇文章已经进行了讲解)控制器这几个 案例:bugfree ,提交bug,参数bug名称和 ...
- LR性能测试脚本增强与调试
脚本增强与调试 一般来说,使用LR的Vugen录制的脚本并不能直接用于测试,需要对脚本进行各方面的增强,主要包括添加注释.关联.检查点.事务.参数化.日志输出等.下面结合刚完成的一个web项目性能测试 ...
- Loadrunner VuGen实战---基本组成、录制流程、协议、脚本优化、参数化(三)
一.3大基本组件:VuGen.Controller.Analysis 1.VuGen:录制.编写脚本. 2.Controller:性能测试场景设计以及监控的地方. 3.Analysis:生成图表报告的 ...
- 性能测试十二:jmeter进阶之java请求参数化
如项目中的ip.端口号之类的,都可以在此代码中定义 public Arguments getDefaultParameters() { // TODO Auto-generated method st ...
- 【JMeter】【性能测试】参数化,内存溢出问题
这一篇文章随便说一下JMETER的脚本参数化 1:Parameters的两种参数化方法 1.1:函数助手参数化 首先准备你的参数数据.我在bin/data中新建了一个dat文件,记事本另存为修改编码为 ...
- Jmeter常用脚本开发之Debug Sampler
Debug Sampler编辑脚本时调试用的,跟Java项目打断点测试同理,它可以Debug Jmeter中所有自定义变量的值 如何添加Debug Sampler? 打开测试计划—>线程组—&g ...
- Jmeter 录制脚本
Jmeter中有2种方法可以录制脚本. 不过我个人非常不推荐录制脚本,录制的脚本混乱,需要再次加工才能使用. 像我这么精通HTTP协议的人. 一直都是使用Fiddler来抓包,然后自己写脚本. 无论 ...
- LoadRunner如何在注册业务脚本中设置参数化唯一性
LR在录制一个网站注册业务的脚本时,突然间遇到一个问题:注册时,由于注册用户需要验证唯一性,所以在LR回放脚本时,用Run-time Viewer工具回放可以发现(先在脚本中设置几个断点),真实运行的 ...
随机推荐
- ASP.NET Web API编程——异常捕获
1 向客户端发送错误消息 使用throw new HttpResponseException()向客户端抛出错误信息. HttpResponseException包含两个重载的构造函数,其中一个是构造 ...
- [转]Javascript 取小数点后面N位
用Javascript取float型小数点后两位,例22.127456取成22.13,如何做? 1. 最笨的办法....... [我就怎么干的.........] } 2. 正则表达式效果不错 &l ...
- NopCommerce 3.4中移动端访问抛弃响应式布局
在Nop3.4中,他抛弃了原来的xxx.Mobile.cshtml的这种写法,而是采用了响应式布局,并且把规则也给改了,你在后台配置不启用响应式布局,在前台你仍然不能写xxx.Mobile.cshtm ...
- Unity 游戏框架搭建 (十八) 静态扩展 + 泛型实现transform的链式编程
本篇文章介绍如何实现如下代码的链式编程: C# this.Position(Vector3.one) .LocalScale(1.0f) .Rotation(Quaternion.identity); ...
- Mybatis Mapper动态代理方式 typeAliases 别名的使用
目录结构及配置文件与原始dao方法相比更简便 只需一个UserMapper的接口,放在一起的配置文件,配置文件中namespace的地址确定jdk动态代理的对象 <?xml version=&q ...
- 浅析OC语言
学习一门开发语言,首先要掌握的它的基本语法,这可能几天就能学会,但如果要融会贯通,就得去学习这门语言的框架和一些库,再结合一些项目的应用,这可能需要花几年的时间. OC是C语言的一个超集,是一门面向对 ...
- 复习宝典之Spring
查看更多宝典,请点击<金三银四,你的专属面试宝典> 第六章:Spring Spring容器是Spring的核心,一切Spring bean都存储在Spring容器内,并由其通过IoC技术管 ...
- .net core 基于Claim登录验证
网站,首先需要安全,实现安全就必须使用登录验证,.net core 基于Claim登录验证就很简单使用. Claim是什么,可以理解为你的身份证的中的名字,性别等等的每一条信息,然后Claim组成一个 ...
- excel批量转换为CSV格式,xls批量导出csv格式
工具/原料 excel 2013 地址链接:http://pan.baidu.com/s/1c1ZABlu 密码:d3rc 方法/步骤 首选我们把需要导出为CVS的Excel文件整理集中到 ...
- 10.31课程.this指向
作用域: 浏览器给js的生存环境(栈). 作用域链: js中的关键字例如var.function...都可以提前声明,然后js由上到下逐级执行,有就使用,没有就在它的父级元素中查找.这就叫做作用域链. ...