怎么入手性能测试,重点以及各项流程

news2024/12/21 17:04:31

之前在性能测试学习路线里,提到过《软件性能测试、分析与调优实践之路》这本书。

昨天看到之前自己记的读书笔记,整理一下发出来,希望对读者有所帮助。

网上关于性能测试的文章大多数时间比较久远,或者知识点比较散,如果你是新手的话,基本上看完这篇文章,就能对怎么做性能测试有一个初步的了解,能知道该怎么入手,知道性能测试的重点以及各项流程。

如果你想学习jmeter性能测试,我这边给你推荐一套视频,这个视频可以说是B站播放全网第一的jmeter接口测试教程,同时在线人数到达1000人,并且还有笔记可以领取及各路大神技术交流:点击文章最下方卡片进入

15天学会性能测试,通俗易懂详细教学,Jmeter性能测试实战(集群压测,全链路压测,性能调优,瓶颈分析)极速掌握,干就完事!_哔哩哔哩_bilibili15天学会性能测试,通俗易懂详细教学,Jmeter性能测试实战(集群压测,全链路压测,性能调优,瓶颈分析)极速掌握,干就完事!共计27条视频,包括:1.【性能测试】什么是性能测试以及性能测试的价值和目的、2.【性能测试】真实企业性能测试指标详解以及指标测算、3.【性能测试】真实企业中性能测试流程以及细节剖析等,UP主更多精彩视频,请关注UP账号。https://www.bilibili.com/video/BV1B14y1D7X9/?spm_id_from=333.337.search-card.all.click

一、性能测试的基础知识

1、性能测试一般分为:负载测试、压力测试、基准测试、稳定性测试、扩展性测试。
2、常见的性能测试指标:

  • 响应时间
  • TPS/QPS
  • 并发用户
  • PV/UV
  • 点击率
  • 吞吐量
  • 资源开销

(更多指标以及具体的名词解释,可参见文章《初识性能,你应该了解的基础》)

3、性能测试的场景:

  • 业务场景:系统的业务处理流程;
  • 测试场景:对业务场景的真实模拟;
  • 单场景:只涉及单个业务流程的测试场景;
  • 混合场景:每个业务流程在混合的业务流程中占的比重会不同,尽可能符合实际的业务需要。

二、性能测试的目标

1、了解系统的各项性能指标。

比如,通过压测可以了解系统能承受多大的并发访问量、系统的平均响应时间是多少、系统的TPS是多少等。

2、发现系统中存在的性能问题。

比如,系统中是否存在负载均衡不均、内存泄漏、连接泄漏、线程安全、死锁、网络架构或者应用架构扩展性问题,也能发现系统的性能瓶颈在何处。

作者列出的例子也都是比较典型的:

① 负载均衡不均匀

一般指的是在并发的情况下,每台服务器接收的并发压力不均匀,从而导致部分服务器因为压力过大而出现性能急剧下降,以及部分服务器因为并发过小而出现资源浪费的情况。

② 内存泄漏

是指应用程序代码在每次执行完后,不会主动释放内存资源而导致内存使用一直增加,最终会使服务器物理内存全部耗光,程序运行逐渐变慢,最终因为无法申请到内存而退出运行。内存泄漏多数情况下是非常缓慢的增加,不容易被发现,一般需要通过高并发性能压测才能暴露。

 连接泄漏

种类非常广泛,可以是数据库连接泄漏、HTTP连接泄漏或者其他的TCP/UDP连接泄漏等。除了系统实际情况需要建立长连接外,一般短连接都应该是用完就需要关闭和释放。

 线程安全问题

在高并发访问的多线程处理中经常会出现,表现为多个线程先后更改数据,造成所得到的数据全部是脏数据。

⑤ 死锁

出现在多并发情况下,为保证有限的资源正常使用,从而上锁,最后因为一线程(进程)无法及时释放资源,导致死锁。常见的有系统死锁、数据库死锁等。

