火爆全网,最全性能测试从0到1进阶总结,高阶内卷学习路线...

news2024/11/17 15:41:49

目录:导读

    • 前言
    • 一、Python编程入门到精通
    • 二、接口自动化项目实战
    • 三、Web自动化项目实战
    • 四、App自动化项目实战
    • 五、一线大厂简历
    • 六、测试开发DevOps体系
    • 七、常用自动化测试工具
    • 八、JMeter性能测试
    • 九、总结(尾部小惊喜)


前言

例如:一个登录功能它能实现登录操作,但是登录过程需要 10s 才能进入到主页面,这就说明软件的性能不好。

说到性能测试,第一印象可能是高大上,因为它涉及到评估系统的性能、稳定性和可靠性。确实,性能测试水很深,如果玩得比较溜就能发展成性能测试专家、架构师级别。

对于初中级测试同学的要求大概就是会接口压测,能根据生成的报告分析 TPS、并发量、吞吐量、资源利用率等关键指标,可以协助开发人员进行性能调优。

什么是性能测试?

性能测试是指通过自动化的测试工具(例如:Jmeter、LoadRunner、Locust 等)模拟多种正常值、峰值以及异常负载条件来对系统的各项性能指标(例如:响应时间、吞吐量、并发量、资源利用率、错误率等)进行测试。

功能测试关注的是 1 个人的操作(也就是关注该功能是否能够实现),性能测试关注的是多个人的操作(性能测试的前提是功能没有问题)。

性能测试指标

知道了什么是性能和什么是性能测试之后,我们需要了解一些性能相关的指标,只有通过性能指标的确立和分析,我们才能判断软件的性能是否符合要求。

①响应时间 RT(Response Time)
从用户发送一个请求到用户接收到服务器返回的响应数据的这段时间就是响应时间。

通常使用平均响应时间、最大响应时间、百分位响应时间等来衡量。
响应时间 = 呈现时间 + 网络传输时间 + 服务器端响应时间 + 应用延时时间

②吞吐量(Throughput)
单位时间内系统处理的客户端请求数量。

通常使用请求数/秒(QPS)或请求数/分钟(RPM)作为吞吐量的单位,还可以使用页面数/秒表示,从业务的角度来说也可以使用访问人数/天 或 页面访问量/天 作为单位。

throughput=(number of requests)/(total time)

③并发数(Concurrency)
同时并发使用系统的用户数量,通常使用最大并发用户数、在线用户数、系统用户数等来衡量。

并发用户数:某一物理时刻同时向系统提交请求的用户数,提交的请求可能是同一个场景或功能,也可以是不同场景或功能。
在线用户数:某段时间内访问系统的用户数,这些用户并不一定同时向系统提交请求。例如:日活 —— 表示每日活跃用户数
系统用户数:系统注册的总用户数据。
三者之间的关系:系统用户数 >= 在线用户数 >= 并发用户数

④资源利用率
对不同系统资源的使用程度,通常以占用最大值的百分比来衡量。

⑤CPU使用率
CPU 就像人的大脑,主要负责相关事物的判断以及实际处理的机制。

CPU 使用率是指 CPU 在运行系统时的占用率,通常使用平均 CPU 使用率、峰值 CPU 使用率来衡量(一般不超过 80%-90%)。

⑥内存使用率
内存就是大脑中的记忆块区,将眼睛、皮肤等收集到的信息记录起来的地方,以供 CPU 进行判断,但是是临时的,访问速度快,如果关机或断电,内存中的数据就会消失。

内存使用率是指系统运行时内存的占用率,通常使用平均内存使用率、峰值内存使用率等来衡量。

⑦磁盘I/O
大脑中的记忆区块,将重要的数据保存起来,永久保存,关机或断电也不会丢失,速度慢,以便将来再次使用这些数据(通过查看读写)。通常使用磁盘读写速度、磁盘 I/O 请求数等来衡量。

⑧网络
带宽,通常使用发送 / 接收的速率来衡量。

性能测试工具

JMeter:功能强大且广泛使用的开源性能测试工具。支持多种协议和技术,包括 HTTP、HTTPS、Web Services、JDBC、FTP 等,可以模拟大量并发用户和生成复杂的测试场景。

LoadRunner:一款商业性能测试工具,适用于复杂的企业级应用程序。提供了广泛的协议和技术支持,具备强大的负载生成和监控能力,能够模拟大规模用户负载和复杂的业务流程。

