性能测试教程

news/2024/7/6 19:50:51/文章来源:https://www.cnblogs.com/xiaodi888/p/18269876

一、什么是性能测试

通俗地讲,性能测试就是检查一个系统或软件在承受各种工作负载时,它的表现如何。这就像你买了一辆新车,不仅要看它的外观和内饰,更想知道它在高速行驶、爬坡、满载等情况下的表现,比如油耗、速度、稳定性等。

在软件或系统领域,性能测试会模拟用户在实际环境中可能遇到的各种场景,比如高并发访问、大数据量处理、长时间运行等,然后观察系统的响应时间、吞吐量、资源占用率等指标,从而评估系统的性能是否满足预期。

具体来说,性能测试可能包括以下几个方面:

  1. 基准测试:在没有任何负载的情况下,测试系统的基本性能。
  2. 负载测试:逐渐增加系统的负载,观察系统在不同负载下的性能表现。
  3. 压力测试:模拟系统可能遇到的最大负载,测试系统的抗压能力。
  4. 稳定性测试:长时间运行系统,观察系统是否会出现性能下降、崩溃等问题。
  5. 并发测试:模拟多个用户同时访问系统,测试系统的并发处理能力。

通过性能测试,开发者和测试人员可以了解系统的性能瓶颈,优化系统设计,确保系统在实际使用中能够稳定、高效地运行。

 

二、如何开展性能测试?

1、明确测试目标和需求

比如,我们6.18做活动,需要测试大批量用户进入百度网站首页的性能情况,一般实际情况下,产品经理或者项目经理在提需求之前,都会制定测试目标指标,如果没有制定,那么就需要自己去分析项目背景后去制定。

目标,可以通过接口清单来识别,或者自己去扒代码,后者自己去抓包,要尽可能的全面,都可以。梳理出来需要压测的目标接口以后,再去梳理接口的业务功能、依赖的上下游服务调用链路、数据库配置和库表等等。根据需求背景和接口功能,科学制定每个接口的通过指标,指标包含了平均响应时间、TPS等。比如,登录接口比较重要,可以指定为TPS>3000,95RT<1S,自己制定的目标和指标,还需要跟产品和开发讨论,避免错漏。

如下图:

 

 

2. 测试准备

2.1,首先要准备好压测机,目前大部分公司都有JumpServer这样的机器,如有,最好就用这种机器,因为网络和配置相对稳定。如没有就视情况准备1台或者多台电脑(分布式压测);

2.2,制定扩容方案(一般先纵向扩容,再横向扩容)。准备对测试环境应用服务、数据库、网关等进行扩容,扩容可以扩到与生产环境一致,或者按照比例扩,总之要在压测前扩好;

2.3,准备脚本,脚本一般使用JMeter编写,脚本的编写要尽量使用参数化,这一步这里不单独讲,作者另外有文章专门讲脚本的编写。

2.4,准备压测数据,为了保证压测结果的准确,我们需要将测试环境的数据量保持与生产环境一致,造数据,我们可以通过前置接口去造,或者依赖数据库的存储过程,存储过程造数据,另外也有文章教程。造的数据记得要做好标记,压测完需要清理掉。

2.5,提前准备监控,目前很多公司都上云了,可以通过阿里云的RDS数据库监控、kubernetes容器监控、云监控、ARMS监控,等手段来监控各服务的性能情况,ARMS需要提前打桩;如果没有上云,那就远程连接linux服务器,通过命令来监控了。

2.6,一般的大型压测或者比较重要的业务压测,我们需要把压测时间、服务等信息,告知有关联的开发和测试团队,运维团队,避免压测时影响到其他人的使用,以及人员的支持。特别是压测生产环境时,一定要提前邮件告知各方团队,严格按照计划压测。

 

3. 选择测试方法和工具

  • 负载测试:逐渐增加系统的负载,观察系统性能的变化情况。
  • 压力测试:在系统达到饱和状态下,测试系统的稳定性和错误处理能力。
  • 工具选择:根据测试需求选择合适的性能测试工具,如JMeter、LoadRunner、Gatling等。

4. 执行测试

4.1压测时,我们需要随时观察:上下游服务、数据库、网关服务的性能表现,主要关注服务的CPU、内存、TPS、JVM等。以及JMeter中聚合报告的吞吐量、响应时间等关键性能指标;

4.2,通过以上性能表现,我们需要实时调整压测的并发数,最终把性能瓶颈找到。

 

