性能测试攻略(一):需求分析
性能测试成为软件开发和运维过程中不可或缺的一环。性能测试不仅能够帮助我们了解系统在特定条件下的表现,还能帮助我们发现并解决潜在的性能问题。那么我们怎么做一次完整的性能测试呢?首先,我们需要进行需求分析,来明确我们的测试目的。比如,本次测试要验证哪些内容,达到什么样的性能指标,或者要满足多少用户使用我们的系统。其次,我们要确定测试范围,考虑测试需求,根据我们的系统架构、模块划分、接口关系等因素,测试范围要尽可能全面。再次,我们需要确定我们使用的测试工具,如:LoadRunner、JMeter等,测试工具要满足测试需求。然后,我们就可以进行测试场景的设计,包括用户数量、操作频率、数据规模等。确定好上面的内容,就可以来制定我们的测试计划了,测试计划包括目标、范围、工具、场景、资源、时间和任务分配等。最后,我们需要准备我们的测试环境,要尽可能的模拟生产环境,包括硬件配置,软件版本、网络条件等。这样我们就可以执行性能测试。测试完成后对系统的测试结果进行分析,分析性能瓶颈,然后对瓶颈优化后,再次验证优化效果。
本篇内容,主要介绍一下性能测试的需求分析相关内容。
性能测试需求分析的重要性
性能测试需求分析是性能测试的第一步,也是至关重要的一步。它决定了性能测试的方向和重点,为后续的测试设计提供了依据。以下是性能测试需求分析重要性的几个方面:
-
明确测试目标: 通过需求分析,我们可以明确性能测试的目标,如确定系统的最大用户并发数、验证系统在特定负载下的响应时间等,从而确保测试工作的方向性和针对性。
-
指导测试设计: 需求分析的结果将直接指导测试设计,包括测试场景的选择、测试数据的准备、测试工具的选取等,确保测试工作的全面性和有效性。
-
评估系统性能: 性能测试需求分析的结果将作为评估系统性能的依据,帮助我们了解系统在特定条件下的表现,发现潜在的性能问题,为系统优化提供数据支持。
-
提升用户体验: 通过性能测试需求分析,我们可以更好地了解用户需求,模拟用户行为,从而确保系统在用户实际使用过程中表现良好,提升用户体验。
性能测试需求分析主要方式
-
用户调研: 通过用户调研,了解用户对系统性的需求和期望,如响应时间、并发用户数等,从而确定性测试的目标和指标。当然,用户不一定指系统真实的使用用户,也可以为系统的运营管理人员、产品设计人员或相关的业务人员都可以。
-
业务场景分析: 通过对业务场景的分析,了解系统的业务流程、数据规模、用户行为等,从而确定性能测试的场景和数据。尤其是对于访问频次多、业务复杂、数据量大等业务场景的分析。
-
系统架构设计: 了解系统的架构设计,包括服务器配置、网络拓扑、数据库、数据中间件等,以便在性能测试中模拟真实的系统环境。对于性能测试人员,一定要了解系统的整体架构,这样才能确保我们的测试范围覆盖的广、场景设计的全面、结果分析的准确。
-
历史数据分析: 通过分析历史数据,了解系统在过去的性能表现,如响应时间分布、错误率等,从而为性能测试提供参考。还要了解数据库在一定时间内产生的数据量,方便我们测试中模拟出铺底数据,使得我们在更接近生产数据量的环境下进行性能测试。容易发现数据操作类的性能问题。
-
行业标准和规范: 参考行业标准和规范,如响应时间标准、吞吐量标准等,以确定性能测试的指标和阈值。
性能测试需求分析要明确的目标
测试指标
我们要根据性能测试需求,来明确我们最终的性能指标。为我们的测试提供一个准则,满足指标即可判定为测试通过。下面举例说明几个指标:
-
交易响应时间: 用户从客户端发起一个请求,到客户端接收到从服务器返回结果的响应结束,整体过程所耗费的时间;响应时间=网络传输时间+服务器处理延迟时间+数据库服务器处理延迟时间,简单交易小于1.5s,一般交易小于3s,复杂交易小于5s。
-
业务处理能力(TPS): 每秒处理交易笔数 以82原则计算交易峰值负载:3000人测试人员,每日提交缺陷10个,任务领取5个,任务列表20,执行列表20次,上传图片5次,上传视频5次,下载测试报告5次,导入用例3次。日交易总量为:3000x73=219000, 日交易量 = 交易总量合计(219000) x 80% =T T =175200 日交易时间 = 营业时间8小时*20% =1.6 TPS目标计算为:T /1.6 / 3600 = 30.41笔/秒
-
并发用户: 系统需求的最大使用人数
-
系统处理正确性: 在负载情况下,交易错误率。错误率=(失败交易数/交易总数)*100%。(不同系统对错误率的要求不同,但一般不超出千分之五。稳定性较好的系统,其错误率应该由超时引起,即为超时率。)
-
业务处理稳定性: 系统在标准压力(系统的预期日常压力)情况下,能够稳定运行。(一般来说,对于正常工作日(5X8小时)运行的系统,至少应该能保证系统稳定运行10小时以上。对于7X24运行的系统,至少应该能够保证系统稳定运行48小时以上。)
-
系统资源: CPU<=80% 内存使用率无明显上升趋势 磁盘繁忙率<=80%
测试范围
对于我们测试范围应该选什么?一般如果有明确的测试需求,那我们按照测试需求来即可,如果没有明确的测试需求,比如只要求了系统整体的性能指标,那可以参考以下的原则:
已上线系统:
- 测试交易要覆盖各个渠道;
- 一般系统:选取日均交易量TOP20、TOP10的交易;
- 选取生产上曾经出现或者容易出现问题的交易;
- 选取生产上占用资源较高的交易;
- 选取业务逻辑复杂的交易;
- 选取交易路径较长的交易;
- 选取处理时间较长的交易;
- 选取特殊需求的交易(测试并发、测试登录)。
未上线系统:
- 测试交易覆盖各渠道;
- 选取预期交易量大的交易;
- 选取预期交易量增长迅速的交易;
- 选取占用资源较高的交易;
- 选取交易路径较长的交易;
- 选取处理时间长交易;
- 选取业务逻辑复杂的交易;
- 选取频繁调用数据库的交易;
根据系统架构:
- 针对Redis,我们要测试大量redis key同时失效模式,一个热key的失效模式等,避免出现缓存穿透、雪崩的出现。
- 针对数据库,要测试大量的写入操作,避免出现数据库性能问题,针对一些可以多人操作的数据,要避免出现死锁现象。在大量的数据铺底情况下,测试复杂的查询交易。如果是数据库集群,还要考虑数据一致性和故障测试。
- 针对网络代理层,我们需要根据配置,测试超出配置最大连接数、缓存等相关内容。
- 针对服务层,我们需要考虑服务与服务之间的调用情况、避免相互调用,或者环形调用。
- 针对服务器,我们需要考虑服务器的内存、CPU、I/O、网络等资源,还有句柄、线程等。
性能测试需求问题
-
沟通与交流: 性能测试需求分析,我们要多方面考虑影响系统性能的因素,因此我们要与业务需求方、客户、开发人员、运维人员保持密切沟通。我们需要了解整体系统的功能架构、技术架构、应用部署方式、网络环境等一系列的内容。所以需要深入沟通,才能进行深度的分析。
-
简化测试场景: 虽然我们要根据多方面考虑,覆盖更广的测试范围,但是我们要简化测试场景。简化测试场景,可以降低测试难度和复杂度,构建接近真实的测试场景。
相关文章:
性能测试攻略(一):需求分析
性能测试成为软件开发和运维过程中不可或缺的一环。性能测试不仅能够帮助我们了解系统在特定条件下的表现,还能帮助我们发现并解决潜在的性能问题。那么我们怎么做一次完整的性能测试呢?首先,我们需要进行需求分析,来明确我们的测…...

