性能测试常见风险以及消减措施

news2024/12/28 21:20:40

性能测试过程中会遇到各种各样的风险,常见风险以及消减措施有哪些?

一: 时间

一)时间相关风险

时间相关风险不仅限于最终用户满意度,尽管这是大多数人首先想到的。时间也是某些与业务和数据相关的风险因素。性能测试可以解决的最常见的时间相关风险包括:

1. 应用程序是否够快以满足最终用户?

2.业务是否能够在数据过时之前处理和利用应用程序收集的数据?(例如,月末报告应在月底最后一天营业后24小时内完成,但应用程序需要48小时来处理数据。)

3. 应用程序是否能够向其用户呈现最新的信息(例如,股票报价)?

4. Web服务是否在抛出错误之前响应了最大预期响应时间?

二)缓解时间相关风险的策略

以下策略在缓解速度相关风险方面很有价值:

1.确保您的性能要求和目标代表您的用户的需求和愿望,而不是其他人的需求和愿望。

2.将您的速度测量结果与以前的版本和竞争对手的应用程序进行比较。

3.设计可以在正常和预期峰值时段复制实际工作负载的负载测试。

4.在实际生产期间与业务操作中使用的类似数据类型、分布和体量进行性能测试(例如,产品数量、待定订单状态的订单数量、用户基数的大小)。您可以在负载测试执行之前允许数据在数据库和文件服务器中累积,或者额外创建数据量。

5.使用性能测试结果帮助利益相关者做出明智的架构和业务决策。

6.在系统处于预期最大负载时,征求代表用户对系统满意度的反馈。

7. 在您的性能测试中包括时间关键事物。

8. 确保至少有一些性能测试是在定期系统进程执行时进行的(例如,下载定义更新或每周备份期间)。

9. 在各种条件、负载级别和场景组合下测量速度。(用户重视稳定的速度。)

10. 验证在您的性能测试期间显示和保存了所有正确的数据。(例如,用户更新信息,但确认屏幕仍显示旧信息,因为事务尚未完成写入数据库。)

二:可扩展性

一)扩展性相关风险

扩展性风险不仅涉及应用程序可以支持的用户数量,还涉及应用程序可以包含和处理的数据量,以及识别应用程序何时接近容量的能力。性能测试可以解决的常见扩展性风险包括:

1. 应用程序是否可以为 所有 用户基数提供一致和可接受的响应时间?

2. 应用程序是否可以存储在应用程序生命周期内收集的所有数据?

3. 是否有警告迹象表明应用程序即将达到最大容量?

4. 在高强度使用下,应用程序是否仍然安全?

5. 在高强度使用下,功能是否会受到损害?

6. 应用程序是否能够承受意外的峰值负载?

二)缓解扩展性相关风险的策略

以下策略在缓解扩展性相关风险方面很有价值:

1. 比较在各种负载下测量的速度。(请记住,最终用户不知道或不在乎其他人在同一时间使用应用程序的人数。)

2. 设计可以在正常和预期峰值时段复制实际工作负载的负载测试。

3. 在实际生产期间与业务操作中使用的类似数据类型、分布和体量进行性能测试(例如,产品数量、待定订单状态的订单数量、用户基数的大小)。您可以在负载测试执行之前允许数据在数据库和文件服务器中累积,或者额外创建数据量。

4. 使用性能测试结果帮助利益相关者做出明智的架构和业务决策。

5. 与更有意义的性能测试合作,这些测试映射到现实世界的要求。

6. 当您找到扩展性限制时,逐渐减少负载并重新测试,以帮助您识别可作为您及时采取对策的可靠指标的指标。

7.通过检查在各种负载下创建的数据库条目或验证对特定用户请求的响应返回的内容来验证应用程序的功能准确性。

8.进行超出预期峰值负载的性能测试,并通过让代表性用户和利益相关者在性能测试期间和之后手动访问应用程序来观察行为。

三: 稳定性

一)稳定性相关风险

稳定性是一个总括术语,涵盖可靠性、正常运行时间和恢复性等方面。尽管稳定性风险通常通过高负载、耐久性和压力测试得到解决,但稳定性问题有时也会在最基本的性能测试中检测到。性能测试可以解决的一些常见稳定性风险包括:

1. 应用程序是否可以长时间运行而不会数据损坏、减速或服务器需要重启?

2. 如果应用程序意外关闭,部分完成的事务会发生什么?

3.当应用程序在计划内或计划外停机后重新上线时,用户是否仍然能够看到/做他们期望的一切?

