首页 > 代码库 > Jmeter学习(一)—Jmeter使用入门

Jmeter学习(一)—Jmeter使用入门

一 Jmeter安装

1 安装并配置JDK

2 登录 http://jmeter.apache.org/download_jmeter.cgi ,根据自己平台,下载对应文件

3 解压后即可直接运行 /bin/jmeter.bat

  注意:打开的时候会有两个窗口,JMeter的命令窗口和JMeter的图形操作界面,不可以关闭命令窗口。

二 安装插件管理器

1 插件下载地址: http://jmeter-plugins.org/downloads/all/

2 下载插件管理器后放到 apache-jmeter-xxx\lib\ext目录,然后重启Jmeter。

三 Jmeter的目录结构

1 /bin 目录(常用文件介绍)

  examples:目录下包含Jmeter使用实例

  ApacheJMeter.jar:JMeter源码包

  jmeter.bat:windows下启动文件

  jmeter.sh:Linux下启动文件

  jmeter.log:Jmeter运行日志文件

  jmeter.properties:Jmeter配置文件

  jmeter-server.bat:windows下启动负载生成器服务文件

  jmeter-server:Linux下启动负载生成器文件

2 /docs目录——Jmeter帮助文档

3 /extras目录——提供了对Ant的支持文件,可也用于持续集成

4 /lib目录——存放Jmeter依赖的jar包,同时安装插件也放于此目录

5 /licenses目录——软件许可文件,不用管

6 /printable_docs目录——Jmeter用户手册

四 Jmeter测试组件

1 Threads (Users):

线程用户。虽然有三个添加线程组的选项,名字不一样, 创建之后,其界面是完全一样的。之前的版本只有一个线程组的名字。现在多一个setUp theread Group 与terDown Thread Group 

1)setup thread group  

一种特殊类型的ThreadGroup的,可用于执行预测试操作。这些线程的行为完全像一个正常的线程组元件。不同的是,这些类型的线程执行测试前进行定期线程组的执行。

2)teardown thread group

一种特殊类型的ThreadGroup的,可用于执行测试后动作。这些线程的行为完全像一个正常的线程组元件。不同的是,这些类型的线程执行测试结束后执行定期的线程组。

可能你还是不太理他们与普通的线程组有什么不同。 如果你用过junit,想必你不会对setup ,teardown这2个字眼陌生。 即时每用过,也没关系。 熟悉loadrunner的应该知道,loadrunner的脚本除了action里是真正的脚本核心内容,还有初始化“环境”的初始化脚本和测试完毕后对应的清除信息的脚本块。 那么这里 setup thread group 和 teardown thread group 就是分别指这两部分。  其实从本质上来看,他们并没有什么不同。

3)thread group(线程组)

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

2 Test Fragment:

测试片段是在2.5版本之后新加的一个选项。测试片段元素是控制器上的一个种特殊的线程组,它在测试树上与线程组处于一个层级。它与线程组有所不同,因为它不被执行,除非它是一个模块控制器或者是被控制器所引用时才会被执行。

3 控制器:

JMeter有两种类型的控制器:取样器(sample)和逻辑控制器(Logic Controller),用这些元件来驱动处理一个测试。

1) Sample

取样器,是性能测试中向服务器发送请求,记录响应信息,记录响应时间的最小单元,JMeter 原生支持多种不同的sampler ,如 HTTP Request Sampler 、 FTP  Request Sample 、TCP  Request Sample 、JDBC Request Sampler 等,每一种不同类型的 sampler 可以根据设置的参数向服务器发出不同类型的请求。(在jmeter 的所有sampler 中,Java Request Sampler 和 Beanshell Request Sampler 是两种特殊的可定制的 Sampler ,后面会深入讨论。)

2)逻辑控制器

逻辑控制器,包括两类无件,一类是用于控制test plan 中 sampler 节点发送请求的逻辑顺序的控制器,常用的有 如果(If)控制器 、switch Controller 、Runtime Controller、循环控制器等。另一类是用来组织可控制 sampler 来节点的,如 事务控制器、吞吐量控制器。

4 配置元件:

config element用于提供对静态数据配置的支持。和Sample组件一起工作,主要用来配置Sample如何来发起请求访问服务器,这个东西的主要特点是可以把一些Sample的共同配置放在一个元素里面方便管理,配置单元是有作用域的。作用域和树的那个关系一样越是上级节点的作用域越大,越是接近叶子节点的作用域就越小,可以复写上级作用域的配置。CSV Data Set config 可以将本地数据文件形成数据池(Data Pool),而对应于HTTP Request Sampler和 TCP Request Sampler等类型的配置元件则可以修改Sampler的默认数据。(例如,HTTP Cookie Manager 可以用于对 HTTP Request Sampler 的cookie 进行管理)

5 定时器:

这个主要是用来调节(线程组),控制线程每次运行测试逻辑(比如说:发出请求)的时间间隔。当然这个下面还有很多类型的定时器,他们主要功能就是调节时间间隔,但个个组件之间的策略有很大不同。Timer用于操作之间设置等待时间,等待时间是性能测试中常用的控制客户端QPS的手端。类似于LoadRunner里面的“思考时间”。JMeter 定义了Bean Shell Timer、Constant Throughput Timer、固定定时器等不同类型的Timer。

6 前置处理器:

用于在实际的请求发出之前对即将发出的请求进行特殊处理。例如,HTTP URL重写修复符则可以实现URL重写,当RUL中有sessionID 一类的session信息时,可以通过该处理器填充发出请求的实际的sessionID 。

7 后置处理器:

用于对Sampler 发出请求后得到的服务器响应进行处理。一般用来提取响应中的特定数据(类似LoadRunner测试工具中的关联概念)。例如,XPath  Extractor 则可以用于提取响应数据中通过给定XPath 值获得的数据。

8 断言:

用于检查测试中得到的相应数据等是否符合预期,断言一般用来设置检查点,用以保证性能测试过程中的数据交互是否与预期一致。

9 监听器:

这个监听器可不是用来监听系统资源的元件。他是伴随着Jemeter测试的运行而从中抓取运行期间的数据的一个组件,对测试结果数据进行处理和可视化展示的一系列元件。经常使用的是聚合报告组件,从里面可以统计到测试的TPS,响应时间等关键测试数据。

 

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

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

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

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

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

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

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

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

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

五 工作台

在测试中我们可能需要暂时更改一些组件,可以把一些需要更改的组件保存在工作台中,测试完成后再恢复,但是切记:不能退出jmeter,一旦退出jmeter,工作台中的内容就会消失。

Jmeter学习(一)—Jmeter使用入门