Web应用,通俗来讲就是一个网站,主要依托于浏览器来访问其功能。
那怎么正确做网站的压力测试呢?
提到压力测试,我们想到的是服务端压力测试,其实这是片面的,完整的压力测试包含服务端压力测试和前端压力测试。
为了让大家看完文章后,更有获得感,本文将从以下方面进行展开:
1、Web应用(网站)压测范围
2、前后端压测流程
3、补充1:前端压力测试
4、补充2:后端压力测试
5、学习资料分享
Web应用(网站)最开始是不分前后端的(所以,那段时间PHP这门专门用于建站的语言非常火),后来随着网站功能越来越丰富,前后端不分离的架构显得低效和落后,这时候前后端分离的架构应用而生(PHP从此衰弱了)。
在前后端分离的架构模式下,前后端工程师约定好数据交互接口,实现并行开发。所以,一个Web应用(网站)其实是包含前端和后端两个独立的部分。
前后端分离
Google DoubleClick 研究表明:如果一个网页加载时长每增加 1 秒,用户就会流失 10%,加载时长超过 3 秒,用户就会离开。
因此,对于一个新的Web应用来说,除了常见的服务端压力测试,前端的压力测试也是不可或缺的。一个完整的web应用压力测试流程如下图所示:
压测范围:如果是全新的项目,原则上所有的功能和接口基本都要压测。如果是老项目新增需求,则需要评估影响范围,以便确定老的功能和接口是否需要压测
压测目标:如果是全新的项目,要根据行业内的基本情况和经验定一个预估目标;如果是老项目,可以根据历史流量峰值作为参考目标。
根据上一步的预期目标,制定压测方案。具体包含:压测环境,压测时间,相关负责人,测试工具或平台,验收标准
压测环境:为了还原真实的压力场景,一般选择预发环境或生产环境进行压测
压测时间:压测一般在功能测试或接口测试完成后介入。
压测工具或平台:前端压测可以使用PageSpeed等平台,后端压测一般会使用 jmeter、loadrunner等工具。(详细内容见补充1,补充2)
验收标准:一般来说要达到压测目标的预估值。
压测机:准备好压测机群(后端用),用于发送请求。
服务器:由于压测流量会较高,所以需要提前准备服务器集群,用于承接流量或扩容使用
数据准备:准备用于压测的数据,一般来说要和真实数据做区分。准备压测脚本,添加标识,以便于和真实流量区分。
施压:在施压的过程中,从较小流量开始,逐步加压。
观察:在逐步加压的过程,需要观察rt、error(报错率)、服务器的cpu、内存使用率等数据,如发现异常要及时停止压测,待排查和解决问题后再进行压测。
如何判断应用的承受能力?
在压测过程中观察报错率、响应时间等指标,如出现指标异常,则说明流量达到当前的瓶颈,需要停止压测分析并排查原因。
以下是几种常见异常的分析方法:
什么时候需要增加服务器?
在上一步出现瓶颈调优之后,继续加压,观察各项指标
服务器指标监控
达到预期目标:达到预期目标,一般可以认为压测通过。
未达到预期目标:如因各方面原因(资源、预算等)未达预期目标,需要产品经理和研发经理对压测结果确认。
如何写一份好的压测报告,可以参考下面这篇文章
前面的步骤都完成之后,项目可以发布上线。
现在我也找了很多测试的朋友,做了一个分享技术的交流群,共享了很多我们收集的技术文档和视频教程。
如果你不想再体验自学时找不到资源,没人解答问题,坚持几天便放弃的感受
可以加入我们一起交流。而且还有很多在自动化,性能,安全,测试开发等等方面有一定建树的技术大牛
分享他们的经验,还会分享很多直播讲座和技术沙龙
可以免费学习!划重点!开源的!!!qq群号:110685036
Google 开发者提出了一种 RAIL 模型来衡量应用的前端性能,即 response(响应)、animation(动画)、idle(空闲)与load(加载)。
RAIL 模型的广泛使用关键指标如下:
工具使用:PageSpeed
PageSpeed 是 google 一个开源的自动化工具,安装 PageSpeed 扩展程序运行即可
报告结果如图:
该工具功能丰富,报告也非常详细,并给出了优化建议,根据测试报告做对应的优化即可。
后端即指服务端,后端压测就是服务端压测,也可以称为服务器压力测试。
在压测过程中,一般关注下面几个指标:qps(处理的请求量)、rt(响应时间)、error(报错率)、cup(cpu使用率)、mem(内存占用情况)、load(负载)、traffic(网络速率)。
通过观察qps、rt、error等关键指标,找到服务器的性能瓶颈,如果低于预期,则需要调优。
通过压力测试,提前发现服务器瓶颈,及时优化,避免网站一上线就奔溃。
工具:压测常用的工具有LoadRunner和Jmeter(文末有学习视频)
Jmeter 是一款使用Java开发的,开源免费的测试工具, 主要用来做性能测试,JMeter 可以用于对服务器、网络或对象模拟巨大的负载,有丰富的图形界面+脚本配置,方便易用。
LoadRunner 是一种预测系统行为和性能的负载测试工具。通过以模拟上千万用户实施并发负载及实时性能监测的方式来确认和查找问题。
最后感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:
这些资料,对于从事【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!凡事要趁早,特别是技术行业,一定要提升技术功底。希望对大家有所帮助……