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

news2025/1/11 8:10:14

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

1.概述

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

在本文中,您将了解:

性能测试类型

如何运行性能测试的步骤

性能测试指标

以及软件测试最佳实践

2.软件性能测试类型

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

测试类型

负载测试

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

压力测试

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

尖峰测试(pike testing)

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

耐久性试验(Endurance testing)

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

可扩展性测试(Scalability testing)

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

体积测试(Volume testing)

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

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

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

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

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

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

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

磁盘使用情况

CPU使用率

内存泄漏

操作系统限制

网络配置不良

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

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

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

3.七个性能测试步骤

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

1.确定测试环境。

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

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

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

生产系统副本

实际生产系统

2.确定绩效指标。

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

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

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

4.配置测试环境。

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

5.实施测试设计。

开发测试。

6.执行测试。

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

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

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

衡量哪些性能测试指标

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

测量值

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

度量

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

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

响应时间

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

等待时间

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

平均加载时间

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

峰值响应时间

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

错误率软件测试

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

并发用户

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

每秒请求数

处理了多少请求。

事务通过/失败

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

吞吐量

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

CPU利用率

CPU处理请求所需的时间。

内存利用率

处理请求需要多少内存。

4. 性能测试最佳实践

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

五种常见的性能测试错误

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

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

不涉及开发人员。

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

未充分调整软件。

没有故障排除计划。

性能测试谬论

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

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

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

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

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

测试环境足够接近。

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

硬件组件

操作系统和设置

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

数据库

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

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

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

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

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

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

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

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

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

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

END今天的分享就到此结束了~喜欢的朋友点个赞!

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

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

相关文章

Linux--安装与配置虚拟机及虚拟机服务器坏境配置与连接---超详细教学

一,操作系统介绍 1.1.什么是操作系统 操作系统(Operating System,简称OS)是一种系统软件,它是计算机硬件和应用软件之间的桥梁。它管理计算机的硬件和软件资源,为应用程序提供接口和服务,并协调…

2023-10-26 用C语言实现一个大整数加法

点击 <C 语言编程核心突破> 快速C语言入门 用C语言实现一个大整数加法 前言一、思路和代码设计数字对齐:字符对齐: 二、代码总结 前言 要解决问题: 实现大整数加法 想到的思路: 用字符代替数字, 逐个计算, 过10进位. 其它的补充: 同样思路可以解决减法, 乘法, 但除法…

ubuntu安装idea

idea下载 选择第一个.tar.gz(Linux)下载 解压后 进入bin目录在终端运行./idea.sh即可

数据安全法开始正式实施的时间是什么时候?主要目的是什么?

大数据时代&#xff0c;数据生成贯穿于经济活动的方方面面&#xff0c;贯穿于企业&#xff0c;贯穿于民生。数据是国家基础性战略资源&#xff0c;没有数据安全就没有国家安全。所以保障数据安全至关重要。那你知道数据安全法开始正式实施的时间是什么时候&#xff1f;主要目的…

眨个眼就学会了PixiJS

本文简介 带尬猴&#xff0c;我是德育处主任 当今的Web开发中&#xff0c;图形和动画已经成为了吸引用户注意力的重要手段之一。而 Pixi.js 作为一款高效、易用的2D渲染引擎&#xff0c;已经成为了许多开发者的首选&#xff08;我吹的&#xff09;。本文将为工友们介绍PixiJS的…

完美解决configure: error: APR not found. Please read the documentation.

目录 一、问题&#xff1a; 二、原因&#xff1a; 三、解决方法&#xff1a; 一、问题&#xff1a; ./configure 出现如下问题&#xff1a; configure: error: APR not found. Please read the documentation. 二、原因&#xff1a; 配置&#xff1a;错误&#xff1a;找不…

火山引擎DataLeap背后的支持者 - 工作流编排调度系统FlowX

更多技术交流、求职机会&#xff0c;欢迎关注字节跳动数据平台微信公众号&#xff0c;回复【1】进入官方交流群 背景介绍 业务场景 在日常工作中&#xff0c;我们时不时需要对某些逻辑进行重复调度&#xff0c;这时我们就需要一个调度系统。根据不同的调度需求&#xff0c;可…

【Qt之QtConcurrent】描述及使用

描述 QtConcurrent是一个Qt库中的模块&#xff0c;用于实现多线程并发编程。它提供了一些高级API&#xff0c;使得在多核处理器上并行执行代码变得更加容易。 示例&#xff1a; 使用的话&#xff0c; 需要在pro文件中添加&#xff1a;QT concurrent模块。 #include <QC…

