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

【性能】性能测试理论篇_学习笔记_2023/2/11

  1. 性能测试的目的

  • 验证系统是否能满足用户提出的性能指标

  • 发现性能瓶颈,优化系统整体性能

  1. 性能测试的分类

注:这些测试类型其实是密切相关,甚至无法区别的,例如几乎所有的测试都有并发测试。在实际中不用纠结具体的概念。而是要明确测试的目的。

  • 负载测试:系统在不同负载下的性能表现,通过负载测试能够测试出系统在各种负载下的性能变化曲线,发现系统的性能拐点,从而找出系统的最佳性能。举例:用户并发测试(递增并发用户数,查看系统性能指标变化)。

  • 压力测试:系统在高强度负载下的性能表现,通过压力测试可以测试出系统能够承受的最大负载。压测是一种寻求系统介于正常和不正常之间临界值的一种负载测试。压测不仅关注高负载下系统是否正常运行,同时关注负载减小后,系统是否能够恢复。

负载测试VS压力测试
相同点:两种测试都是针对系统承受能力的测试,都是一种量的测试;
不同点:负载测试是观察系统在不同负载下的测试,旨在找出系统的性能拐点或最佳性能;压力测试是观察系统在高负载下的运行情况,旨在找出系统所能承受的最大负载以及系统在高压下再减压后系统恢复正常的能力。
  • 并发测试:通过模拟用户并发访问,测试多用户在同一时间内访问同一个应用,同一个模块或者数据记录时是否存在死锁或者其他性能问题。并发测试一般没有标准,只是测试并发时会不会出现意外情况,几乎所有的性能测试都会涉及一些并发测试,例如多个用户同时访问某一条件数据,多个用户同时在更新数据,那么数据库可能就会出现访问错误、写人错误等异常情况。

并发数计算方法: 并发数=PV / PV Time× 页面连接次数×HTTP 响应时间× 因数/ Web 服务器数量。 其中,PV Time 是PV 的统计时间,换算成秒,一天是86 400s。页面连接次数包括外部的JS、CSS、图片等,一般为 10。HTTP 响应时间一般可为1s 或更少。因数一般为5。假设,网易官网每天有6 万PV,其余参数保持默认,那么推算 出来的并发数大致为35。(pv---page view,即页面浏览量) 并发数:60000/86400*10*5=35
  • 容量测试:在一定的软硬件及网络环境下,测试系统所能支持的最大用户数、最大存储量等。容量测试通常与数据库、系统资源(如CPU、内存、磁盘等)有关,用于规划将来需求增长(如用户增长、业务量增加等)时,对数据库和系统资源的优化。举例:电子商务网站所能承受的、同时进行交易或结算的在线用户数。

  • 可靠性测试/稳定性测试/疲劳测试:在特定的负载下(正常或略高于正常的负载),在一段运行周期内,对被测系统进行一系列的正常操作,观察各个系统性能指标变化以及系统是否能够长期稳定运行。如CPU使用率在80%以上,7*24小时运行,系统是否稳定。通过对软件稳定性的测试可以观察在一个运行周期内、一定的压力条件下,软件的出错机率、性能劣化趋势等。进而大大减少软件上线后的崩溃卡死等现象,为软件的逐步优化提供方向及验证。

  • 基准测试:一种测量和评估软件性能指标的活动。在特定时期(系统稳定时)通过基准测试建立一个已知的性能水平(称为基准线),当系统的软硬件环境发生变化之后再进行一次基准测试以确定那些变化对性能的影响。基准测试可以比较系统在版本迭代过程中,各个性能指标的变化,为系统的版本迭代优化提供参考。

  • 配置测试:指调整软件系统的软硬件环境,测试各种环境对系统性能的影响,从而找到系统各项资源的最优分配原则。配置测试不改变代码,只改变软硬件配置,例如安装版本更高的数据库、配置性能更好的CPU和内存等,通过更改外部配置来提高软件的性能。

  • 异常测试/失败测试:是指系统架构方面的测试。如在负载均衡架构中,要测试宕机、节点挂掉等情况系统的反映。

  1. 性能测试的流程

需求分析->性能指标制定->脚本开发->场景设置->监控部署->测试执行->性能分析->性能调优->测试报告

需求分析的目的:

  • 明确测试指标

  • 明确测试场景

性能指标制定的依据:

  • 新系统——同行业比较、业务预期

  • 老系统——对比以往的用户使用行为以及用户量

  1. 常见系统应用分层架构