Locust:开源的负载测试工具,使用 Python 编写。具有简单的语法和易于编写的脚本,可以模拟大量并发用户并执行复杂的测试场景。它还提供了实时监控和可视化报告功能。

不同的工具各具特色,在不同的测试需求和项目环境下选择适合的工具即可,这里推荐 JMeter 和 Locust。

性能测试流程

①分析性能需求,确定测试目标
性能指标可由产品经理或项目经理制定,或通过日志监控分析确定性能测试场景以及指标。

例如:事务通过率为 100%,TOP99% 在 5000ms 以内,最大并发用户数为 1000 人,CPU 和内存的使用率在 70% 以下。

②制定性能测试计划
制定性能测试策略,包括测试范围、测试环境、测试数据和负载配置等。

确定测试的时间(通常在功能稳定后,如第一轮测试后进行)和资源限制,制定测试计划的时间表和里程碑。

③编写测试方案
选择适合的性能测试工具,如 JMeter、LoadRunner 等。选择适当的监控工具,用于监测系统资源使用情况和性能指标。

④搭建 / 确认测试环境,准备测试数据
搭建符合测试需求的环境,包括硬件、软件、网络和数据库等。
配置测试服务器、负载发生器和监控工具,确保准备就绪。

⑤编写性能测试脚本
根据测试场景和负载类型,编写测试脚本,定义用户操作和事务流程。
设置性能测试工具的参数,如并发用户数、请求频率等。

⑥性能测试脚本调优(脚本增强)
设置检查点、参数化、关联、集合点、事务、调整思考时间,删除冗余脚本。

⑦分析和优化
对测试结果进行分析,识别性能瓶颈和问题所在,根据分析结果,提出优化建议和解决方案。

收集相关数据和日志信息提单给开发同学。

⑧回归测试
进行性能调优和优化测试,验证改进措施的有效性。同时业务测试也要回归,避免优化性能后影响功能的正常使用。

⑨编写测试报告
撰写性能测试报告,总结测试结果和分析,包括性能指标和问题列表。
提供优化建议和改进措施,供开发团队参考和实施。
将报告交付给相关团队和利益相关者,进行讨论和反馈。

⑩进行持续性能监控
在系统上线后,进行定期的性能监测和测试,确保系统的稳定性和可靠性。
根据实际使用情况和变化的需求,及时调整和优化系统的性能。

性能测试学习路线

①理解基本概念和原理
学习性能测试的基本概念,例如性能指标、负载、吞吐量、响应时间等。
了解性能测试的重要性,以及如何评估系统的性能和稳定性。

②掌握性能测试工具
选择一款常用的性能测试工具,推荐 JMeter,学习性能测试工具的基本原理和使用方法,例如:JMeter 常用的组件和元件、JMeter 实现参数化的三种方法、JMeter 响应结果断言和 cookie 管理器、同步计时器实现并发场景、接口关联性之正则表达式和 JSON 表达式提取器、JMeter 服务器资源监控和聚合报告分析等。

③工具增强
由于图形化压测需要消费资源,所以可以使用命令行脱离图形进行压测。当单机 JMeter 提供压力不够时,可以学学分布式压测。

JMeter 还可以学习基于 Beanshell 等第三方插件方式做二次开发,还可以将编写和调试好的脚本丢到 Linux 非 GUI 环境中执行,解决 Jmeter 在 Windows 环境下套接字太多,负载过大的痛点。

④分层监控学习
简单的使用命令(例如 Linux 命令 df、du、free、netstat 等)监控服务器资源,包括 CPU、内存、磁盘、网络等,会指标分析。

如果感觉不够直观,还可以学习如何搭建 Prometheus+Exporter+Grafana 进行图形化界面展示指标,也可以监控硬件和数据库。除此之外,还可以学习下 SkyWalking 做分布式链路监控,并结合钉钉做报警机制。

⑤性能瓶颈分析
学会分析常见的性能问题,例如:CPU 飙升如何定位到代码级别、接口响应时间过长怎么分析、慢查询 SQL 问题等。

简单来说,性能测试不达标就要判断是代码问题还是服务器资源问题,例如:通过监控系统的物理资源,发现 CPU 占用 100%,或者内存占满,带宽打满等就大概率是服务器资源问题,就提单子给运维同学。

如果 CPU、内存、带宽等都达标,测试发现还有性能问题,那就是开发问题,就要指派给开发去处理。

还可以通过工具如 Arthas 定位代码链路问题,总之到这个段位水就比较深了,常常需要跟开发同学配合一起发现解决问题。

