jmeter使用手册
一.jmeter安装
1.首先安装jdk
1)安装
选择这个,进行下一步,下一步的安装,(请记住安装的路径:如本案例中安
装路径修改为D:\Program Files\Java\jdk1.6.0_24)
2)配置环境变量JAVA_HOME、PATH、CLASSPATH
【JAVA_HOME】:我的电脑->属性->高级->单击“环境变量”按钮->单击“系统变量”区域的“新建”按钮->在“变量名”文本框中输入JAVA_HOME,在“变量值”文本框中输入JDK的安装路径(参数名JAVA_HOME 其值为安装的jdk的路径,在本案例中为D:\Program Files\Java\jdk1.6.0_24
【PATH】:在系统变量中查看PATH变量,如果存在PATH,则在最末尾多添加一个%JAVA_HOME%\bin;(直接添加,连;也加上,无需加空格之类的,以下相同)。如果不存在,则新建变量PATH,设定变量值为:%JAVA_HOME%\bin;
【CLASSPATH】:在系统变量中查看CLASSPATH变量,如果存在CLASSPATH,则在最末尾添加%JAVA_HOME%lib\dt.jar;%JAVA_HOME%\lib\tools.jar;。如果不存在,则
新建一个,设定变量值为%JAVA_HOME%lib\dt.jar;%JAVA_HOME%\lib\tools.jar;
3)验证安装成功
完成以上步骤后,开始验证是否安装成功。运行CMD(开始,运行,输入cmd,
回车),输入java -version (java 和-version 之间有空格)若如下图所示显示
版本信息则说明安装和配置成功。
2.安装jmeter
选择这个文件,放在一个目录下,如:D:\Program
Files\Java下,运行jemeter\apache-jmeter-2.12\bin下的Jmeter.bat文件
即可,如下图打开界面所示:
二.jemert使用
1.建立测试计划;
1.1步骤:
打开jmeter默认打开的已经建立了测试计划
1.2相关说明:
2建立线程组;
2.1步骤:
选择测试计划->添加-Threads(users) 线程组;建立的线程组需要设置,并发用户
2.2相关说明
线程数:设置发送请求的用户数目即虚拟虚拟用户
Ramp-up period:每个请求发生的总时间间隔,单位是秒。比如你的请求数目是5,而这个参数是10,那么每个请求之间的间隔就是10/5,也就是2秒(设置为1,表示同时并发)
3.建立http请求;
3.1步骤
选择线程组—>添加->Sampter->Http请求;,
3.2相关说明
建立http请求后需要填写相关信息:服务器ip,端口,接口名称,参数,以及参数值,http 的请求方式post)
3建立参数化;
3.1步骤:
选择线程组—>添加->配置元件->CSV Data Set Config;
3.2相关说明:
1)首先需要建立一个csv文件:
例如在F盘的贴心闹钟参数文件夹下建立一个csv文件,该文件的名字为denglu.csv,该文件中有两列,第一列是用户名,第二列是密码。(注:文件中直接为值,没有参数化名称哦)
2)修改参数化denglu.csv的相关信息:a修改路径;b.修改参数化的变量名:cmd,msg
Config the CSV Data Source:
1)Filename:csv文件的名称(包括绝对路径,当csv文件在bin目录下时,只需给出文件名即可)
2)File encoding:csv文件编码,可以不填
3)Variable Names(comma-delimited):csv文件中各列的名字(有多列时,用英文逗号隔开列名),这个变量名称是在其他处被引用的,所以为必填项。
4)Delimiter(use “\t” for tab):csv文件中的分隔符(用”\t”代替tab键)(一般情况下,分隔符为英文逗号)
5)Allow quoted data?:是否允许引用数据,---这个目前还未弄明白,设置成True或者False都能正常引用数据。
6)Recycle on EOF?:到了文件尾是否循环,True—继续从文件第一行开始读取,False—不再循环
7)Stop thread on EOF?:到了文件尾是否停止线程,True—停止,False—不停止,注:当Recycle on EOF设置为True时,此项设置无效。
8)Sharing mode:共享模式,All threads –所有线程,Current thread group—当前线程组,Current thread—当前线程。这个地方和LoadRunner中的迭代取之相反,经试验得出来的结果是:
【All threads】:测试计划中所有线程,假如说有线程1到线程n (n>1),线程1取了一次值后,线程2取值时,取到的是csv文件中的下一行,即与线程1取的不是同一行。
【Current thread group】:当前线程组,假设有线程组A、线程组B,A组内有线程A1到线程An,线程组B内有线程B1到线程Bn。取之情况是:线程A1取到了第1行,线程A2取第2行,现在B1取第1行,线程B2取第2行。
【Current thread】:当前线程。假设测试计划内有线程1到线程n (n>1),则线程1取了第1行,线程2也取第1行。
3)修改http中参数化
a.添加变量名称
b.修改参数值
需要参数化的项的Value处,用${参数名}代替;
如本例中由于csv data set config 设置中,参数变量名为msg和cmd,所该案例中参数化的值为${cmd}、${msg}
4.建立资源资源监控
4.1步骤:
选择线程组—>添加->监听器->Jp@gc-Perfmon Metrics Collector
4.2相关说明
填写监控机子的IP,端口默认都是4444不需要修改,选择监控资源的类型
运行起来的结果,都是表示使用率为百分之多少。
补充说明,服务器监控,需要将插件放在服务器上,需要的插件
解压后得到
选择JMeterPlugins-1.0.1-RC2\ServerAgent-2.2.1文件夹下启动startAgent.bat(liunx下启动startAgent.sh)
5建立聚合报告
5.1步骤
选择线程组—>添加->监听器->聚合报告
5.2相关说明
Label:每个JMeter 的element(例如HTTP Request)都有一个Name 属性,这里显示的就是Name 属性的值
#Samples:表示你这次测试中一共发出了多少个请求,如果模拟10个用户,每个用户迭代10次,那么这里显示100
Average:平均响应时间——默认情况下是单个Request 的平均响应时间,当使用了Transaction Controller 时,也可以以Transaction 为单位显示平均响应时间Median:中位数,也就是50%用户的响应时间
90% Line:90%用户的响应时间
Min:最小响应时间
Max:最大响应时间
Error%:本次测试中出现错误的请求的数量/请求的总数
Throughput:吞吐量——默认情况下表示每秒完成的请求数(Request per Second),当使用了Transaction Controller 时,也可以表示类似LoadRunner 的Transaction per Second 数
KB/Sec:每秒从服务器端接收到的数据量,相当于LoadRunner中的Throughput/Sec 6.建立查看结果树
6.1步骤:
选择线程组—>添加->监听器->查看结果树
6.2相关说明:
选择某个请求,选择【响应数据】选项卡,可以看到每个请求的返回值,是否成功
选择某个请求,选择【请求】选项卡,可以看到每个请求的传参值
选择某个请求,选择【取样器结果】选项卡,可以看到每个请求的相关信息Thread Name: 线程组名称 Sample Start: 启动开始时间
Load time: 加载时长 Latency: 等待时长
Size in bytes: 发送的数据总大小 Headers size in bytes: 发送头大小
Body size in bytes: 发送数据的其余部分大小 Sample Count: 发送统计Error Count: 交互错误统计 Response code: 返回码
Response message: 返回信息 Response headers: 返回的头部信息
7.建立表格查看结果
7.1步骤:
选择线程组—>添加->监听器->表格查看结果
7.2相关说明
8.执行
8.1步骤:
把所有文件保存成功,选择菜单选项【运行】 【启动】或者直接点击运行按钮。
8.2相关说明:
每次在启动前,需要停止所有线程,防止上次未完成的线程会对本次执行有影响。并且需要清理上次保存在【聚合报告】【表格查看结果】【结果树】的数据,防止累加请求数量。
三.补充资料
1.设置线程数的另一种方案
1.1步骤:
将该文件放置D:\jmeter\apache-jmeter-2.12\lib\ext 文件夹下,重启jmeter
添加—选择“jp@gc-stepping thread group”
1.2相关说明:
修改相关信息,来设置运行情况
2.建立Http Cookie管理
2.1步骤:
选择线程组—>添加->配置元件->Http Cookie管理
2.2相关说明:
现在对于JMeter来说,一个测试计划只能有一个cookie管理器。因为当多个magager存在时,JMeter目前还没有方法来指定使用那个manager。同时,一个cookie manager中的存储的cookie也不能被其他cookie manager所引用,所以同一个计划中不建议使用多个cookie manager
HTTP COOKIE Manager管理cookie有两种方法:
他可以像浏览器一样存储和发送cookie,如果你要发送一个带cookie的http请求,cookie manager会自动存储该请求的cookies,并且后面如果发送同源站点的http请求时,都可以用这个cookies。每个JMeter线程都有自己的“cookie存储区域”,
所以当你测试一个使用cookie来管理session信息的web站点时,每个JMeter线程都有自己的session。
注意:
以这种自动收集的方式收集到的cookie不会在cookie manager中进行展示,但是运行后,通过:查看结果树(监听器)可以查看到cookie信息。
早期的JMeter版本(2.3.2或更早)对与cookie的管理是支持跨域的,也就是说不同域名的网站都可以使用cookie manager中的cookie,2.3.2版本之后,这个就不可以了,必须同源,才能共用cookie,如果你想让JMeter的cookie manager支持跨域,修改JMeter.property文件(在本例中该文件的位置为D:\Program Files\Java\apache-jmeter-2.12\bin 文件夹下
):
CookieManager.check.cookies=false
接受到的cookie会被自动存储在线程变量中,但是从Jmeter2.3.2版本后,默认不再存储,如果你想要manager自动存储收集到的cookie,你需要修改JMeter.property文件: CookieManager.save.cookies=true
存储的时候,cookie的key会以“COOKIE_”为前缀命名(默认情况),如果你想自定义这个前缀,
修改JMeter.property文件:
https://www.doczj.com/doc/8d18273392.html,.prefix=
这个配置如果未启用(也就是维持默认),我们可以通过一下方式获取到cookie的值:${COOKIE_name},其中name为cookie的名称
除了上面说的自动收集,我们还可以手动添加cookie,这里,笔者要给大家一个建议,尽量不要一个一个手动去填写,我们可以结合firefox的插件firebug,直接将cookie导入,操作如下
打开firebug,如图
点击红色框中的,下拉框中有个导出本站点的cookie,就可以将cookie信息保存为一个cookies.txt文件,接着打开jmeter 的cookie manager:
载入刚才导出的cookies.txt文件即可。