5. 性能测试的术语

  • 事务:从客户端发起的一个或多个请求(这些请求组成一个完整的操作),到客户端接收到从服务器返回的响应。

  • TPS(transaction per second):每秒钟系统能处理的事务数(事务数不一定等于请求数)。

  • QPS(Query Per Second):每秒处理的请求数。

  • 请求响应时间:从客户端发起一个请求开始,到客户端接收到从服务器返回的响应,整个过程所耗费的时间。

  • 事务响应时间:系统处理一个事务所耗费的时间,主要是针对于用户的角度而言,如转账。

  • 并发:没有严格意义上的并发。并发总有先后,无论差距是1毫秒或者是1微秒,总有一个时间差。所以并发讲的是一个时间范围,比如1秒内。

举例:

多用户在系统上进行同一操作,比如双十一时,大家都针对同一种商品进行秒杀

多用户在系统上进行不同操作,比如双十一时,大家针对不同商品进行秒杀,或者是大家有进行其他不同的操作,比如商品浏览。

  • 并发用户数:同一单位时间内对系统发起请求的用户数量。

  • PV(Page View):是页面的浏览量或点击量,用户对系统或者网站任何页面的每一次点击或者访问都会被记录一次浏览量或点击量,对相同页面进行多次访问浏览量或点击量也会进行累计。

  • UV(Unique Vistor):是系统或者网站的独立访客,一段时间内相同客户端(或PC)访问系统或者网站只会被记录一次,连续重复访问或者浏览多个系统页面次数不会进行累计。

  • 吞吐量:单位时间内系统处理的客户端请求的数量,包含一次性能测试过程中网络上传输的数据量的总和与硬盘传输数据流的速度,传输数据为读出数据和写入数据的和。

  • 吞吐率:单位时间内网络上传输的数据量。吞吐率=吞吐量/传输时间。

  • 点击率:每秒钟用户向服务器提交的请求数。这个指标是web应用程序特有的一个指标,可以想象为每秒钟用户总共在页面上进行多少次点击动作,但是需要注意的是一次鼠标单击的操作后,客户端有可能向服务器发送了多次请求。

  • 资源使用率:对不同的系统资源的使用情况(CPU,内存,磁盘 I/O,GPU)。

6、性能测试的工具

相关文章:

【性能】性能测试理论篇_学习笔记_2023/2/11

性能测试的目的验证系统是否能满足用户提出的性能指标发现性能瓶颈,优化系统整体性能性能测试的分类注:这些测试类型其实是密切相关,甚至无法区别的,例如几乎所有的测试都有并发测试。在实际中不用纠结具体的概念。而是要明确测试…...

C语言(输入printf()函数)

printf()的细节操作很多,对于现阶段的朋友来说,主要还是以理解为主。因为很多的确很难用到。 目录 一.转换说明(占位符) 二.printf()转换说明修饰符 1.数字 2.%数字1.数字2 3.整型转换字符补充 4.标记 -符号 符号 空格符…...

Zabbix 构建监控告警平台(四)

Zabbix ActionZabbix Macros1.Zabbix Action 1.1动作Action简介 当某个触发器状态发生改变(如Problem、OK),可以采取相应的动作,如: 执行远程命令 邮件,短信,微信告警,电话 1.2告警实验简介 1. 创建告警media type&…...

2004-2019年285个地级市实际GDP与名义GDP

2004-2019年285个地级市实际GDP和名义GDP 1、时间:2004-2019年 2、范围:285个地级市 3、说明:GDP平减指数采用地级市所在省份当年平减指数 4、代码: "gen rgdp gdp if year 2003 gen rgdp gdp if year 2003" re…...

Node.js笔记-Express(基于Node.js的web开发框架)

目录 Express概述 Express安装 基本使用 创建服务器 编写请求接口 接收请求参数 获取路径参数(/login/2) 静态资源托管-express.static(内置中间件) 什么是静态资源托管? express.static() 应用举例 托管多个静态资源 挂载路径前缀…...

力扣sql简单篇练习(十五)

力扣sql简单篇练习(十五) 1 直线上的最近距离 1.1 题目内容 1.1.1 基本题目信息 1.1.2 示例输入输出 1.2 示例sql语句 SELECT min(abs(p1.x-p2.x)) shortest FROM point p1 INNER JOIN point p2 ON p1.x <>p2.x1.3 运行截图 2 只出现一次的最大数字 2.1 题目内容 2…...

浅谈动态代理

什么是动态代理&#xff1f;以下为个人理解:动态代理就是在程序运行的期间&#xff0c;动态地针对对象的方法进行增强操作。并且这个动作的执行者已经不是"this"对象了&#xff0c;而是我们创建的代理对象&#xff0c;这个代理对象就是类似中间人的角色&#xff0c;帮…...

Idea超好用的管理工具ToolBox(附带idea工具)

文章目录为什么要用ToolBox总结idea管理安装、更新、卸载寻找ide配置、根路径idea使用准备工作配置为什么要用ToolBox 快速轻松地更新,轻松管理您的 JetBrains 工具 安装自动更新同时更新插件和 IDE回滚和降级通过下载补丁或一组补丁而不是整个包&#xff0c;节省维护 IDE 的…...

