使用JMeter做性能测试&记录测试报告简介
1 jmeter下载:https://jmeter.apache.org/download_jmeter.cgi
2 启动jmeter
解压zip包,进入到bin目录,双击jmeter.bat启动,会打开一个cmd窗口和GUI窗口
cmd窗口的大致意思是不要使用GUI运行压力测试,GUI仅用于压力测试的创建和调试;执行压力测试请不要使用GUI,请使用下面的命令
jmeter -n -t [jmx file] -l [results file] -e -o [Path to web report folder]进行测试,并可以通过命令修改HEAP:
HEAP="-Xms1g -Xmx1g -XX:MaxMetaspaceSize=256m".以上就是cmd窗口的大致意思
如果看不懂英语,可以更改语言为中文
3 开始创建测试
①添加线程组,在“测试计划”上右键 【添加】-->【Threads(Users)】-->【线程组】。
设置线程数和循环次数
②配置元件
刚创建的线程组上右键 【添加】-->【配置元件】-->【HTTP请求默认值】,配置我们需要进行测试的程序协议、地址和端口
③构造http请求,在线程组右键 【添加-】->【取样器】-->【HTTP 请求】设置我们需要测试的API的请求路径和数据
④添加http请求头,线程组上右键 【添加】-->【配置元件】-->【HTTP信息头管理器】,我这里不需要填写,如果是json可以添加
名称contentType,值为application/json
⑤添加断言,这里我只判断响应状态吗为200的
⑥添加查看结果树,线程组上右键 【添加】-->【监听器】-->【察看结果树】。直接添加,然后点击运行(会提示保存)按钮就可以看到结果了
⑦添加汇总报告,线程组上右键 【添加】-->【监听器】-->【汇总报告】,然后启动
4 执行测试
前面我们说过,执行测试计划不能用GUI,需要用命令行来执行(到bin目录下启动cmd),命令格式如下:
jmeter -n -t 测试线程名 -l 结果树存放路径 -e -o web汇总报告路径
其中:-n代表不使用GUI,-t代表测试线程,我的测试示例
jmeter -n -t bjggwhytestplan/recommend/推荐页测试.jmx -l bjggwhytestplan/recommend/result.txt -e -o bjggwhytestplan/recommend/
win10报错
都提示信任的话使用.\jmeter... 当然信任,中间再次提示recommend文件下不为空,所以在recommend下新建webreport文件夹,最终命令如下:
.\jmeter -n -t bjggwhytestplan/recommend/推荐页测试.jmx -l bjggwhytestplan/recommend/result.txt -e -o bjggwhytestplan/recommend/webreport
打开webreport文件夹,里面有个index.html,打开可以看到测试报告,测试报告解析参考:
https://blog.****.net/qq_24373725/article/details/78952447
最后多次测试结果会更为准确
5 关于测试报告,需要有以下几个方面
①测试背景,测试目的(如找出PC/H5页面&接口性能瓶颈,主要测试不同并发数时接口&页面响应时间,根据各项测试数据分析数据加载慢的原因)
③评判标准
业务 平均响应时间 满意度(用户感受)
网页单项 <2s 良好
3s-5s 一般
5s-10s 较差
>10s 难以忍受
网页综合 <2s 良好
3s-5s 一般
5s-10s 较差
>10s 难以忍受
接口单项 <200ms 良好
200ms-500ms 一般
500ms-1000ms 较差
>1s 难以忍受
接口综合 <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。