Jmeter简介
JMeter是Apache基于Java开发的一款开源的测试工具,用于对软件做压力测试。它最初被设计用于Web应用测试,后来扩展到其他测试领域。可以用于测试静态或者动态资源的性能(文件、 SOAP 、Web、Perl脚本、java对象、数据库和查询、ftp服务器或者其他的资源);用于模拟在服务器、网络或者其他对象上附加高负载以测试他们提供服务的受压能力,或者分析他们提供的服务在不同负载条件下的总性能情况
JMeter的工作原理:向服务器提交请求;从服务器获取请求返回的结果
主要功能:
压力测试(性能测试):支持HTTP、FTP服务器和数据库服务器(通过JDBC)
接口测试:支持HTTP服务端接口测试
功能测试:利用badboy录制测试脚本,可以快速的形成测试脚本
回归测试:利用插件架构的优势,可以用于功能和接口的回归测试
JMeter主要特性:
可移植性和精心的GUI设计:100%基于Java
多线程:框架允许通过多个线程并发取样和通过单独的线程组对不同的功能同时取样
扩展性:能够自动扫描其lib/ext子目录下.jar文件中的插件,并且将其装载到内存,让用户通过不同的菜单调用。
支持分布式机制:使用多台机器同时产生负载的机制
可链接的取样器允许无限制的测试能力。
各种负载统计表和可链接的计时器可供选择。
数据分析和可视化插件提供了很好的可扩展性以及个性化。
具有提供动态输入到测试的功能(包括Javascript)。
支持脚本编程的取样器(在1.9.2及以上版本支持BeanShell)。
JMeter安装
安装环境要求
Java版本
JMeter要求充分满足JVM1.3或更高。
操作系统
JMeter可以在当前任何一个已经部署了Java的操作系统上运行。
Unix(Solaris,Linux,etc)
Windows(98,NT,2000,XP,WIN8)
JDK下载安装
【步骤一】安装jdk
1、下载jdk,到官网下载jdk,地址:http://www.oracle.com/technetwork/java/javase/downloads/index.html
2、安装jdk,下载完成后,双击安装即可
JDK环境变量配置
【步骤二】配置jdk环境变量
右键计算机属性->高级系统设置->系统属性->高级->环境变量->添加如下的系统变量:
变量名:JAVA_HOME
变量值:D:\Program Files\Java\jdk1.8.0_92【jdk安装路径】
变量名:CLASSPATH
变量值:
.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;
最后在系统变量“Path”的变量值加上%JAVA_HOME%/bin,记得在前面加上;号
【步骤三】验证jdk
运行cmd->输入java -version->显示java版本就表示jdk安装成功
JMeter下载安装
【步骤一】安装Jmeter
1、下载Jmeter,官网地址:http://jmeter.apache.org/download_jmeter.cgi
2、解压Jmeter安装包,JMeter解压之后即可使用,无需安装。
JMeter配置
【步骤二】配置Jmeter环境变量
按下面变量名和变量值配置Jmeter系统环境变量:
新增:
【变量名】JMETER_HOME
【变量值】E:\apache-jmeter-5.0(jmeter解压路径)
修改:
【变量名】 CLASSPATH
【变量值】
;%JMETER_HOME%/lib/ext/ApacheJMeter_core.jar;%JMETER_HOME%/lib/jorphan.jar;%JMETER_HOME%/lib/logkit-2.0.jar
JMeter启动
【步骤三】启动Jmeter
双击Jmeter解压路径的bin目录下面的【jmeter.bat】即可启动
JMeter常用组件
测试计划(Test Plan)
线程组(Threads)
逻辑控制器(Logic controller)
配置元件(Config element)
定时器(Timer)
前置处理器(Per processors)
取样器(Samples)
后置处理器(post processors)
断言(Assertions)
监听器(Listener)
测试计划(Test Plan)
测试计划在软件测试项目中是用于管理一个软件项目的测试资源配置、时间表以及测试用例等。一般测试计划中也包括风险评估,计划开始和结束的条件等。
JMeter中的测试计划,实际上是一个或一组测试用例。可以将线程组(Thread Group)理解为一个测试用例,在一个测试计划中可以有多个测试线程组。它是其它 JMeter 测试元件的容器。最简单的测试计划包括:线程组、取样器、监听器等。
线程组(Threads)
线程组是任何一个测试计划的开始点。所有的控制器和取样器都是在某个线程组下,其它的配置元件,如:监听器,可能会被直接放到测试计划目录下。
顾名思义,线程组元件控制JMeter执行你的测试计划时候使用的线程数量。是用来模拟用户并发的组件。右键点击测试计划,选择添加,在弹出的菜单中,选择线程组,则会添加一个线程组。如下图所示:
逻辑控制器(Logic controller)
逻辑控制器可以组织取样器,做出复杂的测试用的HTTP请求,以此满足测试需要。逻辑控制器如下所示:图3-逻辑控制器
配置元件(Config element)
配置元件,同其名字一样,只是配置一些默认的属性和信息,供取样器获取所需要的各种配置信息,它不向服务器发送任何的请求。配置元件仅对其所在的测试树分支有效。例如,HTTP请求默认值设置了服务器的名称,那么它所在的测试分支内的HTTP请求的服务器名称都是这个服务器,HTTP请求仅设置路径就可以访问网页了。常用的配置如下图框中所示元件:
定时器(Timer)
定时器设置请求间的时间间隔。
前置处理器(Per processors)
前置处理器一般用来在发出请求(Request)前进行特殊的处理。例如:HTTP URL重写修复符则可以实现URL重写,当RUL中有sessionID 一类的session信息时,可以通过该处理器填充发出请求的实际的sessionID 。
取样器(Samples)
Sampler(取样器)主要的执行组件。每一个取样器都可以被监听器监听,并生成测试结果。采样器也就是发送一个具体的请求到指定服务器,等待服务器的请求。通常情况下,采样器会按照其在测试树中的顺序去执行,但是也会根据逻辑控制器来改变运行的次数和顺序。取样器列表如下所示:
后置处理器(post processors)
后置处理器一般用来对采样器发出请求后得到的服务器响应(Response)进行处理,一般用来提取响应中的特定数据。例如,XPath Extractor:可以提取响应数据中通过给定XPath 值获得的数据;正则表达式提取器:可以利用正则表达式方便的提取测试时所需的数据,用以参数传递和断言等。后置处理器列表如下:
断言(Assertions)
断言,判断取样器是否正常工作,判断请求响应是否正确,判断结果是否符合预期。
监听器(Listener)
监听器主要用于收集整理测试结果,并将测试结果数据进行处理并展示出来,可以指定格式生成XML、CSV等形式的文件。查看结果树,用表格查看结果,图形结果...聚合报告等,都是我们经常会用到的元件。
组件执行顺序
在同一作用域名范围内(不考虑逻辑控制器),测试计划中的元件按照如下顺序执行。
(1)配置元件(config elements )
(2)前置处理程序(Per-processors)
(3)定时器(timers )
(4)取样器(Sampler)
(5)后置处理程序(Post-processors) (除非Sampler 得到的返回结果为空)
(6)断言(Assertions)(除非Sampler 得到的返回结果为空)
(7)监听器(Listeners)(除非Sampler 得到的返回结果为空)