Spring 中 ApplicationContext 和 BeanFactory 的区别

文章目录类图包目录不同国际化强大的事件机制&#xff08;Event&#xff09;底层资源的访问延迟加载常用容器类图 包目录不同 spring-beans.jar 中 org.springframework.beans.factory.BeanFactoryspring-context.jar 中 org.springframework.context.ApplicationContext 国际…...

情人节有哪些数码好物值得送礼?情人节实用性强的数码好物推荐

转瞬间&#xff0c;情人节快到了&#xff0c;大家还在为送什么礼物而烦恼&#xff1f;在这个以科技为主的时代&#xff0c;人们正在享受着科技带来的便利&#xff0c;其中&#xff0c;数码产品也成为了日常生活中必不可少的存在。接下来&#xff0c;我来给大家推荐几款比较实用…...

java中flatMap用法

java中map是把集合每个元素重新映射&#xff0c;元素个数不变&#xff0c;但是元素值发生了变化。而flatMap从字面上来说是压平这个映射&#xff0c;实际作用就是将每个元素进行一个一对多的拆分&#xff0c;细分成更小的单元&#xff0c;返回一个新的Stream流&#xff0c;新的…...

【MySQL Shell】8.9.2 InnoDB ClusterSet 集群中的不一致事务集(GTID集)

AdminAPI 的 clusterSet.status() 命令警告您&#xff0c;如果 InnoDB 集群的 GTID 集与 InnoDB ClusterSet 中主集群上的 GTID 集不一致。与 InnoDB ClusterSet 中的其他集群相比&#xff0c;处于此状态的集群具有额外的事务&#xff0c;并且具有全局状态 OK_NOT_CONSISTENT 。…...

logstash毫秒时间戳转日期以及使用业务日志时间戳替换原始@timestamp

文章目录问题解决方式参考问题 在使用Kibana观察日志排查问题时发现存在很多组的timestamp 数据一样&#xff0c;如下所示 详细观察内部数据发现其中日志数据有一个timestamp字段保存的是业务日志的毫秒级时间戳&#xff0c;经过和timestamp数据对比发现二者的时间不匹配。经…...

【C语言】qsort——回调函数

目录 1.回调函数 2.qsort函数 //整形数组排序 //结构体排序 3.模拟实现qsort //整型数组排序 //结构体排序 1.回调函数 回调函数就是一个通过函数指针调用的函数。如果你把函数的指针&#xff08;地址&#xff09;作为参数传递给另一个函数&#xff0c;当这个指针被用来…...

8年软件测试工程师经验感悟

不知不觉在软件测试行业&#xff0c;野蛮生长了8年之久。这一路上拥有了非常多的感受。有迷茫&#xff0c;有踩过坑&#xff0c;有付出有收获&#xff0c; 有坚持&#xff01; 我一直都在软件测试行业奋战&#xff0c; 毕业时一起入职的好友已经公司内部转岗&#xff0c;去选择…...

腾讯云安全组配置参考版

官方文档参考: 云服务器 安全组应用案例-操作指南-文档中心-腾讯云 新建安全组时&#xff0c;您可以选择腾讯云为您提供的两种安全组模板&#xff1a; 放通全部端口模板&#xff1a;将会放通所有出入站流量。放通常用端口模板&#xff1a;将会放通 TCP 22端口&#xff08;Lin…...

代码覆盖率工具OpenCppCoverage在Windows上的使用

OpenCppCoverage是用在Windows C上的开源的代码覆盖率工具&#xff0c;源码地址为https://github.com/OpenCppCoverage/OpenCppCoverage &#xff0c;最新发布版本为0.9.9.0&#xff0c;License为GPL-3.0。 从https://github.com/OpenCppCoverage/OpenCppCoverage/releases 下载…...

代码随想录算法训练营第24天25天|● 77. 组合● 216.组合总和III ● 17.电话号码的字母组合

77组合 看完题后的思路 void f&#xff08;数组&#xff0c;startIndex&#xff09;递归终止 if&#xff08;startIndex数组长度||path.sizek&#xff09;{ if(path.sizek){ 加入} }递归 for&#xff08;&#xff1b;startIndex<num.size&#xff1b;startIndex&#xff0…...

Python_pytorch

python_pytorch 小土堆pytotch学习视频链接 from的是一个个的包&#xff08;package) import 的是一个个的py文件(file.py) 所使用的一般是文件中的类(.class) 第一步实例化所使用的类,然后调用类中的方法&#xff08;def) Dataset 数据集处理 import os from PIL impo…...

【Java|golang】2335. 装满杯子需要的最短总时长

