Jmeter初探
前言
Github:https://github.com/HealerJean
转:https://www.cnblogs.com/imyalost/p/5790268.html
转:https://www.dandelioncloud.cn/article/details/1514848965496487937
1、简介
JMeter
也称为“Apache JMeter
”,它是一个开源的,100%基于Java的应用程序,带有图形界面。 它旨在分析和衡量Web
应用程序和各种服务的性能和负载功能行为。
JMeter
主要用于测试Web
应用程序或FTP
应用程序,但目前,它适用于功能测试,JDBC
数据库连接,Web
服务,通用TCP
连接和OS
本机进程。 您可以执行各种测试活动,如性能,负载,压力,回归和功能测试,以便针对您的Web
服务器获得准确的性能指标。
1.1、优点
1、开源工具,可扩展性非常好
2、高可扩展性,用户可自定义调试相关模块代码
3、精心简单的GUI设计,小巧灵活
4、完全的可移植性和100%纯java
5、完全swing和轻量组件支持(预编译的HAR使用javax.swing.*)包
6、完全多线程框架,允许通过多个线程并发取样以及单独的线程对不同的功能同时取样
7、支持脚本取样器
1.2、组成部分
1.2.1、负载发生器:
产生负载,多进程或多线程模拟用户行为
1.2.2、用户运行器:
脚本运行引擎,用户运行器附加在进程或线程上,根据脚本模拟指定的用户行为
1.2.3、资源生成器:
生成测试过程中服务器、负载机的资源数据
1.2.4、报表生成器:
根据测试中获得的数据生成报表,提供可视化的数据显示方式·
1.3、主要概念
1.3.1、测试计划(test
plan
)
描述一个性能测试,包含本次测试所有相关功能
1.3.2、threads
(users
)线程
以下两个线程组,举个例子:
loadrunner
的脚本除了action
里是真正的脚本核心内容,还有初始化“环境”的初始化脚本和测试完毕后对应的清除信息的脚本块,与其对应⬤
Setup thread group
: 一种特殊类型的线程,可用于执行预测试操作。即执行测试前进行定期线程组的执行⬤
Teardown thread group
:一种特殊类型的线程,可用于执行测试后动作。即执行测试结束后执行定期的线程组
Thread group
:通常添加使用的线程,一般一个线程组可看做一个虚拟用户组,其中每个线程为一个虚拟用户
1.3.3、测试片段(test fragment
)
一种特殊的线程组,在测试树上与线程组一个层级,但是它不被执行,除非它是一个模块控制器或者被控制器所引用时才会被执行
1.3.4、控制器
Jmeter
有 2 种控制器:取样器(sampler
)和逻辑控制器(Logic Controller
)作用:用这些原件驱动处理一个测试
sampler
是性能测试中向服务器发送请求,记录响应信息,记录响应时间的最小单元,JMeter
原生支持多种不同的sampler
如 HTTP
Request
Sampler
、 FTP
Request
Sampler
、TCP
Request
Sampler
、JDBC
Request
Sampler
等
每一种不同类型的sampler
可以根据设置的参数向服务器发出不同类型的请求。Java
Request
Sampler
和 Beanshell
Request
Sampler
是两种特殊的可定制的 Sampler
(暂不讨论)
1.3.5、监听器
对测试结果进行处理和可视化展示的一系列组件,常用的有图形结果、查看结果树、聚合报告等
1.3.6、配置原件(Config Element
)
用于提供对静态数据配置的支持。
⬤
CSV Date Set Config
可以将本地数据文件形成数据池(Date Pool
),⬤ 对应于
HTTP
Request
Configuration
和TCP
Request
Sample
等类型的Configuration
元件则可以修改这些Sample
的默认数据等
1.3.7、定时器(Time)
用于操作之间设置等待时间,等待时间使性能测试中常用的控制客户端
QPS
的手段,jmeter
定义了Constant
Times
、
Constant
Throughput
Times
、Guass
Ramdon
Times
等不同类型的Times
1.3.8、断言(Assertions
)
用于检查测试中得到的响应数据等是否符合预期,
Assertions
一般用来设置检查点,用以保证性能测试过程中的数据交互与预期一致
1.3.9、前处理器(Pre Processors
)
用于在实际请求发出之前对即将发出的请求进行特殊处理。
例如:
Count
处理器可以实现自增操作,自增后生成的的数据可以被将要发出的请求使用,而HTTP
URL
Re
—Writing
Modifier
处理器则可以实现URL
重写,当URL
中有sessionID
一类的session
信息时,可以通过该处理器填充发出请求实际的sessionID
。
1.3.10、后处理器(Post
Processors
)
用于对
Sampler
发出请求后得到的服务器响应进行处理。一般用来提取响应中的特定数据(类似loadrunner
中的关联)。例如:
Regular
Expression
Extractor
用于提取响应数据中匹配某正则表达式的数据段,并将其填充在参数中,Xpath
Extractor
则可以用于提取响应数据中通过给定Xpath
值获得的数据。。