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

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

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

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

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

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

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

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%

结尾

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

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

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

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

 

 

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

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

相关文章

代码随想录二刷 Day42

62.不同路径 简单题目自己就可以写出来&#xff0c;注意下创建二维vector的方法就可以&#xff0c; dp table如下 class Solution { public:int uniquePaths(int m, int n) {vector<vector<int>> dp(m,vector<int>(n,0));for (int i 0; i < n; i ) {dp[…

linux加密安全和时间同步

sudo实现授权 添加 vim /etc/sudoers luo ALL(root) /usr/bin/mount /deb/cdrom /mnt/ test ALL(root:ALL) ALL 在所有主机上 提权为root用户&#xff0c; 可以执行所有命令 户"test"被授权以"root"用户身份在任意主机上执行任意命令 切换luo用户使用 su…

协同过滤推荐算法UserCF、ItemCF

目录 相似度计算基于用户的协同过滤&#xff08;UserCF&#xff09;算法评估基于物品的协同过滤&#xff08;ItemCF&#xff09;协同过滤算法的权重改进协同过滤算法的问题分析思考学习参考 相似度计算 杰卡德&#xff08;Jaccard&#xff09;相似系数 Jaccard 系数是衡量两个…

AD9371 官方例程

文章目录 前言一、HDL方面1. ZYNQ 核根据ZCU106平台修改&#xff08;**参考UG1244 ZCU106 Evaluation Board**&#xff09;&#xff0c;尤其注意**DDR**的配置&#xff08;**参考美光 MTA4ATF51264HZ**&#xff09;2.dacfifo 深度 要修改 &#xff0c;地址位宽 小于等于16&…

【小黑嵌入式系统第二课】嵌入式系统的概述(二)——外围设备、处理器、ARM、操作系统

上一课&#xff1a; 【小黑嵌入式系统第一课】嵌入式系统的概述&#xff08;一&#xff09;——概念、特点、发展、应用 下一课&#xff1a; 【小黑嵌入式系统第三课】嵌入式系统硬件平台&#xff08;一&#xff09;——概述、总线、存储设备&#xff08;RAM&ROM&FLASH…

【周末闲谈】VR新视界,“眼”见未来

个人主页&#xff1a;【&#x1f60a;个人主页】 系列专栏&#xff1a;【❤️周末闲谈】 系列目录 ✨第一周 二进制VS三进制 ✨第二周 文心一言&#xff0c;模仿还是超越&#xff1f; ✨第二周 畅想AR 文章目录 系列目录前言虚拟现实(VR)技术虚拟现实技术的原理虚拟现实技术发…

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

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

@Controller与@RestController

总结 Controller &#xff1a;定义一个控制器类. RequestMapping &#xff1a;给出外界访问方法的路径&#xff0c;或者说触发路径 &#xff0c;触发条件。 具体解析访问路径到某个方法上. ResponseBody &#xff1a;标记Controller类中的方法。把return的结果变成JSON对象…

Linux使用rpm包安装mysql5.7

以前安装过mysql 前言&#xff1a;检查以前是否装有mysql rpm -qa|grep -i mysql安装了会显示&#xff1a;   bt-mysql57-5.7.31-1.el7.x86_64 停止mysql服务和删除之前安装的mysql rpm -e bt-mysql57-5.7.31-1.el7.x86_64查找并删除mysql相关目录 find / -name mysql/va…

三江学院“火焰杯”软件测试高校就业选拔赛颁奖仪式

11月25日下午&#xff0c;“火焰杯”软件测试开发选拔赛及三江-慧科卓越工程师班暑期编程能力训练营颁奖仪式在s楼会议室隆重举行。计算机科学与工程学院院长刘亚军、副院长叶传标、曹阳、吴德、院党总支副书记王兰英、系主任杨少雄、慧科企业代表尹沁伊人、项目负责人王旭出席…

旅游业媒体套餐7个诀窍助你轻松实现销售目标-华媒舍