⑥ 扩展性问题

一般是指性能指标无法满足预期的情况下,通过横向或者纵向扩展硬件资源后,系统性能指标无法按照一定的线性规律进行快速递增。

3、解决性能压测中存在的问题和性能瓶颈。

三、性能测试的基本流程

1、性能需求分析

① 熟悉业务流程,明确此次性能测试的目标,找到业务需求的性能点。

② 熟悉系统的应用架构、技术架构、数据架构、部署架构等,找到与其他系统的交互流程,明确系统部署的硬件配置信息、软件配置信息。

③ 把对性能测试有重要影响的关键点列举出来。

比如用户发起请求的顺序、请求之间的相互调用关系;业务的数据流走向;被压测系统可能存在的重点资源消耗;应用的部署架构等。

④ 明确系统上线后可能会达到的最大并发用户数、用户期望的平均响应时间以及峰值时的业务吞吐量,并将这些信息转化为性能需求指标。

2、制定性能测试计划

测试计划一般本次测试的目的,各个阶段的时间点+对应负责人,以及本次性能测试风险的分析和控制。

3、编写性能测试方案

测试方案一般包括:

① 设计测试场景。

② 定义具体事务操作。

③ 针对每个场景,明确监控对象和可能的性能瓶颈点:

  • 监控对象:比如TPS、平均响应时间、击率、并发连接数、CPU、内存、IO等。
  • 可能的性能瓶颈点:比如数据库查询、Web务器服务转发、应用服务器等。

④ 定义测试策略:明确性能测试的类型、执行顺序、加压方式(压测需要)。

⑤ 选取性能测试工具。

⑥ 明确硬件配置和软件配置:

  • 硬件配置:服务器的CPU配置、内存配置、硬盘存储配置、集群环境下还要包括集群节点的数量配置等。
  • 软件配置:操作系统、应用版本、参数配置和网络配置。

4、编写性能测试案例,对压测场景细化。

① 描述预置条件:满足啥条件性能测试案例才可以执行。

②详细描述案例执行的步骤,包括:

  • 测试脚本的录制和编写脚本的调试;
  • 脚本的执行过程(比如如何加压、每个加压的过程持续多久等);
  • 要观察和记录的性能指标;
  • 需要明确性能曲线的走势;
  • 需要监控哪些性能指标等。

③ 描述性能测试预期需要达到的结果,比如:

  • TPS需要达到多少;
  • 平比响应时间需要控制到多少以内;
  • 服务器资源的消耗需要控制在多少以内等。

ps:在实际工作中,你分析完性能需求之后,可以把测试计划、测试方案和测试案例合成一个文档,这块并没有严格的定义,可以按你们公司的流程来做。

5、搭建性能测试环境
6、构造性能测试数据
7、编写性能测试脚本
8、执行性能测试场景(案例)
9、分析性能测试结果,编写性能测试报告
10、系统性能瓶颈分析与性能调优

① 性能分析调优模型

② 性能分析调优思想:分层分析、科学论证、问题追溯与归纳总结。

③ 性能调优技术,一般包括:

  • 缓存调优
  • 同步转异步推送
  • 拆分
  • 任务分解与并行计算
  • 索引与分库分表 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

南大一作!科学家发现全新量子态 | Nature速递

光子盒研究院 马萨诸塞大学助理教授Tigran Sedrakyan在内的一个物理学家团队最近在《自然》杂志上宣布,他们已经发现了一种新的物质阶段——“手性玻色液态(chiral Bose-liquid state)”,这一突破为理解物理世界本质的古老努力开辟了一条全新道路。 团队…

【目标跟踪】MOT数据集GroundTruth可视化

