Jmeter的简介
- Jmeter是一款开源桌面应用软件,可用于模拟用户负载完成性能测试工作。Jmeter可对Web应用进行测试或录制,可实现接口的测试。
- Jmeter的基本原理是建立一个线程池,多线程运行取样器产生大量负载,在运行过程中通过断言来判定结果的正确性,通过监听器来记录执行测试的结果。
- Jmeter由线程组、取样器、前置/后置处理器、配置元件、控制器、定时器以及监听器组成。
- Jmeter开源库起于2000年,它能够对HTTP和FTP服务器进行压力和性能测试,也可以对任何数据库进行测试(通过JDBC控件)。
- Jmeter是java工程,100%的可移植性,完全Swing和轻量组件支持包,完全多线程框架允许通过多个线程并发取样和通过单独线程组对不同功能同时取样。
- Jmeter具备高扩展性,支持脚本编程(BeanShell)。
Jmeter–采样器(Samplers)
- 采样器告诉Jmeter发送请求给服务器同时等待服务器的response响应。采样器是按照出现在脚本树的顺序进行执行,控制器可用于修改采样器的重复次数。
- Jmeter-采样器包含:
1、FTP请求
2、HTTP请求
3、JDBC(Java DataBase Connectivity)请求
4、Java Object请求
5、JMS(Java Message Service)请求
6、Junit Test请求
7、LDAP(Lightweight Directory Access Protocol 轻量目录访问协议)请求
8、Mail请求
9、OS Process请求
10、TCP请求
11、JSR223
12、BeanShell
13、WebSocket请求(需要导入第三方库)
采样器(Samplers) – FTP请求
FTP请求控件是提供我们实现发送一个FTP下载文件或上传文件请求到FTP服务器。但如果想实现发送多个相同请求到同一个FTP服务,我们可 以采用【FTP Request Defaults】控件配置相同属性值,这样在FTP 请求控件里就无需每一次都填写相同的内容。
创建一个FTP测试计划:需要用到的控件 – Thread Group、FTP Request、FTP Request Defaults、View Results in Table、View Results in Tree
.
1、添加线程组(Thread Group):创建你需要的虚拟用户数、所需要的多少用户发送所需频率的请求以及所需的发送请求数。选择【测试计划】-【添加】-【线程(用户)】-【线程组】
[注]:在线程组控件中Ramp-Up Period属性值保留默认值为0秒,这个属性实现在启动每个用户之间延迟多少秒。比如:你在Ramp-Up Period处设置了5秒,则Jmeter完成所有虚拟用户启动的时间为5秒。若你设置的虚拟用户为10和Ramp-Up Period处设置了5秒,那么每个用户启动延迟时间为 10 users / 5s = 2users per second。若Ramp-Up Period设置为0秒,那么Jmeter就会立即启动所有的虚拟用户。
2、添加FTP默认请求(FTP Request Defaults)控件:创建FTP默认请求控件设置FTP请求的默认属性值。选择【线程组】—【添加】—【配置元件】—【FTP默认请求(FTP Request Defaults)】,如下图
其中Remote File属性是从FTP服务器下载的文件路径。Local File属性是下载保存到本地的绝对路径。
get(RETR)实现下载功能;put(STOR)实现上传功能。
3、添加FTP请求控件(FTP Request):选择【线程组】—【添加】—【采样器(Samplers)】—【FTP 请求(FTP Request)】。
在FTP请求控件中需输入FTP服务的登陆账户及密码。
4、添加监听控件—用表格察看结果控件、察看结果树控件
其中用表格察看结果控件负责将FTP请求的所有结果存储在文件中,并显示数据的可视化模型。选择【线程组】—【添加】—【监听器】—【用表格察看结果】。
察看结果树控件显示所有的采样请求的响应结果。
采样器(Samplers)–HTTP请求
HTTP请求支持我们发送一个HTTP/HTTPS
请求到后台服务,通过察看结果树检测请求的response响应结果。
HTTP请求包括以下配置元件:HTTP Request Defaults(请求默认值)、HTTP Authorization Manager(HTTP授权管理器)、HTTP Cache Manager(HTTP缓存管理器)、HTTP Cookie Manager(HTTP Cookie 管理器)、HTTP Header Manager(HTTP信息头管理器)
。
1、HTTP Request Defaults(请求默认值)
:用于设置HTTP Request中所有的默认值,可设置的内容有HTTP请求的host、端口、请求路径、协议、请求参数以及客户端的实现值等;
2、HTTP Authorization Manager(HTTP授权管理器)
:设置用户登陆信息用于需认证页面做登陆认证;
3、HTTP Cache Manager(HTTP缓存管理器)
:管理HTTP请求中添加的缓存,实现模拟浏览器缓存特性。HTTP Cache Manager中最多可缓存5000个;
4、HTTP Cookie Manager(HTTP Cookie 管理器)
:Cookie管理器有两个功能—像web浏览器一样存储和发送Cookie信息、在Cookie管理器中添加Cookie,这样Cookie将可被Jmeter的线程共享使用;
5、HTTP Header Manager(HTTP信息头管理器)
:用于创建Header信息,在触发HTTP Request的时候,Jmeter会自动将HTTP Header Manager创建的头信息和HTTP请求一起发送到请求服务器。
HTTP请求采样器控件如下图
在HTTP请求控件里协议默认为HTTP,可支持HTTP、HTTPS以及FILE三种。其中Jmeter默认的SSL协议级别是TLS,如果后台服务需要用到SSLv3的话,需要在Jmeter Property配置文件里修改:
https.default.protocol=SSLv3
HTTP请求方法支持GET、POST、 HEAD、 TRACE、 OPTIONS、 PUT、 DELETE、PATCH、COPY、 LOCK、 MKCOL、 MOVE、 PROPFIND、 PROPPATCH、 UNLOCK、REPORT、MKCALENDAR、SEARCH
。
GET、POST、DELETE、PUT、PATCH请求方法的工作原理相似,其中只有POST方法支持多部件请求(multipart/form-data)和文件上传。
在POST有使用multipart/form-data
或application/x-www-form-urlencoded
post请求。
multipart/form-data和post方法的不同于请求头和请求体。
multipart/form-data的请求头必须包含一个特殊Content-Tpye,且其值必须为multipart/form-data。
multipart/form-data的请求体是字符串,与post不同的是multipart/form-data的请求体是一个构造体。
在HTTP请求中有三种传参方式:1、新增参数;2、创建消息体数据;3、文件上传
。
在HTTP请求中Jmeter提供了HTTP请求重试的设置
,默认重试次数为0
.在bin/jmeter.properties
文件里通过修改httpclient4.retrycount
的值。如果需要设置所有的请求都有重试,可修改
httpclient4.request_sent_retry_enabled=true
采样器(Samplers)–JDBC请求
JDBC请求采样器提供了我们发送一个SQL 查询到数据库获取结果。在创建JDBC Request之前,要创建一个JDBC Connection Confuguration 的配置器。JDBC Connection Confuguration配置器的主要作用是提供连接数据库的设置项。在使用JDBC采样器之前要在/lib/路径下导入mysql-connector-java的jar包。
关于BDCP的相关参数设置,可以参考链接
https://commons.apache.org/proper/commons-dbcp/configuration.html
Variable Name for created pool:设置用于连接绑定的变量名称
Max Number of Connections:设置在连接池中的允许最大连接数。一般默认值为0,表示每个线程拥有自己的池且只有一个连接数。要注意的是线程之间的连接不是共享的。如果需要设置共享,那么将值设置为与线程数相同,这样每个线程之间就不会等待。
Max Wait (ms):设置连接过程中的超时时间。
Time Between Eviction Runs (ms):设置池中线程闲置等待时间,超过等待时间自动回收。
Validation Query:根据不同的db选择对应的类型。
hsqldb: select 1 from \ INFORMATION_SCHEMA.SYSTEM_USERS
Oracle: select 1 from dual
DB2: select 1 from sysibm.sysdummy1
MySQL: select 1
Microsoft SQL Server: select 1
PostgreSQL: select 1
…
Database URL:输入数据库连接字符串。如mysql连接输入为
Jdbc:mysql://ipoftheserver:3306/databasename
JDBC Driver class
Hsqldb: org.hsqldb.jdbc.JDBCDriver
Oracle: oracle.jdbc.OracleDriver
DB2: com.ibm.db2.jcc.DB2Driver
MySQL: com.mysql.jdbc.Driver
Microsoft SQL Server: com.microdoft.sqlserver.jdbc.SQLServerDriver \ com.microdoft.jdbc.sqlserver.SQLServerDriver
JDBC Request采样器
其中Pool Name为JDBC Configuration里设置的Pool Name。
后续持续更新