全网最牛,性能测试超全流程总结整理,你都遗漏了什么...

news2024/11/19 3:29:09

目录:导读

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


前言

1、性能需求分析

性能需求分析是整个性能测试工作开展的基础,如果连性能的需求都没弄清楚,后面的性能测试执行其实是没有任何意义的,而且性能需求分析做的好不好直接影响到性能测试的结果。

一些性能测试人员常犯的错误就是测试一开始就直接用工具对系统进行加压,没有弄清楚性能测试的目的,稀里糊涂做完了以后也不知道结果是否满足性能需求。

在需求分析阶段,测试人员需要与项目相关的人员进行沟通,收集各种项目资料,对系统进行分析,建立性能测试数据模型,并将其转化为可衡量的具体性能指标,确认测试的目标。

通过性能需求分析需要得出哪些结论或目标:
明确倒底要不要做性能测试?性能测试的目的是什么?
明确被测系统是什么?被测试系统的相关技术信息如:架构、平台、协议等
明确被测系统的基本业务、关键业务,用户行为
明确性能测试点是什么?哪些需要测,为什么?哪些不需要测,又是为什么?
明确被测系统未来的业务拓展规划以及性能需求?
明确性能测试策略,即应该怎么测试?
明确性能测试的指标,知道测试出来的结果怎么算通过?

需求分析阶段我们可以从以下几个方面入手:

1、系统信息调研
指对被测试系统进行分析,需要对其有全面的了解和认识,这是我们做好性能测试的前提,而且在后续进行性能分析和调优时将会大有用处。

试想如果连系统的架构、协议都不了解,我们如何进行准确的性能测试?
如果进行性能分析与调优?

需要分析的系统信息如下(包括但不仅限于如下这些):

请添加图片描述

2、业务信息调研
指对被测试的业务进行分析,通过对业务的分析和了解,方便我们后续进行性能测试场景的确定以及性能测试指标的确定。

需要分析的业务信息如下(包括但不仅限于如下这些):

请添加图片描述

3、性能需求评估
在实施性能测试之前,我们需要对被测系统做相应的评估,主要目的是明确是否需要做性能测试。

如果确定需要做性能测试,需要进一步确立性能测试点和指标,明确该测什么、性能指标是多少,测试通过or不通过的标准?

性能指标也会根据情况评估,要求被测系统能满足将来一定时间段的业务压力。

判断是否进行性能测试主要从下面两个方面进行思考:

业务角度:
系统是公司内部 or 对外?系统使用的人数的多少?如果一个系统上线后基本没几个人使用,无论系统多大,设计多么复杂,并发性的性能测试都是没必要的,前期可以否决。当然,除非在功能测试阶段发现非常明显的性能问题,使得用户体验较差的,此时可进行性能测试来排查问题。

系统角度:系统又可以从以下3个方面进行分析
系统架构:
如果一个系统采用的框架是老的系统框架(通常大公司都有自己的统一框架),只是在此框架上增加一些应用,其实是没有必要做性能测试,因为老框架的使用肯定是经过了验证的。如果一个系统采用的是一种新的框架,可以考虑做性能测试。

数据库要求:
很多情况下,性能测试是大数据量的并发访问、修改数据库,而瓶颈在于连接数据库池的数量,而非数据库本身的负载、吞吐能力。这时,可以结合DBA的建议,来决定是否来做性能测试。

系统特殊要求:
从实时性角度来分析,某些系统对响应时间要求比较,比如证券系统,系统的快慢直接影响客户的收益,这种情况就有作并发测试的必要,在大并发量的场景下,查看这个功能的响应时间。

从大数据量上传下载角度分析,某些系统经常需要进行较大数据量的上传和下载操作,虽然此种操作使用的人数不会太多,但是也有必要进行性能测试,确定系统能处理的最大容量,如果超过这个容量时系统需要进行相关控制,避免由于不人工误操作导致系统内存溢出或崩溃。

4、确定性能测试点:
在上面第3点中,我们简单分析了如何确定一个系统是否需要做性能测试。

下面简单总结下如果一个系统确定要做性能测试,我们如何确定被测系统的性能测试点?

我们可以从下面几个方面进行分析:
关键业务:
确定被测项目是否属于关键业务,有哪些主要的业务逻辑点,特别是跟交易相关的功能点。例如转账,扣款等接口。如果项目(或功能点)不属于关键业务(或关键业务点),则可转入下面。

