环境
- 启动项目
- 启动jmeter jmeter.bat
- 临时修改语言:option-> choose language-chinese
- 永久修改语言 :修改配置文件(apache-jmeter-5.4.3\bin\jmeter.properties),添加一行language=zh_CN ,保存后需要重启Jmeter
- 用Jmeter.batch,jmeter.sh ,jmeter 这些命令启动的是图形界面模式
- 图形界面GUI:仅用于填写和调试脚本
- 真正做性能测试,不用图形界面,用CLI无图形界面模式
- 日常使用图形界面工具,我们习惯从菜单中找功能,但是jmeter菜单中的功能优先,jmeter的主要功能都是在右键中的
- 启动jmeter,打开脚本
- jmeter默认是用1个G的内存
- 这1个G的内存,大概能产生1500~2000左右的现场数
Jmeter介绍
- jmeter界面介绍JMeter的界面介绍
- 左侧脚本结构树
- 测试计划:脚本的根,在它的基础上右键,添加其他功能
- 线程(用户)---添加组(进行性能测试时,设计性能场景的)
- setup
- teardown
- 线程组
- 线程(用户)---添加组(进行性能测试时,设计性能场景的)
-
- 配置元件(配置元件的优先级是最高的,是最先被执行的)
- HTTP Cookie管理器
- 处理接口依赖:Cookie,Session,Token(参考:一文彻底弄懂cookie、session、token)
- 在jemter中不管我们的接口是用那种方式进行关联,建议都加上HTTP Cookie管理器
- HTTP请求默认值
- 在性能测试中,我们一般会在测试环境中调试脚本,然后再切换到性能测试环境,进行性能测试,利用HTTP请求默认值这个配置元件可以帮我们节省不少时间
- 在接口功能测试,自动化测试过程中我们一般会把多个接口写在1个线程组下面,但是在性能测试中,一般都是在一个线程组下面放1个接口的
- 例如下单接口,需要依赖于登录接口,那么这种情况下我们会把登录和下单接口放在同一个线程组下,但是我们会结合“仅一次控制器”让登录接口只被调用一次
- HTTP Cookie管理器
- HTTP信息头管理器
- CSV数据文件设置
- 监听器
- 查看结果树:默认显示数量为:后500条
- 红色:请求失败,查看失败原因,反馈问题
- connection refuse:网络不通
- 1.jmeter机器与被测服务器网络不通
- 常规操作:ping目标机器的IP地址 --但是,不一定成立
- 因为,被测服务器,可能会禁ping(一般来说生产的机器都会禁ping)
- 推荐使用 telnet ip port (tennet 192.168.1.1 8080)
- telnet命令,放置了jmeter的机器需要开启telnet 命令
- 不通
- 第一种:确实是网络不通
- 第二种:被测机器上没有启用该端口
- 在被测机器上查看端口是否启动 netstat - anp |grep 端口
- 常规操作:ping目标机器的IP地址 --但是,不一定成立
- 1.jmeter机器与被测服务器网络不通
- connection refuse:网络不通
- 绿色:请求成功,但是请求结果不一定符合预期
- 查看结果树的显示顺序:先收到结果先显示
- jmeter取样器的执行顺序是从上往下执行
- 红色:请求失败,查看失败原因,反馈问题
- 查看结果树:默认显示数量为:后500条
- 逻辑控制器
- 添加逻辑控制器,一定要有取样器,才会生效
- 事务控制
- 仅控制一次
- 定时器:设置定时任务
- 性能测试过程中,不建议用(不建议用集合点)
- 配置元件(配置元件的优先级是最高的,是最先被执行的)
- 测试计划:脚本的根,在它的基础上右键,添加其他功能
- 前置处理器:执行请求前要准备的事情(登录)
- 用户参数
- 后置处理器:对执行的结果进行处理
- json提取器
- 正则提取器
- 断言:判断结果与预期结果之间的关系
- 性能测试过程中,不建议用断言
- -----性能测试不关注请求结果是否满足要求
- -----关注的是资源消耗情况
- 性能测试过程中,不建议用断言
- 非配置原件
- HTTP代理服务器
jmeter安装目录结构
- bin文件夹
- 配置文件,启动文件,保存脚本的默认路径
- lib文件夹
- jmeter 的jar包
- lib\ext文件夹,放第三方扩展jar包
- jmeter 的jar包
写http脚本
- 服务器ip或域名
- 端口:tomcat的默认端口 8080
- 没有填写端口,端口默认是80
- 请求方法和路径:
- 接口文档(swagger)
- 抓包 f12,fiddler,tcpdump ……
控制请求编码有三个地方
- 消息头管理器:Content-Type的值中添加;charset=utf-8
- 内容编码
- 参数体
- value中为 中文或者特殊符号的时候一定要勾选编码
响应编码
- windows电脑中编码格式为:GBK
- mac和linux中文编码未:utf8
- jmeter工具,会读取本系统的中文编码,然后去解析响应信息
- 请求响应从服务器返回给jmeter,如果里面有中文,这个中文是项目配置的编码
- 如果项目配置的中文编码,与jmeter工具gbk编码不一致,两个编码不兼容
- 就会出现响应体乱码---需要修改jmeter的编码
- jmeter.properties配置文件中的 encoding
- 就会出现响应体乱码---需要修改jmeter的编码
自动重定向/跟随重定向
- 自动重定向:只针对get,head请求,可以自动跳转到最终页面,但是jmeter不记录重定向过程,查看结果树无法找到重定向过程内容,无法做关联
- 跟随重定向:jmeter默认选项,响应码3XX时自动跳转,查看结果树中可以看到过程内容,可以做关联