测试不仅要了解项目整体流程,还需要会使用各种测试工具,比如:jmeter压力测试工具。
下面介绍下载以及模拟多用户同时调用同一接口测试、页面压测
1.下载地址
https://jmeter.apache.org/download_jmeter.cgi
2.下载完直接解压,配置环境
(1)此电脑-右键属性-高级系统设置-环境变量-系统变量-中新建JEMETER_HOME,值为你的下载路径
(2)CLASSPATH中配置下面这句话(没有新建classpath即可)
%JMETER_HOME%\lib\ext\ApacheJMeter_core.jar;%JMETER_HOME%\lib\jorphan.jar;%JMETER_HOME%\lib\logkit-2.0.jar;
检测jemeter命令:
直接win+R是不行的,需要在电脑的搜索输入cmd,命令提示符-右键-以管理员身份运行,再通过命令jmeter -v
检测
检测成功如下图
启动:本人是直接找到bin下的ApacheJMeter.java文件双击即可启动。网上搜的.bat和.sh也可运行。运行完直接右键-发送到桌面快捷方式即可
启动后改为-简体中文
具体使用如下:
1.新建线程组(文件-新建一个项目/选择已经创建过的。在新建的右键-添加-线程-线程组)
2.新建HTTP请求(在线程组右键-添加-取样器-http请求,根据下图添加压测接口/数据)
3.新建CSV数据文件设置(添加-配置元件-CVS数据文件设置)
4.新建查看结果树、聚合报告、图形结果等(具体参数说明如下图)
1.新建线程组
2.新建HTTP请求
3.新建CSV数据文件设置
4.新建查看结果树、聚合报告、图形结果
新建完,具体设置如下
HTTP请求设置:
CVS数据文件设置:(多个变量时,用英文逗号隔开:_mid,token)
聚合报告说明:
图形结果说明:
页面/接口压测: 将请求方式设为GET/POST,填写页面的地址即可,线程数可设1万,循环设10,就是10万次访。如下图1:
如果电脑性能足够强,可线程数可直接设10万,但是一般办公16G的的会卡死,建议2万线程,循环10次
重要事情说三遍: 前后端优化点建议、 前后端优化点建议、 前后端优化点建议:
压测的目的: 发现问题,提高性能,防止几万/十几万用户进同一页面时,页面直接502/无响应了。
通过压测,项目优化方面为:1.接口,因为我们的页面是低代码-装修出来的,再加上这个项目很长时间了,所以进入这个页面时请求的接口很多
一、前端:
1.压缩图片。把每张图片/icon尽可能的压缩到最小,最终小的icon几十kb,大的图片100/200kb,F12在NetWork中查看。然后我们的图片/静态文件css,html等虽然放到了线上的cdn中,所以图片转换为了webp格式,但是仍需要压缩的。
2.临时修改:不影响此次活动的,不重要的接口,前端直接屏蔽掉;
3.代码中,比如领取完红包,不要调刷新接口,前端手动循环数组刷新页面,再具体的map替换为foreach,用find查找,用this.$set替换浅拷贝/深拷贝。
//线上红包-领取刷新
refreshRedPack(id){
// this.getPagesData()//方法1接口更新
this.diypagesData = this.diypagesData.map((group,groupIndex) => {//建议forEach
//id相同的项
const targetKey = Object.keys(group.data || {}).find(
key => group.data[key].id === id
);
if (targetKey) {
// 使用 Vue.set 确保嵌套属性响应式
this.$set(group.data[targetKey], 'name', 1); // 关键修改!(targetKey已存在直接更新更高效)
// this.$set(this.diypagesData, groupIndex, group); // return { ...group }; //建议不要用:浅拷贝触发响应式,提高性能。但是用这个会导致页面空白
return { ...group }
}
return group;
});
// console.log("更新后的数据:", this.diypagesData);
},
其实前面前端一顿操作,主要的还是后台的改完更为明细,如下
二、后端:
- 当前端进行压力测试时,后台通过程序/进程查看哪个接口cpu上升的比较高,让后台优化接口
- 通过宝塔查看,压力测试时,负载直接爆满100%,内存使用率不高,所以把大部分接口都存到了内存,这样减少了后台程序PHP/JAVA的压力;
- 对服务器进行了扩容
(但是页面压测,并不能实际测十几万用户访问时的高并发等问题,因为只是模拟了多用户访问该页面,其他图片,接口等资源不能够同时访问-只能大概模拟出来,实际还要真正活动时才能看出来卡不卡)
如何使用进行接口压力测试可以参考下面链接:
https://blog.csdn.net/weixin_45481406/article/details/113097807
https://blog.csdn.net/cs373616511/article/details/123312965