jmeter 使用入门


先到官方网站下载最新版本:http://jakarta.apache.org/site/downloads/downloads_jmeter.cgi

参考博客:http://blog.csdn.net/dagigi/article/details/6186026

Jmeter 概要描叙

jmeter 是一款专门用于功能测试和压力测试的轻量级测试开发平台。多数情况下是用作压力测试,该测试工具在阿里巴巴有着广泛的使用,估计是不要钱吧,哈哈,功能上来说,整个平台实现了许多和互联网相关的网络测试组件,同时还保留着很强的扩展性方便用于一些非标准的测试场景,让伟大的程序猿同学来告诉它该如何工作。下面我们开始。

运行bin/jmeter.bat后,先来了解几个术语:

1、线程组:这个组件主要用来控制Jmeter并发时产生线程的数量,在它的下一级菜单下只有一个组件(线程组),可以这么理解每个线程就是一个虚拟的用户。所有的其他类型组件必须是(线程组)节点的子节点。

测试里每个任务都要线程去处理,所有我们后来的任务必须在线程组下面创建。可以在“测试计划->添加->线程组”来建立它,然后在线程组面板里有几个输入栏:线程数、Ramp-Up Period(in seconds)、循环次数,其中Ramp-Up Period(in seconds)表示在这时间内创建完所有的线程。如有8个线程,Ramp-Up = 200秒,那么线程的启动时间间隔为200/8=25秒,这样的好处是:一开始不会对服务器有太大的负载。

2.配置单元:和Sample组件一起工作,主要用来配置Sample如何来发起请求访问服务器,这个东西的主要特点是可以把一些Sample的共同配置放在一个元素里面方便管理,配置单元是有作用域的。作用域和树的那个关系一样越是上级节点的作用域越大,越是接近叶子节点的

作用域就越小,可以复写上级作用域的配置。

3.定时器 : 这个主要是用来调节(线程组),控制线程每次运行测试逻辑(比如说:发出请求)的时间间隔。当然这个下面还有很多类型的定时器,他们主要功能就是调节时间间隔,但个个组件之间的策略有很大不同。

4.前置处理器 和 后置处理器类似一个HOOK,在测试执行之前和执行之后执行一些脚本的逻辑。该组件我还没有具体使用过,但大致功能就是这样,非重点组件。


5.取样器(Sampler):Sample表示客户端发送某种格式或者规范的请求到服务端,所以大家看到了各种各样的Sample,其中有两个Http  相关的。一般用HttpClient功能和效率将更强。可以认为所有的测试任务都由取样器承担,有很种,如:HTTP 请求。

6、断言:意思是指对于Sample完成了请求发送之后,判断一下返回的结果是否满足期望。对取样器返回的请求结果给出判断,是否正确。

7、monitor:这个组件不同于平时在Web编程的那种监听器,他是伴随着Jemeter测试的运行而从中抓取运行期间的数据的一个组件,经常使用的是聚合报告组件,从里面可以统计到测试的TPS,响应时间等关键测试数据。它的功能是对取样器的请求结果显示、统计一些数据(吞吐量、KB/S……)等。

先这些概念。下面来试用一下:

添加线程组,右击测试计划->添加->线程组,线程数为2,Ramp-Up=0,循环次数=5;添加取样器:右击线程组->添加->Sample->HTTP 请求,Web服务器localhost,端口8080,协议http,路径/index.jsp;添加monitor,右击线程组->添加->monitor->图形结果(第二个),然后再添加一个Summary report monitor。

然后,运行->启动,在两个monitor中都可以看到一些内容,如:

JMeter 的主要测试组件总结如下:

1、测试计划是使用 JMeter 进行测试的起点,它是其它 JMeter 测试元件的容器。

2、线程组代表一定数量的并发用户,它可以用来模拟并发用户发送请求。实际的请求内容在Sampler中定义,它被线程组包含。

3、monitor负责收集测试结果,同时也被告知了结果显示的方式。

4、逻辑控制器可以自定义JMeter发送请求的行为逻辑,它与Sampler结合使用可以模拟复杂的请求序列。

5、断言可以用来判断请求响应的结果是否如用户所期望的。它可以用来隔离问题域,即在确保功能正确的前提下执行压力测试。这个限制对于有效的测试是非常有用的。

6、配置元件维护Sampler需要的配置信息,并根据实际的需要会修改请求的内容。

7、前置处理器和后置处理器负责在生成请求之前和之后完成工作。前置处理器常常用来修改请求的设置,后置处理器则常常用来处理响应的数据。

8、定时器负责定义请求之间的延迟间隔。

如何建立和使用Jmeter测试环境

一、工具描述