【24年新算法时间序列预测】黑翅鸢BKA优化Transformer时间序列预测(评估指标全,出图多)
本文采用黑翅鸢优化算法( BKA,2024年新算法)优化Transformer模型的超参数,形成了BKA-Transformer时间序列预测模型,以进一步提升其在时间序列预测中的性能,本文采用Matlab编写了BKA-Transformer时间序列预测模型代码,代…...

YOLOv8改进,YOLOv8引入CARAFE轻量级通用上采样算子,助力模型涨点
摘要 CARAFE模块的设计目的是在不增加计算复杂度的情况下,提升特征图的质量,特别是在视频超分辨率任务中,提升图像质量和细节。CARAFE结合了上下文感知机制和聚合特征的能力,通过动态的上下文注意力机制来提升细节恢复的效果。 理论介绍 传统的卷积操作通常依赖于局部区域…...

ZooKeeper节点扩容
新节点的准备工作(这里由hadoop05节点,IP地址为192.168.46.131充当) 配置新节点的主机域名映射,并将其通告给集群中的其他节点配置主机间免密登录关闭防火墙并将其加入到开机不启动项同步hadoop01节点的时间将所需要的文件分发给新…...

深度学习的unfold操作
unfold(展开)是深度学习框架中常见的数据操作。与我们熟悉的卷积类似,unfold也是使用一个特定大小的窗口和步长自左至右、自上至下滑动,不同的是,卷积是滑动后与核求乘积(所以取名为卷积)&#…...
C# 抽奖程序winform示例
C# 抽奖程序winform示例 using System; using System.Collections.Generic; using System.Linq;public class LotterySimulator {private Random random new Random();public List<string> GenerateWinners(int numberOfWinners, int totalParticipants){List<strin…...
嵌入式蓝桥杯学习9 usart串口
复制一下之前ADC的工程,打开cubemx cubemx配置 1.在Connectivity中点击USART1 Mode(模式):Asynchronous(异步模式) 2.将PA9设置为USART1_TX,PA10设置为USART1_RX。 3.配置Parameter Settings. Baud R…...
车载ADB:让汽车更智能的桥梁
随着科技的不断进步,汽车行业也在迅速迈向智能化。车载Android系统(通常称为Android Auto)正在变得越来越流行,而Android Debug Bridge (ADB) 作为连接和调试这些系统的桥梁,也变得尤为重要。在本文中,我们…...

