jmeter使用手册一.jmeter安装1.首先安装jdk1)安装选择这个,进行下一步,下一步的安装,(请记住安装的路径:如本案例中安装路径修改为D:\ProgramFiles\Java\jdk1.6.0_24)2)配置环境变量JAVA_HOME、PATH、CLASSPATH【JAVA_HOME】:我的电脑-属性-高级-单击“环境变量”按钮-单击“系统变量”区域的“新建”按钮-在“变量名”文本框中输入JAVA_HOME,在“变量值”文本框中输入JDK的安装路径(参数名JAVA_HOME其值为安装的jdk的路径,在本案例中为D:\ProgramFiles\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:\ProgramFiles\Java下,运行jemeter\apache-jmeter-2.12\bin下的Jmeter.bat文件即可,如下图打开界面所示:二.jemert使用1.建立测试计划;1.1步骤:打开jmeter默认打开的已经建立了测试计划1.2相关说明:2建立线程组;2.1步骤:选择测试计划-添加-Threads(users)线程组;建立的线程组需要设置,并发用户2.2相关说明线程数:设置发送请求的用户数目即虚拟虚拟用户Ramp-upperiod:每个请求发生的总时间间隔,单位是秒。比如你的请求数目是5,而这个参数是10,那么每个请求之间的间隔就是10/5,也就是2秒(设置为1,表示同时并发)3.建立http请求;3.1步骤选择线程组—添加-Sampter-Http请求;,3.2相关说明建立http请求后需要填写相关信息:服务器ip,端口,接口名称,参数,以及参数值,http的请求方式post)3建立参数化;3.1步骤:选择线程组—添加-配置元件-CSVDataSetConfig;3.2相关说明:1)首先需要建立一个csv文件:例如在F盘的贴心闹钟参数文件夹下建立一个csv文件,该文件的名字为denglu.csv,该文件中有两列,第一列是用户名,第二列是密码。(注:文件中直接为值,没有参数化名称哦)2)修改参数化denglu.csv的相关信息:a修改路径;b.修改参数化的变量名:cmd,msgConfigtheCSVDataSource:1)Filename:csv文件的名称(包括绝对路径,当csv文件在bin目录下时,只需给出文件名即可)2)Fileencoding:csv文件编码,可以不填3)VariableNames(comma-delimited):csv文件中各列的名字(有多列时,用英文逗号隔开列名),这个变量名称是在其他处被引用的,所以为必填项。4)Delimiter(use“\t”fortab):csv文件中的分隔符(用”\t”代替tab键)(一般情况下,分隔符为英文逗号)5)Allowquoteddata?:是否允许引用数据,---这个目前还未弄明白,设置成True或者False都能正常引用数据。6)RecycleonEOF?:到了文件尾是否循环,True—继续从文件第一行开始读取,False—不再循环7)StopthreadonEOF?:到了文件尾是否停止线程,True—停止,False—不停止,注:当RecycleonEOF设置为True时,此项设置无效。8)Sharingmode:共享模式,Allthreads–所有线程,Currentthreadgroup—当前线程组,Currentthread—当前线程。这个地方和LoadRunner中的迭代取之相反,经试验得出来的结果是:【Allthreads】:测试计划中所有线程,假如说有线程1到线程n(n1),线程1取了一次值后,线程2取值时,取到的是csv文件中的下一行,即与线程1取的不是同一行。【Currentthreadgroup】:当前线程组,假设有线程组A、线程组B,A组内有线程A1到线程An,线程组B内有线程B1到线程Bn。取之情况是:线程A1取到了第1行,线程A2取第2行,现在B1取第1行,线程B2取第2行。【Currentthread】:当前线程。假设测试计划内有线程1到线程n(n1),则线程1取了第1行,线程2也取第1行。3)修改http中参数化a.添加变量名称b.修改参数值需要参数化的项的Value处,用${参数名}代替;如本例中由于csvdatasetconfig设置中,参数变量名为msg和cmd,所该案例中参数化的值为${cmd}、${msg}4.建立资源资源监控4.1步骤:选择线程组—添加-监听器-Jp@gc-PerfmonMetricsCollector4.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(例如HTTPRequest)都有一个Name属性,这里显示的就是Name属性的值#Samples:表示你这次测试中一共发出了多少个请求,如果模拟10个用户,每个用户迭代10次,那么这里显示100Average:平均响应时间——默认情况下是单个Request的平均响应时间,当使用了TransactionController时,也可以以Transaction为单位显示平均响应时间Median:中位数,也就是50%用户的响应时间90%Line:90%用户的响应时间Min:最小响应时间Max:最大响应时间Error%:本次测试中出现错误的请求的数量/请求的总数Throughput:吞吐量——默认情况下表示每秒完成的请求数(RequestperSecond),当使用了TransactionController时,也可以表示类似LoadRunner的TransactionperSecond数KB/Sec:每秒从服务器端接收到的数据量,相当于LoadRunner中的Throughput/Sec6.建立查看结果树6.1步骤:选择线程组—添加-监听器-查看结果树6.2相关说明:选择某个请求,选择【响应数据】选项卡,可以看到每个请求的返回值,是否成功选择某个请求,选择【请求】选项卡,可以看到每个请求的传参值选择某个请求,选择【取样器结果】选项卡,可以看到每个请求的相关信息ThreadName:线程组名称SampleStart:启动开始时间Loadtime:加载时长Latency:等待时长Sizeinbytes:发送的数据总大小Headerssizeinbytes:发送头大小Bodysizeinbytes:发送数据的其余部分大小SampleCount:发送统计ErrorCount:交互错误统计Responsecode:返回码Responsemessage:返回信息Responseheaders:返回的头部信息7.建立表格查看结果7.1步骤:选择线程组—添加-监听器-表格查看结果7.2相关说明8.执行8.1步骤:把所有文件保存成功,选择菜单选项【运行】【启动】或者直接点击运行按钮。8.2相关说明:每次在启动前,需要停止所有线程,防止上次未完成的线程会对本次执行有影响。并且需要清理上次保存在【聚合报告】【表格查看结果】【结果树】的数据,防止累加请求数量。三.补充资料1.设置线程数的另一种方案1.1步骤:将该文件放置D:\jmeter\apache-jmeter-2.12\lib\ext文件夹下,重启jmeter添加—选择“jp@gc-steppingthreadgroup”1.2相关说明:修改相关信息,来设置运行情况2.建立HttpCookie管理2.1步骤:选择线程组—添加-配置元件-HttpCookie管理2.2相关说明:现在对于JMeter来说,一个测试计划只能有一个cookie管理器。因为当多个magager存在时,JMeter目前还没有方法来指定使用那个manager。同时,一个cookiemanager中的存储的cookie也不能被其他cookiemanager所引用,所以同一个计划中不建议使用多个cookiemanagerHTTPCOOKIEManager管理cookie有两种方法:他可以像浏览器一样存储和发送cookie,如果你要发送一个带cookie的http请求,cookiemanager会自动存储该请求的cookies,并且后面如果发送同源站点的http请求时,都可以用这个cookies。每个JMeter线程都有自己的“cookie存储区域”,所以当你测试一个使用cookie来管理session信息的web站点时,每个JMeter线程都有自己的session。注意:以这种自动收集的方式收集到的cookie不会在cookiemanager中进行展示,但是运行后,通过:查看结果树(监听器)可以查看到cookie信息。早期的JMeter版本(2.3.2或更早)对与cookie的管理是支持跨域的,也就是说不同域名的网站都可以使用cookiemanager中的cookie,2.3.2版本之后,这个就不可以了,必须同源,才能共用cookie,如果你想让JMeter的cookiemanager支持跨域,修改JMeter.property文件(在本例中该文件的位置为D:\ProgramFiles\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文件:CookieManager.name.prefix=这个配置如果未启用(也就是维持默认),我们可以通过一下方式获取到cookie的值:${COOKIE_name},其中name为cookie的名称除了上面说的自动收集,我们还可以手动添加cookie,这里,笔者要给大家一个建议,尽量不要一个一个手动去填写,我们可以结合firefox的插件firebug,直接将cookie导入,操作如下打开firebug,如图点击红色框中的,下拉框中有个导出本站点的cookie,就可以将cookie信息保存为一个cookies.txt文件,接着打开jmeter的cookiemanager:载入刚才导出的cookies.txt文件