MOT数据集格式简介 MOT15数据集下载&#xff1a;https://pan.baidu.com/s/1foGrBXvsanW8BI4eybqfWg?pwd8888 以下为一行gt示例&#xff1a; 1,1,1367,393,73,225,1,-1,-1,-1 各列数据对应含义如下 <frame>,<id>,<bb_left>,<bb_top>,<bb_width&g…

autocut

在讲 OpenAI Whisper 前先做了一个剪视频小工具【论文精读44】_哔哩哔哩_bilibili更多论文&#xff1a;https://github.com/mli/paper-reading, 视频播放量 58633、弹幕量 233、点赞数 2732、投硬币枚数 1630、收藏人数 1465、转发人数 604, 视频作者 跟李沐学AI, 作者简介 &am…

什么是python,一篇带你详细了解Python

Python是一种跨平台的计算机程序设计语言&#xff0c;是ABC语言的替代品&#xff0c;属于面向对象的动态类型语言&#xff0c;最初被设计用于编写自动化脚本&#xff0c;随着版本的不断更新和语言新功能的添加&#xff0c;越来越多被用于独立的、大型项目的开发。 python前景…

挖掘用户真实需求 避坑5大技巧

1、用户总是“说一套 做一套” 在进行需求市场调研时&#xff0c;我们问1000个用户&#xff0c;是否想要黄金&#xff0c;几乎所有的用户都是肯定的回答。如果我们以此认定&#xff0c;黄金是用户的真实需求会过于草率。 我们需继续追问用户&#xff1a;买黄金做什么&#xff1…

【微信小程序开发】第 7 课 - 小程序的组件

欢迎来到博主 Apeiron 的博客&#xff0c;祝您旅程愉快 &#xff01; 时止则止&#xff0c;时行则行。动静不失其时&#xff0c;其道光明。 目录 1、缘起 2、小程序中组件的分类 3、常用的视图容器类组件 3.1、view 组件 3.2、scroll - view 组件 3.3、swiper 和 swiper…

【youcans动手学模型】Xception 模型-CIFAR10图像分类

欢迎关注『youcans动手学模型』系列 本专栏内容和资源同步到 GitHub/youcans 【youcans动手学模型】Xception 模型-CIFAR10图像分类 1. Xception 神经网络模型1.1 模型简介1.2 论文介绍1.3 分析与讨论 2. 在 PyTorch 中定义 Xception 模型类2.1 深度可分离卷积2.2 带残差连接的…

【九章斩题录】从尾到头打印链表(JZ6)

精品题解 &#x1f525; 《九章斩题录》 &#x1f448; 猛戳订阅 目录 JZ6 - 从尾到头打印链表 「 法一 」链表元素存入数组后再反转 「 法二 」递归大法 「 法三 」栈 JZ6 - 从尾到头打印链表 &#x1f4da; 题目&#xff1a;输入一个链表的头节点&#xff0c;按链表从…

苹果iOS 17新功能:重置密码 72 小时内可使用旧密码再次重置

一些用户可能会遇到&#xff0c;在修改了 iPhone 密码之后&#xff0c;突然忘记新密码的情况。现在苹果在 iOS 17 中加入了新的解决方案&#xff1a;在重置密码的 72 小时之内&#xff0c;如果用户不小心忘记了新设置的密码&#xff0c;仍然可以使用旧密码进行再次重置。 在重…

TS系列之工具类型Partial、Required、Pick、Record详解,示例

TS系列之工具类型Partial、Required、Pick、Record详解&#xff0c;示例 文章目录 前言一、Partial<Type>二、Required<Type>三、Pick<Type, Keys>四、Record<Keys, Type>总结 前言 本片文章主要利用上一篇所学的keyof做一个延申与扩展的学习。在Type…

OpenGaussDB2.0.1

目录 1. GaussDB版本2. OpenGaussDB介绍3. 单节点安装3.1 环境配置3.2 安装 4. 远程连接设置 1. GaussDB版本 GaussDB的版本&#xff1a; GaussDB 100&#xff1a;目前暂不发布&#xff0c;公司合作伙伴需向华为提交申请&#xff08;GaussDB 100 将在 2020 年被正式命名为 Gaus…