4. 当应用程序在非计划停机后重新上线时,它是否在正确的点上恢复?特别是,它是否不会尝试恢复已取消的事务?

5. 错误或重复的功能错误组合会导致系统崩溃吗?

6.是否有任何事务会导致系统范围的副作用?

负载平衡环境的一条腿是否可以关闭而仍然为用户提供不间断的服务?

7.系统是否可以在不关闭的情况下打补丁或更新?

二)缓解稳定性相关风险的策略

以下策略在缓解稳定性相关风险方面很有价值:

1. 为现实的耐久性测试留出时间。

2. 使用关键场景进行压力测试。使用关键性能指标(网络、磁盘、处理器、内存)和业务指标(丢失的订单数量、用户登录失败等)。

3. 与实际生产环境中的类似业务操作一起进行压力测试(例如,产品数量、待定订单状态的订单数量、用户基数的大小)。您可以在压力测试执行之前允许数据在数据库和文件服务器中累积,或者额外创建数据量。这将允许您复制关键错误,例如数据库或应用程序死锁以及其他压力故障模式。

4. 在测试期间关闭一台服务器,并观察剩余系统的功能、性能和数据完整性行为。

5.在系统重新启动之前和之后立即执行相同的测试。比较结果。您可以对服务或进程的循环使用相同的方法。

6. 在您的性能测试方案中包括错误或异常案例(例如,用户试图使用不正确的凭据登录)。

7. 在性能测试期间打补丁系统。

8. 在性能测试期间强制备份。

行动吧,在路上总比一直观望的要好,未来的你肯定会感 谢现在拼搏的自己!如果想学习提升找不到资料,没人答疑解惑时,请及时加入扣群: 320231853,里面有各种软件测试+开发资料和技术可以一起交流学习哦。

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

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

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

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

相关文章

【前端】前端数据本地化的多种实现方式及其优劣对比

前端数据本地化的多种实现方式及其优劣对比 在现代Web开发中,提高页面响应速度和改善用户体验是核心目标之一。数据本地化是其中一种实现方式,它通过在客户端存储数据来减少服务器请求,从而加快数据载入速度和改善用户的体验。本文将介绍前端…

【JS】call和 apply函数的详解

JavaScript 中 call() 和 apply() 函数的详解 在JavaScript中,call()和apply()都是非常重要的方法,用于调用函数时指定函数体内的this的值,从而实现不同对象之间的方法共享。尽管它们的功能非常相似,但在实际使用中各有其优势和特…

Jupyter Notebook输入python代码没智能提示

1、在Jupyter中打开控制台 2、再控制台中执行以下两个命令: pip install jupyter_contrib_nbextensions jupyter contrib nbextension install --user pip install jupyter_contrib_nbextensions命令需要下载文件,请耐心等待。 3、执行完成后&#xff0…

【正点原子Linux连载】 第四十章 Linux网络驱动实验 摘自【正点原子】ATK-DLRK3568嵌入式Linux驱动开发指南

1)实验平台:正点原子ATK-DLRK3568开发板 2)平台购买地址:https://detail.tmall.com/item.htm?id731866264428 3)全套实验源码手册视频下载地址: http://www.openedv.com/docs/boards/xiaoxitongban 第四十…

天工一刻 | 一文看懂MoE混合专家大模型 | 最新快讯

(原标题:天工一刻 | 一文看懂MoE混合专家大模型) 随着大模型技术迎来颠覆性突破,新兴AI应用大量涌现,不断重塑着人类、机器与智能的关系。 为此,昆仑万维集团重磅推出《天工一刻》系列产业观察栏目。在本…

Google搜索广告怎么开户?谷歌广告开户投放引流技巧、账户搭建、谷歌ads广告推广投放策略 #搜索引擎 #谷歌广告#互联网营销

Google搜索广告开户步骤: 选择代理商:首先,您需要选择一个经验丰富、信誉良好的Google广告代理商。可以选择上海上弦来广告开户和代运营。 初步咨询:与代理商进行初步沟通,了解他们的服务内容、成功案例、收费标准等。…

翻译《The Old New Thing》- Does Windows have a limit of 2000 threads per process?

Does Windows have a limit of 2000 threads per process? - The Old New Thing (microsoft.com)https://devblogs.microsoft.com/oldnewthing/20050729-14/?p34773 Raymond Chen 2005年07月29日 Windows 是否有一个每个进程2000线程的限制? 简要 文章解释了在 W…

一键生成AI数字人短视频工具推荐!

