性能测试的指南:测试类型、性能测试步骤、最佳实践等!

近期公司为了节省成本搞了一波机房迁移,整合了一些南美部署架构。有一些上google云和有些下阿里云等大的调整。 在做机房迁移项目当中就需要思考如何进行性能测试,这种大的机房迁移SRE(运维)会针对组件会做一些单组件的性能测试,但是整个迁移之后性能上面会不会整体上达到与迁移之前一致,并不能讲的很清楚。 鉴于此作为QA就要针对性的对迁移之前的性能质量做整体评估。 以下是关于性能测试的一些指南。

1.概述
性能测试是一种软件测试形式,它关注运行系统的系统在特定负载下的性能。这与查找软件错误或缺陷无关。不同的性能测试类型根据基准和标准进行测量。性能测试为开发人员提供了消除瓶颈所需的诊断信息。

在本文中,您将了解:

性能测试类型

如何运行性能测试的步骤

性能测试指标

以及软件测试最佳实践

2.软件性能测试类型
首先,了解软件在用户系统上的表现非常重要。在软件测试期间可以应用不同类型的性能测试。这是一种非功能测试,旨在确定系统的就绪性。(功能测试侧重于软件的各个功能。)

测试类型

负载测试
负载测试会随着工作负载的增加而衡量系统性能。这种工作负载可能意味着并发的用户或事务。随着工作负载的增加,系统会受到监控,以测量响应时间和系统的持续能力。该工作量在正常工作条件的参数范围内。

压力测试
与负载测试不同,应力测试(也称为疲劳测试)旨在测量正常工作条件参数之外的系统性能。该软件提供了更多可以处理的用户或事务。压力测试的目标是测量软件的稳定性。软件在什么时候发生故障,软件如何从故障中恢复?

尖峰测试(pike testing)
尖峰测试是一种压力测试,当工作负载快速且重复地大幅增加时,它会评估软件性能。短时间内工作量超出正常预期。

耐久性试验(Endurance testing)
耐久性测试(也称为浸泡测试)是对软件如何在长时间内以正常工作负载执行的评估。耐久性测试的目标是检查系统问题,如内存泄漏。(当系统无法释放丢弃的内存时,就会发生内存泄漏。内存泄漏可能会影响系统性能或导致系统失败。)

可扩展性测试(Scalability testing)
可扩展性测试用于确定软件是否有效地处理不断增加的工作负载。这可以通过在监视系统性能的同时逐渐增加用户负载或数据量来确定。此外,当CPU和内存等资源发生变化时,工作负载可能保持在相同的水平。

体积测试(Volume testing)
批量测试确定了软件对大量预测数据的执行效率。它也被称为洪水测试,因为测试用数据淹没了系统。

性能测试中观察到的最常见问题
在软件性能测试期间,开发人员正在寻找性能症状和问题。

速度问题——例如响应慢和加载时间长——经常被观察到并解决。

可以观察到其他性能问题:

瓶颈-当数据流中断或停止时,因为没有足够的容量来处理工作负载,就会出现瓶颈。

可扩展性差-如果软件无法处理所需数量的并发任务,结果可能会延迟,错误可能会增加,或者可能会发生其他影响:

磁盘使用情况

CPU使用率

内存泄漏

操作系统限制

网络配置不良

软件配置问题—通常设置的级别不足以处理工作负载。

硬件资源不足-性能测试可能显示物理内存限制或CPU性能低下。

现在我也找了很多测试的朋友,做了一个分享技术的交流群,共享了很多我们收集的技术文档和视频教程。
如果你不想再体验自学时找不到资源,没人解答问题,坚持几天便放弃的感受
可以加入我们一起交流。而且还有很多在自动化,性能,安全,测试开发等等方面有一定建树的技术大牛
分享他们的经验,还会分享很多直播讲座和技术沙龙
可以免费学习!划重点!开源的!!!
qq群号:822269834

 3.七个性能测试步骤

也称为测试台,测试环境是建立软件、硬件和网络以执行性能测试的环境。要使用测试环境进行性能测试,开发人员可以使用以下七个步骤:

1.确定测试环境。
通过识别可用的硬件、软件、网络配置和工具,测试团队可以尽早设计测试并识别性能测试挑战。性能测试环境选项包括:

生产系统子集,具有较少的低规格服务器

具有较少相同规格服务器的生产系统子集

生产系统副本

实际生产系统

2.确定绩效指标。
除了确定响应时间、吞吐量和约束等指标外,还要确定性能测试的成功标准。

3.计划和设计性能测试。
确定考虑用户可变性、测试数据和目标度量的性能测试场景。这将创建一个或两个模型。

4.配置测试环境。
准备测试环境的要素和监控资源所需的仪器。

5.实施测试设计。
开发测试。

6.执行测试。
除了运行性能测试之外,还要监视和捕获生成的数据。

7.分析、报告、重新测试。
分析数据并分享结果。使用相同的参数和不同的参数再次运行性能测试。

