赞
踩
性能测试是一个全栈工程师/架构师必会的技能之一,只有学会性能测试,才能根据得到的测试报告进行分析,找到系统性能的瓶颈所在,而这也是优化架构设计中重要的依据。
测试流程:
目录
在测试阶段是否能够发现页面响应慢
当然可以
如何在测试阶段发现页面响应慢?

性能是用来描述产品除功能外的所具有的速度,效率和能力的综合能力评价
对产品或是物品的性能惊喜定性或是定量的量测过程
在这个过程中我们使用一些工具来进行场景的模拟,从而进行性能测试












1.分析性能需求。挑选用户使用最频繁的场景来测试,比如:登陆,搜索,下单等等。确定性能指标,比如:事务通过率为100%,TOP99%是5秒,最大并发用户为1000人,CPU和内存的使用率在70%以下
2.制定性能测试计划,明确测试时间(通常在功能稳定后,如第一轮测试后进行)和测试环境和测试工具
3.编写测试用例
4.搭建测试环境,准备好测试数据
5.编写性能测试脚本
6.性能测试脚本调优。设置检查点、参数化、关联、集合点、事务,调整思考时间,删除冗余脚本
7.设计测试场景,运行测试脚本,监控服务器,
8.分析测试结果,收集相关的日志提单给开发
9.回归性能测试
10.编写测试报告
目录
下载:
访问JMeter官网:https://jmeter.apache.org/download_jmeter.cgi

点击下载windows版本apache-jmeter-5.1.1.zip
安装:
解压到D盘即可使用,目录结构:
lib目录:存放Jmeter依赖的jar包,同时安装插件放于lib中的ext目录中

启动:
(如果打不开,则说明其工作环境JDK没搭建好,原因:JMeter需要基于Java环境)
3、配置jmeter工作环境
方式:安装jdk并配置环境变量
1)安装jdk,要求是1.8级以上版本
在安装jdk的过程中,记得把路径复制一份,方便后面使用。
2)配置jdk的系统环境变量:
a》java_home:jdk的安装路径,(需要新建)
b》path:增加jdk的工作目录bin ( %java_home%\bin; )
(只需编辑,往里添加工作路径)
3)验证:
A、在dos中输入命令:javac,显示javac命令的格式及选项
B、启动bin目录中jmeter.bat能正常打开。
设置界面为简体中文,如下:

过程:测试计划-》线程组-》http请求-》响应断言-》断言结果-》参看结果树!
其中测试计划是自带的。
测试计划:相当于项目,某某项目-测试计划

然后可以对线程组进行设置(一般在做性能测试时才需要去设置,接口几乎不用)
线程组参数详解:

基本》
2.1. Web服务器
协议:向目标服务器发送HTTP请求的协议,可以是HTTP或HTTPS,默认为HTTP
服务器名称或IP :HTTP请求发送到的目标服务器名称或IP ,比如:www.jd.com
端口号:目标服务器的端口号,默认值为80 ,可以不写,https为443。
注意: “ 服务器名称或IP”中不用输入http://, 请求时会自动加入 ;
2.2. Http请求
2.3. 请求参数

在“HTTP请求”上右键–>添加–>断言–>响应断言(检查请求后的响应是否正确)

需要设置的断言的内容:

包括:适用范围(那个请求),响应的字段,匹配规则以及添加要检查的测试模式
3.1、apply to: 表达的是断言那个请求,默认是只断言主请求(main sample only)
3.2、测试字段: 表达的是断言的内容,有响应文本,响应代码,响应信息等等,一般都是断言响应文本
3.3、模式匹配规则: 表达的是断言的方式,有包括、匹配、相等等等,一般使用包括或者相等
3.4、测试模式: 根据业务来编写,可以理解为我们的预期结果
4. 添加断言结果
在“HTTP请求”上右键 -> “添加”-> “监听器” -> “断言结果” ,查看断言的结果

【断言】又名:检查点
含义: 检查预期数据与实际数据是否匹配
方式: 先添加响应断言再添加断言结果,是一个组合
断言成功 : 断言结果只有一行,为请求的名称,则表示成功。
断言失败 :断言结果有两行,第二行显示失败的原因。
5. 察看结果树, 目的是查看请求发送后 的结果:
在“HTTP请求”上右键–>添加–>监听器–>察看结果树

点击发送请求,
结果如下:


现有一个http请求接口http://localhost:8080/goods/to_list, 要使用Jmeter对其进行压测,测试步骤如下:





