侧边栏壁纸
博主头像
昂洋编程 博主等级

鸟随鸾凤飞腾远,人伴贤良品自高

  • 累计撰写 71 篇文章
  • 累计创建 79 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

JMeter做性能测试&记录测试报告

Administrator
2023-09-05 / 0 评论 / 0 点赞 / 44 阅读 / 0 字 / 正在检测是否收录...
温馨提示:
本文最后更新于2024-06-14,若内容或图片失效,请留言反馈。 部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

# 下载

[JMeter下载地址](https://jmeter.apache.org/download_jmeter.cgi)

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

![image-1693890850057](http://www.angyum.com:9000/angyum/image-1693890850057.png)

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

![image-1693890985224](http://www.angyum.com:9000/angyum/image-1693890985224.png)

# 启动

如果配置环境变量,则可以使用CMD命令窗口执行`jmeter`命令即可启动;

如果没有配置环境变量,则可以到jmeter解压包的bin目录双击jmeter.bat即可启动

启动Jmeter之后看控制台日志

![image-1693891809492](http://www.angyum.com:9000/angyum/image-1693891809492.png)

翻译

```

不要在负载测试中使用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工具创建和调试,负载测试的时候使用命令行,还有一个软件界面,切换软件语言为中文

![image-1693892076163](http://www.angyum.com:9000/angyum/image-1693892076163.png)

# 创建测试

## 添加线程组

一个线程组内都是相同的请求,如果想要测试多个接口或者相同接口不同参数可以创建多个线程组

【Test Plan】上右键【添加】-->【线程(用户)】-->【线程组】

![image-1693892457507](http://www.angyum.com:9000/angyum/image-1693892457507.png)

## 添加HTTP请求统一前缀

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

![image-1693892816919](http://www.angyum.com:9000/angyum/image-1693892816919.png)

## 添加HTTP请求

也可以不添加HTTP请求统一前缀,也就上一步,直接在添加HTTP请求中定义协议、地址和端口

在刚创建的【线程组】上右键【添加】-->【取样器】-->【HTTP 请求】

![image-1693893295566](http://www.angyum.com:9000/angyum/image-1693893295566.png)

## 添加HTTP请求头

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

![image-1693893471134](http://www.angyum.com:9000/angyum/image-1693893471134.png)

通常post json请求都需要添加请求header: 名称'Content-Type',值为'application/json'',再比如token认证用的'Authorization''

## 添加断言

断言即判断成功的条件,在刚创建的【线程组】上右键【添加】-->【断言】-->【响应断言】,这里只判断响应状态吗为200的

![image-1693893752771](http://www.angyum.com:9000/angyum/image-1693893752771.png)

## 添加查看结果树

结果树即所有请求的结果展示

在刚创建的【线程组】上右键【添加】-->【监听器】-->【查看结果树】

![image-1693893925884](http://www.angyum.com:9000/angyum/image-1693893925884.png)

## 添加汇总报告

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

![image-1693894116742](http://www.angyum.com:9000/angyum/image-1693894116742.png)

## 保持登录状态

针对接口需要验证登录的,如有shiro验证登录的接口,只需要创建http cookie管理器就可以了,每个线程一个cookie,把登录放在最前边,那么登录后,后边的请求,都能带着cookie进行后续访问。

在刚创建的【线程组】上右键【添加】-->【配置原件】-->【HTTP Cookie管理器】,我这里不需要,下面为示意图

![image-1693894318464](http://www.angyum.com:9000/angyum/image-1693894318464.png)

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

![image-1693894567362](http://www.angyum.com:9000/angyum/image-1693894567362.png)

选择保存位置

![image-1693894605732](http://www.angyum.com:9000/angyum/image-1693894605732.png)

保存之后可以在对应的目录有一个.jmx文件

# 使用GUI测试

前面说过不要在负载测试中使用GUI,这里我们先做调试,直接点击工具栏中启动按钮,然后查看结果树

![image-1693895153555](http://www.angyum.com:9000/angyum/image-1693895153555.png)

# 负载测试并生成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即可看到测试报告

![image-1693896579793](http://www.angyum.com:9000/angyum/image-1693896579793.png)

对于测试结果,最好多执行几次测试,结果更为准确

# 附

## 测试报告编写参考

### 测试背景、目的

如找出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 | 难以忍受 |

## 测试范围

## 测试环境

![image-1693897503279](http://www.angyum.com:9000/angyum/image-1693897503279.png)

## 测试执行

![image-1693897529813](http://www.angyum.com:9000/angyum/image-1693897529813.png)

## 服务器资源使用情况

![image-1693897556801](http://www.angyum.com:9000/angyum/image-1693897556801.png)

## 测试讨论示例

1. 整个测试执行服务器的CPU&内存使用率波动很小,基本看不出变化,排除服务器瓶颈;

2. 部分接口&页面在很少用户访问下,接口响应时间就超过1000ms,页面时间超过2s。如文化资讯一个用户访问页面和接口响应时间超过3s。排除服务器性能和本地网络性能,可能需要优化程序;

3. 首页1s内访问200个用户时页面访问时间超过6s,且页面请求有报错,错误码502,应该是服务器报错,需要查看服务器日志;

4. 对比H5端首页和PC端首页,相同线程并发数接口响应时间差不多,页面访问时间相差比较大。如100个用户并发,PC端页面响应时间超过2s,H5端页面响应时间100ms内;

5. 每个页面10个线程同时访问,超过一半的接口超过1s,一半的页面响应时间超过2s,文化资讯页面响应时间超过35s。

0

评论区