# 下载
[JMeter下载地址](https://jmeter.apache.org/download_jmeter.cgi)
我这里用的5.5版本,需要Java8环境,直接下载zip压缩包就行,[这里](https://archive.apache.org/dist/jmeter/binaries/)可以下载旧版本

下载之后解压即可使用,推荐将jmeter的bin目录添加到系统path环境变量,方便使用jmeter命令

# 启动
如果配置环境变量,则可以使用CMD命令窗口执行`jmeter`命令即可启动;
如果没有配置环境变量,则可以到jmeter解压包的bin目录双击jmeter.bat即可启动
启动Jmeter之后看控制台日志

翻译
```
不要在负载测试中使用GUI模式!只在测试创建和测试调试时使用。
进行负载测试时,请使用CLI模式(以前是非GUI模式):
jmeter -n -t [jmx文件] -l [结果文件] -e -o [web报告文件夹的路径]
并增加Java堆内存以满足你的测试需求:
在jmeter批处理文件中修改当前的环境变量 HEAP="-Xms1g -Xmx1g -XX:MaxMetaspaceSize=256m"
查看:https://jmeter.apache.org/usermanual/best-practices.html
```
意思就是说用GUI工具创建和调试,负载测试的时候使用命令行,还有一个软件界面,切换软件语言为中文

# 创建测试
## 添加线程组
一个线程组内都是相同的请求,如果想要测试多个接口或者相同接口不同参数可以创建多个线程组
【Test Plan】上右键【添加】-->【线程(用户)】-->【线程组】

## 添加HTTP请求统一前缀
在刚创建的【线程组】上右键【添加】-->【配置元件】-->【HTTP请求默认值】

## 添加HTTP请求
也可以不添加HTTP请求统一前缀,也就上一步,直接在添加HTTP请求中定义协议、地址和端口
在刚创建的【线程组】上右键【添加】-->【取样器】-->【HTTP 请求】

## 添加HTTP请求头
不是必须,如果没有请求头需要设置,则可跳过,在刚创建的【线程组】上右键【添加】-->【配置元件】-->【HTTP信息头管理器】

通常post json请求都需要添加请求header: 名称'Content-Type',值为'application/json'',再比如token认证用的'Authorization''
## 添加断言
断言即判断成功的条件,在刚创建的【线程组】上右键【添加】-->【断言】-->【响应断言】,这里只判断响应状态吗为200的

## 添加查看结果树
结果树即所有请求的结果展示
在刚创建的【线程组】上右键【添加】-->【监听器】-->【查看结果树】

## 添加汇总报告
汇总报告即请求统计,在刚创建的【线程组】上右键【添加】-->【监听器】-->【汇总报告】

## 保持登录状态
针对接口需要验证登录的,如有shiro验证登录的接口,只需要创建http cookie管理器就可以了,每个线程一个cookie,把登录放在最前边,那么登录后,后边的请求,都能带着cookie进行后续访问。
在刚创建的【线程组】上右键【添加】-->【配置原件】-->【HTTP Cookie管理器】,我这里不需要,下面为示意图

到这里配置部分基本就大致完成了,点击左上角保存按钮即可将配置保存到本地

选择保存位置

保存之后可以在对应的目录有一个.jmx文件
# 使用GUI测试
前面说过不要在负载测试中使用GUI,这里我们先做调试,直接点击工具栏中启动按钮,然后查看结果树

# 负载测试并生成Web报告
## 执行负载测试
到.jmx文件所在目录执行cmd命令
```
jmeter -n -t Lims测试.jmx -l result.txt -e -o ./web-report
```
-n: 不使用GUI
-t: 测试线程
-l: 结果存放位置
-e -o: web汇总报告存放路径
## 查看Web报告
到web-report目录打开index.html即可看到测试报告

对于测试结果,最好多执行几次测试,结果更为准确
# 附
## 测试报告编写参考
### 测试背景、目的
如找出PC/H5页面&接口性能瓶颈,主要测试不同并发数时接口&页面响应时间,根据各项测试数据分析数据加载慢的原因
### 评判标准
| 业务 | 平均响应时间 | 满意度(用户感受) |
| -------- | ------------ | ---------------- |
| 网页单项 | <2s | 良好 |
| | 3s-5s | 一般 |
| | 5s-10s | 较差 |
| | >10s | 难以忍受 |
| 网页综合 | <2s | 良好 |
| | 3s-5s | 一般 |
| | 5s-10s | 较差 |
| | >10s | 难以忍受 |
| 接口单项 | <200ms | 良好 |
| | 200ms-500ms | 一般 |
| | 500ms-1000ms | 较差 |
| | >1 | 难以忍受 |
| 接口综合 | <200ms | 良好 |
| | 200ms-500ms | 一般 |
| | 500ms-1000ms | 较差 |
| | >1s | 难以忍受 |
## 测试范围
## 测试环境

## 测试执行

## 服务器资源使用情况

## 测试讨论示例
1. 整个测试执行服务器的CPU&内存使用率波动很小,基本看不出变化,排除服务器瓶颈;
2. 部分接口&页面在很少用户访问下,接口响应时间就超过1000ms,页面时间超过2s。如文化资讯一个用户访问页面和接口响应时间超过3s。排除服务器性能和本地网络性能,可能需要优化程序;
3. 首页1s内访问200个用户时页面访问时间超过6s,且页面请求有报错,错误码502,应该是服务器报错,需要查看服务器日志;
4. 对比H5端首页和PC端首页,相同线程并发数接口响应时间差不多,页面访问时间相差比较大。如100个用户并发,PC端页面响应时间超过2s,H5端页面响应时间100ms内;
5. 每个页面10个线程同时访问,超过一半的接口超过1s,一半的页面响应时间超过2s,文化资讯页面响应时间超过35s。
评论区