日请求量:
确定被测项目各功能点的日请求量(可以统计不同时间粒度下的请求量如:小时,日,周,月)。如果日请求量很高,系统压力很大,而且又是关键业务,该项目需要做性能测试,而且关键业务点,可以被确定为性能点。

逻辑复杂度:
判定被测项目各功能点的逻辑复杂度。如果一个主要业务的日请求量不高,但是逻辑很复杂,则也需要通过性能测试。原因是,在分布式方式的调用中,当某一个环节响应较慢,就会影响到其它环节,造成雪崩效应。

运营推广活动:
根据运营的推广计划来判定待测系统未来的压力。未雨绸缪、防患于未然、降低运营风险是性能测试的主要目标。

被测系统的性能不仅能满足当前压力,更需要满足未来一定时间段内的压力。因此,事先了解运营推广计划,对性能点的制定有很大的作用。

例如,运营计划做活动,要求系统每天能支撑多少 PV、多少 UV,或者一个季度后,需要能支撑多大的访问量等等数据。

当新项目(或功能点)属于运营重点推广计划范畴之内,则该项目(或功能点)也需要做性能测试。

以上 4 点,是相辅相成、环环相扣的。在实际工作中应该具体问题具体分析。例如,当一个功能点不满足以上 4 点,但又属于资源高消耗(内存、CPU),也可列入性能测试点行列。

5、确定性能指标
性能需求分析一个很重要的目标就是需要确定后期性能分析用的性能指标,性能指标有很多,可以根据具体项目选取和设定,而具体的指标值则需要根据业务特点进行设定。

性能测试准备

1、测试环境准备
系统运行环境:这个通常就是我们的测试环境,有些时候需求比较多,做性能测试担心把环境搞跨了影响其它的功能测试,可能需要重新搭建一套专门用来做性能测试的环境。

执行机环境:这个就是用来生成负载的执行机,通常需要在物理机上运行,而物理机又是稀缺资源,所以我们每次做性能测试都需要提前准备好执行机环境。

2、测试场景设计
根据性能需求分析来设计符合用户使用习惯的场景,场景设计的好不好直接影响到性能测试的效果。

3、性能工具准备
负载工具:根据需求分析和系统特点选择合适的负载工具,比如LR、Jmeter或galting等

监控工具:准备性能测试时的服务器资源、JVM、数据库监控工具,以便进行后续的性能测试分析与调优。

4、测试脚本准备
如果性能测试工具不能满足被测系统的要求或只能满足部分要求时,需要我们自己开发脚本配合工具进行性能测试。

5、测试数据准备
负载测试数据:并发测试时需要多少数据?比如登录场景?

DB数据量大小:为了尽量符合生产场景,需要模拟线上大量数据情况,那么要往数据库里提前插入一定的数据量。这可能需要花费一些时间,特点是关联系统较多,逻辑复杂的业务可能同时涉及多张表。

性能测试执行

1、人工边执行边分析
通常我们做性能测试都是人工执行并随时观察系统运行的情况、资源的使用率等指标。性能测试的吸引力之一就在于它的不可预知性。

当我们在做性能测试的时候遇到跟预期不符的情况很正常,这个时候需要冷静的分析。但这个过程可能会很慢长,需要不断的调整系统配置或程序代码来定位问题,耗时耗人力。

特别是在当前敏捷开发模式比较流行的大环境下,版本发布非常频繁且版本周期短(通常1~2周一个版本),没有那么长的时间来做性能测试。

2、无人值守执行性能测试
无人值守是最理想化的目标,目前我们也朝着这个方向努力。无人值守不是说没有人力介入,而是把人为的分析和执行过程分离,执行过程只是机器服从指令的运行而已。

通常测试环境在白天比较繁忙,出现性能问题及定位难度较大且会影响功能测试。所以一般性能测试最好在晚上或周末进行,在相对较安静的条件有利于测试结果的稳定性。

这种方法也相对比较适合敏捷的模式,不需要人工一直守着。只需要在拿到结果后进行分析就好了。同进,这种方式对测试人员能力的要求比较高,需要我们能进行自动化的收集各种监控数据、生成报表便于后续分析。

结果分析与调优

关于性能分析与调优后续再更新。

测试报告与总结

性能测试报告是性能测试的里程碑,通过报告能展示出性能测试的最终成果,展示系统性能是否符合需求,是否有性能隐患。

