Jmeter 介绍
1. Jmeter 是什么?
1.1 概念
Jmeter:是Apche公司使用Java平台开发的一款测试工具。
作用:
1 | 接口测试 |
优点:
1 | 开源、免费 |
1.5 缺点
不支持IP欺骗
不支持前端测试。使用JMeter无法验证JS程序,也无法验证页面UI,所以要须要和Selenium配合来完成
Web2.0应用的测试
1.6 总结
1 | JMeter概念 |
2. 了解:配置 JMeter 运行环境( JDK 、 JRE 、 JVM )
2.1 JDK
JDK概念:java开发工具包,程序员使用。包含JRE和JVM。
1 | 下载方式: |
2.2 JRE
JRE概念:JAVA程序运行环境,包含JVM和JVM运行时所需要的资源。
1 | 下载方式: |
2.3 JVM
JVM概念:Java虚拟机
1 | 无需下载,JDK或者JRE包含。 |
2.4 JAVA 跨平台原理【扩展】
总结: 对于测试人员,我们要记住,如果使用JMeter,必须要安装JDK或者JRE。
Jmeter 工具安装
2. Jmeter 下载与安装
2.1 官网下载地址 :
http://jmeter.apache.org/download_jmeter.cgi
下载示意图:
注意:下载后,解压文件到任意目录,避免在一个有空格的路径安装Jmeter,这将导致远程测试出现问题
2.2 启动 JMeter 的两种方式:
进入bin目录
1 | 1. 双击 ApacheJMeter.jar文件; |
3 Jmeter 常用目录文件介绍
3.1 Bin 目录
1 | Jmeter.bat:windows系统中JMeter的启动文件 |
3.2 docs 目录 ( 了解开源 )
docs:是JMeter的java Doc,可打开api\index.html页面来查看;
3.3 printable_docs 目录
printable_docs的usermanual子目录下的内容是JMeter的用户手册文档,其中usermanual 下 component_reference.html 是最常用到的核心元件帮助文档。
注意: lib 文件夹也是一个常用文件夹,使用时再讲。
Jmeter 工具功能界面布局
熟悉测试计划面板
1. 主界面布局
JMeter的主界面布局分为标题栏、菜单栏、工具栏、树形标签栏和内容栏
1 | 标题栏:主要显示计划信息及JMeter版本。 |
2. 使用 JMeter 进行接口测试
遗留的问题:
1 | 1. 需求对我们学院查询执行 100 次,如何去做? |
使用 JMeter 的解决方案
1 | 1. 添加【测试计划】 |
3. Test Plan( 测试计划 )
作用:
1 | 1. 本次测试所需要的【组件】都是基于测试计划添加; |
组件:完成指定功能代码段的封装;
选项:独立运行每个线程组
进程:是每个正在运行的应用程序。
线程:按照进程的指令去执行指定的代码。
线程组(多线程):多个线程的组合。
线程组(多线程)的执行顺序是并行的。
勾选:让本次测试计划中所有线程组保持从上到下顺序执行
并发执行:多个线程同时进行 特点:执行结束的顺序和启动顺序不一定一致
顺序执行:按照线程的启动顺序挨个执行
默认情况下,线程组中的线程是并发执行的,每一个线程都要执行组内的http请求
Add directory or jar to classpath :
1 | 加载第三方jar包;比如:测试数据库时使用,加载数据库驱动jar包。 |
4. Threads(User) 线程组 【重点】
1 | 1) thread group(线程组) |
4.1 thread group( 线程组 )
作用 : 添加测试中使用的大多数组件
线程属性
1 | 线程数:虚拟用户数 |
调度器配置
持续时间(秒):设置脚本压测持续时间
启动延迟(秒):启动延迟时间
提示:为了理解setup thread、teardown thread两个线程组我们结合案例理解下
4.2 案例
1 | 通过thread group、setup thread group、teardown thread group 三个线程组去访问 |
效果图:
- 需求组件:
1 | 基于测试计划添加【线程组】 |
组件设置细节:
1 | 测试计划勾选独立运行线程组 |
4.3 组件详解
HTTP请求
察看结果树
4.3 - HTTP 请求
作用 :
模拟前端或第三方软件向服务器发送请求;
设置请求时的方法和参数数据;
参数详解:
名称:本属性用于标识一个取样器,建议使用一个有意义的名称。
服务器名称或IP :HTTP请求发送的目标服务器名称或IP地址。
端口号:目标服务器的端口号,默认值为 80 。
协议:向目标服务器发送HTTP请求时的协议,可以是http或者是https ,默认值为http 。
方法:发送HTTP请求的方法,可用方法包括GET、POST、PUT、DELETE。
Content encoding :内容的编码方式,默认值为iso8859;一般设置【UTF-8】
路径:目标URL路径(不包括服务器地址和端口)
同请求一起发送参数:请求时需要传递参数,如:学院资源list查询
http://127.0.0.1:8000/api/departments/?$dep_id_list=T01,T02,T03
参数名称:【$dep_id_list】
参数值:T01,T02,T03
Body Data 选项作用:
1 | 1.新增或更新时需要传递JSON报文;如学院新增是的JSON报文填写位置: |
【注意】:新增和更新时传入报文也需要设置Content-Type:application/json
告诉服务器我传的数据格式为JSON格式;
设置地点:配置元件–>HTTP信息头管理器(用到的时候我们在讲解)
HTTP 请求总结:
接口完整请求地址
JSON报文存放地址
设置默认请求数据格式
4.3 察看结果树
作用:
1.查看请求服务器时的请求信息;
2.查看服务器响应数据;
3.记录信息到指定文件;
说明:
- 文件名:存放服务器响应后的状态信息; 如:e:\查询所有response.txt
- 取样结果:服务器响应的信息头信息;比如:响应代码,响应数据大小
- 请求:查看向服务器请求时的信息;比如:请求地址、方法、数据等
- 响应数据:查看服务器响应的数据;比如:获取资源时,返回的JSON数据
察看结果树总结:
查看请求
查看响应
存储请求状态信息
4.4 线程组总结:
1 | setup thread group:一种特殊线程组,测试计划运行之前首先执行,一般做初始化操作 |
元件
概念:相同类似功能组件的集合称之为元件
逻辑控制器
配置元件
定时器
前置处理器
Sampler
后置处理器
断言
监听器
元件结论:
只学重要的、常用的
Jmeter 各元件中需要掌握元件
整理出各大元件常用的重点组件
1. 配置元件( config Element )
1 | 1) CSV Data Set Config |
2. 前置处理器( Per Processors )
- 用户参数
3. 定时器( Timer )
1 | 1) Synchronizing Timer |
4. 取样器( sample )
1 | 1) HTTP请求 |
5. 后置处理器( Post Processors )
1) 正则表达式提取器
1 | 2) XPath Extractor |
6. 断言( Assertions )
1) 响应断言
6. 监听器( Listener )
1) 察看结果树
2) 聚合报告
3) 断言结果
8. 逻辑控制器
1 | 1) 如果(If)控制器 |
总结:正常来说,应该开始按照顺序一个组件一个组件的进行讲解。
问题:每个组件都不能独立执行。都需要多个组件进行配合,才能够解决实际问题。
解决方案:按照JMeter主要解决的问题点来讲解组件。
Jmeter 工具核心知识点
目标
参数化:数据分离
数据库:连接数据库获取数据
关联:动态获取数据
集合点:掌握如何基于Jmeter并发测试
断言:判断自动化脚本执行成功或失败
Jmeter 参数化
学习掌握Jmeter中常用参数化方式
1. 为什么要参数化?
1.1 需求新增 10 条数据
学院-新增
1) 请求方法:POST
1 | 2) 请求地址:http://127.0.0.1:8000/api/departments/ |
问题 :
- 键所对应的值都是写死的,只能手动更改
- 无法解决新增大数量( 1000 条)的问题
2. 什么是参数化?
概念:根据需求动态获取数据并进行赋值的过程
在 Jmeter 中参数化常用方式:
1 | CSV Data Set Config |
1. CSV Data Set Config (数据集配置)
概念:一种从外部读取数据功能的组件
1.1 实施方案分析
1. 基于测试计划->线程组
- 基于线程组->配置元件->CSV Data Set Config
- 基于线程组->Sampler->HTTP请求
- 基于测试计划->HTTP信息头管理器
- 基于测试计划->监听器->察看结果树
1.2 组件要点分析
1. 线程组:循环次数 10
- CSV Data Set Config 读取变量配置
- HTTP请求:Body Data填写(JSON报文) 方法(POST)
- 参数化引用格式:${参数名} 如:${dep_id}
- HTTP信息头管理器:Content-Type:application/json;charset=utf-8
1.3 CSV Data Set Config 参数配置图
#####
- Filename:文件路径+文件名+后缀名 如:d:/a.txt;
- File Encoding:文件编译字符编码,一般设置utf-8;
- Vaiable Names:读取参数后保存的变量名称;
- Delimiter:如文件中使用的是逗号分隔,则填写逗号;如使用的是TAB,则填写\t;
1.4 HTTP 信息头管理器 参数配置图
作用:告诉服务器请求的数据格式
- Content-Type:指定请求信息格式-类型名称
- application/json:指定请求信息为-JSON格式
- charset=utf-8:字符编码
1.5 CSV Data Set Config- 总结:
1. 参数化概念
- CSV Data Set Config 配置参数设置
- 参数化引用格式
- HTTP请求
- HTTP信息头管理器作用与设置
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 1210331079@qq.com