现有一台饮水机&#xff0c;可以制备冷水、温水和热水。每秒钟&#xff0c;可以装满 2 杯 不同 类型的水或者 1 杯任意类型的水。 给你一个下标从 0 开始、长度为 3 的整数数组 amount &#xff0c;其中 amount[0]、amount[1] 和 amount[2] 分别表示需要装满冷水、温水和热水的…...

别再死磕ViT了!用Swin-Transformer搞定高分辨率图像识别,保姆级原理拆解

高分辨率图像识别新范式&#xff1a;Swin-Transformer实战指南 当计算机视觉工程师面对4K医学影像或卫星地图时&#xff0c;传统ViT模型往往会遭遇显存爆炸的尴尬。我曾在一个遥感项目中发现&#xff0c;直接将ViT应用于20482048像素的图像&#xff0c;单次前向传播就消耗了32G…...

AI产品技能库:将顶尖产品智慧注入Claude Code的实战指南

1. 项目概述&#xff1a;当AI助手遇上产品大师的智慧如果你是一名产品经理、创业者&#xff0c;或者任何需要与产品打交道的人&#xff0c;最近可能已经感受到了AI助手带来的效率革命。无论是用Claude Code写代码&#xff0c;还是用ChatGPT梳理思路&#xff0c;这些工具正在成为…...

3分钟搞定!VideoDownloadHelper视频下载插件终极安装使用指南

3分钟搞定&#xff01;VideoDownloadHelper视频下载插件终极安装使用指南 【免费下载链接】VideoDownloadHelper Chrome Extension to Help Download Video for Some Video Sites. 项目地址: https://gitcode.com/gh_mirrors/vi/VideoDownloadHelper 还在为无法保存网页…...

Adobe-GenP 3.0:三步解锁Adobe全家桶的终极指南

Adobe-GenP 3.0&#xff1a;三步解锁Adobe全家桶的终极指南 【免费下载链接】Adobe-GenP Adobe CC 2019/2020/2021/2022/2023 GenP Universal Patch 3.0 项目地址: https://gitcode.com/gh_mirrors/ad/Adobe-GenP 还在为昂贵的Adobe Creative Cloud订阅费而烦恼吗&#…...

工程师如何驾驭参考设计:从复制到创新的实战指南

1. 参考设计的双刃剑&#xff1a;工程师的“爱恨情仇”在电子工程这个行当里混了十几年&#xff0c;我发现自己对“参考设计”的感情&#xff0c;就像对一位能力超群但性格有点别扭的同事。你离不开他&#xff0c;因为他总能帮你快速搞定最棘手的难题&#xff0c;让你在项目截止…...

Raycast扩展vscode-control:用全局启动器遥控VS Code提升开发效率

1. 项目概述&#xff1a;一个为Raycast打造的VS Code遥控器 如果你和我一样&#xff0c;每天大部分时间都泡在代码编辑器里&#xff0c;那么你一定对频繁在编辑器、终端、浏览器和启动器之间切换感到厌烦。尤其是当你需要快速执行一个格式化操作、运行一个NPM脚本&#xff0c;…...

机器学习在芯片电容提取中的应用与CapBench数据集

1. 电容提取与机器学习结合的背景与挑战在芯片设计流程中&#xff0c;电容提取是决定最终产品性能的关键环节。当设计进入物理实现阶段&#xff0c;工程师需要精确计算互连线之间的寄生电容&#xff0c;这些数据直接影响时序分析和功耗估算的准确性。传统基于场求解器的方法&am…...

VMware macOS虚拟机深度解锁指南:Unlocker 3.0架构剖析与实战应用

VMware macOS虚拟机深度解锁指南&#xff1a;Unlocker 3.0架构剖析与实战应用 【免费下载链接】unlocker VMware Workstation macOS 项目地址: https://gitcode.com/gh_mirrors/unloc/unlocker 在虚拟化技术领域&#xff0c;VMware Workstation和Player用户长期面临一个…...

初创公司如何构建高效董事会:从法律合规到战略增长引擎

1. 创业公司的董事会&#xff1a;从法律义务到增长引擎对于很多初次创业的创始人来说&#xff0c;“董事会”这个词听起来可能既遥远又麻烦。它像是公司法条里一个冷冰冰的规定&#xff0c;或者是在融资时不得不向投资人妥协、让渡控制权的象征。尤其是在公司刚起步、团队只有三…...

终极Windows右键菜单管理神器:ContextMenuManager让你的桌面效率提升300%

终极Windows右键菜单管理神器&#xff1a;ContextMenuManager让你的桌面效率提升300% 【免费下载链接】ContextMenuManager &#x1f5b1;️ 纯粹的Windows右键菜单管理程序 项目地址: https://gitcode.com/gh_mirrors/co/ContextMenuManager 你是否曾经在Windows右键菜…...