jmeter csv参数化_Jmeter简单玩一把

jmeter作为浏览器与web服务器之间的代理,可以捕获浏览器的请求和web服务器的响应,通过线程来模拟真实用户对web服务器的访问压力。基本原理是建立一个线程池,多线程运行取样器产生大量负载,在运行过程中通过断言来验证结果的正确性,可以通过监听来记录测试结果。

下载安装

http://jmeter.apache.org/download_jmeter.cgi

a9a5899ad5b34556ef10e475a3c7f199.png

9a3f315ef74e1f748c4317cb1234c03c.png

目录介绍

85c65c6ce2a5a850e0f6dda9d9ad3df9.png

起步使用

点击~/bin/jmeter.bat

后台启动进程,并且提示通过命令执行方式【jmeter -n -t [jmx file] -l [results file] -e -o [Path to web report folder】

8ddac0ad2f397e081f53fcf0107deb84.png

显示:

03b160e0d3b35f79a41138cc07f30a77.png

创建线程组

在TestPlan位置点击右键选择新建线程组如图:

线程组是一系列线程的集合,每一个线程代表着一个正在使用应用程序的用户。在jmeter 中,每个线程意味着模拟一个真实用户向服务器发起请求。在 jmeter 中,线程组组件运行用户设置线程数量、初始化方式等等配置。

257fa8801bd8f40edee0471f0aa9d9ec.png

成功显示:

a5c229251ec71b2b9ba76c656582b8fe.png

解释说明:

作用:是一个测试计划执行的开始点,里面包含sampler,controller等等。

参数:

Ø Name:线程组的名称,可以随意修改

Ø Comments:备注信息,记录一些参数设置的原因和策略可填可不填

Ø Action to be taken after a Sampler error:

线程内的采样器失败后,接下来采取的动作:

Ø Continue:继续执行接下来的操作

Ø Start Next Thread Loop:执行下一个线程循环

Ø Stop Thread:退出该线程,不在执行该线程的任何操作

Ø Stop Test:等待该线程的采样结束后,结束整个测试,不会立即停止

Ø Stop Test Now:立即停止整个测试

Thread Properites:线程属性

Ø Number of Threads(users):线程数,也就是一共要启动多少线程用来并发执行

Ø Ramp-uo Period(in seconds):多长时间将上一步设置的线程数启动完毕。设置不同的值可以验证在不同并发的情况下验证系统的性能

Ø Loop Count:设置sampler循环的次数,勾上Forever后就会死循环一直执行

Ø Scheduler:调度器,日程表。选上之后才能设置执行时间

Ø Number of Threads * Loop Count就是Sampler执行的次数,可以在View Results Tree中看到。

Scheduler Configuration:

Ø Duration(seconnds):请求的执行时间(Loop Count的Forever必须勾上才有效)

Ø Startup delay(seconds):延迟时间,一般不用。但是如果想在指定的时间执行测试,可以用此配置。

Ø setUp Thread Group、Thread Group和tearDown Thread Group3种线程组都可以设置。

Thread Group中的执行规则

Ø setUp、Thread Group和tearDown 串行执行

编写http请求

d027d44038ad188842ea972bcc4ed876.png

成功显示:

00d07cc2ee09400fb9e952dec1cbf174.png

解释:

用来向服务器发送HTTP/HTTPS请求

参数说明:

Ø Name:组件名,可以修改

Ø Comment:注释信息,可写可不写

Web Server:

Ø Protocol[http]:不写就是默认的HTTP,可以根据实际情况指定

Ø Server Name or IP:IP或者域名,比如cn.bing.com(不要加http://,默认就带;不能有路径)

HTTP Request

Ø Port Number:HTTP默认为80,https为443

Ø Path:/表示根目录

Ø Content encoding:内容编码,如果请求有乱码的话可以将其配置为UTF-8或者ANSI

Ø 配置项:默认值即可

Ø Paramters:配置请求参数,比如添加key--àvalue、编码格式(url encode)、文件类型

Ø Body data:当选择body Data时候并且输入json请求体后Parameters选项不能点击。【parameters and Body Data and Files Upload】不能同时选择。 

Ø Files upload:上传文件,一般不用。

f7d830c08da91b8408d92901a8c5dc81.png

52edd1f6e9597e8e59f764c91b7e6b91.png

添加查看结果树

3cbb1c0557a20e6d3e6bc397b3abf563.png

点击运行

366c378d4a2e93be5c684eedb0b6bfe0.png

显示结果36fb452001d63ccbfc4ce9db32c0a427.png

说明

查看结果的常用方式

Ø Text:默认的显示方式,原始的HTML文本

Ø HTML:以类似浏览器的格式查看响应数据

Ø RegExp Tester:支持正则用来做检查点或者关联使用;(在做关联的时候可以在这里做调试是否写得是否正确)

Ø XPath Tester:xpath方式提取内容;(在做关联的时候可以在这里做调试是否写得是否正确)

Ø Scroll automatically:请求很多时可以自动滚屏

显示信息

Ø Sampler Result:本次请求的汇总信息

Ø 请求信息:分为请求数据和请求头

Ø 响应信息:分为响应数据和响应头

Filename:可以将执行结果保存到Filename指定的文件中,注意:默认保存在jmeter的bin目录下。如果勾选了后面的Errors,那么只保存错误信息;如果勾选了Success,那么只保存执行成功的信息;都不勾选的话保存所有的信息

Browser:可以打开之前保存过的测试文件,将测试信息显示到下面的result栏中。如果勾选了后面的Errors,那么只显示错误信息;如果勾选了Success,那么只显示执行成功的信息;都不勾选的话显示所有的信息

Sampler result结果说明:

03b113e0a8083e00b635985bafc0b7ff.png

Summary RePort展示

118e09195634480cf77eb6e64d19236a.png

显示结果

b106eca5ff1b483c59da9fe1153c5a75.png

解释聚合报告标签的含义:

Ø Label每个jmeter的element都有一个那么属性,这个显示name属性的值

Ø #sampler:表示在本次测试中一共发出请求数,11个用户,循环1次就是1

Ø Average:平均响应时间,,默认情况下是单个request的平均响应时间,当使用了transaction controller时,也可以以transaction为单位显示平均响应时间

Ø Median:中位数,50%用户的访问时间在这个时间以下

Ø 90%line:90%用户的访问时间在这个时间以下

Ø min:最小响应时间

Ø max:最大响应时间

Ø error%:本次测试出现的错误数/总的请求数

Ø Throughput:吞吐量,默认情况下表示每秒完成的请求数(Request per second)

Ø KB/sec:每秒从服务器接受到的数据量,相当于LR中Throughput/sec

单位毫秒。

参数化小试

Jmeter参数CSV Data Set Config用文件做参数化
选择配置原件中的CSV Data Set Config

6b2cdfbf22ba43ffc352311670aeca5d.png

显示

3efa914075526e1a495f4f3149bb06a6.png

参数说明:

Ø Filename:文件路径。可以是相对路径也可以是绝对路径。可以是.txt文件也可以是.csv文件

Ø File encoding:文件编码,默认问ANSI,其它编码根据实际情况配置

Ø Variables Names(comma-delimited):变量名,表示将每一列赋值给一个变量,有多个列时同逗号分隔,后续通过${}引用

Ø Ignore first line:忽略首行

Ø Delimiter(use "\t" for tab):分隔符,默认为逗号

Ø Allow quoted data?:数据是否带引号,默认为false,如果数据中有引号的话就会把数据连同引号一起赋值给变量;如果为Flase的话就会把引号去掉

Ø Recycle on EOF?:遇到文件结束符是否再次循环,默认为True,也就是继续从文件开头取值

Ø Stop thread on EOF?:遇到文件结束符是否结束线程,默认为False也就是不停止。注意:当【Recycle on EOF?】设置为True时,此项设置无效;当【Recycle on EOF?】设置为False,此项也设置为False,那么到达文件最后在引用变量就会变为

Ø Sharing mode:共享模式。默认为all threads,还支持current thread group /current thread /edit

共享模式小结

Ø all treatds:csv文件中的数据是共享的,不管是线程数还是循环次数,都会触发接口请求参数来使用csv文件中不同行的变量数据

Ø current thread group:在线程组内,线程数和循环次数都会触发接口请求参数变化

Ø current thread:循环了数据就会变化,线程数不能决定更新csv文件中的数据,循环次数才可以

837561f14b93fb7e08b57f4cd917f2c8.png

参数文件使用小指导

编写内容

3d26c306709be81ed43db6bb97b2b64c.png

获取结果

c0f0ccb6c780165ed1c1708bb032e2e6.png

显示结果:

6c3178f437b798efdc75115110b5c98b.png

Html报告

    如果想生成html报告可以参考,如下命令生成即可:

jmeter -n -t [jmx file] -l [results file] -e -o [Path to web report folder

Bean Shell小说明

一、在造数据时候,需要获取结果到保存到本地有两种方式:第一种直接通过获取结果保存到本地,第二种通过数据库导出今天介绍第一种,通过jmeter中正则表达式获取:步骤一:

3c106ee9ee132275f2728aa92c49fa6b.png

第二步:

7f22249586a576b63aaa0a36d8fc83fc.png

第三步

5f032147defc616817a8b74e10c442ae.png

参考代码

FileOutputStream fps=new FileOutputStream("${outfile_online}",true);OutputStreamWriter osw=new OutputStreamWriter(fps);BufferedWriter bw=new BufferedWriter(osw);bw.append("${mobile}\t${User}\t${User}\t${fd}\n");if(bw!=null){bw.close();}if(osw!=null){osw.close();}if(fps!=null){fps.close();}

第四步

f2addb7eaf946cd944a7a559e01388bf.png

获取结果

49bae44eab8139faee138b79ca3ab0da.png

正则表达式 Regular Expression Extractor

8126468f07714e81776e10b1b889ba33.png

简单写法:

83c464d5c31ef1adabac3358e5f08fff.png

正则表达式提取器说明:

Ø Apply to:应用范围

Ø 要检查的响应字段:样本数据源。

Ø 引用名称:其他地方引用时的变量名称,我这里写的phone,可自定义设置,引用方法:${引用名称}

Ø 正则表达式:数据提取器,()括号里为你要获取的的值。"phone":"( 相当于LR左边界, )","name"相当于LR右边界。而括号里\d+为正则表达式,用来匹配所需要获取的数据,何谓正则表达式文章末尾会附上说明

Ø 模板:$$对应正则表达式提取器类型。-1全部,0 随机,1第一个2第二个,以此类推,若只有一个正则一般就填写$1$

Ø 匹配数字:正则表达式匹配数据的所有结果可以看做一个数组,匹配数字即可看做是数组的第几个元素。-1表示全部,0随机,1第一个,2第二个,以此类推。若只要获取到匹配的第一个值,则填写1

Ø 缺省值:匹配失败时的默认值。可以不写。若需用于后续逻辑判断,可简单写为 ERROR。

Jmeter常用快捷键参考:

快捷键

功能

备注

Ctrl + C

复制

可复制组件

Ctrl + V

粘贴

可粘贴组件

Ctrl + Shift + C

复制粘贴当前组件到下一行

Ctrl + R

运行测试计划

Ctrl + E

清空运行结果

Ctrl + T

启用/禁用当前组件

可以多选

Ctrl + F

全文搜索

一般用来搜索组件, 搜索完成后可点击Search -> Reset Search恢复

Ctrl + -

全部收起

“-“为主键盘的减号

Ctrl + Shift + -

全部展开

“-“为主键盘的减号

Ctrl + 0

创建线程组

Ctrl + 1

新增HTTP请求

Ctrl + 2

正则表达式提取器

Ctrl + 3

响应断言

Ctrl + 4

固定定时器

Ctrl + 5

Test Action 5.0更改为Flow Control Action

 JMeter流量控制动作

Ctrl +6

JSR223 PostProcessor(后处理程序)

Ctrl + 7

JSR223 PreProcessor(预处理器)vars.put("key",value):将value存到jmeter变量key中,在后续请求中使用${“key”}进行引用。

Ctrl + 8

Debug Sampler

Ctrl + 9

查看结果树

小结

    以上是Jmeter小用介绍。其实没什么都是常用命令。

Linux 启动参考命令

#!/bin/bash#jmeter kill and startecho -e '\033[32m--------Jmeter---------------\033[0m'echo "kill掉jmeter-server 进程................... \n"kill -9 `ps aux | grep jmeter | grep -v grep | awk '{print $2}'`sleep 3cd /root/tools/apache-jmeter-3.3/bin/echo "启动jmeter-server"nohup ./jmeter-server &echo -e '\033[32m------------欢迎使用-----------------\033[0m'

送大家一句话:

     有些人赞你,那是他们在赞他们心中的你;有些人骂你,那是在骂他们心中的你。

9082dcc173813a7de52e9c22c71441d2.png

好消息1cef36ee5753f23e9a1967e8d3daa2cd.png

7D第五期线下性能实战专家班(北京)-11月30日

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值