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

近期公司为了节省成本搞了一波机房迁移,整合了一些南美部署架构。有一些上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.mzph.cn/news/164760.shtml

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

相关文章

【深度学习】参数优化和训练技巧

寻找合适的学习率(learning rate) 学习率是一个非常非常重要的超参数,这个参数呢,面对不同规模、不同batch-size、不同优化方式、不同数据集,其最合适的值都是不确定的,我们无法光凭经验来准确地确定lr的值,我们唯一可…

6.2.SDP协议

那今天呢?我们来介绍一下sdp协议,那实际上呢?sdp协议非常的简单。我们如果拿到一个stp的文档去看的话,那你要分阅里边的所有的内容会觉得很枯燥,但实际上呢,如果我们按照这张图所展示的结构去看stp的话。你…

Javascript每天一道算法题(十四)——合并数组区间_中等

文章目录 1、问题2、示例3、解决方法(0)方法0——双指针(错误思路)(1)方法1——双指针(正确) 总结 1、问题 以数组 intervals 表示若干个区间的集合,其中单个区间为 inte…

怎么读一个网络的代码

1.网络代码怎么来的? 我想要实现一个功能,这个功能是输入一张图像,返回一个类别结果。 所以很明确就有三个部分,一个是接受图像输入,一个是处理图像得到处理结果,一个是对处理结果判断生成结果。 现在想要使…

rocketmq 发送时异常:system busy 和 broker busy 解决方案

之前写的解决方案,都是基于测试环境测试的.到生产环境之后,正常使用没有问题,生产环境压测时,又出现了system busy异常(简直崩溃).最后在rocketmq群里大佬指导下,终于解决(希望是彻底解决). 下面直接给出结果: 目前通过生产环境各种参数修改测试得出: broker busy异常: 可通…

Using PeopleCode in Application Engine Programs在应用引擎程序中使用PeopleCode

This section provides an overview of PeopleCode and Application Engine programs and discusses how to: 本节概述了PeopleCode和应用程序引擎程序,并讨论了如何: Decide when to use PeopleCode.决定何时使用PeopleCode。Consider the program environment.考…

Java之《ATM自动取款机》(面向对象)

《JAVA编程基础》项目说明 一、项目名称: 基于JAVA控制台版本银行自动取款机 项目要求: 实现银行自动取款机的以下基本操作功能:读卡、取款、查询。(自动取款机中转账、修改密码不作要求) 具体要求: 读卡…

基于SSM的校园奶茶点单管理系统

基于SSM的校园奶茶点单管理系统的设计与实现~ 开发语言:Java数据库:MySQL技术:SpringMyBatisSpringMVC工具:IDEA/Ecilpse、Navicat、Maven 系统展示 主页 奶茶列表 登录界面 管理员界面 用户界面 摘要 随着社会的发展和科技的进…

ubuntu搭建phpmyadmin+wordpress

Ubuntu搭建phpmyadmin wordpress Linux系统设置:Ubuntu 22配置apache2搭建phpmyadmin配置Nginx环境,搭建wordpress Linux系统设置:Ubuntu 22 配置apache2 安装apache2 sudo apt -y install apache2设置端口号为8080 sudo vim /etc/apache…

paddle detection 训练参数

#####################################基础配置##################################### # 检测算法使用YOLOv3,backbone使用MobileNet_v1,数据集使用roadsign_voc的配置文件模板,本配置文件默认使用单卡,单卡的batch_size=1 # 检测模型的名称 architecture: YOLOv3 # 根据…

【CCF-PTA】第03届Scratch第05题 -- 统计出现次数最多的字

统计出现次数最多的字 【题目描述】 我国自古流传下来不少脍炙人口的诗歌,各具特色,别具一格。有些诗只用寥寥几个字,就能描绘出生动的意境。 请找出以下诗篇中出现次数最多的字,如果有多个字出现次数相同,则答案为…

Java中基于SSM框架的数据保存方法与日期处理

​ 一、详解 在SSM框架中,保存数据通常涉及到服务层和数据访问层。服务层处理业务逻辑,而数据访问层负责与数据库进行交互。 二、代码 Override public void save(Student student) { Date date new Date(); SimpleDateFormat format new Sim…

什么是LLC电路?

LLC电路是由2个电感和1个电容构成的谐振电路,故称之为LLC; LLC电路主要由三个元件组成:两个电感分别为变压器一次侧漏感(Lr)和励磁电感(Lm),电容为变压器一次侧谐振电容(Cr)。这些元件构成了一个谐振回路,其中输入电感…

【C/PTA】函数专项练习(四)

本文结合PTA专项练习带领读者掌握函数,刷题为主注释为辅,在代码中理解思路,其它不做过多叙述。 目录 6-1 计算A[n]1/(1 A[n-1])6-2 递归实现顺序输出整数6-3 自然数的位数(递归版)6-4 分治法求解金块问题6-5 汉诺塔6-6 重复显示字符(递归版)…

字母异位词分组

给你一个字符串数组,请你将 字母异位词 组合在一起。可以按任意顺序返回结果列表。 字母异位词 是由重新排列源单词的所有字母得到的一个新单词。 示例 1: 输入: strs [“eat”, “tea”, “tan”, “ate”, “nat”, “bat”] 输出: [[“bat”],[“nat”,“tan…

Android MemoryFile 共享内存

应用场景: 跨进程传输大数据,如文件、图片等; 技术选型: 共享内存–MemoryFile; 优点: 1. 共享内存没有传输大小限制,所以和应用总的分配内存一样(512MB)&#xff1…

Java 根据文件名获取文件类型

比如文件名是“测试文件.png”,则获取的文件类型就是 png 直接上一个通用的方法,拿去直接就能用。 // 比如入参文件名是“测试文件.png”,则出参就是 pngprivate String getFileSuffix(String fileName) {String[] fileStr fileName.split(&…

educoder中共享单车之数据可视化

第1关:绘制地图 <%@ page language="java" contentType="text/html; charset=utf-8"pageEncoding="utf-8"%> <html> <head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /&…

专用设备上的SD卡插入电脑想读取数据,提示要格式化?

环境&#xff1a; Win10 专业版 车载感应数据专用SD卡 问题描述&#xff1a; 专用设备上的SD&#xff0c;现在把SD卡从设备取出&#xff0c;用读卡器插入电脑提示要格式化&#xff1f; 解决方案&#xff1a; 1.先进入PE查看SD分区情况&#xff0c;SD格式为ext4 查看文件…

lombok中使用@Builder构造器模式时的默认值问题

这里写自定义目录标题 问题case原因解决方案 文章参考来源&#xff1a;https://chenyongjun.vip/articles/107 问题case Lombok 使用广泛&#xff0c;这里分享一个 Lombok Builder 小 case&#xff0c;今天自己踩了坑。 Data Builder public class User {private String name…