当前位置: 首页 > news >正文

性能测试基础知识及性能指标

前言:最近公司接了个项目,领导开会突然来了句,让我出一份性能测试方案,后面性能测试工作交给我!我心里想之前面试没要求会这个啊(最少得加钱才能做吧~,没办法既然下达了指令,那就只能照做了!

硬着头皮开搞了,小菜鸡性能测试之路慢慢进行中

在做性能方案之前,先捋一下流程,出方案给老板看,要显得自己专业,哈哈哈~

性能流程:
制定性能指标 --> 编写测试方案-->方案评审--> 搭建测试环境--> 脚本编写(准备测试数据)--> 准备测试机器--> 执行测试--> 分析调优

终于费劲九牛二虎之力出了分方案给领导,结果他来了句没有性能指标,让我看着测(~~,没指标玩个毛) 在我一顿输出下领导妥协了,拉着产品,架构师开个会,讨论了下。结果让我先测,给出性能的最大并发和最优性能
(估计大多数小公司都是这样吧,不给性能指标,就是走个过程)那好吧给他出份报告先吧!

在做性能测试之前,我们先了解下性能基础

1.1、性能概述:

性能决定了一个系统支撑其业务的能力。可以描述为系统稳定运行,高并发访问服务

不会出现宕机,用户访问页面需要的时间,系统能够支撑多少用户并发访问。也可以

描述为对资源的消耗。报告cpu,磁盘,内存,IO,网络等。

普通用户关心的是响应时间和稳定性

⚫ 页面还要多久才能加载出来?

⚫ 页面怎么又报502 了?

开发关心的是架构和代码的性能

⚫ 应用架构是否合理?

⚫ 技术架构是否合理?

⚫ 数据架构是否合理?

⚫ 部署架构是否合理?

⚫ 代码是否存在性能问题?

⚫ Jvm 内存分配是否合理?

运维关心的是系统资源的稳定性

⚫ 资源使用率在正常范围吗?

⚫ 数据库连接数正常吗?

⚫ 系统有内存泄露吗?

⚫ 一个节点宕机了,剩下的还能用吗?

1.2 、测试目标

通过压测来观察系统能承载的并发量,响应时间,与最大TPS 了解系统各项性能指

标,以此来评估系统的各项能力

发现系统存在的性能问题,包括

连接池问题。包括Tomcat 连接池,Jdbc 连接池,Nginx 连接池,Tcp 连接队列

内存泄露问题。内存泄露指的是系统在长时间运行过程中,内存空间得不到释

放,最终导致可用内存空间耗尽,出现内存溢出

线程死锁问题。线程死锁指的是某些线程因为资源问题长期占用线程锁,导致其
它的线程因为无法拿到锁而出现大面积阻塞

负载均衡问题。流量过高的情况下,因为负载均衡策略设置不当导致每台服务器
接受的流量不均匀,部分机器压力过大而性能急剧下降,部分机器流量过小而资

源浪费

硬件参数配置问题。例如网卡中断不均,swapiness 比例设置不当,进程优先级
设置不当导致的一系列硬件资源性能问题

1.3 、性能测试方法

1.3.1、并发测试

广义并发:多个用户同时触发某个功能,或者在单位时间内同时向服务器发起多
个请求。此时设置的线程数可以表示为并发的用户数

狭义并发:单位时间内多个业务并行处理(这里强调的是业务流程,比如A-B-C
D)。此时设置的线程数可以表示为并行的业务数。

1.3.2、负载测试

持续稳定地增加系统的负载,测试系统性能的变化

找出指标阈值下的系统瓶颈和性能拐点

测试系统所能承受的最大负载量****

找到处理极限,为调优提供数据

找出系统在稳定情况下的最大压力值

1.3.3、压力测试

对系统持续保持高压运行,时间可以是几小时甚至几天。观察系统在资源饱和状态下

的处理能力。目的是发现系统稳定性的隐患和系统在负载峰值的条件下功能隐患。同

时观察系统在长时间运行下可能出现的故障(例如反应变慢、内存泄漏系统崩溃)

2 .1 、需求分析

2.1 .1 、测试目的

为什么测?目的在于测试系统相关性能能否满足业务需求。通常分以下两种情况:

新项目上线

老项目优化

2.2 、测试对象

测什么?测试对象可以归结为“业务功能”。测试前需要了解待测试的业务功能(不深入

细节)有哪些,比如“购买商品”、“下单支付”。

有没有必要测?需求来源哪里?有没有数据支撑需求的必要性?

可以从以下几个方面考虑

是否核心功能,是否要求严格的质量

是否常用、高频使用的功能

可能占用系统较多资源的功能

使用人数多还是少

在线人数多还是少

2.3 、拆分对象

业务上拆分,业务包含哪些流程、环节

登录->搜索商品->提交订单->支付订单->退出

需要从功能实现上来看是怎么实现的。通常这些业务功能操作都对应着一个或多个可

能是不同类型的请求。我们要做的是找出这些操作对应的请求与请求之间的关联性。

2.4 、指标分析

分析性能需求指标(如“支持300 人并发登录”)是否合理?有没有必要测试这个需

求,考虑需求指标是否合理?有没有数据支撑?支撑数据可以从以下方面考虑:

采样时间段内系统使用人数

采样时间段内系统在线人数

采样时间段内系统(页面)访问量

采样时间段内请求数

2/8 法则

80%的业务量在20%的时间里完成。这里,业务量泛指访问量,请求数,数据量等

2-5-8 原则

当响应时间在2 秒以内,用户会感觉系统速度很快;

当响应时间在2-5 秒,用户会感觉系统的响应速度还可以;

当响应时间在5-8 秒以内,用户会感觉系统的速度很慢,

当响应时间超过8 秒后,用户会认为系统已经无法响应,直接离开

3.1 、用例设计

4.1、性能监控关键指标

4.1.1 、系统指标:系统指标则与用户场景及需求直接相关

 

4.1、性能监控关键指标

4.1.1 、系统指标:系统指标则与用户场景及需求直接相关

并发用户数
平均响应时间
吞吐量

 

4.2 、服务器资源指标

CPU使用率: 一般可接受上限85%

内存使用率:一般可接受上限85%

磁盘I/O

网络带宽

4.3 、 JVM 应用
Java运行内存划分机制:

堆区内存没有被及时释放,则存在内存泄漏

在性能测试过程中关注JVM堆区的内存,如持续在上升没有下降,则可能存在内存泄漏

内存泄漏原理:

FULL GC 机制:

垃圾回收:将内存中已申请并使用完成的那部分内存空间回收,供新申请使用

垃圾回收机制针对堆区的内存进行的

JVM(JAVA虚拟机)垃圾回收机制原理:

 

系统在做垃圾回收时,不能处理任何用户业务,如果垃圾回收太频繁,导致系统处理业务能力下降

FULL GC内存比较大,垃圾回收一次时间较长,这段时间不能处理业务,对系统影响比较大,因此在性能测试过程中需要关注FULL GC的频率

4.4 、数据库指标

慢查询
缓存命中率
数据链接池
Mysql锁

Mysql锁概念

对比:

l 页面锁:处理效率低,但不会出现死锁

l 处理效率高,但是可能出现死锁

监控点:

需要监控在性能测试过程中,是否死锁出现,如果出现需要对代码优化

 

4.5 、压测机资源:

CPU ---不超过80%

内存---不超过80%

网络

磁盘

好了,以上便是性能的一些基础知识,和性能的一些指标

在了解这些性能基础及指标知识后,再进行性能测试便可以更加轻松了,不然照着网上按葫芦画瓢也只是了解皮毛,反而得不出结果,完成不了上级交代的工作

  • 通常在做性能测试的时候,编写脚本和执行只是一部分,在性能测试过程中脚本编写和执行只是占比30%
  • 例如功能测试需求分析和用例编写一样,做性能测试也是一样,要先分析,这部分也占比30%,
  • 最后再是分析调优了--占比40%

结尾

学会了这些,便可以理直气壮的拍老板桌子,提出升值加薪啦!

先了解基础知识和指标,等下个月项目做完,再出一份性能执行和分析调优的分享

感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

 这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!有需要的小伙伴可以点击下方小卡片领取

 

 

相关文章:

性能测试基础知识及性能指标

前言:最近公司接了个项目,领导开会突然来了句,让我出一份性能测试方案,后面性能测试工作交给我!我心里想之前面试没要求会这个啊(最少得加钱才能做吧~,没办法既然下达了指令,那就只能…...

ArcGIS笔记10_如何创建渔网?

本文目录 前言Step 1 确定渔网的精度单位Step 2 有底图时创建渔网的操作 前言 ArcGIS中的渔网是一个很好用的工具,它可以创建出规规整整的小格子,每个小格子都对应一个标注点,可以将原本散乱的数据规整化,如下图: Ste…...

Jmeter安装(快速入门)

大家好我是苏麟今天简单聊一下Jmeter . Jmeter Jmeter官网 : Apache JMeter - Download Apache JMeter 安装Jmeter Jmeter依赖于JDK,所以必须确保当前计算机上已经安装了JDK,并且配置了环境变量。 下载 : 官网下载 : 网盘自取 : 链接:…...

一个react前端项目中的配置文件作用解析

前端框架中用到的配置文件 .editorconfig, .gitignore, .npmrc, .prettierignore, .prettierrc, .umirc.local.ts, .umirc.ts, package-lock.json, package.json, README.md, tsconfig.json, typings.d.ts, webpack.config.js.editorconfig:用于定义代码编辑器的配…...

MAC 配置 Maven

Maven 是一个流行的 Java 项目管理和构建工具,它可以帮助我们管理项目依赖、构建和发布等过程。本文将指导您在 MAC 上配置 Maven 的详细步骤。 1、下载 Maven 首先,从 Maven 官方网站下载最新版本的 Maven 安装包。下载完成后,将其解压到您…...

vue3.0 + element plus upload图片 上传

直接上图吧: 记录一下,方便后续遇到啥问题...

Leetcode 18:四数之和

给你一个由 n 个整数组成的数组 nums ,和一个目标值 target 。请你找出并返回满足下述全部条件且不重复的四元组 [nums[a], nums[b], nums[c], nums[d]] (若两个四元组元素一一对应,则认为两个四元组重复)。 解题思路&#xff1a…...

word误删除的文件怎么恢复?恢复办法分享

在日常工作和学习中,我们常常会使用到Word来撰写文章、毕业论文、方案等。然而,我们可能会遇到Word误删文件的情况,令我们陷入恐慌,特别是这个文件很重要时。幸运的是,有办法找回。下面一起来看下word误删除的文件怎么…...

提高Qt开发软件运算性能提升

编译器minGW32&#xff0c;release版本&#xff0c;大部分操作在线程循环里面更容易体现出来 1、网上有说opencv像素处理使用直接获取Mat对象的像素块的数据指针,例如 for (int row 0; row < h; row) { uchar* uc_pixel image.data row * image.step; for (int col …...

WordPress SMTP邮件发送插件 Easy WP SMTP

Easy WP SMTP是一款 WordPress 邮件发送插件&#xff0c;WordPress 中经常用到邮件发送&#xff0c;包括新注册用户的邮件通知、找回密码通知、评论回复通知等。因为云服务器默认不启用 SMTP功能&#xff0c;所以需要安装 SMTP插件来解决这个问题。 SMTP 主机&#xff1a;smtp.…...

大咖云集,智慧碰撞|第 18 届 CLK 大会完整议程揭晓(内附报名通道)

自 2006 年以来&#xff0c;在国内 Linux 技术爱好者和行业公司的鼎力支持下&#xff0c;中国 Linux 内核开发者大会已走过 17个年头&#xff0c;是中国 Linux 内核领域最具影响力的峰会之一。今年的中国内核开发者大会依然秉承历届理念&#xff0c;以“自由、协作、创新”为理…...

springweb+vue前后端分离开发,集成部署

背景&#xff1a; 在自己做测试的时候&#xff0c;由于需要项目和项目的前端页面使用同样接口访问&#xff0c;所以需要将前端代码部署到后端项目下。前端采用vue&#xff0c;后端采用springboot。 首先时建立一个vue项目&#xff0c;这个可以参照网上的案例&#xff0c;创建方…...

美芯片禁令再次扩大,波及英伟达、AMD以及intel等科技公司 | 百能云芯

拜登政府17日宣布&#xff0c;计划停止英伟达&#xff08;Nvidia&#xff09;、超微半导体以及英特尔等科技公司设计的先进AI芯片输出中国大陆&#xff0c;英伟达&#xff08;Nvidia&#xff09;昨日股价重挫4.68%至每股439.38美元&#xff1b;天风国际证券分析师郭明錤表示&am…...

Docker入门到精通教程

Docker是什么 Docker是一个开源的应用容器引擎&#xff0c;它基于Go语言并遵从Apache2.0协议开源。容器技术是和我们的宿主机共享硬件资源及操作系统&#xff0c;实现资源的动态分配&#xff0c;在资源受到隔离的进程中运行应用程序及其依赖关系。 Docker可帮助更快地打包、测…...

Java 对象是什么样子的?

Java 对象是什么样子的&#xff1f; class Student{ int age; String name; }Student s new Student(18, “zhangsan”); 这里的 s 变量&#xff0c;就是我们常说的引用&#xff0c;这里是强引用。指向对象中的 Java对象。 很多人可能认为&#xff0c;堆中存储了 age 18, na…...

自动驾驶的法律和伦理问题

随着自动驾驶技术的不断发展&#xff0c;出现了一系列与法律和伦理有关的问题。这些问题涵盖了自动驾驶的法律框架、道路规则以及伦理挑战。本文将探讨这些问题&#xff0c;并分析自动驾驶所带来的法律和伦理挑战。 自动驾驶的法律框架 自动驾驶的法律框架是制定和管理自动驾…...

Uniapp 增加百度统计代码

参考&#xff1a;https://blog.csdn.net/qq_37860634/article/details/131383304...

pyflink 环境测试以及测试案例

1. py 的 环境以来采用Anaconda环境包 安装版本&#xff1a;https://www.anaconda.com/distribution/#download-section Python3.8.8版本&#xff1a;Anaconda3-2021.05-Linux-x86_64.sh 下载地址 https://repo.anaconda.com/archive/ 2. 安装 bash Anaconda3-2021.05-Linux-x…...

EtherNet/IP转Modbus TCP协议网关的接口

远创智控的YC-EIPM-TCP网关产品&#xff0c;它有什么作用呢&#xff1f;一起来了解一下吧&#xff01; 远创智控YC-EIPM-TCP网关产品可以通过各种数据接口和工业领域的仪表、PLC、计量设备等产品连接&#xff0c;实时采集这些设备中的运行数据、状态数据等信息&#xff0c;并把…...

视频集中存储/视频监控管理平台EasyCVR如何免密登录系统?详细操作如下

视频云存储/安防监控EasyCVR视频汇聚平台基于云边端智能协同&#xff0c;支持海量视频的轻量化接入与汇聚、转码与处理、全网智能分发、视频集中存储等。音视频流媒体视频平台EasyCVR拓展性强&#xff0c;视频能力丰富&#xff0c;具体可实现视频监控直播、视频轮播、视频录像、…...

3.3.1_1 检错编码(奇偶校验码)

从这节课开始&#xff0c;我们会探讨数据链路层的差错控制功能&#xff0c;差错控制功能的主要目标是要发现并且解决一个帧内部的位错误&#xff0c;我们需要使用特殊的编码技术去发现帧内部的位错误&#xff0c;当我们发现位错误之后&#xff0c;通常来说有两种解决方案。第一…...

QMC5883L的驱动

简介 本篇文章的代码已经上传到了github上面&#xff0c;开源代码 作为一个电子罗盘模块&#xff0c;我们可以通过I2C从中获取偏航角yaw&#xff0c;相对于六轴陀螺仪的yaw&#xff0c;qmc5883l几乎不会零飘并且成本较低。 参考资料 QMC5883L磁场传感器驱动 QMC5883L磁力计…...

《用户共鸣指数(E)驱动品牌大模型种草:如何抢占大模型搜索结果情感高地》

在注意力分散、内容高度同质化的时代&#xff0c;情感连接已成为品牌破圈的关键通道。我们在服务大量品牌客户的过程中发现&#xff0c;消费者对内容的“有感”程度&#xff0c;正日益成为影响品牌传播效率与转化率的核心变量。在生成式AI驱动的内容生成与推荐环境中&#xff0…...

剑指offer20_链表中环的入口节点

链表中环的入口节点 给定一个链表&#xff0c;若其中包含环&#xff0c;则输出环的入口节点。 若其中不包含环&#xff0c;则输出null。 数据范围 节点 val 值取值范围 [ 1 , 1000 ] [1,1000] [1,1000]。 节点 val 值各不相同。 链表长度 [ 0 , 500 ] [0,500] [0,500]。 …...

Axios请求超时重发机制

Axios 超时重新请求实现方案 在 Axios 中实现超时重新请求可以通过以下几种方式&#xff1a; 1. 使用拦截器实现自动重试 import axios from axios;// 创建axios实例 const instance axios.create();// 设置超时时间 instance.defaults.timeout 5000;// 最大重试次数 cons…...

RNN避坑指南:从数学推导到LSTM/GRU工业级部署实战流程

本文较长&#xff0c;建议点赞收藏&#xff0c;以免遗失。更多AI大模型应用开发学习视频及资料&#xff0c;尽在聚客AI学院。 本文全面剖析RNN核心原理&#xff0c;深入讲解梯度消失/爆炸问题&#xff0c;并通过LSTM/GRU结构实现解决方案&#xff0c;提供时间序列预测和文本生成…...

回溯算法学习

一、电话号码的字母组合 import java.util.ArrayList; import java.util.List;import javax.management.loading.PrivateClassLoader;public class letterCombinations {private static final String[] KEYPAD {"", //0"", //1"abc", //2"…...

C++.OpenGL (20/64)混合(Blending)

混合(Blending) 透明效果核心原理 #mermaid-svg-SWG0UzVfJms7Sm3e {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-SWG0UzVfJms7Sm3e .error-icon{fill:#552222;}#mermaid-svg-SWG0UzVfJms7Sm3e .error-text{fill…...

(一)单例模式

一、前言 单例模式属于六大创建型模式,即在软件设计过程中,主要关注创建对象的结果,并不关心创建对象的过程及细节。创建型设计模式将类对象的实例化过程进行抽象化接口设计,从而隐藏了类对象的实例是如何被创建的,封装了软件系统使用的具体对象类型。 六大创建型模式包括…...

PHP 8.5 即将发布:管道操作符、强力调试

前不久&#xff0c;PHP宣布了即将在 2025 年 11 月 20 日 正式发布的 PHP 8.5&#xff01;作为 PHP 语言的又一次重要迭代&#xff0c;PHP 8.5 承诺带来一系列旨在提升代码可读性、健壮性以及开发者效率的改进。而更令人兴奋的是&#xff0c;借助强大的本地开发环境 ServBay&am…...