衡量哪些性能测试指标
需要度量来理解性能测试的质量和有效性。除非进行测量,否则无法进行改进。需要解释的两个定义:

测量值
-正在收集的数据,例如响应请求所需的秒数。

度量
-使用度量来定义结果质量的计算,例如平均响应时间(总响应时间/请求)。

衡量速度、可伸缩性和稳定性的方法很多,但不能期望每一轮性能测试都使用所有这些方法。在性能测试中使用的指标中,通常使用以下指标:

响应时间
发送请求和获得响应的总时间。

等待时间
也称为平均延迟,它告诉告诉在发送请求后接收第一个字节需要多长时间。

平均加载时间
从用户的角度来看,交付每个请求所需的平均时间是质量的主要指标。

峰值响应时间
这是对完成请求所需的最长时间的度量。显著长于平均值的峰值响应时间可能表明会产生问题的异常。

错误率软件测试
此计算是与所有请求相比导致错误的请求的百分比。这些错误通常发生在负载超过容量时。

并发用户
这是最常见的负载衡量标准,即任何时候有多少活跃用户。也称为负载大小。

每秒请求数
处理了多少请求。

事务通过/失败
成功或不成功请求总数的度量。

吞吐量
以每秒千字节为单位衡量,吞吐量显示测试期间使用的带宽量。

CPU利用率
CPU处理请求所需的时间。

内存利用率
处理请求需要多少内存。

4. 性能测试最佳实践
也许性能测试最重要的提示是尽早测试,经常测试。单个测试不会告诉开发人员他们需要知道的所有信息。成功的性能测试是一系列重复和较小的测试:

在开发过程中尽早测试。不要在项目结束时等待并匆忙进行性能测试。

性能测试不仅仅针对已完成的项目。测试单个单元或模块是有价值的。

进行多项性能测试,以确保一致的结果并确定指标平均值。

应用程序通常涉及多个系统,如数据库、服务器和服务。单独以及一起测试各个单元。

除了重复测试之外,通过遵循一系列性能测试最佳实践,性能测试将更加成功:

让开发人员、IT人员和测试人员参与创建性能测试环境。

记住,真正的人将使用正在进行性能测试的软件。确定结果将如何影响用户,而不仅仅是测试环境服务器。

超越性能测试参数。通过规划尽可能多地考虑用户活动的测试环境来开发模型。

基线测量为确定成功或失败提供了一个起点。

性能测试最好在尽可能接近生产系统的测试环境中进行。

将性能测试环境与用于质量保证测试的环境隔离开来。

没有任何性能测试工具可以完成所需的一切。有限的资源可能会进一步限制选择。研究合适的性能测试工具。

保持测试环境尽可能一致。

计算平均值将提供可操作的指标。跟踪异常值也有价值。这些极端测量可能会揭示出可能的故障。

在准备共享性能测试结果的报告时,请考虑受众。此外,在报告中包括任何系统和软件更改。

五种常见的性能测试错误
性能测试时,某些错误可能导致不可靠的结果:

没有足够的时间进行测试。
不涉及开发人员。
没有使用类似于生产系统的QA系统。
未充分调整软件。
没有故障排除计划。
性能测试谬论
性能测试错误可能导致错误或未能遵循性能测试最佳实践。根据Sofia Palamarchuk的说法,在开发软件时,这些信念可能会耗费大量资金和资源:

性能测试是开发的最后一步。
如性能测试最佳实践一节所述,预测和解决性能问题应该是软件开发的早期部分。早期实施解决方案的成本将低于软件开发结束时的主要修复。

更多的硬件可以解决性能问题。
添加处理器、服务器或内存只会增加成本,而不会解决任何问题。更高效的软件将更好地运行,并避免即使在硬件增加或升级时也可能出现的潜在问题。

测试环境足够接近。
在与生产环境类似的测试环境中进行性能测试是一种性能测试最佳实践,这是有原因的。元件之间的差异会显著影响系统性能。可能不可能在精确的生产环境中进行性能测试,但请尝试匹配:软件开发生命周期

硬件组件
操作系统和设置
系统上使用的其他应用程序
数据库
现在起作用的,是全面起作用的。
小心推断结果。不要接受一小组性能测试结果,并假设当元素发生变化时,它们将是相同的。而且,它的工作方向相反。不要根据负载测试推断最低性能和要求。所有假设都应通过性能测试进行验证。

一个性能测试场景就足够了。
并非每个性能问题都可以在一个性能测试场景中检测到。但资源确实限制了可能发生的测试数量。中间是一系列性能测试,针对风险最大的情况,对性能影响最大。此外,在计划良好和设计良好的性能测试之外,可能会出现问题。监视生产环境还可以检测性能问题。

测试每个部分等于测试整个系统。
虽然隔离功能以进行性能测试很重要,但单个组件测试结果并不构成系统范围的评估。但测试系统的所有功能可能不可行。必须使用可用资源设计尽可能完整的性能测试。但要注意哪些东西没有经过测试。

