使用JMeter进行性能测试Word格式文档下载.docx
《使用JMeter进行性能测试Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《使用JMeter进行性能测试Word格式文档下载.docx(21页珍藏版)》请在冰点文库上搜索。
测试计划描述了执行测试过程中JMeter的执行过程和步骤,一个完整的测试计划包括一个或者多个线程组(ThreadGroups)、逻辑控制(LogicController)、实例产生控制器(SampleGeneratingControllers)、侦听器(Listener)、定时器(Timer)、比较(Assertions)、配置元素(ConfigElements)。
打开JMeter时,它已经建立一个默认的测试计划,一个JMeter应用的实例只能建立或者打开一个测试计划。
现在我们开始填充一个测试计划的内容,这个测试计划向一个jsp文件和一个servlet发出请求,我们需要JMeter模拟五个请求者(也就是五个线程),每个请求者连续请求两次,下面的章节介绍了详细的操作步骤。
增加负载信息设置
这一步,我们将向测试计划中增加相关负载设置,是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。
增加默认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参数
增加Http请求
现在我们需要增加http请求了,他也是我们测试的内容主体部分。
你可以通过下面的步骤来增加性的http请求:
1.选中可视化界面中左边树的ThreadGroup节点,单击右键,选择Add'
sampler'
httprequest,界面右边将会出现他的设置信息框。
2.他的参数和中介绍的http属性差不多,增加的属性中有发送http时方法的选择,你可以选择为get或者post。
我们现在增加两个http请求,因为我们设置了默认的http属性,所以和默认http属性中相同的属性不再重复设置。
图四:
设置好的jsp测试请求
图五:
设置好的Servlet测试请求(带参数)
增加Listener
增加listener是为了记录测试信息并且可以使用Jmeter提供的可视化界面查看测试结果,里面有好几种结果分析方式可供选择,你可以根据自己习惯的分析方式选择不同的结果显示方式,我们这里使用表格的形式来查看和分析测试结果。
你可以通过下面的步骤来增加listener:
listener'
viewresultintable,界面右边将会出现他的设置信息和结果显示框。
2.你可以设置界面上面的filename属性设置将测试结果保存到某个文件中界面下面将使用表格显示测试结果,表格的第一列sampleno显示请求执行的顺序和编号,url显示请求发送的目标,sample-ms列显示这个请求完成耗费的时间,最后的success列显示改请求是否成功执行。
界面的最下面你还可以看到一些统计信息,最关心的应该是Average吧,也就是相应的平均时间。
开始执行测试计划
现在你可以通过单击菜单栏run->
Start开始执行测试计划了。
下面这两个图是作者第一次、第二次执行该测试计划的结果图:
图六:
第一次执行后的结果显示
图七:
第二次执行的结果显示
大家可以看到第一次执行时的几个大时间值均来自于jsprequest,这可以通过下面的理由进行解释:
jsp执行前都需要被编译成.class文件。
所以第二次的结果才是正常的结果。
总结
JMeter用于进行供能或者性能测试,通过使用JMeter提供的供能,我们可以可视化的制定测试计划:
包括规定使用什么样的负载、测试什么内容、传入的参数,同时,他提供了好多种图形化的测试结果显示方式,使我们能够简单的开始测试工作和分析测试结果。
本文中,作者根据自己的使用经验,详细演示了如何使用JMeter来进行Web测试的全部过程,简单的介绍了JMeter提供测试结果的图形化显示界面中相关参数的含义。
希望能够帮助大家学会使用JMeter的基本知识,同时,大家可以参考这个过程和JMeter的帮助文档来实现对java对象、数据库等的测试过程。
2.JMeter在Web
Services性能测试中的应用
【聚杰网测试工具】JMeter在Web
Services性能测试中的应用
欢迎进入软件测试社区论坛,与200万人员互动交流>
>
进入
性能测试是任何分布式或Web应用程序测试计划的重要组成部分。
在计划和开发周期中进行性能评价,可以保证交付给客户的应用程序满足客户对于高负载、可用性和可伸缩性的要求。
提前确定软件的负载限制可以为适当地进行系统配置提供帮助,从而避免出现意料之外的故障。
系统性能分析中要处理的几个问题是:
系统或服务器能否处理数百个或数千个客户端的同时请求,以及系统可以处理请求的频率。
这种类型的测试不但提供了系统响应时间的绝对度量值,而且针对服务器的回归测试和应用程序代码,检查服务器的响应是否和预期结果相匹配,并为不同供应商的中间件解决方案的评价和比较提供帮助。
ApacheJMeter——Apache的性能测试框架,已经广泛地作为Web应用程序的性能测试工具。
它可以用于在模拟重负载的条件下分析整个服务器性能。
该软件提供了FTP和HTTP请求功能和可扩展自定义脚本功能。
本文阐述了Jmeter可用于对Webservices进行负载测试的原因。
我们特别通过在BEAWebLogicServer中配置一个简单的WebServices来进行说明。
示例测试计划阐述了测试计划的创建、线程组、循环和WebServices请求。
我们还讨论了如何测量数据,并通过随附的JMeter图表对图形工具中所显示的结果进行了说明。
JMeter
ApacheJMeter是可以对利用HTTP或的应用程序进行测试的工具。
它是基于Java的,通过所提供的API它还具有高度可扩展性。
典型的JMeter测试包括创建循环和线程组。
循环使用预设的延迟来模拟对服务器的连续请求。
线程组是为模拟并发负载而设计的。
JMeter提供了用户界面。
它还公开了API,用户可以从Java应用程序来运行基于JMeter的测试。
为了在JMeter中创建负载测试,需要构建测试计划。
在实际操作中,Jmeter需要执行一系列的操作。
最简单的测试计划通常包括下列元件:
*线程组——这些元件用于指定运行的线程数和等候周期。
每个线程模拟一个用户,而等候周期用于指定创建全部线程的时间。
例如,线程数为5,等候时间为10秒,则创建每个线程之间的时间间隔为2秒。
循环数定义了线程的运行时间。
使用调度器,还可以设置运行的起始时间。
*取样器——对于服务器HTTP、FTP或LDAP请求,这些元件是可配置请求。
该教程仅侧重于WebServices请求。
*监听器——这些元件用于请求数据的后期处理。
例如,可以将数据保存到文件或用图表来说明结果。
此时JMeter图表并没有提供许多配置选项;
然而它是可扩展的,它始终可以添加额外的可视化效果或数据处理模块。
ApacheJMeter网站给出了关于可用元件的详细说明。
在某些情况下,如果可用元件不适合特定的测试,开发人员可通过在安装Jmeter的/lib/ext/目录中放置jar文件来编写他/她自己的脚本或Java类,并将其嵌入测试计划。
本文中我们使用的是版本是JMeter。
从Web站点可执行二进制文件,将其解压缩,然后应用程序即可在Windows或Unix平台中使用。
如果是在Windows中工作,要转到bin文件夹用或启动应用程序。
初始用户界面如图1所示。
图1:
启动ApacheJMeter
创建负载测试
使用Jmeter的负载测试功能,可以在服务器上产生高负载并确定其容量和限制。
注意:
若要使用Webservices样本,需要有可用的和,它们可从SunMicrosystems中获取(请参阅下面的链接)。
由于授权限制,Apache没有分发这些库。
这两个jar文件之后,将它们放入Javaclasspath或安装Jmeter的lib目录中。
图2:
创建线程组和基本WebServices测试计划
现在,右键单击TestPlan并添加ThreadGroup和LoopController。
我们使用这两个元件来设置模拟的并发用户数和测试持续时间。
在树状结构的LoopController下面,添加“WebService(SOAP)Request”和Graph,如图2所示。
如果不能向测试计划添加WebService请求,则可能是路径中没有或。
键入线程数、等候周期和循环数。
在本教程中我们分别使用5、10和100。
将循环控制器计数设置为1。
如果配置了WebServices的WebLogicServer仍然没有运行,请手动启动它或从WebLogicWorkshop中启动。
配置负载测试
如图3所示,我们需要对发送到服务器的SOAP请求参数进行设置。
如果指向WSDL文件的链接(URL)可用,将该链接粘贴到WSDLURL字段并单击LoadWSDL。
可用的方法将显示在WebMethods组合框中。
接下来,需要单击Configure以便填充ServerName或IP、PortNumber、Path和SOAPAction。
图3:
WebService(SOAP)请求对话框(单击图像查看完整尺寸的屏幕截图)
如果没有可用的WSDL链接,也可以手动键入服务器名称、端口号、路径和SOAP操作的值。
最后一步,在SOAP/XML-RPCData区域填写SOAP请求。
用户也可以通过SOAPXMLData选项用File从文件中加载。
输入WebServices请求对话框中的所有字段之后,单击Ctrl+S保存JMeter项目。
为了使数据可视化,我们添加了图表元件“Graphresults”和“SplineVisualizer”。
此外,我们也可以通过添加“Saveresponsestoafile”元件将响应发送到文件;
这在检查SOAP响应错误时很有用。
为了模拟更真实的客户端请求顺序,我们在树中插入了定时器元件——“GaussianRandomtimer”。
执行该操作之后,客户端的请求的分布更加混乱,将会以随机方式而不是以相等的时间间隔来点击服务器。
我们将Gaussian随机时间设置为偏离100ms,恒定延迟偏移量为300ms.
运行负载测试
用户可以通过单击Ctrl+R运行负载测试,或者从菜单中选择Run并单击Start运行负载测试。
单击图形元件,将会看到图表被填充,数据代表对服务器的请求,如图4至6所示。
图4:
说明测试结果的图表。
线程数=5,等候时间=10,循环数=100。
循环控制器设置为1(单击图像查看完整尺寸的屏幕截图)。
我们选择在图表中显示三个参数——吞吐量(绿线)、中间值(紫线)和平均值(蓝线)。
我们对测试参数进行修改。
为了模拟服务器上的较高负载,我们将线程数提高到10和50并比较服务器的响应时间。
再次单击Start并观查图表中显示的结果;
参见图5和图6。
图5:
线程数=10,等候时间=5,循环数=100,循环控制器设置为1(单击图像查看完整尺寸的屏幕截图)。
图6:
线程数=50,等候时间=5,循环数=20,循环控制器设置为1(单击图像查看完整尺寸的屏幕截图)
图表底部参数的含义如下:
*吞吐量是服务器每分钟处理的请求数。
*平均值是总运行时间除以发送到服务器的请求数。
*中间值是代表时间的数字,有一半的服务器响应时间低于该值而另一半高于该值。
*偏离表示服务器响应时间变化、离散程度测量值的大小,或者,换句话说,就是数据的分布。
*最后的样本就是最后完成的请求。
只要观察这三次运行及它们的相应图表,我们就可以得到下列有价值的结果:
响应时间很明显地随着线程的增加而增加。
若要继续进行测试,我们可以更改线程数、等候周期和循环数。
我们没有更改或调整服务器的配置。
WebLogicServer中有一个可自动配置的线程池,其配置范围受到限制(请参阅NareshRevanuru撰写的WorkloadManagementinWebLogicServer,Dev2Dev),上表说明客户端数量的增长对服务器响应时间的影响是非线性的。
实际上,将这个数字提高两倍或十倍不会产生明显的影响!
然而,使用接近或超过默认服务器限制的线程数来运行同一个试验时应引起注意。
为了检验从服务器收到的响应是真实的SOAP响应而不是HTTP错误,我们观察下列输出文件的内容。
这是符合上面要求的SOAP响应:
为了使测试结果更加可视化,向计划中添加SplineVisualizer,它紧靠着GraphResults。
SplineVisualizer提供了关于所有样本次数的视图。
它用分段插入功能绘制出一条连续的线,在绘制时跨越10个点,每个点代表10﹪的样本。
在样条图表中用直线取代连接点,提供了基于多项式近似算法的平滑分布视图。
结果如图7所示
图7:
使用SplineVisualizer说明与图6相同测试结果的图表(单击图像查看完整尺寸的屏幕截图)
MultipleJMeters
JMeter还具有一项十分有用的RemoteStart功能,它允许用户从多台机器启动JMeter测试。
客户端主机地址可以输入到位于bin文件夹下的“”文件中。
找到remote_hosts属性并在那里添加远程主机名称,使用逗号进行分隔。
重新启动Jmeter,在Run菜单中单击RemoteStart或RemoteStartAll。
某些Web和应用程序服务器可连续处理同一个IP地址的多个请求以及并行处理不同IP地址的请求,因此,对于请求来自不同的机器或将测试负载分布到几个客户端显得十分关键的情况,可以使用该选项来执行操作。
其他功能
前面已经提到,Jmeter包含HTTP、FTP和LDAP取样器。
创建这些请求是一项简单的任务,Jmeter用户手册中作了详细说明;
它通常包括创建ThreadGroup、添加取样器、定时器和监听器。
下面我们介绍一些有关这些标准取样器之外的、可能需要一些非标准配置步骤的功能。
脚本
特别支持Java请求和BeanShell脚本的自定义测试和脚本是JMeter的另一个功能,它为负载测试开发人员提供了更大的灵活性。
我们可以创建脚本化测试并将其作为一个Java类进行编译,然后将其传递给JMeter运行。
为了使用BeanShell脚本功能,需要BeanShelljar并将其放置在/lib目录下面,以便JMeter在运行时可以选取它。
用户可以使用Java取样器中的beanshellAPI,或者创建BeanShell取样器,由它读取文件中的脚本或处理文本框中所键入的命令。
下面的代码样本说明了添加到HTTP取样器中的BeanShell断言。
用户可以对基于HTTP请求的响应的测试执行过程进行分析和控制。
一个好的方案应该创建具有线程组的测试计划,并在计划的时间循环启动负载测试。
请求将点击Web服务器并获得其响应。
响应可用添加到测试计划的BeanShell断言进行记录,它紧靠着HTTP取样器,如果Web服务器响应与某个条件相匹配,也就是说,如果成功或包含了预期的字符串,则脚本会停止测试或线程,否则将继续执行。
JMS应用程序
为了使用JMeter对JMS应用程序进行负载测试,要ActiveMQjar并将其复制到/lib目录。
根据前面的测试,我们首先创建线程组,并添加JMSPoint-to-Point样本。
JMSPoint-to-Point对话框需要填写下列参数:
QueueConnectionFactory、JNDINameRequest队列和JNDINameReceive队列。
例如,我们可以使用WebLogic示例服务器上安装的JMS模块中的参数;
在这种情况下,它们为和。
我们也可以创建自定义的JMS连接工厂和队列。
对于WebLogic服务器,我们还需要添加作为初始ContextFactory值和ProviderURL,通常情况下,其形式为:
t3:
//hostname:
7001,例如:
//localhost:
7001。
自定义取样器
许多测试人员迟早会面临下面这个问题:
假如必须要创建测试计划,而JMeter没有提供必需的取样器或监听器。
例如,用户需要测试EnterpriseJavaBeans应用程序。
用户仍然可以使用JMeter的JavaRequest,它实质上是Java类,可以向其添加需要的任何逻辑。
我们创建一个样本Java取样器,它将向应用程序服务器发送请求并调用会话bean。
首先,我们创建packagemytest和称为的Java类:
为了使用该代码,要对它进行编译以创建jar文件,将jar复制到JMeterclasspath(如lib目录),或者将classpath位置添加到文件——其形式为:
重新启动JMeter,向测试计划添加JavaRequest元件,并从下拉菜单中选择。
缺省情况下,JMeter提供的是“SleepTest”和“JavaTest”。
现在,我们可以向测试计划添加线程组、循环和监听器并运行测试计划。
测试
Jmeter所支持的另一个功能是评价服务器的性能。
用户可以使用软件提供的JDBCRequest元件,也可以使用脚本或Java类来创建自己的测试。
例如,使用一些与前面类似的示例可以测试存储过程的调用。
许多优化都可以使用,包括使用特定供应商优化(如查询的并行处理),使用联结或索引。
此外,当用多个boolean评价创建查询时,数据组织知识很有用。
在处理大量数据时,应用程序中的和查询优化是特别关键的,JMeter是一个可以在这类评价中提供某些评测的工具。
例如,可以在数据或查询优化前后执行性能或负载测试并对结果进行比较。
我们通过创建MySQL实例的测试计划来演示样本性能测量计划是如何工作的。
首先,从MySQL网站JDBC驱动程序,并复制到/lib目录以便JMeter可以访问。
现在启动JMeter,创建线程组,并设置循环数和相应的线程数。
添加JDBCConnectionConfiguration、JDBCQueryDefaults和JDBCRequest元件。
在这些对话框中,我们需要配置连接和查询。
输入URL值,它们的形式类似于:
jdbc:
,然后为JDBCDriverClass输入。
针对这个试验,我们创建了customers,它带有包含下列三个字段的customer表格:
名称、地址和帐户。
在Query框中键入查询,例如,从客户中选择名称。
为了使结果可视化,可以添加带有响应时间的图表,或者,如果要检验响应是否匹配特定模式,可以添加响应断言。
例如,在ResponseAssertion中添加文本模