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

news2025/1/31 11:05:08

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

1.概述

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

在本文中,您将了解:

性能测试类型

如何运行性能测试的步骤

性能测试指标

以及软件测试最佳实践

2.软件性能测试类型

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

测试类型

负载测试

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

压力测试

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

尖峰测试(pike testing)

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

耐久性试验(Endurance testing)

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

可扩展性测试(Scalability testing)

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

体积测试(Volume testing)

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

性能测试中观察到的最常见问题

在软件性能测试期间,开发人员正在寻找性能症状和问题。

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

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

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

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

磁盘使用情况

CPU使用率

内存泄漏

操作系统限制

网络配置不良

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

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

3.七个性能测试步骤

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

1.确定测试环境。

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

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

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

生产系统副本

实际生产系统

2.确定绩效指标。

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

3.计划和设计性能测试。

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

4.配置测试环境。

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

5.实施测试设计。

开发测试。

6.执行测试。

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

7.分析、报告、重新测试。

分析数据并分享结果。使用相同的参数和不同的参数再次运行性能测试。

衡量哪些性能测试指标

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

测量值

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

度量

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

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

响应时间

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

等待时间

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

平均加载时间

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

峰值响应时间

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

错误率软件测试

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

并发用户

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

每秒请求数

处理了多少请求。

事务通过/失败

成功或不成功请求总数的度量。

吞吐量

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

CPU利用率

CPU处理请求所需的时间。

内存利用率

处理请求需要多少内存。

4. 性能测试最佳实践

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

五种常见的性能测试错误

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

没有足够的时间进行测试。

不涉及开发人员。

没有使用类似于生产系统的QA系统。

未充分调整软件。

没有故障排除计划。

性能测试谬论

性能测试错误可能导致错误或未能遵循性能测试最佳实践。根据Sofia Palamarchuk的说法,在开发软件时,这些信念可能会耗费大量资金和资源:

性能测试是开发的最后一步。

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

更多的硬件可以解决性能问题。

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

测试环境足够接近。

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

硬件组件

操作系统和设置

系统上使用的其他应用程序

数据库

现在起作用的,是全面起作用的。

小心推断结果。不要接受一小组性能测试结果,并假设当元素发生变化时,它们将是相同的。而且,它的工作方向相反。不要根据负载测试推断最低性能和要求。所有假设都应通过性能测试进行验证。

一个性能测试场景就足够了。

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

测试每个部分等于测试整个系统。

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

对他们有用的东西对我们有用。

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

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

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

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

在这里插入图片描述

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你! 

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

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

相关文章

如何通过代码混淆绕过苹果机审,解决APP被拒问题

如何通过代码混淆绕过苹果机审,解决APP被拒问题 目录 iOS代码混淆 功能分析 实现流程 类名修改 方法名修改 生成垃圾代码 替换png等静态资源MD5 info.plist文件添加垃圾字段 功能分析 实现流程 类名修改 方法名修改 生成垃圾代码 替换png等静态资源MD…

aidl的注意事项

该篇继承自上一篇,上一篇也有一部分的注意事项,这一篇把其他的情况列出 一 客户段和服务端的aidl文件下的package名字要是一样的 二 server中的 manifest中的package名字,这个与上面两个包不能相同,不然在客户端设置intent的pa…

Vulnhub靶场之matrix-breakout-2-morpheus

简介: vulnhub是一个提供靶场环境的平台。今天从首页下载了一个来做,它叫matrix-breakout-2-morpheus。 项目下载地址:Matrix-Breakout: 2 Morpheus ~ VulnHub 0x01 信息收集 查看本机IP,靶机跟kali都是使用NAT模式,所…

【QT开发(4)】Qt Creator编译器修改,应用程序二进制接口(ABI)的版本;API、ABI、系统调用是什么?版本的选择(ABI和CPU版本)

文章目录 1.编译器的简介2 应用程序二进制接口(ABI)的版本3 API、ABI、系统调用是什么,以及这三个词的区别。3.1 什么是API?3.2 什么是ABI?3.3 API和系统调用有什么区别 4 Qt for Android——关于版本的选择(ABI和CPU版本)参考 1.编译器的简介 编译器…

【Linux】adduser命令使用

我们经常在linux系统中创建用户。有时候用的是 useradd 有时候用的是 adduser ,好混乱啊到底用哪个啊。今天咱们一起来学习一下。 adduser与useradd的区别 useradd 命令是内置的 Linux 命令,在任何 Linux 系统中都可用。然而,使用这种低级…

Flink日志收集到数据库/kafka

引言 我们做项目过程中发现flink日志不同模式启动,存放位置不同,查找任务日志很不方便,具体问题如下: 原始flink的日志配置文件log4j-cli.properties appender.file.append false,取消追加,直接覆盖掉上…

Ansible---playbook 剧本

目录 一、playbook 1.1 playbook的组成 二、playbook的编写格式(示例) 1、定义、引用变量 2、指定远程主机sudo切换用户 3、when条件判断 4、迭代 5、Templates 模块 6、tags 模块 7、Roles 模块 一、playbook playbook是剧本的意思通过 task…