apache jmeter是100%的java桌面应用程序,它被设计用来加载被测试软件功能特性、度量被测试软件的性能。设计jmeter的初衷是测试web应用,后来又扩充了其它的功能。jmeter可以完成针对静态资源和动态资源(servlets, perl脚本, java对象, 数据查询s, ftp服务等)的性能测试。 jmeter可以模拟大量的服务器负载、网络负载、软件对象负载,通过不同的加载类型全面测试软件的性能。并且jmeter提供图形化的性能分析。

二、使用环境

JMeter可以运行在solaris, linux, windows (98, nt, 2000,2003). jdk1.4以上。本文章主要介绍使用JMeter测试windows环境的web server 和DB server的环境搭建步骤,以及使用Jmeter进行压力测试的入门。

三、软件下载

JDK1.5 http://java.sun.com/javase/downloads/index.jsp

Apache tomcat 5.5 http://tomcat.apache.org/download-55.cgi

jakarta-jmeter-2.2 http://jakarta.apache.org/site/downloads/downloads_jmeter.cgi

sqljdbc_1.1.1501.101_enu.exe http://www.microsoft.com/downloads/details.aspx?FamilyId=6D483869-816A-44CB-9787-A866235EFC7C&displaylang=en

四、JDK安装

下载jdk-1_5_0_09-nb-5_0-win-ml.exe,这接点击默认安装,一般安装至C:\Program Files\Java目录下。

桌面上选择“我的电脑”(右键),高级, 环境变量, 在“系统变量”--->“新建”, 在变量名中输入:CLASSPATH,变量值中输入:C:\Program Files\Java\jdk1.5.0_09\lib\dt.JAR; C:\Program Files\Java\jdk1.5.0_09\lib\TOOLS.JAR; C:\Program Files\Java\jdk1.5.0_09\BIN;再按“新建”,在变量名中输入:JAVA_HOME,变量中输入:C:\Program Files\Java\jdk1.5.0_09;修改PATH变量,添加%JAVA_HOME%/bin;然后确定即可;

五、Apache tomcat安装

下载apache-tomcat-5.5.20.exe直接点击按照默认路径安装,一般安装在C:\Program Files\Apache Software Foundation\Tomcat 5.5路径下即可。

六、Jmeter安装

解压 jakarta-jmeter-2.2.zip文件至c盘,本文解压至C:\jakarta-jmeter-2.2目录下。

桌面上选择“我的电 脑”(右键),高级, 环境变量, 在“系统变量”--->“新建”, 在变量名中输入:JMETER_HOME,变量值中输入:C:\jakarta-jmeter-2.2,再修改CLASSPATH变量,变量值中添加%JMETER_HOME%\lib\ext \ApacheJMeter_core.jar;%JMETER_HOME%\lib\jorphan.jar;%JMETER_HOME%\lib\logkit-1.2.jar; 然后确定即可。

七、安装SQLJDBC驱动

因为需要测试ms sql 2005,所以需要安装SQLJDBC驱动,可以直接下载sqljdbc_1.1.1501.101_enu.exe,点击可以直接解压到 C:\Program Files目录下,然后修改添加CLASSPATH =C:\Program Files\Microsoft SQL Server 2005 JDBC Driver\sqljdbc_1.0\enu\sqljdbc.jar,然后确定即可。

一般还需 要将目录下 的C:\Program Files\Microsoft SQL Server 2005 JDBC Driver\sqljdbc_1.1\enu\auth\x86\sqljdbc_auth.dll拷贝到C:\WINDOWS\system32 ,否则会提示找不到sqljdbc_auth.dll。

另使用JDBC连接MS SQL 2005数据库,需要在数据库安装后设置ICP/IP协议启动,具体如下:

(1)打开SQL Server Configuration Manager;

(2)转到SQL Server 2005 Network Configuration->Protocols for SQLEXPRESS;

(3)将TCP/IP设置为Enabled(启用);

(4)双击TCP/IP项,转到IP Addresses页

(5)IP All中设置TCP Port为1433;

(6)重新启动服务;

如何正确使用 JDBC 驱动程序,可以参见:http://msdn2.microsoft.com/zh-cn/library/ms378526.aspx

至 此,Jmeter测试环境基本安装完成,该环境可以测试web server和DB server(MS SQL2005)。

八、分布式Web server压力测试设置

作为一个纯 java 的gui应用,jmeter 对于cpu和内存的消耗还是很惊人的,所以当需要模拟数以千计的并发用户时,使用单台机器模拟所有的并发用户就有些力不从心,甚至还会引起java内存溢出的错误。不过,jmeter 也可以像 loadrunner 一样通过使用多台机器运行所谓的 agent 来分担 load generator 自身的压力,并借此来获取更大的并发用户数。根据 jmeter官方文档的署名,你需要自己完成这个配置,不过不用担心,这将非常简单 ^_^

1. 在所有期望运行 jmeter 作为 load generator 的机器上安装 jmeter,并确定其中一台机器作为 controller,其他的机器作为 agent。然后运行所有 agent 机器上的jmeter-server.bat文件——假定我们使用两台机器 192.168.0.1 和 192.168.0.2 作为 agent;

