JMeter简单入门Word文件下载.docx
《JMeter简单入门Word文件下载.docx》由会员分享,可在线阅读,更多相关《JMeter简单入门Word文件下载.docx(12页珍藏版)》请在冰点文库上搜索。
选择“File->
ExporttoJMeter”菜单,填写文件名“login_mantis.jmx”,将录制好脚本导出为JMeter脚本格式。
也可以选择“File->
Save”菜单保存为Badboy脚本;
7.
启动JMeter并打开刚刚生成的测试脚本。
也许你已经急不可待的准备开始尝试着用JMeter处理你手头的工作了^_^在下面的几节,我将继续为大家介绍如何在JMeter中完成一个测试场景的设置和JMeter测试结果分析入门,以及如何参数化JMeter脚本。
当然,如果你的动手能力很强,几分钟你就可以熟悉这些内容。
不过还是请允许我一点点由浅入深的来帮大家完成“JMeter从入门到精通”的过程。
我相信在这个过程中你将会了解到更多有关性能测试的知识和经验,甚至包括一些LoadRunner等商业测试工具所无法提供给你的经验。
理解JMeter聚合报告(AggregateReport)
AggregateReport是JMeter常用的一个Listener,中文被翻译为“聚合报告”。
今天再次有同行问到这个报告中的各项数据表示什么意思,顺便在这里公布一下,以备大家查阅。
如果大家都是做Web应用的性能测试,例如只有一个登录的请求,那么在AggregateReport中,会显示一行数据,共有10个字段,含义分别如下。
Label:
每个JMeter的element(例如HTTPRequest)都有一个Name属性,这里显示的就是Name属性的值
#Samples:
表示你这次测试中一共发出了多少个请求,如果模拟10个用户,每个用户迭代10次,那么这里显示100
Average:
平均响应时间——默认情况下是单个Request的平均响应时间,当使用了TransactionController时,也可以以Transaction为单位显示平均响应时间
Median:
中位数,也就是50%用户的响应时间
90%Line:
90%用户的响应时间
Note:
关于50%和90%并发用户数的含义,请参考下文
Min:
最小响应时间
Max:
最大响应时间
Error%:
本次测试中出现错误的请求的数量/请求的总数
Throughput:
吞吐量——默认情况下表示每秒完成的请求数(RequestperSecond),当使用了TransactionController时,也可以表示类似LoadRunner的TransactionperSecond数
KB/Sec:
每秒从服务器端接收到的数据量,相当于LoadRunner中的Throughput/Sec
另外,如果大家在使用JMeter的过程中遇到问题,建议先参考下面这篇文章
其他有关JMeter和性能测试的文章请参见下面的链接
使用JMeter分布式性能测试
作为一个纯JAVA的GUI应用,JMeter对于CPU和内存的消耗还是很惊人的,所以当需要模拟数以千计的并发用户时,使用单台机器模拟所有的并发用户就有些力不从心,甚至还会引起JAVA内存溢出的错误。
不过,JMeter也可以像LoadRunner一样通过使用多台机器运行所谓的Agent来分担LoadGenerator自身的压力,并借此来获取更大的并发用户数。
根据JMeter官方文档的署名,你需要自己完成这个配置,不过不用担心,这将非常简单^_^
在所有期望运行JMeter作为LoadGenerator的机器上安装JMeter,并确定其中一台机器作为Controller,其他的机器作为Agent。
然后运行所有Agent机器上的JMeter-server.bat文件——假定我们使用两台机器192.168.0.1和192.168.0.2作为Agent;
在Controller机器的JMeter安装目录下找到bin目录,再找到JMeter.properties这个文件,使用记事本或者其他文字编辑工具打开它;
在打开的文件中查找“remote_hosts=”这个字符串,你可以找到这样一行“remote_hosts=127.0.0.1”。
其中的127.0..0.1表示运行JMeterAgent的机器,这里需要修改为“remote_hosts=192.168.0.1:
1664,192.168.0.2:
1664”——其中的1664为JMeter的Controller和Agent之间进行通讯的默认RMI端口号;
保存文件,并重新启动Controller机器上的JMeter.bat,并进入Run->
RemoteStart菜单项。
看到啥了?
^_^
使用命令行方式运行JMeter脚本
2.4.3Non-GUIMode(CommandLinemode)
Fornon-interactivetesting,youmaychoosetorunJMeterwithouttheGUI.Todoso,usethefollowingcommandoptions
-nThisspecifiesJMeteristoruninnon-guimode
-t[nameofJMXfilethatcontainstheTestPlan].
-l[nameofJTLfiletologsampleresultsto].
-rRunallremoteserversspecifiedinJMeter.properties(orremoteserversspecifiedoncommandlinebyoverridingproperties)
Thescriptalsoletsyouspecifytheoptionalfirewall/proxyserverinformation:
-H[proxyserverhostnameoripaddress]
-P[proxyserverport]
Example:
JMeter-n-tmy_test.jmx-llog.jtl-Hmy.proxy.server-P8000
上面这段说明来自JMeter的官方用户手册。
其中提到了使用命令行方式运行JMeter脚本的方法。
只有几个简单的参数,很直观,用起来也很方便。
好处是可以节省一些系统资源。
今天尝试300个虚拟用户连续运行5分钟时——使用GUI方式,发现开始运行后不久UI就失去了响应,并提示一个有关
AWT的错误,最终只能把Java进程结束掉。
但是使用命令行方式时却很稳定。
不过当在命令行方式下尝试500个虚拟用户连续运行5分钟时,JMeter抛出了一个OutofMemory的异常并退出了进程。
1.执行命令前要检查当前目录是否是%JMeter_Home%\bin目录;
2.如果JMeter脚本不在当前目录,需要指定完整的路径;
如果要把执行的结果保存在其他地方也要指定完整的路径。
如何解决JMeter通过JDBC访问Oracle和MySQL的问题(留言中有TestPlan实例下载)
JMeter的手册中描述了如何访问MySQL,但是没有说明如何访问Oracle。
对于没有Java应用开发经验和对Oracle不是特别熟悉的朋友,可以参考这篇文章来简单、快速的配置好JMeter中的JDBC连接和JDBCRequest。
步骤:
1.新建一个ThreadGroup;
2.新增JDBCConnectionConfiguration;
3.点击新增的JDBCConnectionConfiguration,需要修改的参数包括:
∙VariableName:
可以先填一个Oracle,等会解释;
∙DatabaseURL:
jdbc:
oracle:
thin:
@{host_IP_or_machine_name}:
{Oracle监听器监听的端口}:
{你的Oracle实例的名字}
——大家要注意,“{}”大括号只是我用来说明用的,在配置JMeter时,请将“{}”大括号去掉^_^
∙JDBCDriverclass:
oracle.jdbc.driver.OracleDriver
∙Username:
访问上面Oracle实例的用户名
∙Password:
对应的密码
4.新增一个JDBCRequest,需要修改的参数包括:
和上面的JDBCConnectionConfiguration填写同样的内容。
这里表示JDBCConnectionConfiguration建立一个名为Oracle的连接池,之后其它的JDBCRequest都共用这个连接池;
∙Query:
select*fromtable_name。
这里建议打开你的数据查询工具,输入一条SQL查询语句,保证可以执行看到结果的,然后copy过来;
5.新增一个ViewResultsTree;
6.点击Run,查看结果。
可以在Responsedatatab看到响应的返回结果。
注意事项:
1.执行时提示:
NoSuitableDriver。
在电脑上搜索一下classes12.jar这个文件,然后copy到JMeter的Lib目录下。
如果找不到classes12.jar这个文件,就找找classes12.zip文件,然后把扩展名改为jar;
2.执行时提示:
ORA-00911:
invalidcharacter。
确保你在JDBCRequest里面的Query中输入的SQL语句是正确的。
JMeter用户手册中关于配置通过JDBC对数据库性能进行测试的部分如下:
http:
//jakarta.apache.org/jmeter/usermanual/build-db-test-plan.html
另外,我做了两个TestPlan,一个是forOracle的,一个是forMySQL的,你可以点击下面的链接下载。
JMeterTestPlanforOracle
JMeterTestPlanforMySQL
MySQLJDBCDriver
(下载后需要自己把扩展名改为.jar然后放到JMeter的lib目录下)
JMeter是Apache组织的开放源代码项目,它是功能和性能测试的工具,100%的用java实现,最新的版本是1.9.1,大家可以到http:
//jakarta.apache.org/jmeter/index.html下载源代码和查看相关文档。
1JMeter作用领域
JMeter可以用于测试静态或者动态资源的性能(文件、Servlets、Perl脚本、java对象、数据库和查询、ftp服务器或者其他的资源)。
JMeter用于模拟在服务器、网络或者其他对象上附加高负载以测试他们提供服务的受压能力,或者分析他们提供的服务在不同负载条件下的总性能情况。
你可以用JMeter提供的图形化界面分析性能指标或者在高负载情况下测试服务器/脚本/对象的行为。
2使用JMeter测试Web应用
接下来的章节里,作者将详细的演示如何使用JMeter来测试Web应用的完整过程。
2.1测试环境
作者使用了Tomcat作为Web服务器进行测试,被测试的内容是一个jsp文件和一个servlet,jsp文件调用JavaBean、打印相关信息,servlet接受用户参数、调用javabean、输出相关信息。
详细的内容请参考作者提供的JMeter.war的内容。
2.2安装启动JMeter
大家可以到通过jmeter-1.9.1.zip下载JMeter的release版本,然后将下载的.zip文件解压缩到C:
/JMeter(后面的文章中将使用%JMeter%来引用这个目录)目录下。
现在,请使用%JMeter%/bin下面的jmeter.bat批处理文件来启动JMeter的可视化界面,下面的工作都将在这个可视化界面界面上进行操作。
下面的图片是JMeter的可视化界面的屏幕截图。
图一:
JMeter打开时的屏幕截图
2.3建立测试计划(TestPlan)
测试计划描述了执行测试过程中JMeter的执行过程和步骤,一个完整的测试计划包括一个或者多个线程组(ThreadGroups)、逻辑控制(LogicController)、实例产生控制器(SampleGeneratingControllers)、侦听器(Listener)、定时器(Timer)、比较(Assertions)、配置元素(ConfigElements)。
打开JMeter时,它已经建立一个默认的测试计划,一个JMeter应用的实例只能建立或者打开一个测试计划。
现在我们开始填充一个测试计划的内容,这个测试计划向一个jsp文件和一个servlet发出请求,我们需要JMeter模拟五个请求者(也就是五个线程),每个请求者连续请求两次,下面的章节介绍了详细的操作步骤。
2.4增加负载信息设置
这一步,我们将向测试计划中增加相关负载设置,是Jmeter知道我们需要模拟五个请求者,每个请求者在测试过程中连续请求两次。
详细步骤如下:
1.选中可视化界面中左边树的TestPlan节点,单击右键,选择Add'
ThreadGroup,界面右边将会出现他的设置信息框。
2.ThreadGroup有三个和负载信息相关的参数:
NumberofThreads:
设置发送请求的用户数目
Ramp-upperiod:
每个请求发生的总时间间隔,单位是秒。
比如你的请求数目是5,而这个参数是10,那么每个请求之间的间隔就是10/5,也就是2秒
LoopCount:
请求发生的重复次数,如果选择后面的forever(默认),那么请求将一直继续,如果不选择forever,而在输入框中输入数字,那么请求将重复指定的次数,如果输入0,那么请求将执行一次。
根据我们演示例子的设计,我们应该将NumberofThreads设置为5,Ramp-upperiod设置为0(也就是同时并发请求),不选中forever,在LoopCount后面的输入框中输入2,设置后的屏幕截图如下:
图二:
设置好参数的ThreadGroup。
2.5增加默认Http属性(可选)
实际的测试工作往往是针对同一个服务器上Web应用展开的,所以Jmeter提供了这样一种设置,在默认Http属性设置需要被测试服务器的相关属性,以后的http请求设置中就可以忽略这些相同参数的设置,减少设置参数录入的时间。
我们这里将采用这种属性。
你可以通过下面的步骤来设置默认http属性:
configelement'
httprequestdefaults,界面右边将会出现他的设置信息框。
2.默认http属性的主要参数说明如下:
protocal:
发送测试请求时使用的协议
servernameorip:
被测试服务器的ip地址或者名字
path:
默认的起始位置。
比如将path设置为/jmeter,那么所有的http请求的url中都将增加/jmeter路径。
portnumber:
服务器提供服务的端口号
我们的测试计划将针对本机的Web服务器上的Web应用进行测试,所以protocal应该是http,ip使用localhost,因为这个web应用发布的context路径是/jmeter,所以这里的path设置为/jmeter,因为使用Tomcat服务器,所以portnumber是8080。
设置后的屏幕截图如下:
图三:
测试计划中使用的默认Http参数
2.6增加Http请求
现在我们需要增加http请求了,他也是我们测试的内容主体部分。
你可以通过下面的步骤来增加性的http请求:
1.选中可视化界面中左边树的ThreadGroup节点,单击右键,选择Add'
sampler'
httprequest,界面右边将会出现他的设置信息框。
2.他的参数和2.5中介绍的http属性差不多,增加的属性中有发送http时方法的选择,你可以选择为get或者post。
我们现在增加两个http请求,因为我们设置了默认的http属性,所以和默认http属性中相同的属性不再重复设置。
图四:
设置好的jsp测试请求
图五:
设置好的Servlet测试请求(带参数)
2.7增加Listener
增加listener是为了记录测试信息并且可以使用Jmeter提供的可视化界面查看测试结果,里面有好几种结果分析方式可供选择,你可以根据自己习惯的分析方式选择不同的结果显示方式,我们这里使用表格的形式来查看和分析测试结果。
你可以通过下面的步骤来增加listener:
listener'
viewresultintable,界面右边将会出现他的设置信息和结果显示框。
2.你可以设置界面上面的filename属性设置将测试结果保存到某个文件中界面下面将使用表格显示测试结果,表格的第一列sampleno显示请求执行的顺序和编号,url显示请求发送的目标,sample-ms列显示这个请求完成耗费的时间,最后的success列显示改请求是否成功执行。
界面的最下面你还可以看到一些统计信息,最关心的应该是Average吧,也就是相应的平均时间。
2.8开始执行测试计划
现在你可以通过单击菜单栏run->
Start开始执行测试计划了。
下面这两个图是作者第一次、第二次执行该测试计划的结果图:
图六:
第一次执行后的结果显示
图七:
第二次执行的结果显示
大家可以看到第一次执行时的几个大时间值均来自于jsprequest,这可以通过下面的理由进行解释:
jsp执行前都需要被编译成.class文件。
所以第二次的结果才是正常的结果。
3总结
JMeter用于进行供能或者性能测试,通过使用JMeter提供的供能,我们可以可视化的制定测试计划:
包括规定使用什么样的负载、测试什么内容、传入的参数,同时,他提供了好多种图形化的测试结果显示方式,使我们能够简单的开始测试工作和分析测试结果。
本文中,作者根据自己的使用经验,详细演示了如何使用JMeter来进行Web测试的全部过程,简单的介绍了JMeter提供测试结果的图形化显示界面中相关参数的含义。
希望能够帮助大家学会使用JMeter的基本知识,同时,大家可以参考这个过程和JMeter的帮助文档来实现对java对象、数据库等的测试过程。