Redis入门 - 3种特殊数据类型

原文首更地址&#xff0c;阅读效果更佳&#xff01; Redis入门 - 3种特殊数据类型 | CoderMast编程桅杆https://www.codermast.com/database/redis/three-special-datatype.html 在我们平常的业务中基本只会使用到Redis的基本数据类型&#xff08;String、List、Hash、Set、S…

浅谈.NET语言开发应用领域

.NET语言是一种跨平台的开发框架&#xff0c;适用于各种应用程序的开发。以下是一些常见的.NET语言开发应用领域&#xff1a; 桌面应用程序开发&#xff1a;使用.NET框架开发的桌面应用程序可以在Windows操作系统上运行&#xff0c;包括Windows Forms和WPF。这些应用程序可以用…

CentOS开机报错““error can‘t find command ‘:‘“处理方法

CentOS开机报错"error cant find command :"处理方法 本文为故障描述和问题记录。converterP2V迁移CentOS7到虚拟机&#xff0c;开机报错"error can’t find command ‘:’"的处理方法。 本文为CentOS7的操作记录&#xff0c;其他版本可以参考&#xff0c;…

CASAIM光学彩色三维扫描仪助力文物艺术品三维数字化3D打印

文物艺术品数字化&#xff0c;实际上是一种文物艺术品信息的记录方式&#xff0c;除了运用视频、照片、录音等多媒体形式将某些文物进行记录外&#xff0c;文物艺术品数字化主要是指针对有形文化遗产采用非接触式扫描得到的三维数字化记录&#xff0c;通过实景三维建模&#xf…

GitHub 上传自己的项目

文章目录 前言一、步骤1.GitHub 创建项目2.Git 上传本地项目到 GitHub3.Git 命令整理 总结 前言 不附 Demo 连接的博客不是好博客&#xff0c;所以我们要做个乐于助人&#xff0c;有责任心的人&#xff0c;这篇文章手把手教你如何在 GitHub 上传自己的项目&#xff0c; 一、步…

【OpenMMLab AI实战营二期笔记】第五天 MMPretrain代码课

1.环境安装 conda activate mmpre # 激活创建好的环境,确保安装好pytorch,可以使用gpu git clone https://github.com/open-mmlab/mmpretrain.git # 下载mmpre源码 cd mmpretrain # 进入mmpretrian目录 pip install openmim # 安装管理工具 mim install -e ".[multimodal…

JAVA开发运维(系统上到生产环境准备工作)

一、前言 java项目在开发环境开发完成&#xff0c;在测试环境测试没有问题后&#xff0c;就需要发布到生产环境&#xff0c;如果系统是对公众的&#xff0c;那就需要很多工作了。比如服务器申请&#xff0c;域名申请&#xff0c;渗透测试&#xff0c;漏洞扫描&#xff0c;公网…

第二章(第二节):导数与微分

1.导数与微分 1.导数概念 设曲线 L 的方程 y=f(x),a ≤ x ≤ b,x0 ∈ (a, b),在曲线 L 上的点 M0(x0, y0) 附近任取一点 M(x0 + Δx, y0 + Δy),过 M0 与 M 作曲线的割线M~0~M,的斜率为:当 x→x0 时,点 M 沿着曲线 L 趋向 M0,与此同时,割线 M0M 趋向一个极限位置 M0T…

想要转行的一定要看软件测试发展简史+学习路线

迄今为止&#xff0c;软件测试的发展一共经历了五个重要时期&#xff1a; 调试为主 20世纪50年代&#xff0c;计算机刚诞生不久&#xff0c;只有科学家级别的人才会去编程&#xff0c;需求和程序本身也远远没有现在这么复杂多变&#xff0c;相当于开发人员一人承担需求分析&am…