JMeter 使用手册文档.docx
- 文档编号:11213927
- 上传时间:2023-05-29
- 格式:DOCX
- 页数:56
- 大小:2.61MB
JMeter 使用手册文档.docx
《JMeter 使用手册文档.docx》由会员分享,可在线阅读,更多相关《JMeter 使用手册文档.docx(56页珍藏版)》请在冰点文库上搜索。
JMeter使用手册文档
Jmeter使用手册
一、简介:
ApacheJMeter是100%纯java桌面应用程序,被设计用来测试C/S结构的软件(例如web应用程序)。
它可以被用来测试包括基于静态和动态资源程序的性能,例如静态文件,JavaServlets,Java对象,数据库,FTP服务器等等。
JMeter可以用来模拟一个在服务器、网络或者对象上大的负载来测试或者分析在不同的负载类型下的全面性能。
JMeter的主要测试组件总结如下:
1.测试计划是使用JMeter进行测试的起点,它是其它JMeter测试元件的容器。
2.线程组代表一定数量的并发用户,它可以用来模拟并发用户发送请求。
实际的请求内容在Sampler中定义,它被线程组包含。
3.监听器负责收集测试结果,同时也被告知了结果显示的方式。
4.逻辑控制器可以自定义JMeter发送请求的行为逻辑,它与Sampler结合使用可以模拟复杂的请求序列。
5.断言可以用来判断请求响应的结果是否如用户所期望的。
它可以用来隔离问题域,即在确保功能正确的前提下执行压力测试。
这个限制对于有效的测试是非常有用的。
6.配置元件维护Sampler需要的配置信息,并根据实际的需要会修改请求的内容。
7.前置处理器和后置处理器负责在生成请求之前和之后完成工作。
前置处理器常常用来修改请求的设置,后置处理器则常常用来处理响应的数据。
8.定时器负责定义请求之间的延迟间隔。
二、入门:
开始使用JMeter最容易的方法是首先下载最新版
并且安装它。
这个版本包含所有你在构建和运行Web,FTP,JDBC,和JNDI测试时使用的所有文件。
如果你想执行JDBC测试,你当然需要从厂商得到适当的JDBC驱动。
JMeter没有提供任何JDBC驱动。
其它你可能需要下载的软件:
∙BeanShell
∙JavaActivationFramework
-JavaMail需要
∙JavaMail
-mail显示andSOAP测试需要
∙JMS
-JMS取样器
∙GeneralJavadownloadpage
下一步,开始使用JMeter并且参见用户手册构建测试计划一章使自己更加熟悉JMeter基础(例如,添加和删除元素)。
最后,参见如何构建一个明确类型的测试用例的适合章节。
例如,如果你对Web应用测试感兴趣,那就参见构建一个Web测试计划。
其他测试计划的细节是JDBC,FTP,andJNDI。
一旦你熟练构建和执行JMeter测试计划,通过你的测试计划你会观察到给你更多帮助的各种元素的配置(定时器,监听器,断言,和其他)。
2.1需求
JMeter需要运行环境匹配的最低需求。
2.1.1Java版本
JMeter需要一个完整适当的JVM1.3或更高的版本.我们现在尽力与JVM1.3保持兼容,然而JMeter在1.4或者更高运行的会最好。
此处我们安装jdk-7u25-windows-i586这个版本。
2.1.2操作系统
JMeter是100%纯Java应用程序并且能够正确的在任何有适当的Java实现的操作系统上运行。
JMeter在下列环境已经被测试:
Unix(Solaris,Linux,等)
Windows(98,NT,2000,xp)
OpenVMSAlpha7.3+
2.2可选
如果你计划做JMeter开发或者想使用SUN的java标准扩展包,你将需要下列更多的可选包。
2.2.1Java编译器
如果你想编译JMeter源代码或者开发JMeter插件,你将需要一个完整的适当的JDK1.3或者更高。
2.2.2SAXXML解析器
JMeter使用Apache'sXercesXML解析器你可以选择告诉JMeter使用一个不同的XML解析器。
这样做,把第三方的解析器的类包包含在JMeter的classpath中,并更新jmeter.properties文件里的解析器实现的全类名。
2.2.3Email支持
JMeter有有限的Email能力。
它能够发送给你测试结果的email,并且支持POP/IMAP取样器。
它现在不支持SMTP取样。
为了能够支持Email,需要添加Sun的JavaMail包和activation包到JMeterclasspath。
2.2.4SSL加密
为了测试一个使用SSL加密(HPPS)的web服务器,JMeter需要一个提供SSL实现(例如Sun的JavaSecureSocketsExtension-JSSE)。
包含需要的加密包到JMeter的classpath。
同样,通过注册SSL提供者更新jmeter.properties。
为了更好的管理证书,也要有一个SSL管理器。
JMeter代理服务器(见下)不支持记录SSL(https)。
2.2.5JDBC驱动
你需要添加你的厂商的JDBC驱动到classpath,如果你需要JDBC测试.确认文件是一个jar文件,而不是zip。
2.2.6ApacheSOAP
ApacheSOAP需要mail.jar和activation.jar.你需要下载并拷贝两个jar文件到你jmeter/lib目录.一旦文件放到那里,JMeter会自动找到它们。
2.3安装
2.3.1下载最新版本
保证一个JRE/JDK正确的安装并且设置环境变量JAVA_HOME。
之后下载一个Jmeter版本,下载地址:
http:
//jmeter.apache.org/download_jmeter.cgi。
下载文件进行安装即可。
2.4运行JMeter
要运行JMeter,运行jmeter.bat(forWindows)或者jmeter(forUnix)文件。
JMeter必须从JMeter的bin目录中启动。
亦可以创建快捷方式在桌面等。
2.4.1JMeterClasspath
JMeter自动从在它的/lib和/lib/ext目录中的jar包发现类。
如果你开发新的JMeter组件,你可以压缩它们成jar包并拷贝到JMeter的/lib/ext目录。
JMeter将会自导发现在这里的任何jar包的JMeter组件。
如果你不想把扩展jar包放到lib/ext目录,可以在jmeter.properties中定义search_paths属性。
不要使用lib/ext给那些有用的jar包;它仅仅是存放JMeter组件。
其他jar包(例如JDBC,和任何JMeter代码需要支持的类库)应该被代替放在lib目录。
你可以在%JAVA_HOME%/jre/lib/ext安装有用的jar文件,或者你可以在jmeter.properties中设置user.classpath属性。
注意设置CLASSPATH环境变量将不起作用。
这是因为JMeter使用"java--jar"启动,并且java命令无记录忽略CLASSPATH变量,并且当使用-jar选项时-classpath/-cp选项也被使用。
[所有的java程序都是这样,不仅仅是JMeter。
]
2.4.2使用代理服务器
如果你在防火墙/代理服务器后测试,你需要提供给JMeter防火墙/代理服务器的主机名和端口号。
这样做,从命令行使用以下参数运行jmeter.bat/jmeter文件:
-H[代理服务器主机名或者ip地址]
-P[代理服务器端口]
-N[非代理主机](例如:
*.apache.org|localhost)
-u[代理证书用户名-如果需要]
-a[代理证书密码-如果需要]
例如:
jmeter-Hmy.proxy.server-P8000-uusername-apassword-Nlocalhost
或者,你使用--proxyHost,--proxyPort,--username,and--password
2.4.3非用户界面模式(命令行模式)
为了不相互影响测试,你可以选择运行没有用户界面的JMeter。
这样做,使用下列命令选项:
-n这是指定JMeter在非用户界面模式运行
-t[包含测试计划的JMX文件的名字]
-l[记录取样结果的JTL文件的名字]
-r运行在jmeter.properties文件里所有的远程服务器(或者通过在命令行覆盖属性指定远程服务器)
这个脚本也允许我们指定可选的防火墙/代理服务器信息:
-H[代理服务器主机名或者ip地址]
-P[代理服务器端口]
例如:
jmeter-n-tmy_test.jmx-llog.jtl-Hmy.proxy.server-P8000
2.4.4服务器模式
为了分布测试,在服务器模式运行JMeter,并且通过用户界面控制每一台服务器。
运行jmeter-server/jmeter-server.bat,加上下列选项命令:
这个脚本也允许我们指定可选的防火墙/代理服务器信息:
-H[代理服务器主机名或者ip地址]
-P[代理服务器端口]
例如:
jmeter-server-Hmy.proxy.server-P8000
2.4.5通过命令行覆盖属性
Java系统属性,JMeter属性,和日志属性可以通过命令行直接覆盖(代替更改jmeter.properties文件)。
这样做,使用下列选项:
-D[prop_name]=[value]-定义一个java系统属性值。
-J[propname]=[value]-覆盖一个JMeter属性。
-L[category]=[priority]-覆盖一个日志设置,设置一个特殊目录为给定的优先级。
-L标志也可以使用没有目录名来设置根目录日志等级。
例如:
jmeter-Duser.dir=/home/mstover/jmeter_stuff\
-Jremote_hosts=127.0.0.1-Ljmeter.engine=DEBUG
jmeter-LDEBUG
2.4.6日志和错误信息
如果JMeter发现一个错误,一个消息将被写入日志文件。
日志文件名在jmeter.properties文件中定义。
一般定义为jmeter.log。
并且在JMeter启动目录,例如bin。
当在Windows下运行时,如果你不设置Windows显示文件扩展名,文件名会仅显示为JMeter。
[你可以做一些事都很容易地发现伪装成文本文件的病毒和垃圾文件...]
还有记录错误,jmeter.log文件记录一些测试运行信息。
例如:
2013/08/2315:
09:
20INFO-jmeter.JMeter:
Version2.9r1437961
2013/08/2315:
09:
20INFO-jmeter.JMeter:
java.version=1.7.0_17
2013/08/2315:
09:
20INFO-jmeter.JMeter:
java.vm.name=JavaHotSpot(TM)ClientVM
2013/08/2315:
09:
20INFO-jmeter.JMeter:
os.name=WindowsXP
2013/08/2315:
09:
20INFO-jmeter.JMeter:
os.arch=x86
2013/08/2315:
09:
20INFO-jmeter.JMeter:
os.version=5.1
2013/08/2315:
09:
20INFO-jmeter.JMeter:
file.encoding=GBK
2013/08/2315:
09:
20INFO-jmeter.JMeter:
DefaultLocale=中文(中国)
2013/08/2315:
09:
20INFO-jmeter.JMeter:
JMeterLocale=中文(中国)
2013/08/2315:
09:
20INFO-jmeter.JMeter:
JMeterHome=C:
\apache-jmeter-2.9
2013/08/2315:
09:
20INFO-jmeter.JMeter:
user.dir=C:
\apache-jmeter-2.9\bin
2013/08/2315:
09:
20INFO-jmeter.JMeter:
PWD=C:
\apache-jmeter-2.9\bin日志文件对发现错误原因很有帮助,作为JMeter不会打断一个测试来显示一个错误对话框。
2.4.7命令行选项目录
调用JMeter的"jmeter-?
"命令将打印所有命令选项的一个列表。
列表如下:
-h,--help打印使用信息并退出
-v,--version打印版本信息并推出
-p,--propfile{argument}使用的JMeter属性文件
-q,--addprop{argument}附加的属性文件
-t,--testfile{argument}运行的JMeter测试文件(.jmx)
-l,--logfile{argument}日志取样文件
-n,--nongui非用户界面运行JMeter
-s,--server运行JMeter服务器
-H,--proxyHost{argument}设置JMeter使用的代理服务器
-P,--proxyPort{argument}设置JMeter使用的代理服务器端口
-u,--username{argument}设置JMeter使用的代理服务器用户名
-a,--password{argument}设置JMeter使用的代理服务器密码
-J,--jmeterproperty{argument}={value}定义附加的JMeter属性
-D,--systemproperty{argument}={value}定义附加的System属性
-S,--systemPropertyFile{filename}一个属性文件被做为系统属性添加
-L,--loglevel{argument}={value}定义日志等级:
[category=]level
例如jorphan=INFOorjmeter.util=DEBUG
-r,--runremote从非用户界面模式启动远程服务器
-d,--homedir{argument}使用的JMeter目录
2.5配置JMeter
如果你希望改变JMeter运行时的属性你需要改变在/bin目录的jmeter.properties文件,或者创建你自己的jmeter.properties文件并且在命令行指定它。
参数
属性
描述
需要
ssl.provider
你可以为你的SSL实现指定类。
如果你想使用来自sun的JSSE,是这样:
No
.ssl.internal.ssl.Provider。
JMeter默认提供https支持是在你使用JDK1.4或者你使用把JSSE类的jar包放到JMeterclasspath中的JDK1.3时候。
No
xml.parser
你可以指明一个你的XML解析器实现。
默认值是:
org.apache.xerces.parsers.SAXParser
No
remote_hosts
逗号分割远程JMeter主机列表。
如果你在一个分布式环境运行JMeter,列出你用JMeter远程主机运行的机器。
这允许你使用机器的用户界面控制那些服务器。
No
not_in_menu
在JMeter选项屏中你不想看到的组件列表。
如果JMeter被添加越来越多的组件,你会希望定制JMeter只出现那些你感兴趣的组件。
你可以在这儿列出那些类名和他们的类标签(JMeter的用户界面出现的字符串),它们将在选项屏中不出现。
No
search_paths
列出那些JMeter搜索JMeter附加类的路径(以;分割);例如增加的取样器。
被添加到lib/ext目录的任何jar包都被发现。
No
user.classpath
JMeter搜索的有用类库的路径列表。
被添加到lib目录的任何jar包都被发现。
No
user.properties
附加的JMeter属性文件名。
初始化属性文件后它们被添加,但是在-q和-J选项被处理之前。
No
system.properties
附加的系统属性文件名。
-S和-D选项被执行前被添加。
No
又见jmeter.properties文件注释,在你改变其它设置时会给你更多的信息
三、创建一个测试计划
一个测试计划描述了一系列Jmeter运行时要执行的步骤。
一个完整的测试计划包含一个或者多个线程组,逻辑控制,取样发生控制,监听器,定时器,断言和配置元件。
3.1添加和删除元件
在一个树上通过右击可以添加元件到一个测试计划,并且从"list"列表中选择一个新元件。
或者,元件从文件加载并且通过选择"open"选项添加。
为了删除元件,确保元件被选中,正确在元件上右击,并且选择"remove"选项。
3.2加载和保存元件
为了从文件加载元件,右击将要加载元件到的已经存在的树元件,并选择"open"选项。
选择你的元件保存的文件。
JMeter会加载元件到树中。
为了保存树元件,在一个元件上右击,选择"save"选项。
JMeter会保存已选的元件,加上所有下面的子元件。
用这种方法,你能够保存测试树段,单独元件,或者这个测试计划。
3.3配置树元件
在测试树中的任何元件控制在JMeter的右手结构。
那些控制允许你配置测试元件的细节行为,什么被配置为一个依赖元件类型的元件。
3.4运行一个测试计划
为了运行一个测试计划,从"run"菜单项选择"start"。
为了停止你的测试计划,从同样的菜单选择"stop"。
JMeter不会自动给它是否正在运行任何显示。
如果JMeter运行,一些监听器使它变明显,但是唯一确定的方法是检查"run"菜单。
如果"start"不可用,"stop"可用,证明JMeter正在运行你的测试计划(或者,至少,它认为它是)。
3.5作用域规则
jmeter测试树包含元件总是分等级和顺序的。
在测试树中的一些元件是严格分级(监听器,配置元素,后置处理器,前置处理器,断言,定时器),一些主要是顺序的(控制器,取样器)。
当你创建你的测试计划时,你将创建一个描述被执行的步骤集的取样请求有序列表。
那些请求常组织在也有序的控制器中。
给出如下测试树:
Exampletesttree
请求的顺序是One,Two,Three,Four。
一些控制器影响它的子元件的顺序,你可以在组件参考看到详细的控制器。
其他元素是分等级的。
例如,一个断言在测试树中是分等级的。
如果你的父元件是请求,它就被应用于那个请求。
如果它的父元件是控制器,它就影响所有那个控制器下的所有请求。
如下测试树:
Hierarchyexample
Assertion#1仅被应用于请求One,Assertion#2仅被应用于请求Two和Three。
其它例子,这次使用定时器:
complexexample
在这个例子里,请求的命名表现它们被执行的顺序。
Timer#1应用于请求Two,Three,和Four(注意对于分等级的元件怎样的顺序是不相关的)。
Assertion#1应用于请求Three。
Timer#2对所有请求有效。
希望那些例子使你弄清了配置(分等级的)元件如何被应用。
如果你想每个请求都被树分叉拒绝,到它的父元件,到它的父元件的父元件,等等,每次收集所有它的父元件的配置元件,你将看到它如何工作的。
元件HeaderManager,CookieManager和Authorizationmanager的配置和默认元件的配置被视为是不同的。
默认元件配置的设置并入取样器到达的值的集里。
然而来自管理器的设置没有并入。
如果多于一个管理器在一个取样器范围中,仅仅一个被使用,但是现在没有办法指定那个被使用。
3.6错误报告
JMeter把警告和错误信息回报在jmeter.log这个文件中,就像测试本身在执行时产生的某些资讯。
只是偶尔的,JMeter对于某些错误是无法捕捉和记录的,这些资讯都会显示在执行命令台上。
如果一个测试的执行并不是你所期待的,那么当错误发生时,请你检查记录文件。
取样错误(例如:
HTTP404-找不到档案)是不会被正常的记录在文件中的,取而代之的,他们会被当做取样结果的属性来存储,取样结果的状态能被许多不同的监听器所得知。
四、测试计划元件
测试计划对象有一个叫做"功能测试"复选框。
如果被选择,它将导致JMeter记录来自服务器返回的每个取样的数据。
如果你在你的测试监听器中选择一个文件,这个数据将被写入文件。
你尝试一个小的运行来保证JMeter配置正确并且你的服务器正在返回期望的结果是很有用的。
4.1后置处理器元件
一个后置控制器在一个取样器请求被建立后执行一些操作。
如果一个后置处理器附属于一个取样器元件,它仅在取样器元件运行后执行。
后置处理器最多用来处理响应数据,常用来从它里面摘录数值。
4.2执行顺序
1、定时器-任何个
2、取样器
3、后置处理器(如果SampleResult不为空)
4、断言(如果SampleResult不为空)
5、监听器(如果SampleResult不为空)
五、使用Jmeter测试
5.1创建一个网站测试计划
在这一部分,你将学会如何创建一个基础的测试计划来测试网站,你将会创建5个用户向baidu网站上的两个网页发送请求。
当然,你也可以让每个用户发送两次。
这样,总的HTTP发送请求为(5个用户*2次请求*重复2次)=20。
要构建这个测试计划,你将会用来下面的元素:
线程组,HTTP请求,HTTP请求默认值和图形结果。
要创建更好的测试计划,可以参考创建一个高级的测试计划网站。
5.1.1添加用户
处理每个JMeter测试计划的第一步就是添加线程组元件。
这个线程组会告诉JMeter你想要模拟的用户数量,用户应该发送请求的频率和应该发送的数量。
进一步来添加一个线程组:
首先选择这个测试计划,用鼠标右键点击然后在得到的菜单中选择添加-->线程组。
这时你应该看到这个线程组已经在测试计划下面了,如果没有看到,就点击测试计划元件展开这个测试计划树。
下一步,你需要修改这些默认的属性。
如果你还没有选择线程组元件,则从测试计划树型结构中选择它。
这时你应该看到JMeter窗口右边的线程组控制面板了。
图5.1.线程组默认值
首先给这个线程组起一个有意义的名字。
在名称域中,输入baiduUsers.
下一步,增加用户的数量为5。
在下一个theRamp-UpPeriod文本域中,使用默认值
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- JMeter 使用手册文档 使用手册 文档