⑥性能测试平台开发
到这一阶段基本属于性能测试中的大佬了,一方面需要懂性能测试的原理,另一方面需要会前后端开发技术栈,例如:前端 Vue,后端 SpringBoot、MyBatis 等。

专门做全链路压测平台的一般都是互联网大公司,有的是基于 Jmeter 套个壳子做二次开发,有的甚至完全脱离 Jmeter 开发自己的平台,就看公司需求跟成本投入了。

下面是我整理的2023年最全的软件测试工程师学习知识架构体系图

一、Python编程入门到精通

请添加图片描述

二、接口自动化项目实战

请添加图片描述

三、Web自动化项目实战

请添加图片描述

四、App自动化项目实战

请添加图片描述

五、一线大厂简历

请添加图片描述

六、测试开发DevOps体系

请添加图片描述

七、常用自动化测试工具

请添加图片描述

八、JMeter性能测试

请添加图片描述

九、总结(尾部小惊喜)

成功从来不是偶然的,它需要我们付出更多的努力和汗水。在追逐梦想的路上,只要我们坚定信念、勇往直前,就一定能够收获成功的喜悦。让我们一起奋斗,创造自己的辉煌人生!

每个人都有自己的梦想和追求,只要我们肯付出努力,坚持不懈地追求,就一定能够实现它们。让我们勇敢面对挑战,努力拼搏,创造属于自己的辉煌!

每一次努力,都是为了让未来的自己更加优秀。不要停下脚步,继续前行,让自己的梦想变成现实。只有坚持不懈,才能迎来辉煌的明天!

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

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

相关文章

ArduPilot飞控开源代码之滤波设置

ArduPilot飞控开源代码之滤波设置 1. 源由2. 原理3. 调优3.1 ACC低通滤波 INS_ACCEL_FILTER3.2 GRYO低通滤波 INS_GYRO_FILTER3.3 陷波滤波 INS_HNTCH_ENABLE & INS_HNTC2_ENABLE 4. 总结5. 参考资料 1. 源由 对于飞控传感器来来说,振动噪声也是数据。 单纯从数…

yolov3

文章目录 前言一、主干网络darknet53二、从特征获取预测结果 前言 本文主要讲解yolov3的基本知识,如有错误请指出。 本文主要来自 博客1 博客2 一、主干网络darknet53 53是因为有53层。 1、darknet53没有使用pooling 来进行下采样,而是用一个33&…

电脑数据隐藏原因有哪些?电脑里隐藏的数据怎么恢复

电脑里隐藏的数据怎么恢复?电脑中的数据很容易被隐藏,这时候很多人可能会感到焦急和无助。不过不用担心,本文将为大家介绍三种方法,让你轻松找回被隐藏的数据! ※电脑数据隐藏原因有哪些 电脑数据可能会隐藏&#xf…

100天精通Golang:全面掌握Go语言的旅程

🌷 博主 libin9iOak带您 Go to Golang Language.✨ 🦄 个人主页——libin9iOak的博客🎐 🐳 《面试题大全》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~🌺 🌊 《I…

QLoRA:量化 LLM 的高效微调

此 repo 支持论文“QLoRA:量化 LLM 的高效微调”,旨在使对 LLM 研究的访问民主化。 QLoRA 使用bitsandbytes进行量化,并与 Hugging Face 的PEFT和transformers库集成。QLoRA 由华盛顿大学 UW NLP 小组的成员开发。 概述 我们介绍了 QLoRA&…

volatile - (C语言)

volatile关键字和const一样都是一种类型修饰符,用它修饰过的变量表示可以被某些编译器未知的因素更改,比如操作系统、硬件或者是其它线程等。 该关键字是不希望被编译器优化,从而达到稳定访问内存的目的。 示例代码: #include&…

FlinkUI和Flink常见问题解决

Flink 系统架构/Flink 作业提交运行的原理 我们编写的代码,对应着在Flink集群上执行的一个作业;所以我们在本地执行代码, 其实是idea开发环境中根据引入的依赖,先模拟启动一个Flink集群,然后把我们代码中定义好的操作,作为"作业",(job要打包好)然后将作业提…

双出口网络链路和设备双冗余案例

1、AR3模拟联通和电信运营商 2、2台防火墙vrrphrp双冗余,下联局域网vrrp 10.3.0.3地址,上联两条外线每条外线都分别vrrp虚拟一个地址1.1.1.1.和2.2.2.2.1。 3、防火墙外线地址和运营商给的外线地址不在同一个网段,每条都用vrrp冗余链路&#…