微信公众号分销商城源码系统+多元商家+收银台 带完整的搭建教程

给大家推荐一款微信公众号分销商城源码系统&#xff0c;这是一个全新三级分销商城&#xff0c;功能十分丰富。一起来看看你吧。 微信公众号分销商城的功能&#xff1a; 1.商品展示和推广&#xff1a;商家可以在商城中展示商品信息&#xff0c;包括商品名称、价格、库存等&#…

基于java的ssm框架农夫果园管理系统设计与实现

项目描述 临近学期结束&#xff0c;还是毕业设计&#xff0c;你还在做java程序网络编程&#xff0c;期末作业&#xff0c;老师的作业要求觉得大了吗?不知道毕业设计该怎么办?网页功能的数量是否太多?没有合适的类型或系统?等等。这里根据疫情当下&#xff0c;你想解决的问…

使用 jdbc 技术升级水果库存系统(优化版本)

抽取执行更新方法抽取查询方法 —— ResultSetMetaData ResultSetMetaData rsmd rs.getMetaData();//元数据,结果集的结构数据 抽取查询方法 —— 解析结果集封装成实体对象提取 获取连接 和 释放资源 的方法将数据库配置信息转移到配置文件 <dependencies><depend…

【Java 进阶篇】Java HTTP 概述

HTTP&#xff08;Hypertext Transfer Protocol&#xff09;是一种用于传输超文本的应用层协议。它是构建互联网的基础之一&#xff0c;用于在客户端和服务器之间传递数据和请求资源。本文将为初学者提供关于 Java 中 HTTP 的概述&#xff0c;从 HTTP 请求和响应的基础知识到 Ja…

专业成就信赖-南大通用在分布式数据库的创新实践

在第二十五届中国国际软件博览会中国数据库产业峰会上&#xff0c;GBASE南大通用8c产品部总经理分享了题为“分布式数据库的创新实践”的演讲&#xff0c;全面解析了分布式数据库的发展和演进&#xff0c;以及GBASE南大通用分布式数据库的发展历程&#xff0c;详细介绍了第三代…

springboot + redis实现签到与统计功能

在很多项目中都会有签到与统计功能&#xff0c;最容易想到的方案是创建一个签到表来记录每个用户的签到记录&#xff0c;比如设计一个mysql数据库表&#xff1a; CREATE TABLE tb_sign id bigint(20) unsigned NOT NULL AUTOINCREMENT COMMENT 主键, user_id bigint(20) unsig…

作为一名程序员面临哪些挑战?应该如何应对?

在现今互联网失业潮的大环境下&#xff0c;每一位程序员都面临着被淘汰的风险&#xff0c;但逃避没有用&#xff0c;今天我们就来总结这些挑战与风险&#xff0c;找准自己的方向与定位&#xff0c;做好职业规划&#xff0c;希望这些信息能对大家有所帮助。 一、面临的挑战 老…

菱形(曼哈顿距离) C++实现

题目 代码 #include<iostream> using namespace std;int main(){int n;scanf("%d",&n);int cxn/2,cyn/2;for(int i0;i<n;i){for(int j0;j<n;j){if(abs(i-cx) abs(j-cy) < n/2) printf("*");else printf(" ");}puts("&…

Redis | 数据结构(01)

这里写自定义目录标题 Redis 速度快的原因除了它是内存数据库&#xff0c;使得所有的操作都在内存上进行之外&#xff0c;还有一个重要因素&#xff0c;它实现的数据结构&#xff0c;使得我们对数据进行增删查改操作时&#xff0c;Redis 能高效的处理。 因此&#xff0c;这次我…

【Ubuntu系统如何添加多个python版本并且切换】

ubuntu切换默认的python版本 当你安装 Debian Linux 时&#xff0c;安装过程有可能同时为你提供多个可用的 Python 版本&#xff0c;因此系统中会存在多个 Python 的可执行二进制文件。一般Ubuntu默认的Python版本都为2.x, 如何改变Python的默认版本。 你可以按照以下方法使用…

纯C语言实现解析单色位图文件获取颜色值

在绘制单色位图时&#xff0c;需要考虑字节对齐问题。字节对齐是指数据存储在内存中时按照多字节对齐的原则进行存放&#xff0c;以提高访问效率。 为了实现这个函数&#xff0c;可以按照以下步骤进行&#xff1a; 计算每行像素数据的实际占用字节数&#xff1a;每个像素占用1…