性能测试报告中需要阐明性能测试目标、性能测试环境、性能测试数据构造规则、性能测试策略、性能测试结果、性能测试调优说明、性能测试过程中遇到的问题和解决办法等。

性能测试工程师完成该次性能测试后,需要将测试结果进行备案,并做为下次性能测试的基线标准,具体包括性能测试结果数据、性能测试瓶颈和调优方案等。

同时需要将测试过程中遇到的问题,包括代码瓶颈、配置项问题、数据问题和沟通问题,以及解决办法或解决方案,进行知识沉淀。

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

一、Python编程入门到精通

请添加图片描述

二、接口自动化项目实战

请添加图片描述

三、Web自动化项目实战

请添加图片描述

四、App自动化项目实战

请添加图片描述

五、一线大厂简历

请添加图片描述

六、测试开发DevOps体系

请添加图片描述

七、常用自动化测试工具

请添加图片描述

八、JMeter性能测试

请添加图片描述

九、总结(尾部小惊喜)

每一个成功者都曾历经挫折和困难,但他们没有放弃,而是不断努力奋斗,最终获得了成功。只要你坚定信念,勇于拼搏,就一定能够创造出美好的未来。无论前方有多少困难和挑战,都请勇往直前,不屈不挠,坚定走下去。

每一次的付出和努力都不会白费,坚定你的信念,迎接挑战,勇往直前。只要持之以恒,终将迎来成功的喜悦。不要停下脚步,相信自己,你可以做到更好!

只要心中有梦想,就一定要勇敢地追求,无论遇到多少困难和挫折,都要坚持不懈。只有不停地努力和拼搏,才能让自己的人生变得更加精彩和充实。让我们一直奋斗!

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

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

相关文章

Jenkins自动化构建

自动化构建 Jenkins 是一款开源 CI&CD 软件,用于自动化各种任务,包括构建、测试和部署软件 Jenkins 支持各种运行方式,可通过系统包、Docker 或者通过一个独立的 Java 程序 安装依赖 安装参考:Windows环境下安装Jenkins **…

解锁市场潜力:海外网红营销效果最大化的7个关键步骤

在当今数字化时代,海外网红营销已经成为许多企业推广产品和品牌的重要手段。通过与海外网红合作,品牌可以有效地扩大影响力和受众群体,并提升产品或服务的认知度。然而,要实现海外网红营销效果最大化,并不是一件轻而易…

一元函数微分学中导数--定义--意义--基本公式--运算法则

目录 导数的定义 左导数和右导数 导数的几何意义和物理意义 几何意义 导数的几何意义--切线的斜率 物理意义 导数的物理意义——瞬时速度 基本初等函数导数公式 基本初等函数 常用基本初等函数导数公式 导数求解的四则运算法则 函数的求导法则 复合函数求导法则 导…

Linux驱动入门(五)——构建第一个驱动程序

文章目录 前言开发环境配置之内核升级为什么升级内核内核升级 Hello world 驱动程序驱动模块的组成Hello World模块编译Hello World模块模块的操作Hello World模块加载后文件系统的变化 模块参数和模块之间通信模块参数模块的文件格式ELF模块之间的通信模块之间的通信实例 将模…

RHEL 9 新特性及技术演示

OpenSSH:新增禁止 root 的密码登录 Cockpit:RHEL 的 Web 控制台 DNF-3:软件安装方法 NetworkManager:网络管理的主要组件 Nftables:默认的用户空间防火墙 WireGuard:快速、安全的 VPN 隧道&#xff08…

阿里架构师珍藏版“亿级高并发系统设计手册(2023 版)”

高并发 俗话说:罗马不是一天建成的,系统的设计当然也是如此。 从原来谁都不看好的淘宝到现在的电商巨头,展现的不仅仅是一家互联网巨头的兴起,也是国内互联网行业迎来井喷式发展的历程,网络信号从 2G 发展到现在的 5…

【计算机图形学】期末复习Bezier曲线与曲面篇