安装第三方库时的问题—复现带setup.py的项目

目录 题目分析: 正片开始: 题目分析: 事情的经过大致是这样: 今天在github上拿到一个处理时间序列的迁移学习项目的复现代码,项目文件如下所示: 或者我们来关注一下tl4sm这个文件夹里的东西&#xff1…

Tomcat的部署和优化(生命中的全部偶然,其实都是命中注定)

文章目录 一、Tomcat简介二、Tomcat 的构成三、Tomcat 功能组件结构四、Tomcat 请求过程五、Tomcat 服务部署六、Tomcat 虚拟主机配置七、Tomcat优化1.Tomcat 配置文件参数优化2.JVM优化 一、Tomcat简介 Tomcat 是 Java 语言开发的,Tomcat 服务器是一个免费的开放源…

【shiro】问题记录--为什么refreshToken方法走不下去

一、前言 最近做Jwt token续签的时候,在很多博客和下载的代码中,都是在JWTFilter中进行token的刷新,于是就按照了网上的代码进行尝试,代码如下: 1. 代码 在JWTFilter中的isAccessAllowed方法 目的:就是想…

STM32单片机RS485远程PID直流电机调速系统光电传感器

实践制作DIY- GC0137-RS485远程PID直流电机调速系统 基于STM32单片机设计-RS485远程PID直流电机调速系统 二、功能介绍: 主机:STM32F103C系列最小系统LCD1602直流电机光电测速MX15系列驱动模块4*4矩阵键盘RS485收发电路 从机:STM32F103C系…

Kubernetes配置管理

1. ConfigMap简介 Kubernetes ConfigMap是一种用于存储应用程序配置信息的对象。在企业中,我们通常会有许多不同的应用程序,每个应用程序都需要一些配置信息,例如数据库连接字符串、API密钥等等。这些配置信息可能会因为环境的不同而有所不同…

JavaSE进阶(day12,复习自用)

网络编程(通信) 网络通信三要素三要素概述、要素一:IP地址IP地址操作类-InetAddress要素二:端口号要素三:协议 UDP通信-快速入门UDP通信-广播、组播TCP通信-快速入门编写客户端代码编写服务端代码、原理分析 TCP通信-多…

30天从入门到精通TensorFlow1.x 第四天,TensorFlow中的计算图或数据流图

文章目录 一、接前一天二、计算图或数据流图1. 什么是计算图或者数据流图2. 为什么需要计算图或者数据流图3. 执行顺序和延迟加载在tf中的使用 一、接前一天 这几天主要学习了张量的创建方法,以及变量,变量命名域共享变量等概念。今天主要熟悉 数据流图…

网络隔离的生物制药企业,怎样实现安全的跨网文件交换?

在数字时代,生物制药企业结合现代技术追求和实现生物科技领域上的突破,研发及生产出更多满足人体健康需求的药物及医疗技术。由于生物制药企业,在进行某一领域的科研时通常周期较长、且涉及很多创新性成果,因此,科研数…

css:CSS 线性渐变linear-gradient

CSS 渐变使您可以显示两种或多种指定颜色之间的平滑过渡。 CSS 定义了两种渐变类型: 线性渐变(向下/向上/向左/向右/对角线)径向渐变(由其中心定义) 参考文档 CSS 线性渐变 https://www.w3school.com.cn/css/css3_…

访问学者带孩子去美国何时入境最好?

访问学者带孩子去美国入境的最佳时间会受到多种因素的影响,例如孩子的学校安排、访问学者的工作计划以及家庭的个人喜好。然而,以下是知识人网小编整理的一些常见考虑因素: 1. 学校假期:如果孩子正在就读学校,最佳时间…

uniapp 打包app wgt热更新和整包更新以及更新弹窗动画

app热更新是app项目最常见的功能,接下来我总结了当时做这个功能的过程,来交流学习一哈 热更新的流程步骤 在用户进入app就获取当前版本号与调用后端接口返回的版本号对比是否是最新的版本不是最新弹出弹窗让用户确认是否更新,点击更新下载w…

财务创造价值,如何降本增效?

一、整体成本管控理论 有财务人员可能认为这和我们财务有什么关系,这和财务管理也没有关系。我们经常提到的业务财融合以及成本BP,其实在这里面是需要发挥应有的价值的。如何理解这个问题?无论是老板还是财务人员,一是有财务管理…