2. 在controller 机器的 jmeter 安装目录下找到 bin 目录,再找到 jmeter.properties 这个文件,使用记事本或者其他文字编辑工具打开它;

3. 在打开的文件中查找`“remote_hosts=”这个字符串,你可以找到这样一行“remote_hosts=127.0.0.1”`。其中的 127.0..0.1 表示运行 jmeter agent 的机器,这里需要修改为“remote_hosts=192.168.0.1:1099,192.168.0.2:1099”——其中的 1099为 jmeter 的 controller 和 agent 之间进行通讯的默认 rmi 端口号;

4. 保存文件,并重新启动 controller 机器上的 jmeter.bat,并进入 run -> remote start 菜单项。

在具体实施过程中,需要注意设置好PATH系统环境变量,否则会出现提示找不到rmiregistry.exe,这是RMI注册程序,在JDK的bin目录下。还要注意保证 1099端口没有被禁用。

可以参见:http://www.informit.com/guides/content.asp?g=java&seqNum=274&rl=1

九、Jmeter的分布式测试(优缺点)

下面是分布式测试的使用方法,即使用一台机器控制多台机器给目标机器产生压力。由于Linux和Windows上的方法有些不一样,这里说下Linux下是怎么来配置的。

首先总控的机器我们叫master,产生压力的肉鸡我们叫JmeterServer,待我们测试的系统我们叫Target.

第一步:启动JmeterServer。我们可以找到Jmeter/bin 目录下的jmeter-server这个脚本,运行即可,当然如果你需要调整这个测试负载产生服务器的内存等性能参数的话,我们修改这个脚本jmeter中的内存参数。

第二步 : 修改Master机器上jmeter/bin目录下的jmeter.properties文件,修改remote_hosts=localhost:1099,localhost:2010这个为你自己的JmeterServer的实际IP,如果有多台可以用逗号分开。

第三步 : 启动master jmeter,运行测试脚本的时候选:运行 --> 远程运行 --> 选择IP 或者 运行所有远程。JmeterServer就会运行Master机器上设定的运行脚本了。

十、JDBC Connection Configuration

在测试DB server性能的时候,正确设置数据库URL和JDBC驱动类,一般如下设置:

Database URL : jdbc:sqlserver://192.166.6.37:1433;databaseName=jia_online;

JDBC Drive class:com.microsoft.sqlserver.jdbc.SQLServerDriver

Username和 password是打开数据库的用户名和密码。

注意:请正确安装SQLJDBC驱动。

十一、jmeter指定响应时间需求并校验结果

指定响应时间需求并校验结果

尽管本节内容与Jmeter不是直接相关,但是Jmeter仍旧是指定响应时间需求和校验测试结果这两个负载测试评价任务互相联系的纽带。

在web应用的环境里,响应时间指的是从提交访问请求到等到HTML结果所耗费的时间。从技术的角度看,响应时间也应包括浏览器重绘HTML页面的时间,但是浏览器一般是一块接着一块地显示而不是直接显示完整的整个页面,让人感觉响应时间要少一些。另外,典型的情况是,负载测试工具不会考虑浏览器的重绘时间。因此,在实际的性能测试中,我们将考虑以上描述的情形,如果不能确信,可以在正常的响应时间上加一个固定值,如0.5秒。

以下是一套众所周知的确定相应时间的标准:

1.用户将不会注意到少于0.1秒的延迟

2.少于1秒的延迟不会中断用户的正常思维,但是一些延迟会被用户注意到

3.延迟时间少于10秒,用户会继续等待响应

4.延迟时间超过10秒后,用户将会放弃并开始其他操作

这些阀值很有名并且一般不会改变,因为是关乎人类的感知特性的。所以要根据这些规则来设置响应时间需求,也需要适当调整以适应实际应用。例如,亚马逊公司(Amazon.com)的主页也遵循了以上规则,但是由于更偏重于风格上的一致,所以在响应时间上有一点损失。

乍一看,好像有两种不同的方式来确定相应时间需求:

1.平均响应时间(Averageresponsetime)

2.绝对响应时间(Absoluteresponsetime);即所有的响应时间必须低于某一阀值

指定平均响应时间比较简单一些(straightforward),但是由于数据变化的干扰,这个需求往往难以实现。为什么取样中的20%的响应时间要比平均值高3倍以上呢?请注意,JMeter计算平均响应时间与图形结果监视器中的标准偏差是一致的。

另一方面,对绝对响应时间需求过于苛求是不实际的。如果只有0。5%的取样不能通过测试该怎么办?如果再测一次,又会有很大的变化。幸运的是,使用置信区间(confidenceinterva)分析这种正规的统计方法可以顾及到取样变化的影响。

Joyce /
Published under (CC) BY-NC-SA in categories jmeter  tagged with jmeter