下图第一个红框内的协议、IP、端口不需要设置,会使用步骤c中设置的默认值,只需设置请求路径Path即可,这里填入/goods/to_list。



五、如何查看系统负载何性能瓶颈
服务器上执行以下命令:
top
如下图所示,可以看到系统负载load average情况,1分钟平均负载,5分钟平均负载,15分钟平均负载分别是1.58, 0.50, 0.23;同时可以看到最耗费资源的进程为mysql。

1. 首先新建一个http请求。

2.设置请求路径,并添加参数。 如下图所示,Path中填写请求路径,点击Add添加参数,有一个名为token的参数。

至此给带参数请求已创建完成,点击运行即可开始压测。

2.新建配置文件config.txt,配置用户信息。 文件名随便写,里面数据每行有两个值,userId和userToken,中间用逗号隔开,我这里设置了两个用户的信息。

3.引用配置文件。 Csv Data Set Config中引用配置文件config.txt,并定义变量名为userId和userToken。

4.请求中引用配置文件中的变量。 在填写参数Value的地方不要将值写死,而是写为
变量名这种格式,我这里想要引用配置文件中
u
s
e
r
T
o
k
e
n
的值,所以写为
{变量名}这种格式,我这里想要引用配置文件中userToken的值,所以写为
变量名这种格式,我这里想要引用配置文件中userToken的值,所以写为{userToken}。

至此配置完毕,点击运行按钮,即可开始压测。
一. 100个真实的用户
相同
3、提取100个账号、密码的文件
线程组(一级)---->请求默认值、请求头、http请求、察看结果树(二级)----->正则表达式、BeanShell 后置处理程序(三级)。

(2)查询请求中的正则表达式和BeanShell 后置处理程序
正则表达提取----->获取想要的字段内容
(详看:https://blog.csdn.net/belief_009/article/details/123051440)

FileWriter fs=new FileWriter("D://近期//4.csv",true);
BufferedWriter out =new BufferedWriter(fs);
out.write(vars.get("username")+","+vars.get("id")); //username、id为正则定义名称
out.write(System.getProperty("line.separator")); //相当于"\n"自动换行
out.close();
fs.close();


二、100个用户同时登录
循环次数:Loop Count

补充:同步定时器:

2. 模拟多用户登录
线程组下添加----->CSV 数据文件设置
将存储用户账号、密码的文件引入,并命名变量名称,在登录时调用。

/api/v1/oauth/token?username=${name}&password=${name}&scope=all&grant_type=password


1、badboy进行录制和导出
badboy下载地址:
链接:https://pan.baidu.com/s/18Po3RssrBRSnn_-xsHop1g
提取码:h4w4
直接解压就可以使用,在界面上输入对应录制的url进行操作,录制完成后导出为:export to jmeter,在jmeter中打开后即可对脚本进行优化



a、设置启动服务代理,在网络设置代理服务,如果为第三方服务器则写第三方服务器的IP而非本地IP(127.0.0.1)
b、打开jmeter,新建线程组,目的为了录制后的脚本有地方存放,目标控制器选择对应的主线程组,存放脚本,添加非测试元件:http代理服务器,点击启动后则可以进行录制,录制完成后停止,在线程组中回出现请求的录制脚本




c、可在http服务代理请求中排除模式使用正则表达式进行过滤
d、再次代理请求录制,已发现.png格式已被过滤掉了

下载fiddler插件后导出jmx
插件下载链接:
链接:https://pan.baidu.com/s/18uffy67lIfNatMGkjnC_2g
提取码:iy20


在jmeter中打开导出的文件,可以看到对应的备注url,进行录制脚本优化


工具是测试中的辅助并非必需品。
通过以上介绍的性能测试的思路和工具,我们基本上可以完成一次性能测试以及部分问题的性能定位,但是往往性能问题总是隐藏得很深的,并且受各种条件的影响,比如,各个环节的配置参数,网络情况,机器情况,性能测试的工具等等,所以,性能测试的结果往往不能脱离某个环境单独比较,不同的配置,环境,应用的性能都会呈现出不同的结果,出现问题时,也需要我们从前到后,从上到下仔细分析每一个流程的执行情况,逐步通过工具协助定位,才能最终找到瓶颈。总之,性能测试是一门考验耐心,细心,知识广度, 深度的活,每次遇到问题多问几个为什么,多做几次分析和验证,并尝试解决,优化它,一定会让你对系统有更多不一样的认识。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。