旅游业是一个竞争激烈的行业&#xff0c;成功营销对于吸引客户和实现销售目标至关重要。借助媒体资源是一种有效的方式。本文将介绍7个诀窍&#xff0c;借助旅游业媒体套餐轻松实现销售目标。 1. 策划细致的新闻稿 新闻稿是介绍旅游产品和服务的重要工具。确保新闻稿中包含吸引…

那些你面试必须知道的ES6知识点

目录 1、var、let、const的区别2、作用域考题3、合并两个对象4、箭头函数和普通函数的区别5、Promise有几种状态6、find和filter的区别7、some和every的区别 1、var、let、const的区别 区别一&#xff1a; var有变量提升&#xff0c;而let和const没有 <script>console.l…

通过核密度分析工具建模,基于arcgis js api 4.27 加载gp服务

一、通过arcmap10.2建模&#xff0c;其中包含三个参数 注意input属性&#xff0c;选择数据类型为要素类&#xff1a; 二、建模之后&#xff0c;加载数据&#xff0c;执行模型&#xff0c;无错误的话&#xff0c;找到执行结果&#xff0c;进行发布gp服务 注意&#xff0c;发布g…

美创科技入选“内蒙古自治区第一届网络安全应急技术支撑单位”

近日&#xff0c;内蒙古自治区党委网信办、国家网络应急技术处理协调中心内蒙古分中心评选“内蒙古自治区网络安全应急技术支撑单位”结果公布。 经自治区各地区、各部门和单位推荐各单位自主申报&#xff0c;资料审查和专家评审等环节&#xff0c;美创科技成功入选“内蒙古自治…

[HCTF 2018] Hide and seek(buuctf),Unzip(ctfshow)

考核完对python软连接还是不熟悉&#xff0c;把这两道题在做一下 [HCTF 2018]Hideandseek 登录注册之后发现可以上传文件&#xff0c;随便上传一个 回显说不是zip文件 上传一个zip文件&#xff0c;发现他会自动解析 上传了一个 GIF89a <?php eval($_POST[zxc]); ?> …

5秒盾,加速乐

5秒盾 1.先清除网站cooke在刷新&#xff0c;如果出现的稍等就有可能是5秒盾 2.用fd抓搜索参数关键字定位到包 3.抓到包后查找加密参数 4.搜索看那个位置在赋值 5.搜索赋值的参数.去找加密的js 6.删除没用的代码&#xff0c;把检测指纹的赋值过去 7.还原代码在网站的页面…

束从轩的“网红人设”,正在加重老乡鸡的割裂

文 | 螳螂观察 作者 | 图霖 “老乡鸡20周年&#xff0c;我请大家免费吃饭。” 和以往的每场活动一样&#xff0c;“网红老板”束从轩穿着印有老乡鸡品牌Logo的大红短袖T恤&#xff0c;向广大网友发出热情邀请&#xff0c;真诚得像是自家村口小卖部好客的大叔。 这并不是束从…

小A对我说,他现在快想钱想疯了…

昨天晚上11点&#xff0c;小A给我打电话 小A问&#xff1a;橙哥&#xff0c;有没有赚钱的事做&#xff1f; 他说&#xff0c;实在不想上班了&#xff0c;每天起早贪黑挤地铁 辛辛苦苦干一个月&#xff0c;到手工资三四千块钱&#xff0c;房租一交&#xff0c;日常开支一花&a…

01认识微服务

一、微服务架构演变 1.单体架构 将所有的功能集中在一个项目开发&#xff0c;打成一个包部署。优点架构简单&#xff0c;部署成本低。缺点耦合度高&#xff0c;不利于大型项目的开发和维护 2.分布式架构 根据业务功能对系统进行拆分&#xff0c;每个业务模块作为独立的项目…

redis底层数据结构

总所周知&#xff0c;redis支持五种数据类型String、Hash、List、Set、ZSet。在支持这些复杂数据结构的同时&#xff0c;redis不仅需要保证读写的性能&#xff0c;还能提供各种微操作&#xff0c;比如直接修改Hash字典中的某个field的值&#xff0c;或者直接往ZSet中插入某个值…