怎样正确做 Web 应用的压力测试?字节8年测试5个步骤给我看师了

news2024/12/23 21:04:08

Web应用,通俗来讲就是一个网站,主要依托于浏览器来访问其功能。

那怎么正确做网站的压力测试呢?

提到压力测试,我们想到的是服务端压力测试,其实这是片面的,完整的压力测试包含服务端压力测试和前端压力测试

为了让大家看完文章后,更有获得感,本文将从以下方面进行展开:

1、Web应用(网站)压测范围
2、前后端压测流程
3、补充1:前端压力测试
4、补充2:后端压力测试
5、学习资料分享

一、Web应用网站)压力测试范围,包含前后端

Web应用(网站)最开始是不分前后端的(所以,那段时间PHP这门专门用于建站的语言非常火),后来随着网站功能越来越丰富,前后端不分离的架构显得低效和落后,这时候前后端分离的架构应用而生(PHP从此衰弱了)。

在前后端分离的架构模式下,前后端工程师约定好数据交互接口,实现并行开发。所以,一个Web应用(网站)其实是包含前端和后端两个独立的部分。

前后端分离

Google DoubleClick 研究表明:如果一个网页加载时长每增加 1 秒,用户就会流失 10%,加载时长超过 3 秒,用户就会离开。

因此,对于一个新的Web应用来说,除了常见的服务端压力测试,前端的压力测试也是不可或缺的。一个完整的web应用压力测试流程如下图所示:

二、前后端压测流程

step1、确定压测范围和压测目标

压测范围:如果是全新的项目,原则上所有的功能和接口基本都要压测。如果是老项目新增需求,则需要评估影响范围,以便确定老的功能和接口是否需要压测

压测目标:如果是全新的项目,要根据行业内的基本情况和经验定一个预估目标;如果是老项目,可以根据历史流量峰值作为参考目标。

step2、制定压测方案

根据上一步的预期目标,制定压测方案。具体包含:压测环境,压测时间,相关负责人,测试工具或平台,验收标准

压测环境:为了还原真实的压力场景,一般选择预发环境或生产环境进行压测

压测时间:压测一般在功能测试或接口测试完成后介入。