黑客技术(自学)——网络安全

前言 前几天发布了一篇 网络安全(黑客)自学 没想到收到了许多人的私信想要学习网安黑客技术!却不知道从哪里开始学起!怎么学?如何学? 今天给大家分享一下,很多人上来就说想学习黑客&#xff0c…

web安全之路的规划

前言 我自学过程中搜集的资料已经整理成一套完整的教程,需要的可以点击链接:CSDN大礼包:零基础到进阶全套学习教程,免费分享! 我的web安全学习策略 一、开始前的思考 我真的喜欢搞安全吗? 我只是想通过安全赚钱钱…

2023年【安徽省安全员C证】考试内容及安徽省安全员C证考试报名

题库来源:安全生产模拟考试一点通公众号小程序 安徽省安全员C证考试内容是安全生产模拟考试一点通总题库中生成的一套安徽省安全员C证考试报名,安全生产模拟考试一点通上安徽省安全员C证作业手机同步练习。2023年【安徽省安全员C证】考试内容及安徽省安…

Vue - 标准开发方式、组件(全局、局部、props、事件传递)、插槽的使用

目录 一、Vue 1.1、标准开发方式 1.2、组件的使用 1.2.1、全局组件 1.2.2、局部组件 1.2.3、props 传递静态数据 1.2.4、props 传递动态数据 1.2.5、事件传递 1.2.6、插槽slot 一、Vue 1.1、标准开发方式 Vue 的标准开发方式是 SPA(Single Page Applicatio…

【HCIP】ppp实验

实验要求 1、R1 和 R2 使用 PPP 链路直连,R2和R3 把2条 PPP 链路捆绑为 PPP MP 直连 2、按照图示配置 IP 地址 3、R2对R1的PPP进行单向 chap 验证 4、R2和R3的PPP进行双向 chap 验证 配置 1、如图,R1 和 R2 已使用 PPP 链路直连 2、R2 和 R3上配置…

Linux | Linux权限详解

目录 前言 一、访问角色的分类 1、用户的切换 2、root用户的理解 3、用户切换的理解 二、权限的理解 三、权限管理 1、文件的访问者 2、文件类型与访问权限 (1)文件类型 (2)访问权限 3、文件权限的修改 &#xff08…

敏捷开发中,Sprint回顾会的目的

Sprint回顾会的主要目的是促进Scrum团队的学习和持续改进。在每个Sprint结束后,团队聚集在一起进行回顾,以达到以下目标: 识别问题: 回顾会允许团队识别在Sprint(迭代)期间遇到的问题、挑战和障碍。这有助于…

专业图表绘制软件 OmniGraffle Pro mac v7.22.1中文版软件介绍

OmniGraffle Pro mac是一款Mac平台上的专业绘图软件,主要用于创建各种图形,包括流程图、组织结构图、网络拓扑图、UI原型等。该软件提供了强大的绘图工具和丰富的样式库,可以让用户快速创建出高质量的图形,并支持导入和导出各种常…

BI零售数据分析:以自身视角展开分析

随着零售业务不断扩展,市场竞争不断加剧,各层级的销售管理人员都急需一张能快速查看销售数据分析报表,能从中知道自己管辖内的业务最近或过去的情况,并依次为依据科学优化销售管理措施。这就要求零售数据分析报表信息足够多、数据…

计算机毕业设计 基于SpringBoot产业园区智慧公寓管理系统的设计与实现 Javaweb项目 Java实战项目 前后端分离 文档报告 代码讲解 安装调试

🍊作者:计算机编程-吉哥 🍊简介:专业从事JavaWeb程序开发,微信小程序开发,定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事,生活就是快乐的。 🍊心愿:点…

【Vue】vue2与WebApi跨域CORS问题

系列文章 C#底层库–记录日志帮助类 本文链接:https://blog.csdn.net/youcheng_ge/article/details/124187709 文章目录 系列文章前言一、技术介绍1.1 为什么会产生跨越1.2 什么是跨越 二、问题描述三、问题解决3.1 方法一:前端Vue修改3.2 方法二&#…

喜报!震坤行荣登“2023上海百强企业”两项百强榜单!

喜报!震坤行荣登“2023上海百强企业”两项百强榜单! 9月12日,上海市企业联合会、上海市企业家协会、上海市经济团体联合会和解放日报社在中国金融信息中心会议厅联合召开2023上海百强企业新闻发布会,上海市企业联合会会长刘家平主…

信号完整性分析基础知识之有损传输线、上升时间衰减和材料特性(六):衰减和dB

线路中的损耗对信号的主要影响是当信号沿线路长度传播时幅度减小。如果将幅度为 V 的正弦波电压信号引入传输线,则其幅度将随着传输线向下移动而下降。图 9-16 显示了如果我们可以冻结时间并观察直线上存在的正弦波,则正弦波在不同位置可能会是什么样子。…