性能测试基础知识及性能指标
前言:最近公司接了个项目,领导开会突然来了句,让我出一份性能测试方案,后面性能测试工作交给我!我心里想之前面试没要求会这个啊(最少得加钱才能做吧~,没办法既然下达了指令,那就只能照做了!
硬着头皮开搞了,小菜鸡性能测试之路慢慢进行中
在做性能方案之前,先捋一下流程,出方案给老板看,要显得自己专业,哈哈哈~
性能流程:
制定性能指标 --> 编写测试方案-->方案评审--> 搭建测试环境--> 脚本编写(准备测试数据)--> 准备测试机器--> 执行测试--> 分析调优
终于费劲九牛二虎之力出了分方案给领导,结果他来了句没有性能指标,让我看着测(~~,没指标玩个毛) 在我一顿输出下领导妥协了,拉着产品,架构师开个会,讨论了下。结果让我先测,给出性能的最大并发和最优性能
(估计大多数小公司都是这样吧,不给性能指标,就是走个过程)那好吧给他出份报告先吧!
在做性能测试之前,我们先了解下性能基础
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]] (若两个四元组元素一一对应,则认为两个四元组重复)。 解题思路:…...
word误删除的文件怎么恢复?恢复办法分享
在日常工作和学习中,我们常常会使用到Word来撰写文章、毕业论文、方案等。然而,我们可能会遇到Word误删文件的情况,令我们陷入恐慌,特别是这个文件很重要时。幸运的是,有办法找回。下面一起来看下word误删除的文件怎么…...
提高Qt开发软件运算性能提升
编译器minGW32,release版本,大部分操作在线程循环里面更容易体现出来 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 邮件发送插件,WordPress 中经常用到邮件发送,包括新注册用户的邮件通知、找回密码通知、评论回复通知等。因为云服务器默认不启用 SMTP功能,所以需要安装 SMTP插件来解决这个问题。 SMTP 主机:smtp.…...
大咖云集,智慧碰撞|第 18 届 CLK 大会完整议程揭晓(内附报名通道)
自 2006 年以来,在国内 Linux 技术爱好者和行业公司的鼎力支持下,中国 Linux 内核开发者大会已走过 17个年头,是中国 Linux 内核领域最具影响力的峰会之一。今年的中国内核开发者大会依然秉承历届理念,以“自由、协作、创新”为理…...
springweb+vue前后端分离开发,集成部署
背景: 在自己做测试的时候,由于需要项目和项目的前端页面使用同样接口访问,所以需要将前端代码部署到后端项目下。前端采用vue,后端采用springboot。 首先时建立一个vue项目,这个可以参照网上的案例,创建方…...
美芯片禁令再次扩大,波及英伟达、AMD以及intel等科技公司 | 百能云芯
拜登政府17日宣布,计划停止英伟达(Nvidia)、超微半导体以及英特尔等科技公司设计的先进AI芯片输出中国大陆,英伟达(Nvidia)昨日股价重挫4.68%至每股439.38美元;天风国际证券分析师郭明錤表示&am…...
Docker入门到精通教程
Docker是什么 Docker是一个开源的应用容器引擎,它基于Go语言并遵从Apache2.0协议开源。容器技术是和我们的宿主机共享硬件资源及操作系统,实现资源的动态分配,在资源受到隔离的进程中运行应用程序及其依赖关系。 Docker可帮助更快地打包、测…...
Java 对象是什么样子的?
Java 对象是什么样子的? class Student{ int age; String name; }Student s new Student(18, “zhangsan”); 这里的 s 变量,就是我们常说的引用,这里是强引用。指向对象中的 Java对象。 很多人可能认为,堆中存储了 age 18, na…...
自动驾驶的法律和伦理问题
随着自动驾驶技术的不断发展,出现了一系列与法律和伦理有关的问题。这些问题涵盖了自动驾驶的法律框架、道路规则以及伦理挑战。本文将探讨这些问题,并分析自动驾驶所带来的法律和伦理挑战。 自动驾驶的法律框架 自动驾驶的法律框架是制定和管理自动驾…...
Uniapp 增加百度统计代码
参考:https://blog.csdn.net/qq_37860634/article/details/131383304...
pyflink 环境测试以及测试案例
1. py 的 环境以来采用Anaconda环境包 安装版本:https://www.anaconda.com/distribution/#download-section Python3.8.8版本: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网关产品,它有什么作用呢?一起来了解一下吧! 远创智控YC-EIPM-TCP网关产品可以通过各种数据接口和工业领域的仪表、PLC、计量设备等产品连接,实时采集这些设备中的运行数据、状态数据等信息,并把…...
视频集中存储/视频监控管理平台EasyCVR如何免密登录系统?详细操作如下
视频云存储/安防监控EasyCVR视频汇聚平台基于云边端智能协同,支持海量视频的轻量化接入与汇聚、转码与处理、全网智能分发、视频集中存储等。音视频流媒体视频平台EasyCVR拓展性强,视频能力丰富,具体可实现视频监控直播、视频轮播、视频录像、…...
使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式
一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明:假设每台服务器已…...
React 第五十五节 Router 中 useAsyncError的使用详解
前言 useAsyncError 是 React Router v6.4 引入的一个钩子,用于处理异步操作(如数据加载)中的错误。下面我将详细解释其用途并提供代码示例。 一、useAsyncError 用途 处理异步错误:捕获在 loader 或 action 中发生的异步错误替…...
《Playwright:微软的自动化测试工具详解》
Playwright 简介:声明内容来自网络,将内容拼接整理出来的文档 Playwright 是微软开发的自动化测试工具,支持 Chrome、Firefox、Safari 等主流浏览器,提供多语言 API(Python、JavaScript、Java、.NET)。它的特点包括&a…...
从深圳崛起的“机器之眼”:赴港乐动机器人的万亿赛道赶考路
进入2025年以来,尽管围绕人形机器人、具身智能等机器人赛道的质疑声不断,但全球市场热度依然高涨,入局者持续增加。 以国内市场为例,天眼查专业版数据显示,截至5月底,我国现存在业、存续状态的机器人相关企…...
数据链路层的主要功能是什么
数据链路层(OSI模型第2层)的核心功能是在相邻网络节点(如交换机、主机)间提供可靠的数据帧传输服务,主要职责包括: 🔑 核心功能详解: 帧封装与解封装 封装: 将网络层下发…...
uniapp中使用aixos 报错
问题: 在uniapp中使用aixos,运行后报如下错误: AxiosError: There is no suitable adapter to dispatch the request since : - adapter xhr is not supported by the environment - adapter http is not available in the build 解决方案&…...
深度学习习题2
1.如果增加神经网络的宽度,精确度会增加到一个特定阈值后,便开始降低。造成这一现象的可能原因是什么? A、即使增加卷积核的数量,只有少部分的核会被用作预测 B、当卷积核数量增加时,神经网络的预测能力会降低 C、当卷…...
Spring是如何解决Bean的循环依赖:三级缓存机制
1、什么是 Bean 的循环依赖 在 Spring框架中,Bean 的循环依赖是指多个 Bean 之间互相持有对方引用,形成闭环依赖关系的现象。 多个 Bean 的依赖关系构成环形链路,例如: 双向依赖:Bean A 依赖 Bean B,同时 Bean B 也依赖 Bean A(A↔B)。链条循环: Bean A → Bean…...
A2A JS SDK 完整教程:快速入门指南
目录 什么是 A2A JS SDK?A2A JS 安装与设置A2A JS 核心概念创建你的第一个 A2A JS 代理A2A JS 服务端开发A2A JS 客户端使用A2A JS 高级特性A2A JS 最佳实践A2A JS 故障排除 什么是 A2A JS SDK? A2A JS SDK 是一个专为 JavaScript/TypeScript 开发者设计的强大库ÿ…...
GruntJS-前端自动化任务运行器从入门到实战
Grunt 完全指南:从入门到实战 一、Grunt 是什么? Grunt是一个基于 Node.js 的前端自动化任务运行器,主要用于自动化执行项目开发中重复性高的任务,例如文件压缩、代码编译、语法检查、单元测试、文件合并等。通过配置简洁的任务…...