压测工具或平台:前端压测可以使用PageSpeed等平台,后端压测一般会使用 jmeter、loadrunner等工具。(详细内容见补充1,补充2

验收标准:一般来说要达到压测目标的预估值。

3、压测准备

压测机:准备好压测机群(后端用),用于发送请求。

服务器:由于压测流量会较高,所以需要提前准备服务器集群,用于承接流量或扩容使用

数据准备:准备用于压测的数据,一般来说要和真实数据做区分。准备压测脚本,添加标识,以便于和真实流量区分。

4、实施压测

施压:在施压的过程中,从较小流量开始,逐步加压。

观察:在逐步加压的过程,需要观察rt、error(报错率)、服务器的cpu、内存使用率等数据,如发现异常要及时停止压测,待排查和解决问题后再进行压测。

5、压测观察&瓶颈分析

如何判断应用的承受能力?

在压测过程中观察报错率、响应时间等指标,如出现指标异常,则说明流量达到当前的瓶颈,需要停止压测分析并排查原因。

以下是几种常见异常的分析方法:

  • 成功率未达标:查看错误日志,排查错误根本原因,进行性能调优
  • 响应时间未达标:对照错误日志、链路追踪结果、服务器性能指标、数据库/中间件监控指标,找到响应时间过长的具体原因
  • 吞吐量未达标:如果成功率和响应时间均达标,建议不断增加模拟用户数,重新压测,查看测试结果

什么时候需要增加服务器?

在上一步出现瓶颈调优之后,继续加压,观察各项指标

  • 第一种情况:服务器cpu、内存等指标均未达瓶颈(通常以使用率达到70%-80%为瓶颈),qps、rt、报错率等指标出现异常,此时需要重复上一步,排查问题并优化
  • 第二种情况:rt、报错率等指标未出现异常,服务器cpu、内存使用率即将达到瓶颈,且未达到预期的压测目标,此时无法通过调优来解决,需要增加服务器。

服务器指标监控

6、验收

达到预期目标:达到预期目标,一般可以认为压测通过。

未达到预期目标:如因各方面原因(资源、预算等)未达预期目标,需要产品经理和研发经理对压测结果确认。

7、发送压测报告

如何写一份好的压测报告,可以参考下面这篇文章

8、项目上线

前面的步骤都完成之后,项目可以发布上线。

现在我也找了很多测试的朋友,做了一个分享技术的交流群,共享了很多我们收集的技术文档和视频教程。
如果你不想再体验自学时找不到资源,没人解答问题,坚持几天便放弃的感受
可以加入我们一起交流。而且还有很多在自动化,性能,安全,测试开发等等方面有一定建树的技术大牛
分享他们的经验,还会分享很多直播讲座和技术沙龙
可以免费学习!划重点!开源的!!!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 是一种预测系统行为和性能的负载测试工具。通过以模拟上千万用户实施并发负载及实时性能监测的方式来确认和查找问题。

五、学习资源分享

如果文章对你有帮助,记得点赞,收藏,加关注。会不定期分享一些干货哦......

END配套学习资源分享

最后: 为了回馈铁杆粉丝们,我给大家整理了完整的软件测试视频学习教程,朋友们如果需要可以自行免费领取 【保证100%免费】

加入我的软件测试交流qq群:110685036免费获取~(同行大佬一起学术交流,每晚都有大佬直播分享技术知识点)

软件测试面试文档

我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

在这里插入图片描述

全套资料获取方式:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/628439.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

高可用系统架构总结

文章目录 系统设计的一些原则海恩法则墨菲定律 软件架构中的高可用设计什么是高可用故障的度量与考核解决高可用问题具体方案 集群化部署负载均衡负载均衡实现内部服务外部服务数据库 负载均衡算法round-robinip_hashhash key 失败重试健康检查TCPHTTP 隔离线程隔离进程隔离集群…

华秋观察 | 通讯产品 PCB 面临的挑战,一文告诉你

印制电路板是电子产品的关键电子互联件,被誉为“电子产品之母”。随着电子产品相关技术应用更快发展、迭代、融合,PCB作为承载电子元器件并连接电路的桥梁,为满足电子信息领域的新技术、新应用的需求,行业将迎来巨大的挑战和发展机…

rocky9脚本py格式

在linux7上编写/root/CreateFile.py的python3脚本,创建20个文件/root/test/File01至/root/test/File20,如果文件存在,则先删除再创建;每个文件的内容同文件名,如File01文件的内容为”File01” 先在root目录下建立所需…

使用单片机遇到的几个问题及解决方案1

1.为什么我跟着视频学习的过程中,我没有找到“端口"的选项呢?我甚至没有出现“其他插口”。 想要找到设备管理器最快的方法就是: 首先如果把输入法调为大写形式,然后按下“WINX”,再按“M”就会出现一个设备管理…

python制作炸弹人游戏,一起来爆破消灭敌人吧

前言 嗨喽,大家好呀~这里是爱看美女的茜茜呐 《炸弹人》是HUDSON出品的一款ACT类型游戏,经典的第一作登陆在FC版本,游戏于1983年发行。 游戏具体操作是一个机器人放置炸弹来炸死敌人,但也可以炸死自己,还有些增强威力…

K8S之服务Service(十三)

1、Service概念: Kubernetes中的 Pod是有生命周期的,它们可以被创建,也可以被销毁,然而一旦被销毁pod生命就永远结束,这个pod就不存在了,通过ReplicaSets能够动态地创建和销毁Pod(例如&#xff…

【计算思维题】少儿编程 蓝桥杯青少组计算思维 数学逻辑思维真题详细解析第8套

少儿编程 蓝桥杯青少组计算思维题真题及解析第8套 1、下列哪个选项填到填到下图空缺处最合适 A、 B、 C、 D、 答案:D 考点分析:主要考查小朋友们的观察能力,从给定的图中可以看到,图中的线条都是有实现和虚

【C++ 学习 ⑨】- 万字详解 string 类(上)

目录 一、为什么学习 string 类? 二、标准库中的 string 类 三、C STL容器是什么? 四、string 类的成员函数 4.1 - 构造函数 4.2 - 赋值运算符重载 4.3 - 容量操作 4.4 - 遍历及访问操作 4.4.1 - operator[] 和 at 4.4.2 - 迭代器 4.5 - 修改…

Node.js 使用踩坑

重装电脑后,重装node.js 出现一个问题: npm install 会报错 按提示操作后 而npm run serve 会报xlsx和echart的错误,提示引用不对之类的,但是公司项目固定的,不可以随便改,而且之前是没问题的。 此时需要找…

华为OD机试真题B卷 Java 实现【数组拼接】,附详细解题思路

一、题目描述 现在有多组整数数组,需要将它们合并成一个新的数组。 合并规则,从每个数组里按顺序取出固定长度的内容合并到新的数组中,取完的内容会删除掉,如果该行不足固定长度或者已经为空,则直接取出剩余部分的内…

Anaconda教程,Python版本控制

Anaconda教程,Python版本控制 文章目录 Anaconda教程,Python版本控制1:Anaconda安装1.1:Windows1.2:Linux1.3:MacOS 2:Anaconda使用2.1:创建一个新的环境2.2:安装 Python 包2.3:激活…

hash模式下路由跳转页面不刷新

mode为hash时,纯粹页面,路由跳转过之后跳转上一级重复路由页面不会重新渲染 举个例子:当我在注册页面->注册状态页面->注册页面,在这个期间我从注册状态页面进行缓存的数据想要在注册页面使用,然而注册页面不会…

【YOLO系列】YOLO v5(网络结构图+代码)

文章目录 推理转换onnx网络架构SPP VS SPPFAutoAnchorLoss 参考 【YOLO系列】YOLO v3(网络结构图代码) 【YOLO 系列】YOLO v4-v5先验知识 【YOLO系列】YOLO v4(网络结构图代码) 我是在自己笔记本上配置的YOLO v5环境。首先&#x…

饼状图使用属性时,使用驼峰命名法

饼状图是使用D3.js等JavaScript库来绘制的,而JavaScript中的属性名通常采用驼峰式命名法,即第一个单词的首字母小写,后面单词的首字母大写,例如fontSize、fontWeight等。而CSS中的属性名采用连字符命名法,即单词之间用…

Top 5 Best Open Source Projects on GitHub 2023

这里介绍Github上 5 个增长最快的开源项目,它们为原有的解决方案提供了更加具有成本效益的替代方案,并为开发者、数据分析师和企业提供了高可用的工具产品。利用开源的优势,这5个项目拓展了强大而有效的解决方案,是值得收藏、分享…

比ureport好用的报表系统-VeryReport报表系统

随着数据时代的到来,数据成为企业管理和决策的重要依据。然而,在处理海量数据的同时,如何快速准确地生成各种形式的报表却成为了一个痛点。手工制作报表费时费力、容易出错;而传统的报表工具又复杂难用,无法满足不同用…

基于jsp+mysql+Spring+mybatis+Springboot的SpringBoot婚纱影楼摄影预约网站

运行环境: 最好是java jdk 1.8,我在这个平台上运行的。其他版本理论上也可以。 IDE环境: Eclipse,Myeclipse,IDEA或者Spring Tool Suite都可以,如果编译器的版本太低,需要升级下编译器,不要弄太低的版本 tomcat服务器环…

Linux下快速创建大文件的4种方法总结

1、使用 dd 命令创建大文件 dd 命令用于复制和转换文件,它最常见的用途是创建实时 Linux USB。dd 命令是实际写入硬盘,文件产生的速度取决于硬盘的读写速度,根据文件的大小,该命令将需要一些时间才能完成。 假设我们要创建一个名…

SAP从入门到放弃系列之CRP-part2

标准的生产处理流程如下: 在标准的流程里,MRP为无限产能方式,所以在MRP或者MPS之后,需要进行CRP计算,然后调整。 测试数据准备: 1、参考复制part1文章中的ZW01CRP工作中心复制到新的ZW01CRP2。 2、为物…

springboot 连接 kafka集群(kafka版本 2.13-3.4.0)

springboot 连接 kafka集群 一、环境搭建1.1 springboot 环境1.2 kafka 依赖 二、 kafka 配置类2.1 发布者2.1.1 配置2.1.2 构建发布者类2.1.3 发布消息 2.2 消费者2.2.1 配置2.2.2 构建消费者类2.2.3 进行消息消费 一、环境搭建 1.1 springboot 环境 JDK 11 Maven 3.8.x spr…