5. 分析测试结果

  • 对比预期目标:将测试结果与预期的性能指标进行对比,评估系统是否满足需求。
  • 定位性能瓶颈:分析测试结果,找出系统中的性能瓶颈,如数据库查询、网络传输等。

6. 报告和调优

  • 编写测试报告:详细记录测试过程、结果和发现的问题。
  • 系统调优:根据测试结果对系统进行优化,如调整配置、优化代码、升级硬件等。

7. 重复测试

  • 在系统调优后,重复执行性能测试,验证优化效果。

8.注意事项

  • 确保测试环境与生产环境一致:性能测试应在与生产环境尽可能一致的环境中进行,以确保测试结果的准确性。
  • 充分模拟实际场景:测试场景应尽可能贴近实际用户的使用情况,以发现潜在的性能问题。
  • 注意测试数据的保密性:在测试过程中可能涉及敏感数据,应确保数据的保密性和安全性。

 

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何把 linux 桌面变得像 Windows

如何把 linux 桌面变得像 Windows @目录如何把 linux 桌面变得像 Windows第0步 下载主题第一步:搞 xfce 的窗口第2步 搞 xfce 的顶端状态栏第3步 搞 xfce 的终端第4步 搞 xfce 的快捷键 众所周知,linux 最好的桌面是 Windows(开玩笑,请勿当真);我本人比较喜欢 Windows 的…

URDF - 建模原理

1. 基本建模文件 URDF 基本单位:弧度 弧度/s 米 2. URDF进化版本 - xacro模型文件

linux在tty终端显示中文字符的最终解决办法(fbterm字体间距,简单实用)

linux在tty终端显示中文字符的最终解决办法(fbterm字体间距,简单实用)Linux 的tty文字终端默认是不支持中文的,这对我们使用文字终端办公造成一定困扰,而且还限制字体,只有几种并不好用的字体。这里我解决以上问题。 我的系统: uname -sr Linux 6.1.0-kali7-amd64基于D…

空气动力学复习总结

绪论与补充 流体的物理模型 流体定义:静止状态无法承受剪切应 连续介质假设:不考虑分子间隙,认为介质连续分布于流体所占据的整个空间。流体由连续的流体微团组成,宏观上要足够小,以反映流场“点”状态;微观上要足够大,以消除分子随机运动带来的宏观物理量在统计上的涨落…

cv2.imread

cv2.imread 是 OpenCV (Open Source Computer Vision Library)中的一个函数,用于读取图像文件。 参数:filename: 要读取的图像文件的路径。 flags:指定图像读取的方式。默认为 cv2.IMREAD_COLOR,表示读取彩色图像。可以使用以下标志修改读取方式:cv2.IMREAD_COLOR:默认参…

linux修改swap分区的方法,和需要注意的坑

linux修改swap分区的方法,和需要注意的坑 电脑配置:x86_64,Windows 10+kali linux双系统电脑。 $ uname -r 6.1.0-kali5-amd64修改的方法和我上一篇blog差不多,我销毁了 swap 之后又在另一个地方重建了该分区,再次重启之后 dmesg 发现启动时间多达41秒(平时10秒),而且耗…

hadoop00_大数据技术介绍

生态架构数据导入 离线方式处理的数据,需要通过 ETL 模块实现导入到大数据存储系统进行存储;其中 Sqoop 是常见的抽取结构化数据工具,而 Flume、LogStach 是用于抽取结构化、半结构化数据的工具。 数据存储 大数据的数据存储系统,最常见的包括分布式文件系统 HDFS;如果需要…

高级计算机网络--计算题

1.有如下的四个/24地址块,试进行最大可能的聚合 212.56.132.0/24 212.56.133.0/24 212.56.134.0/24 212.65.135.0/24主要区别在第三字节 1000 0100 1000 0101 1000 0110 1000 0111所以最长相同前缀为 1000 0100 为132212.56.132.0/22 2.一个UDP用户数据报的数据部分为4192B,…

猿人学第一题逆向