对他们有用的东西对我们有用。
如果给定的一组用户确实遇到了复杂性或性能问题,不要将其视为所有用户的性能测试。使用性能测试确保平台和配置按预期工作。

软件开发人员经验丰富,不需要性能测试。

缺乏经验并不是绩效问题背后的唯一原因。即使是过去创建过免费软件的开发人员也会犯错误。更多的变量发挥作用,特别是当系统中有多个并发用户时。

总结:

感谢每一个认真阅读我文章的人!!!

作为一位过来人也是希望大家少走一些弯路,如果你不想再体验一次学习时找不到资料,没人解答问题,坚持几天便放弃的感受的话,在这里我给大家分享一些自动化测试的学习资源,希望能给你前进的路上带来帮助。

软件测试面试文档

我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

 

视频文档获取方式:
这份文档和视频资料,对于想从事【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!以上均可以分享,点下方进群即可自行领取。  

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

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

相关文章

【LeetCode刷题-回溯】-- 47.全排列II

47.全排列II 主要需要解决全排列不重复的问题,设定一个规则,保证在填第i个数的时候重复数字只会被填入一次即可,而在本题中,我们选择对原数组排序,保证相同的数字都相邻,然后每次填入的数一定是这个数所在重…

基于深度学习的文本分类

通过构建更复杂的深度学习模型可以提高分类的准确性,即分别基于TextCNN、TextRNN和TextRCNN三种算法实现中文文本分类。 项目地址:zz-zik/NLP-Application-and-Practice: 本项目将《自然语言处理与应用实战》原书中代码进行了实现,并在此基础…

docker启动容器失败,然后查看日志,docker logs查看容器出现报错:

docker 启动容器失败,然后docker logs 查看容器出现报错: error from daemon in stream: Error grabbing logs: invalid character l after object key:value pair在网上看到的 解决方案: 找到你日志文件目录: docker inspect …

盘点55个Python书籍Python爱好者不容错过

盘点55个Python书籍Python爱好者不容错过 学习知识费力气,收集整理更不易。 知识付费甚欢喜,为咱码农谋福利。 链接:https://pan.baidu.com/s/1zJ0YGPBugDxCAAvCJbPXvA?pwd8888 提取码:8888 书籍名称: Flask We…

2016年全国硕士研究生入学统一考试管理类专业学位联考数学试题——解析版

文章目录 2016 级考研管理类联考数学真题一、问题求解(本大题共 15 小题,每小题 3 分,共 45 分)下列每题给出 5 个选项中,只有一个是符合要求的,请在答题卡上将所选择的字母涂黑。真题(2016-01&…

VueRouter

路由介绍 1.思考 单页面应用程序,之所以开发效率高,性能好,用户体验好 最大的原因就是:页面按需更新 比如当点击【发现音乐】和【关注】时,只是更新下面部分内容,对于头部是不更新的 要按需更新&#…

NOIP2003提高组第二轮T3:加分二叉树

题目链接 [NOIP2003 提高组] 加分二叉树 题目描述 设一个 n n n 个节点的二叉树 tree \text{tree} tree 的中序遍历为 ( 1 , 2 , 3 , … , n ) (1,2,3,\ldots,n) (1,2,3,…,n),其中数字 1 , 2 , 3 , … , n 1,2,3,\ldots,n 1,2,3,…,n 为节点编号。每个节点都…

做流体分析需要知道的两大核心问题:内流和外流

SOLIDWORKS Flow Simulation 是直观的流体力学 (CFD) 分析软件,可以快速轻松的分析产品内部或外部流体的流动情况,以用来改善产品性能和功能。SOLIDWORKS Flow Simulation将专业的流体分析进行功能优化,让普通机械设计师也能进行流体力学分析…

新一代网络监控技术——Telemetry

一、Telemetry的背景 传统的网络设备监控方式有SNMP、CLI、Syslog、NetStream、sFlow,其中SNMP为主流的监控数据方式。而随着网络系统规模的扩大,网络设备数量的增多,网络结构的复杂,相应监控要求也不断提升,如今这些…

Selenium实现多页面切换

当使用 Selenium 进行自动化测试或爬取数据时,有时需要处理多个页面之间的切换。以下是一些可能需要多页面切换的情况: 1、打开新窗口/页面: 在当前页面上点击链接、按钮或执行某些操作时,可能会打开一个新的窗口或页面。此时&a…

【性能优化】JVM调优与写出JVM友好高效的代码

📫作者简介:小明java问道之路,2022年度博客之星全国TOP3,专注于后端、中间件、计算机底层、架构设计演进与稳定性建设优化,文章内容兼具广度、深度、大厂技术方案,对待技术喜欢推理加验证,就职于…

U-boot(四):start_armboot

本文主要探讨210的uboot启动的第二阶段,主要函数为start_armboot。 uboot 一阶段初始化SoC内部部件(看门狗、时钟等),初始化DDR,重定位 二阶段初始化其余硬件(iNand、网卡芯片)以及命令、环境变量等 启动打印硬件信息,进入bootdelay,读秒完后执行bootc…