数字人是什么?是利用人工智能技术实现与真人直播形象的1:1克隆,即克隆出一个数字化的你自己,包括你的形象、表情、动作和声音都会被克隆下来,让你能够拥有接近真人的表现力。 怎样使用数字人一天生成上百条短视频,无需…

Java中导入Maven项目

Maven坐标 maven坐标是资源的唯一标识,通过坐标可以唯一定位资源位置 使用坐标来定义项目或引入项目中需要的依赖 Maven坐标的组成 groupId:定义当前Maven项目隶属组织名称(通常是域名反写 例如:com.ming) artifa…

AI视频教程下载:用ChatGP在24小时内制作发布畅销电子书

这门变革性的课程使您能够利用内容生成和自行出版的新兴AI世界。利用ChatGPT 4等尖端人工智能工具,也称为ChatGPT Plus,您将获得所需的技能集,以创建引人入胜的内容,掌握设计,并成为亚马逊KDP上成功的自行出版作者 。 …

电商技术揭秘三十九:电商智能风控技术架构设计

相关系列文章 电商技术揭秘相关系列文章合集(1) 电商技术揭秘相关系列文章合集(2) 电商技术揭秘二十八:安全与合规性保障 电商技术揭秘二十九:电商法律合规浅析 电商技术揭秘三十:知识产权保…

原型模式类图与代码

现要求实现一个能够自动生成求职简历的程序,简历的基本内容包括求职者的姓名、性别、年龄及工作经历。希望每份简历中的工作经历有所不同,并尽量减少程序中的重复代码。 采用原型模式(Prototype)来实现上述要求,得到如图 7.25 所示的类图。 原…

FreeRTOS任务详解

一、任务的创建与删除 1.任务的基本概念 RTOS系统的核心就是任务管理,FreeRTOS 也不例外,而且大多数学习 RTOS 系统的工程 师或者学生主要就是为了使用 RTOS 的多任务处理功能,初步上手 RTOS 系统首先必须掌握的 也是任务的创建、删除、挂起和恢复等操作,由此可见任务管理…

Tektronix泰克MSO4054混合信号示波器

泰克MSO4054混合信号示波器是一款功能强大的测量仪器,它集成了数字存储示波器和逻辑分析仪的功能,为工程师提供了全面而精确的信号分析解决方案。在今天的高速电子设备开发中,混合信号示波器已经成为不可或缺的工具,而泰克MSO4054…

集中式抄表是什么?什么叫集中式抄表?

1.集中式抄表:简述 集中式抄表是一种现代化、高效率的电力工程、水力发电或燃气计量方法,它改变了传统的人工抄表方式,完成了远程自动化数据收集。这类系统主要由中央服务器、通信系统及安装在用户端智能化表计构成,大大提高了公…

Sarcasm detection论文解析 |CAT-BiGRU

论文地址 论文地址:CAT-BiGRU: Convolution and Attention with Bi-Directional Gated Recurrent Unit for Self-Deprecating Sarcasm Detection | Cognitive Computation github:Ashraf-Kamal/Self-Deprecating-Sarcasm-Detection (github.com) 论文首页 笔记框架 …

液晶数显式液压万能试验机WES-600D技术方案书

一、简介 主机为四立柱、两丝杠、油缸下置式,拉伸空间位于主机的上方,压缩、弯曲试验空间位于主机下横梁和工作台之间。测力仪表采用高清液晶显示屏,实验数据方便直观。 二、 传动系统 下横梁升降采用电机经减速器、链传动机构、丝杠副传动…

全域团购外卖SAAS是什么?能赚钱吗?

最近,很多人都在问与全域团购外卖相关的话题,其中,全域团购外卖SAAS是什么、全域团购外卖SAAS有哪些等问题更是稳居前列。的确,对于没有接触过团购外卖或者其他本地生活服务业务的人来说,全域团购外卖SAAS乍一看确实有…

c3 笔记8 css排版技巧

相关内容:边界、边框、位置(absolute、relative、static)、overflow、z-index、超链接、鼠标光标特效、…… margin:上边界值 右边界值 下边界值 左边界值 笔记来源: ©《HTML5CSS3JavaScript网页设计》陈婉凌编&#xff…

[力扣]——387.字符串中的第一个唯一字符

. - 力扣&#xff08;LeetCode&#xff09; class Solution {public int firstUniqChar(String s) {int[] count new int[256];// 统计每个字符出现的次数for(int i 0; i < s.length(); i){count[s.charAt(i)];}// 找第一个只出现一次的字符for(int i 0; i < s.lengt…