完整的JMETER使用手册适合初学者.docx
《完整的JMETER使用手册适合初学者.docx》由会员分享,可在线阅读,更多相关《完整的JMETER使用手册适合初学者.docx(128页珍藏版)》请在冰豆网上搜索。
完整的JMETER使用手册适合初学者
JMETER中文手册分享
1.简介
ApacheJMeter是100%纯java桌面应用程序,被设计用来测试C/S结构的软件(例如web应用程序)。
它可以用来测试包括基于静态和动态资源程序的性能,例如静态文件,JavaServlets,Java对象,数据库,FTP服务器等等。
JMeter可以用来在一个服务器、网络或者对象上模拟重负载来测试它的强度或者分析在不同的负载类型下的全面性能。
另外,JMeter能够通过让你们用断言创建测试脚本来验证我们的应用程序是否返回了我们期望的结果,从而帮助我们回归测试我们的程序。
为了最大的灵活性,JMeter允许我们使用正则表达式创建断言。
1.1历史
Apache软件组织的StefanoMazzocchi是JMeter的创始人。
他编写它起初是为了测试ApacheJServ的性能(一个已经被ApacheTomcat工程所替代的工程)。
我们重新设计JMeter来增强用户界面并增加功能测试的能力。
1.2未来
我们希望看到作为开发者利用它的可插入架构使JMeter的功能快速扩展。
未来发展的主要目标是在没有影响JMeter的负载测试能力的情况下尽可能使JMeter成为最实用的回归测试工具。
2.入门
开始使用JMeter最容易的方法是首先下载最新版并且安装它。
这个版本包含所有你在构建和运行Web,FTP,JDBC,和JNDI等测试时使用需要的所有文件。
如果你想执行JDBC测试,你当然需要从供应商得到适当的JDBC驱动。
JMeter没有提供任何JDBC驱动。
你可能需要下载的其它软件:
BeanShell-BeanShell函数和测试元件需要
JavaActivationFramework-JavaMail需要
JavaMail-Mail可视化,MailReader和WebService(SOAP)取样器需要
JMS-JMS取样器需要
下一步,开始使用JMeter并且参见用户手册创建一个测试计划一章使自己更加熟悉JMeter基础(例如,添加和删除元件)。
最后,参见如何构建一个明确类型的测试用例的适合章节。
例如,如果你对Web应用测试感兴趣,那就参见创建一个Web测试计划。
其他具体的测试计划章节是:
高级Web测试计划、JDBC、FTP、JMS点到点、JMS主题、LDAP
2.1需求
JMeter需要最小需求的运行环境。
2.1.1Java版本
JMeter需要一个完全适当的JVM1.4或者更高
因为JMeter仅使用Java标准API,请不要把因为JRE实现版本而无法运行JMeter的bug报告提交。
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.4或者更高。
2.2.2SAXXML解析器
JMeter使用Apache的XercesXML解析器,你可以选择告诉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提供者更新system.properties文件。
JMeter默认协议等级TLS(传输层安全性)。
这可以通过修改在jmeter.proerties或者user.properties文件中的"https.default.protocol"来改变。
JMeter被配置接受所有的证书,不管是否信赖和合法时间等。
这允许在测试服务器最大灵活性。
如果服务器需要一个客户端证书,这是可以提供的。
为了更好的管理证书,也要有一个SSL管理器。
2.2.5JDBC驱动
如果你需要JDBC测试,需要添加厂商的JDBC驱动到classpath。
确认文件是一个jar文件,而不是zip。
2.2.6ApacheSOAP
ApacheSOAP需要mail.jar和activation.jar.你需要下载并拷贝这两个jar文件到你jmeter/lib目录.一旦文件放到那里,JMeter会自动找到它们。
2.2.7BeanShell
为了运行BeanShell函数或者任何BeanShell测试元件(取样器,定时器等),你需要从http:
//www.beanshell.org/下载beanshell的jar文件并拷贝jar文件到jmeter/lib目录,JMeter会自动找到它。
2.2.8ActiveMQ3.0类库
详细参见http:
//activemq.apache.org/initial-configuration.html
详细参见JMeterClasspath一章安装附加的jar包
2.3安装
我们推荐大多数用户运行最新版本。
要安装一个构建版本,简单解压zip/tar文件到你想安装JMeter的目录。
保证一个JRE/JDK正确的安装并且设置环境变量JAVA_HOME,其它不需要做什么了。
安装目录接口应该看到的像这样一些东西(2.3.1版本):
jakarta-jmeter-2.3.1
jakarta-jmeter-2.3.1/bin
jakarta-jmeter-2.3.1/docs
jakarta-jmeter-2.3.1/extras
jakarta-jmeter-2.3.1/lib/
jakarta-jmeter-2.3.1/lib/ext
jakarta-jmeter-2.3.1/lib/junit
jakarta-jmeter-2.3.1/printable_docs
如果你想的话你可以重命名父目录(例如jakarta-jmeter-2.3.1),但是不要改变任何子目录命。
父目录路径中不能包含任何空格;如果包含,你运行客户端-服务器模式会有问题。
2.4运行JMeter
要运行JMeter,运行jmeter.bat(forWindows)或者jmeter(forUnix)文件。
那些文件在bin目录下。
稍微暂停后,JMeterGUI会显示出来。
在bin目录你会发现有些附加脚本很有用。
Windows脚本文件(CMD文件需要Win2K或者更新):
jmeter.bat-运行JMeter(默认在GUI模式)
jmeter-n.cmd-使用一个JMX文件运行非GUI测试
jmeter-n-r.cmd-使用一个JMX文件远程运行一个非GUI测试
jmeter-t.cmd-在GUI模式使用一个JMX文件
jmeter-server.bat-以服务器模式启动JMeter
注意:
LAST可以在jmeter-n.cmd,jmeter-t.cmd和jmeter-n-r.cmd中使用,意味着最后一次测试会运行.
Unix脚本文件可以运行在大多Linux/Unix系统.
jmeter-运行JMeter(默认在GUI模式)
jmeter-server-以服务器模式启动JMeter
2.4.1JMeterClasspath
JMeter自动从下列目录中的jar文件发现类。
JMETER_HOME/lib-用来放使用的jar文件
JMETER_HOME/lib/ext-用来放JMeter组件和扩展
如果你开发新的JMeter组件,你可以压缩它们成jar包并拷贝到JMeter的/lib/ext目录。
JMeter将会自动发现在这里的任何jar文件中的JMeter组件。
支持的jar文件(类库)应该放在lib目录.
如果你不想把扩展jar包放到lib/ext目录,可以在jmeter.properties中定义search_paths属性。
不要使用lib/ext给那些公用的jar包;它仅仅是存放JMeter组件。
其他jar包(例如JDBC,和任何JMeter代码需要支持的类库)应该被代替放在lib目录,而不是lib/ext目录。
你可以在$JAVA_HOME/jre/lib/ext安装有用的jar文件,或者(自从2.1.1版本)你可以在jmeter.properties中设置user.classpath属性。
注意设置CLASSPATH环境变量将不起作用。
这是因为JMeter使用"java--jar"启动,并且java命令无记录忽略CLASSPATH变量,并且当使用-jar选项时-classpath/-cp选项也被使用。
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
JMeter也有自己的内建HTTP代理服务器,来记录HTTP(不是HTTPS)浏览器会话。
这是和上面的代理设置描述不混淆的,它是在JMeter发出HTTP或者HTTPS请求时使用的。
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脚本使用适当的classpath为你开始远程注册。
如果失败,参见关于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
注意:
命令行参数在启动时较早被处理,但是在日志系统被设置以后。
尝试使用-J标志更新log_level或者log_file属性无效。
2.4.6日志和错误信息
如果JMeter发现一个错误,一个消息将被写入日志文件。
日志文件名在jmeter.
properties文件中定义。
一般定义为jmeter.log。
并且在JMeter启动目录,例如bin。
当在Windows下运行时,如果你不设置Windows显示文件扩展名,文件名会仅显示为JMeter。
还有记录错误,jmeter.log文件记录一些测试运行信息。
例如:
10/17/200312:
19:
20PMINFO-jmeter.JMeter:
Version1.9.20031002
10/17/200312:
19:
45PMINFO-jmeter.gui.action.Load:
Loadingfile:
c:
\mytestfiles\BSH.jmx
10/17/200312:
19:
52PMINFO-jmeter.engine.StandardJMeterEngine:
Runningthetest!
10/17/200312:
19:
52PMINFO-jmeter.engine.StandardJMeterEngine:
Starting1threadsforgroupBSH.Rampup=1.
10/17/200312:
19:
52PMINFO-jmeter.engine.StandardJMeterEngine:
Continueonerror
10/17/200312:
19:
52PMINFO-jmeter.threads.JMeterThread:
ThreadBSH1-1started
10/17/200312:
19:
52PMINFO-jmeter.threads.JMeterThread:
ThreadBSH1-1isdone
10/17/200312:
19:
52PMINFO-jmeter.engine.StandardJMeterEngine:
Testhasended
日志文件对发现错误原因很有帮助,作为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文件并且在命令行指定它。
注意:
自从2.1.2,你能够通过JMeter属性user.properties在文件中定义附加的JMeter属性,user.properties默认值是user.properties。
如果在当前目录被发现,这个文件被自动加载。
类似的,system.properties被用来更新系统属性。
参数:
属性
描述
ssl.provider
你可以为你的SSL实现指定类。
如果你想使用来自sun的JSSE,是这样:
.ssl.Internal.ssl.Provi
der。
JMeter默认提供https支持。
如果你正在使用JDK1.4,或者你使用带JSSE类的jar文件在JMeter的classpath里的JDK1.4。
C.ssl.internal
.ssl.Provider
JMeter默认提供https支持是在你使用JDK1.4或者你使用把JSSE类的jar包放到JMeterclasspath中的JDK1.3时候。
xml.parser
你可以指明一个你的XML解析器实现。
默认值是:
org.apache.xerces.parsers.SAXParser
remote_hosts
逗号分割远程JMeter主机列表。
如果你在一个分布式环境运行JMeter,列出你用JMeter远程主机运行的机器。
这允许你使用机器的用户界面控制那些服务器。
not_in_menu
在JMeter选项屏中你不想看到的组件列表。
如果JMeter被添加越来越多的组件,你会希望定制JMeter只出现那些你感兴趣的组件。
你可以在这儿列出那些类名和他们的类标签(JMeter的用户界面出现的字符串),它们将在选项屏中不出现。
search_paths
列出那些JMeter搜索JMeter附加类的路径(以;分割);例如附加的取样器。
被添加到lib/ext目录的任何jar包都被发现。
user.classpath
JMeter搜索的公用类库的路径列表。
被添加到lib目录的任何jar包都被发现。
user.properties
附加的JMeter属性文件名。
初始化属性文件后它们被添加,但是在-q和-J选项被处理之前。
system.properties
附加的系统属性文件名。
-S和-D选项被执行前添加。
3.创建一个测试计划
一个测试计划描述了一系列Jmeter运行时要执行的步骤。
一个完整的测试计划包含一个或者多个线程组,逻辑控制器,取样发生控制,监听器,定时器,断言和配置元件。
3.1添加和删除元件
在一个树上通过右击可以添加元件到一个测试计划,并且从"添加"列表中选择一个新元件。
另外,元件可以从文件加载并且通过选择"打开"选项添加。
为了删除元件,确保元件被选中,正确在元件上右击,并且选择"删除"选项。
3.2加载和保存元件
为了从文件加载元件,右击将要加载元件到的已经存在的树元件,并选择"打开"选项。
选择你的元件保存的文件。
JMeter会加载元件到树中。
为了保存树元件,在一个元件上右击,选择"保存"选项。
JMeter会保存已选的元件,加上所有下面的子元件。
用这种方法,你能够保存测试树的片段,单独元件,或者整个测试计划。
3.3配置树元件
在测试树中的任何元件都在JMeter的右侧框架显示配置。
那些配置允许你配置测试元件的细节行为,对于一个元件什么能被配置依赖于它是一个什么类型的元件。
3.4保存测试计划
虽然这不是必须的,我们推荐你在运行前保存测试计划。
为了保存测试计划,从文件菜单选择保存测试计划(使用最新版本,你不再需要首先选择测试计划元件)。
JMeter允许你保存整个测试计划树或者仅它的一部分。
为了仅保存测试计划树中特殊"支"位置的元件,从从这个"支"开始的地方选择树中的测试计划元件,然后右击鼠标访问保存菜单项。
另外选择合适的测试计划元件并从编辑菜单选择保存。
3.5运行一个测试计划
为了运行一个测试计划,从"运行"菜单项选择"开始"。
为了停止你的测试计划,从同样的菜单选择"停止"。
JMeter不会自动给它是否正在运行任何显示。
如果JMeter运行,一些监听器使它变明显,但是唯一确定的方法是检查"运行"菜单。
如果"开始"不可用,"停止"可用,证明JMeter正在运行你的测试计划(或者至少它认为它是)。
有两个类型的停止命令:
停止(Control+'.')-立刻停止所有的线程
关闭(Control+',')-请求所有线程在当前任务结束后停止
3.6元件作用域及执行顺序
3.6.1作用域规则
JMeter中共有8类可被执行的元件(测试计划与线程组不属于元件),这些元件中,取样器是典型的不与其它元件发生交互作用的元件,逻辑控制器只对其子节点的取样器有效,而其它元件(config elements 、timers 、post-processors、assertions、listeners、)需要与取样器(sampler)等元件交互。
配置元件(config elements ):
元件会影响其作用范围内的所有元件。
前置处理程序(Per-processors):
元件在其作用范围内的每一个sampler元件之前执行。
定时器(timers ):
元件对其作用范围内的每一个sampler 有效
后置处理程序(Post-processors):
元件在其作用范围内的每一个sampler元件之后执行。
断言(Assertions):
元件对其作用范围内的每一个sampler 元件执行后的结果执行校验。
监听器(Listeners):
元件收集其作用范围的每一个sampler元件的信息并呈现。
在jmeter中,元件的作用域是靠测试计划的的树型结构中元件的父子关系来确定的,作用域的原则是:
取样器(sampler)元件不和其它元件相互作用