下xhr断点观察堆栈调用信息,发现没有异步任务 直接一步一步往下跟这个地方很可疑下断点看看 大概率是这个地方 扣代码点击查看代码 window = global;var hexcase = 0; /* hex output format. 0 - lowercase; 1 - uppercase */ var b64pad = ""; /* base-64…

linux(双系统电脑)缩小根目录分区、给/home单独分区的简单方法

linux(双系统电脑)缩小根目录分区、给/home单独分区的简单方法​ 电脑配置:x86_64,有1T的固态硬盘。Windows 10+kali linux双系统电脑。 $ uname -r 6.1.0-kali5-amd64在操作之前有 300G 作为一整个根目录安装 kali,文件系统 为 ext4,没有给 /home 单独分区。现在整个根目录…

5_Spring Bean Scope 失效分析

Scope作用域 1. Scope类型有哪些 截至目前为止,Spring 目前有如下几种scope:singleton: 从ioc容器中返回的都是同一个对象 prototype: 从ioc容器中可以返回多个对象 request: 该类型的bean的生命周期就和request请求一样,每当有request请求发送过来,就会创建一个bean对象放入…

Profibus DP主站转Modbus模块连接马达保护器案例

在工业自动化控制系统中,Profibus DP和Modbus是常见的通信协议,在同一现场还有可能遇到Modbus协议,ModbusTCP协议,Profinet协议,Profibus协议,Profibus DP协议,EtherCAT协议,EtherNET协议等。本案例介绍了如何使用Profibus DP主站转Modbus模块(XD-MDPBM20)来实现与马…

platform 设备驱动实验

platform 设备驱动实验 Linux 驱动的分离与分层 代码的重用性非常重要,否则的话就会在 Linux 内核中存在大量无意义的重复代码。尤其是驱动程序,因为驱动程序占用了 Linux内核代码量的大头,如果不对驱动程序加以管理,任由重复的代码肆意增加,那么用不了多久Linux 内核的文…

ENVI深度学习V1.0操作教程

软件试用:https://www.cnblogs.com/enviidl/p/16275745.html计算机环境要求:https://www.cnblogs.com/enviidl/p/16309506.html教程下载链接:https://pan.baidu.com/s/15D3c6MXTAnN3STfKuzUg1g 提取码:hek6目录 ENVI Deep Learning V1.0操作教程 1 ENVI Deep Learnin…

ENVIDeepLearning1.1新功能预览

ENVI Deep Learning 1.1 Tech Preveiw目前已经发布,仅在内部测试。迫不及待的要跟大家分享一下新的功能,应该跟1.1正式版没有太大区别。 此版本包含了几个关键改进和新功能:多要素/多类别支持。 新增项目管理功能,用于管理训练图像和ROIs。 训练过程中的状态信息显示改进。…

利用ENV/深度学习工具提取防尘网覆盖信息

为扬尘治理和保护环境,城市的裸露地表、易扬尘物料等要求覆盖防尘网。防尘网一般由聚乙烯材料制作的网状物,颜色主要为黑色和绿色。 本文介绍利用遥感影像和ENVI深度学习工具快速提取防尘网覆盖信息,数据和处理环境如下: 数据源:标准景高分二号3.8米4波段多光谱数据,16bi…

数理方法考前必背

特殊函数 勒让德多项式 前几个勒让德多项式 \[\begin{aligned} P_{0}(x) & = 1 \\ P_{1}(x) & = x=\cos \theta \\ P_{2}(x) & = \dfrac{1}{2}\left(3 x^{2}-1\right)=\dfrac{1}{4}(3 \cos 2 \theta+1) \\ P_{3}(x) & = \dfrac{1}{2}\left(5 x^{3}-3 x\right)=…

机器人建模与控制复习总结

数学补充 符号约定 (1) 一般大写字母的变量表示矢量或矩阵,小写字母的变量表示标量 (2) 左上标和左下标表示变量所在的坐标系 如:\(^AP\)表示坐标系\(\{A\}\)中的位置矢量;\(_B^AR\) 是确定坐标系\(\{A\}\)和坐标系\(\{B\}\)相对关系的矩阵;无左上、下标的位置矢量一般是世…

润生商团出行打车模块(环境安装)2

微服务认证最佳方案 BFF(Backends For Frontends)是“服务于前端的后端”的简称。它的核心思想是在设计后端微服务API接口时,考虑到不同设备的需求,为不同的设备提供不同的API接口。 在没有BFF层的情况下,客户端需要直接访问服务器的公共接口。而在引入BFF层后,客户端不再…

工程热力学复习总结

热力学系统 热力学状态:某一瞬间系统所呈现的宏观物理状况 状态参数:描述物系所处平衡状态的宏观物理量 状态参数是宏观量,是大量粒子的统计平均效应,只有平衡态才有状态参数。状态参数是热力系统状态的单值函数,物理上与过程无关,数学上其微量是全微分。状态参数分类有:…