一、JMeter介绍
Jmeter是Apache组织开发的基于Java的压力测试工具,它最初被设计用于Web应用测试,后来扩展到其他测试领域。它可以用于测试各类静态和动态资源,包括但不限于:静态文件、Java小服务程序、CGI 脚本、Java对象、数据库、FTP服务器。
在功能测试方面,JMeter支持通过创建带有断言的脚本来验证你的程序是否返回了你期望的结果。为了最大限度的灵活性,JMeter允许使用正则表达式创建断言。
在性能测试方面,JMeter可以用于对服务器、网络或对象模拟繁重的负载来测试它们的强度或分析不同压力类型下的整体性能。由于性能测试脚本大多情况是基于接口的测试脚本进行调整,节省了很多写脚本的时间。Jmeter的性能的图形分析功能也非常好用。
JMeter支持在Windows(GUI模式)和linux(非GUI模式)上运行。
缺点:它无法验证JS程序,也无法验证页面UI,所以要须要和Selenium配合来完成Web2.0应用的测试。
二、JMeter下载安装
2.1 JMeter安装
下载最新版本的JMeter,解压文件到任意目录(地址:http://jmeter.apache.org/)
安装JDK,配置环境变量JAVA_HOME
注意:
- 不同版本的jmeter对JDK版本的要求有所区别;
- 避免在一个有空格的路径安装JMeter,这将导致远程测试出现问题。
2.2 目录说明
- bin:运行目录,存放着Jmeter的运行日志【jmeter.log】以及各 种命令工具
- docs:文档目录,存放着Jmeter的Api
- extras:提供了对Ant的支持文件,可也用于持续集成
- lib:类库目录,存放着Jmeter的类库,ext存放的插件
- printable_docs:用户手册
注意:
- 如果你想添加其他JAR文件到JMeter的classpath中,你必须复制他们到lib目录中;
- 如果你开发了一个JMeter特定组件或有效的jar文件,复制到lib目录下的ext目录中。
2.3 JMeter插件安装
下载地址: http://jmeter-plugins.org/downloads/all/
插件下载后解压:找到JMeterPlugins-Extras.jar,把JMeterPlugins-Extras.jar放到apache-jmeter-2.12\lib\ext目录。
打开jmeter后,可以在菜单中找到对应目录:
如果有需要,可以添加你想要的插件,重启jmeter即可使用。
三、JMeter运行
进入bin目录运行jmeter.bat启动jmeter
语言切换:选项->选择语言
四、JMeter常用元件
1) 测试计划(Test Plan)
一个测试计划包含所有的控件,属性,变量。一个jmx只有一个测试计划。测试计划中可以定义变量,引入jar包,编辑测试模式等。
右键单击“测试计划”弹出控件菜单:
2) 线程(用户)
虽然有三个添加线程组的选项,名字不一样,创建之后,其界面是完全一样的。
a. setup thread group
测试初始化操作,即线程组开始之前执行的内容,类似于loadrunner(另一种压测工具)的init.可用于执行预测试操作。
b. teardown thread group
测试执行后操作,即线程组执行完成后执行的内容,类似于loadrunner的end.可用于执行测试后动作。
c. 线程组(thread group)
测试执行中操作的线程元件。一个线程组可以看做一个虚拟用户组,线程组中的单个线程可以看作单个虚拟用户。线程组中包含的线程数量在测试执行过程中是不会发生改变的。
- 线程数:线程组中总线程数。
- Ramp-Up Period:启动所有线程所花费的时间。
- 循环次数:表示每个线程执行多少次请求。
3) 取样器(sampler)
取样器(sampler)是测试中向服务器发送请求、记录响应信息、记录响应时间的最小单元。JMeter 原生支持多种不同的sampler,每一种不同类型的 sampler 可以根据设置的参数向服务器发出不同类型的请求。
在Jmeter的所有Sampler中,Java Request Sampler与BeanShell Requst Sampler是两种特殊的可定制的Sampler。
4) 控制器(Logic Controller)
JMeter有两种类型的控制器:取样器(sample)和逻辑控制器(Logic Controller),用这些原件来驱动处理一个测试。
5) 测试片段(Test Fragment)
测试片段元素是控制器上的一个种特殊的线程组,它在测试树上与线程组处于一个层级。它与线程组有所不同,因为它不被执行,除非它是一个模块控制器或者是被控制器所引用时才会被执行。
6) 配置元件(Config Element)
配置元件(config element)用于提供对静态数据配置的支持。CSV Data Set config 可以将本地数据文件形成数据池 (Data Pool),而对应于HTTP Request Sampler和 TCP Request Sampler等类型的配制无件则可以修改 Sampler的默认数据。
例如,HTTP Cookie Manager 可以用于对 HTTP Request Sampler 的 cookie 进行管理。HTTP 请求默认值不会触发Jmeter发送http请求,而只是定义HTTP请求的默认属性。
7) 定时器(Timer)
定时器(Timer)用于操作之间设置等待时间。等待时间是性能测试中常用的控制客户端QPS的手段。类似于LoadRunner里面的“思考时间”。JMeter 定义了Bean Shell Timer、Constant Throughput Timer、固定定时器等不同类型的Timer。
8) 前置处理器(Per Processors)
前置处理器用于在实际的请求发出之前对即将发出的请求进行特殊处理。例如,HTTP URL重写修复符则可以实现URL重写,当RUL中有sessionID 一类的session信息时,可以通过该处理器填充发出请求的实际的sessionID 。
9) 后置处理器(Post Processors)
后置处理器是用于对Sampler 发出请求后得到的服务器响应进行处理。一般用来提取响应中的特定数据(类似LoadRunner测试工具中的关联概念)。例如,XPath Extractor 则可以用于提取响应数据中通过给定XPath 值获得的数据;正则表达式提取器,则可以提取响应数据中通过正则表达式获得的数据。
10) 断言(Assertions)
断言用于检查测试中得到的相应数据等是否符合预期,断言一般用来设置检查点,用以保证性能测试过程中的数据交互是否与预期一致。
11) 监听器(Listener)
用来对测试结果数据进行处理和可视化展示的一系列元件。 图形结果、查看结果树、聚合报告、用表格察看结果都是我们经常用到的元件。
至此,我们已经简单了解了jmeter的基本组成原件,后续会整理每种元件的使用示例。如有需要,也可以参考官方文档:https://jmeter.apache.org/index.html