一,Jmeter简介:
jmeter是啥?
Apache Jmeter是Apache组织的开放源代码的项目,是一个纯java桌面应用,用于压力测试和性能测量,他最初呗设计用于web应用测试但后来扩展到其他测试领域。
jmeter有啥用?
Apache Jmeter可以用于对静态和动态的资源(文件,Sevlet,Perl脚本,java对象,数据库和查询,FTP服务器或是其他资源)的性能进行测试,jmeter可以用于分析不同压力条件下的总体性能情况,也可以使用jmeter提供的图形化界面,分析性能指标或者在高负载情况下测试你的服务器脚本对象
jmeter和loadrunner有啥区别?
loadrunner |
jmeter |
|
安装卸载 |
比较麻烦,文件体积大 |
比较简单,文件体积小 |
脚本录制 |
支持 |
支持 |
参数化 |
支持 |
支持 |
集合点 |
支持 |
支持 |
检查点 |
支持 |
支持 |
关联 |
支持 |
支持 |
多协议 |
支持 |
支持 |
IP欺骗 |
支持 |
不支持 |
多线程 |
支持 |
支持 |
报告生成与导出 |
支持 |
支持 |
测试成本 |
商业软件,成本高 |
开源软件,测试成本低 |
二,jmeter的安装配置
1,安装jdk
2,安装jmeter------省略
注意安装的时候避免在一个有空格的路劲下安装,这将导致远程测试出现问题
3,jmeter启动是在bin目录下运行ApacheJMeter.jar进行启动,或者jmeter.bat(jmeter.sh是在linux启动的脚本)
4,jmeter的bin目录文件:
. jmeter.bat:windows的启动文件
. jmeter.log:日志文件
. jmeter.sh : linux启动文件
. jmeter.properties : 系统配置文件
. jmeter-server.bat : windows分布式测试要用到的服务器配置
. jmeter-serve:linux 分布式测试要用到的服务器配置
5,jmeter其他目录简单说明:
docs : 接口文档目录
extras: 扩展插件目录
lib:所用到的插件目录,里面全是jar包,jmeter会自动在jmeter_home/lib和ext目录下寻找需要的类
licenses:jmeter证书目录
printable_docs 用户使用手册
三:Jmeter功能概要
1,jmeter工具组成部分:
资源生成器:用于生成测试过程中服务器,负载机的资源代码(相当于lr中的VuGen)
用户运行器:通常是一个脚本运行引擎,根据脚本要求模拟指定的用户行为(lr中的Controller)
报表生成器:根据测试中实时的数据生成报表,提供可视化的数据显示方式(lr中的Analysis)
负载发生器:用于产生负载,通常以多线程或是多进程的方式模拟用户行为(lr中的load Generators)
2,其他插件的功能:
Test Plan(测试计划):用来描述一个心梗测试,包含与本次性能测试所有相关的功能,也就说本次性能测试的所有内容是基于一个计划的。(相当于lr中的一个测试场景)
Threads(Users)线程 用户
A.setup thread group: 一种特殊类型的ThreadGroup的,可以用于执行预测试操作,这些线程的行为完全像一个正常的线程组元件,不同的是,这些类型的线程执行测试前进行定期线程组的执行,累死LR的init()
B.teardown thread group: 一种特殊类型的ThreadGroup,可用于执行测试后动作,这些线程的行为完全像一个正常的线程组元件,不用的是,这些类型的线程执行测试结束后执行定期的线程组,类似于lr中的end()
C.tread group(线程组):这个就是我们通常添加运行的线程,可以看做一个虚拟用户组,线程组中的每个线程都可以理解为一个虚拟用户,线程组中包含的线程数量在测试执行过程中是不会发生改变的,类似LR中的action()
3,测试片段(Test Fragment)
测试片段元素是控制器上一个特殊的线程组,他在测试树上与线程组处于一个层级,她与线程组有所不同,因为它不被执行,除非它是一个模块的控制器或者被控制器所引用时才被执行
以下是线程组的8类可执行元件
4,配置元件(Config Element)
配置元件(Config element)用于提供对于静态配置的支持,如CSV Data Set config可以将本地数据文件形成数据池(Data Pool)
5 , 定时器(timer)用于操作之间设置等待时间,等待时间是性能测试中常用的控制客户端QPS的手段,类似于LR里面的思考时间,jmete定义了Bean shell timer,constant Throughout timer,固定定时器等不同于类型的timer
6,前置处理器(Per Processors)用于在实际的请求发出之前对即将发出的请求进行特殊处理,如:HTTP URL 重写修复则可以实现URL重写,当url中有sessionID一类的session信息时,可以通过该处理器填充发出请求的实际的sessionID.
7,后置处理器(post processors)用于对Sampler发出请求后得到的服务器响应进行处理,一般用来提取响应中特定的数据(类似LR测试工具中关联概念)
8,断言(Assertions)断言用于检查测试中得到的相应数据等是否符合预期,断言一般用来设置检查点,用以保证性能测试过程中的数据交互是否与预期一致
9,监听器(Listener)是用来对测试结果数据进行处理和可视化展示的一系列元件,图形结果,查看结果树,聚合报告,都是我们常用的元件。注意:这个监听器可不是用来监听系统资源的元件
10,取样器(sample)取样器是性能测试中向服务器发送请求,记录响应信息,记录响应时间的最小的单元,Jmeter原生支持多种不同的sampler,如:HTTP request sampler,FTP,request sampler,tcp request sampler jdbc request sampler 等,每一种不同类型的sampler 可以根据设置的参数向服务器发出不同类型的请求
11,逻辑控制器:逻辑控制器包含两类元件,一类是用于控制test plan中sampler节点发送请求的逻辑顺序的控制器,常用的有如果(if)控制器,switch controller,runtime controller,循环控制器等,另一类是用来组织可控制sampler节点的,如事物控制器,吞吐量控制器