【计算机图形学】期末复习Bezier曲线与曲面篇 文章目录 【计算机图形学】期末复习Bezier曲线与曲面篇一、Bezier曲线的定义二、一次Bezier曲线(直线)三、二次Bezier曲线(抛物线)四、三次Bezier曲线(自由曲线&#xff0…

高效地将 TailwindCSS 与 Nuxt 结合使用

在这篇文章中,我们将了解如何在 TailwindCSS 的官方 Nuxt 模块的帮助下有效地将 TailwindCSS 与 Nuxt 应用程序结合使用。我们还将了解如何将 SVG 图标与 TailwindCSS 一起使用,而不是直接使用图像或 SVG 图标,以及如何基于给定图像为 Tailwi…

总结5种常用加密算法

前言 在平时的工作中,可能也在很多地方用到了加密、解密,比如: 用户的密码不能明文存储,要存储加密后的密文 用户的银行卡号、身份证号之类的敏感数据,需要加密传输 还有一些重要接口,比如支付&#xff0…

Linux conda 环境迁移 服务器之间迁移

网上很多方法语焉不详,本文主要介绍在Linux系统之间进行单一环境迁移,从服务器A迁移到服务器B的两种方式: conda list方式进行Linux系统在线环境迁移拷贝envs方式进行Linux系统离线环境迁移 conda list方式 迁移完毕后需要手动安装缺失的py…

ProcessOn思维导图流程图 超厉害的入门指南

如果你刚刚认识ProcessOn,不知道从哪里开始,希望这篇内容可以帮助到你。ProcessOn 是什么? ProcessOn 是一款专业的在线思维导图流程图软件。 专业强大的作图工具,支持多人实时在线协作,可用于原型图、UML、BPMN、网络拓扑图等多种…

INDEMIND双目视觉惯性模组实时生成点云并保存点云图

双目惯性相机最开始是从VINS中了解到的,2018年VINS中推荐过Loitor视觉惯性相机,但是后来看到GitHub Issue中有人反映Loitor丢帧、无技术支持等问题,加之购入渠道非官方故未入手Loitor,浏览知乎时关注到Indemind的该款产品&#xf…

AI绘画:Roop插件的特性与安装!

交叉”学科”来了! 我们之前讲过可以实现单图换脸的Roop,也讲过可以通过文字描述画画的项目Stable-Diffusion-WebUI。现在这两者要通过sd-webui-roop产生交汇。 我们先来简单的看一下这个插件可以干什么! 功能特点 根据项目作者的说法&…

JavaScript二叉树及各种遍历算法详情

目录 什么是二叉树 满二叉树完全二叉树二叉树的存储 数组存储链表存储与二叉树相关的算法 深度优先遍历广度优先遍历先序遍历中序遍历后序遍历 前言: 上一篇文章中介绍了树的概念、深度优先遍历和广度优先遍历,这篇文章我们来学习一个特殊的树——二叉树。 什么是…

【计算机图形学】期末复习,选择题+判断题篇

【计算机图形学】期末复习,选择题判断题篇 题目来源于百度、B站、中国大学慕课网,适用于期末复习,内容仅供参考,祝大家考试顺利通过!!! 文章目录 【计算机图形学】期末复习,选择题判…

App压力稳定性测试之Monkey

目录 前言: 一、Monkey简介 二、monkey常见命令 三、日志导出 前言: Monkey测试是一种黑盒测试方法,用于测试Android应用程序的压力稳定性,目的是评估应用在极端情况下是否能够稳定、可靠地工作。它是Android SDK自带的一个工…

起动元件框图原理

(一)起动元件作用 为了提高保护动作的可靠性,保护装置的出口均经起动元件闭锁,只有在保护起动元 件起动后,保护装置出口闭锁才被解除。在微机保护装置里,起动元件是由软件来完成的。起动元件起动后&#…

鞣花酸爆增1226%?油橄榄、雪绒花大展拳脚? | 5月功效成分TOP100

数说故事联合用户说共创的5月功效成分榜单如约而至。 本期依旧是你最关注的两大榜单:5月用户最关注功效成分声量TOP100和5月用户最关注功效成分变量TOP100。 榜单通过整合全网社交媒体的声量,并构建指数体系,实时动态监控互联网关键成分的声…

RabbitMQ消息队列的工作模式

文章目录 1.RabbitMQ常用的工作模式2.简单模式3.WorkQueues工作队列模式4.Pub/Sub发布订阅模式5.Routing路由模式6.Topics通配符模式 1.RabbitMQ常用的工作模式 官方文档地址:https://www.rabbitmq.com/getstarted.html 工作模式其实就是消息队列分发消息的路由方…

mysql死锁问题分析

死锁问题分析 起因 起因是线上报了一个死锁问题,然后我就去查看下死锁的原因。 思路 死锁问题的排查, **日常工作中,应对各类线上异常都要有我们自己的 SOP (标准作业流程) ** ,这样不仅能够提高自己的处理问题效率&#xff…