HarmonyOS-高级(一)
文章目录 一次开发、多端部署自由流转 🏡作者主页:点击! 🤖HarmonyOS专栏:点击! ⏰️创作时间:2024年12月09日12点19分 一次开发、多端部署 布局能力 自适应布局 拉伸能力均分能力占比能力缩放…...

【优选算法-滑动窗口】长度最小的子数组、无重复字符的最长子串、最大连续1的个数、将x减为0的最小操作数、水果成篮
一、长度最小的子数组 题目链接: 209. 长度最小的子数组 - 力扣(LeetCode) 题目介绍: 给定一个含有 n 个正整数的数组和一个正整数 target 。 找出该数组中满足其总和大于等于 target 的长度最小的 子数组 [numsl, numsl1, .…...

Leetcode 每日一题 202.快乐数
目录 题意 算法思路 过题图片 算法实现 代码解析 复杂度分析 题目链接 结论 题意 判断正整数 n 是不是快乐数。 快乐数定义: (1)每次将正整数替换为它每个位置上的数字的平方和。 (2)重复这个过程直到这个数…...

SEC_ASA 第一天作业
拓扑: 实验需求: 注意:在开始作业之前必须先读“前言”,以免踩坑!!!(☞敢点我试试) 按照拓扑图配置VLAN连接。 注意:ASA防火墙的 Gi0/1口需要起子接口&#x…...

Fluss:面向实时分析设计的下一代流存储
摘要:本文整理自阿里云智能 Flink SQL 和数据通道负责人、Apache Flink PMC 伍翀(花名:云邪)老师,在 Flink Forward Asia 2024 主会场的分享。主要分享了一种专为流分析设计的新一代存储解决方案——Fluss,…...

【一本通】质因数分解
【一本通】质因数分解 C语言实现C 语言实现Java语言实现Python语言实现 💐The Begin💐点点关注,收藏不迷路💐 已知正整数n 是两个不同的质数的乘积,试求出较大的那个质数。 输入 输入只有一行,包含一个正…...

vue2+html2canvas+js PDF实现试卷导出和打印功能
1.首先安装 import html2canvas from html2canvas; import { jsPDF } from jspdf; 2.引入打印插件print.js import Print from "/assets/js/print"; Vue.use(Print) // 打印类属性、方法定义 /* eslint-disable */ const Print function (dom, options) {if (…...

【Python网络爬虫 常见问题汇总】
目录 1. 爬取图片出现403解决办法:设置请求头中的Referer字段 2.关于干坏事的问题后续不定期更新 欢迎共同探讨学习进步 1. 爬取图片出现403 问题出自案例9,已解决。 【Python网络爬虫笔记】9- 抓取优美图库高清壁纸 当在爬取图库图片时遇到 403 错误…...

Java SpringBoot 项目怎样在 IDEA 中运行、部署
大家好,我是程序员徐师兄,今天为大家带来的是Java SpringBoot 项目怎样在 IDEA 中运行、部署。Java 项目的安装部署教程,包括软件的下载,软件的安装。该系统采用 Java 语言开发,SpringBoot 框架,MySql 作为…...

GAMES101:现代计算机图形学-笔记-10
今天来聊一些基本的概念:相机,棱镜与光场。 众所周知,成像的方法有两种:合成与捕获。 像我们之前所学的内容如光栅化,如光线追踪,本质上都是合成图像的方法,他们只是在计算机中模拟来成像。 那…...
【前端面试】Http篇
1. HTTPS 概念 加密(Encryption) 防止数据被截获 数据完整性(Data Integrity) 防止数据篡改 身份验证(Authentication) 验证网站的真实性 2. HTTPS 与 HTTP 的区别 HTTP 是明文传输,HTTPS 是…...

ZZCMS2023存在跨站脚本漏洞(CNVD-2024-44822、CVE-2024-44818)
ZZCMS是一款用于搭建招商网站的CMS系统,由PHP语言开发,可快速搭建:医药招商、保健品招商、化妆品招商、农资招商、孕婴童招商、酒类副食类等招商网站。 国家信息安全漏洞共享平台于2024-11-14公布其存在跨站脚本漏洞。 漏洞编号:…...

大数据学习栈记——Neo4j的安装与使用
本文介绍图数据库Neofj的安装与使用,操作系统:Ubuntu24.04,Neofj版本:2025.04.0。 Apt安装 Neofj可以进行官网安装:Neo4j Deployment Center - Graph Database & Analytics 我这里安装是添加软件源的方法 最新版…...

Mybatis逆向工程,动态创建实体类、条件扩展类、Mapper接口、Mapper.xml映射文件
今天呢,博主的学习进度也是步入了Java Mybatis 框架,目前正在逐步杨帆旗航。 那么接下来就给大家出一期有关 Mybatis 逆向工程的教学,希望能对大家有所帮助,也特别欢迎大家指点不足之处,小生很乐意接受正确的建议&…...
在四层代理中还原真实客户端ngx_stream_realip_module
一、模块原理与价值 PROXY Protocol 回溯 第三方负载均衡(如 HAProxy、AWS NLB、阿里 SLB)发起上游连接时,将真实客户端 IP/Port 写入 PROXY Protocol v1/v2 头。Stream 层接收到头部后,ngx_stream_realip_module 从中提取原始信息…...

SpringBoot+uniapp 的 Champion 俱乐部微信小程序设计与实现,论文初版实现
摘要 本论文旨在设计并实现基于 SpringBoot 和 uniapp 的 Champion 俱乐部微信小程序,以满足俱乐部线上活动推广、会员管理、社交互动等需求。通过 SpringBoot 搭建后端服务,提供稳定高效的数据处理与业务逻辑支持;利用 uniapp 实现跨平台前…...
3403. 从盒子中找出字典序最大的字符串 I
3403. 从盒子中找出字典序最大的字符串 I 题目链接:3403. 从盒子中找出字典序最大的字符串 I 代码如下: class Solution { public:string answerString(string word, int numFriends) {if (numFriends 1) {return word;}string res;for (int i 0;i &…...

RNN避坑指南:从数学推导到LSTM/GRU工业级部署实战流程
本文较长,建议点赞收藏,以免遗失。更多AI大模型应用开发学习视频及资料,尽在聚客AI学院。 本文全面剖析RNN核心原理,深入讲解梯度消失/爆炸问题,并通过LSTM/GRU结构实现解决方案,提供时间序列预测和文本生成…...

微软PowerBI考试 PL300-在 Power BI 中清理、转换和加载数据
微软PowerBI考试 PL300-在 Power BI 中清理、转换和加载数据 Power Query 具有大量专门帮助您清理和准备数据以供分析的功能。 您将了解如何简化复杂模型、更改数据类型、重命名对象和透视数据。 您还将了解如何分析列,以便知晓哪些列包含有价值的数据,…...

中医有效性探讨
文章目录 西医是如何发展到以生物化学为药理基础的现代医学?传统医学奠基期(远古 - 17 世纪)近代医学转型期(17 世纪 - 19 世纪末)现代医学成熟期(20世纪至今) 中医的源远流长和一脉相承远古至…...

Python Ovito统计金刚石结构数量
大家好,我是小马老师。 本文介绍python ovito方法统计金刚石结构的方法。 Ovito Identify diamond structure命令可以识别和统计金刚石结构,但是无法直接输出结构的变化情况。 本文使用python调用ovito包的方法,可以持续统计各步的金刚石结构,具体代码如下: from ovito…...
C++课设:简易日历程序(支持传统节假日 + 二十四节气 + 个人纪念日管理)
名人说:路漫漫其修远兮,吾将上下而求索。—— 屈原《离骚》 创作者:Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊) 专栏介绍:《编程项目实战》 目录 一、为什么要开发一个日历程序?1. 深入理解时间算法2. 练习面向对象设计3. 学习数据结构应用二、核心算法深度解析…...