文章目录
- 一、jmeter简介及安装
- 1. 简介
- 2. 安装
- 二、jmeter设置语言
- 三、jmeter文件路径说明
- 四、编写jmeter脚本
- 五、乱码的处理:
- 1. 请求内容出现乱码处理方法
- 2. 响应内容出现乱码处理方法
- 六、写脚本方法扩展
- 录制脚本:
- 七、 脚本功能增强
一、jmeter简介及安装
1. 简介
- Apache 托管的开源java工具
- 接口测试、自动化测试、性能测试
- java要运行依赖什么?
- jre java 运行环境
- jdk java开发工具包,一般是包含jre
- 我们课程中,除了kyj项目是jdk1.7 其余所有地方用到jdk的都是1.8
- 查看jdk版本
java -version
正常返回jdk版本,但是不代表你的系统就配置JAVA_HOME环境变量- JAVA_HOME
2. 安装
- 解压zip包,进入解压后文件夹\bin文件夹中,双击 jmeter.bat,启动图形界面GUI
- mac ./jmeter.sh
- 1、不需要配置JMETER_HOME环境变量
- 原因: 如果配置了,那么你的电脑就有且仅能运行一个jmeter
- 配置环境变量,可能会导致,直接闪退
- 直接闪退原因:
- 配置了环境变量
- 没有安装jdk
- 包少了文件
- 直接闪退原因:
- 2、一台电脑,理论上可以启动任意多个不同版本jmeter
二、jmeter设置语言
- jmeter.properties
- 以.properties结尾的文件,都是jmeter的属性配置文件
- 最关键的 属性 配置文件 jmeter.properties
- 修改属性配置文件中的信息,一定要重启才能生效
- gui中 options > choose language > chinese simplied
- 临时切换gui界面语言
- 一旦关闭gui,就会被还原
三、jmeter文件路径说明
-
bin 启动 配置文件
-
lib jar包 工具自身jar, 以及第三方jar
- ext 第三方插件管理
-
docs 文档 用于jmeter进行二次开发调用的api 接口文档
-
printable_docs 离线帮助文档
-
extras 扩展 CICD 性能测试持续集成
-
gui界面
- 一切都在右键掌握之中
- 测试计划: 工作中测试计划: 什么时间什么人做什么事情
- 万物的根, 脚本的根文件
- 元件
- 线程组: 接口、自动化测试时,基本不会去改动
- 性能测试,这个是用于进行性能场景设计的
- 线程组:进行性能场景设计
- setup线程组
- teardown线程组
- 配置元件
- 优先级是最高的, 正式干活时,急先锋
- 用户定义变量
- 监听器
- 就是侦探 就是摄像头,性能结果进行监控,展示结果数据
- 不同的元件,是从不同的角度,展示结果数据
- 取样器: 根据不同的协议,使用不同的取样器
- 线程组: 接口、自动化测试时,基本不会去改动
四、编写jmeter脚本
-
逻辑控制:
-
前置: 用户参数
-
后置: 对取样器进行控制
-
定时器
-
写脚本
1)测试计划上右键, 添加 线程组
2)线程组上右键,添加 取样器> http请求 (http协议簇)
3)线程组上右键,添加 监听器 > 查看结果树- 脚本构成:
一个最简单的jmeter脚本,包括,线程组、取样器、监听器-
线程组: 性能测试中用于场景设计的,写脚本阶段不用改动
-
取样器: 根据不同的协议,编写不同的脚本。 填空
-
监听器: 调试脚本时使用,性能测试执行时,禁用
不管哪种监听器,都是对结果数据进行不同维度的展示,这些展示,是需要 消耗本地资源的
-
- jmeter的默认保存路径,jmeter的bin文件夹
- 脚本构成:
-
请注意:
-
当请求体为json, 一定要有请求头 Content-Type:application/json
-
协议: 当协议为http时,可以不写,如果是https,那就必须写
-
服务器名称或IP:不能带有/
-
路径: 不要带域名或ip,和端口。路径开头用/,不要带有空格, 带有空格请求URL%20 urlencoded编码
-
参数、消息体数量的选择
消息体:当我们的请求接口文档中说,请求体为json格式,那么我们就选择用json
参数: 我们的请求体,form-data
Content-Type: application/x-www-form-urlencoded 或者不指明请求体类型,get -
自动重定向:不会显示中间重定向过程,无法从过程中,提取信息
跟随重定向:会自动显示重定向过程,能从过程中,提取想要信息,用于后面接口请求 -
keepAlive勾选:如果勾上,表示保持长连接。因为现在用http协议版本为1.1 就是长连接,所以,默认勾选keepAlive,但是在性能测试中,我们会根据需要,去掉这个勾。
-
参数、消息体数量 选择
- 消息体:当我们的请求接口文档中说,请求体为json格式,那么我们就选择用消息体数据,来写json, 像soap接口,是http+xml的,我们就把xml写到消息体
- 参数: 存放请求体,是form-data格式的
比如 Content-Type: application/x-www-form-urlencoded,或者不指明请求体类型
-
-
请求重定向
-
自动重定向:不会显示中间重定向过程,无法从过程中,提取信息
-
跟随重定向:会自动显示重定向过程,能从过程中,提取想要信息,用于后面接口请求
五、乱码的处理:
1. 请求内容出现乱码处理方法
- 内容编码设置为
utf8
- 请求头设置:
,;charset=utf-8
- 请求体为参数类型:
勾选参数“编码” 编码:urlencoded编码
- 在参数值为 非字符(汉字、特殊符号) 我都需要勾选编码。给大家的建议: 参数值,不管什么类型,都建议勾选编码
2. 响应内容出现乱码处理方法
- 修改jmeter.properties中sampler.result.encoding,不是简单的设置为utf8、 gbk、gb2312、big5
- 同一个接口,用postmen请求,响应是正常,用jmeter请求响应中文乱码?
原因是: jmeter的编码是根据操作系统编码。
在国内,中文windows系统的字符集编码是gbk 936, mac系统中文编码utf8,所以通常只是windows乱码,mac不乱码
-
六、写脚本方法扩展
-
录制脚本:
- badboy: 曾经很流行,现在已经不维护,已经被遗弃
-
代理录制: 用于脚本参数比较多,或者用手动编写脚本,一时半会写不出来。
-
代理服务器: 自己启动一个代理服务器
-
本地,要使用代理服务器的ip和端口,使用自己启动的代理服务器
-
1、添加线程组
-
2、测试计划 > 非测试元件 > http代理服务器
- ip就是你自己电脑的ip,port是可以修改,默认8888
- 目标控制器,一定要修改为 测试计划>线程组
- 添加过滤器
-
3、启动代理服务器(chrome推荐proxy omega插件)时,会出现一个证书的弹窗(7天内有效,7天后要重新安装)
- 如果要抓取https信息时,就必须使用证书
请添加图片描述
- 如果要抓取https信息时,就必须使用证书
-
4、本地浏览器使用 代理服务器上网
-
5、录制后查看
ps:代理使用完记得关上哦,否则无法上网了
-
- 代理配置
七、 脚本功能增强
- 关联: 前面接口的响应信息,有动态值,作为后续接口的参数参数
- 我想把手机号码参数化,怎么办呢:
- 实现方式:
- 1、用户定义变量:
- 在配置元件,测试计划里
- 作用域:全局变量,作用于整个测试计划
- 在启动运行时,获取一次值,在运行过程中,不会动态获取值,在运行过程中,值一直都不变。
- 2、用户参数:
- 在前置处理器里
- 属于局部变量
- 作用域: 作用于当前线程组或当前的取样器
- 在启动运行时,获取一次值,在运行过程中,还会动态获取值。
- 1、用户定义变量:
- 实现方式: