当前位置: 首页 > news >正文

性能测试攻略(一):需求分析

性能测试成为软件开发和运维过程中不可或缺的一环。性能测试不仅能够帮助我们了解系统在特定条件下的表现,还能帮助我们发现并解决潜在的性能问题。那么我们怎么做一次完整的性能测试呢?首先,我们需要进行需求分析,来明确我们的测试目的。比如,本次测试要验证哪些内容,达到什么样的性能指标,或者要满足多少用户使用我们的系统。其次,我们要确定测试范围,考虑测试需求,根据我们的系统架构、模块划分、接口关系等因素,测试范围要尽可能全面。再次,我们需要确定我们使用的测试工具,如: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、网络等资源,还有句柄、线程等。

性能测试需求问题

  • 沟通与交流: 性能测试需求分析,我们要多方面考虑影响系统性能的因素,因此我们要与业务需求方、客户、开发人员、运维人员保持密切沟通。我们需要了解整体系统的功能架构、技术架构、应用部署方式、网络环境等一系列的内容。所以需要深入沟通,才能进行深度的分析。

  • 简化测试场景: 虽然我们要根据多方面考虑,覆盖更广的测试范围,但是我们要简化测试场景。简化测试场景,可以降低测试难度和复杂度,构建接近真实的测试场景。

相关文章:

性能测试攻略(一):需求分析

性能测试成为软件开发和运维过程中不可或缺的一环。性能测试不仅能够帮助我们了解系统在特定条件下的表现&#xff0c;还能帮助我们发现并解决潜在的性能问题。那么我们怎么做一次完整的性能测试呢&#xff1f;首先&#xff0c;我们需要进行需求分析&#xff0c;来明确我们的测…...

【24年新算法时间序列预测】黑翅鸢BKA优化Transformer时间序列预测(评估指标全,出图多)

本文采用黑翅鸢优化算法( BKA&#xff0c;2024年新算法)优化Transformer模型的超参数&#xff0c;形成了BKA-Transformer时间序列预测模型&#xff0c;以进一步提升其在时间序列预测中的性能&#xff0c;本文采用Matlab编写了BKA-Transformer时间序列预测模型代码&#xff0c;代…...

YOLOv8改进,YOLOv8引入CARAFE轻量级通用上采样算子,助力模型涨点

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

ZooKeeper节点扩容

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

深度学习的unfold操作

unfold&#xff08;展开&#xff09;是深度学习框架中常见的数据操作。与我们熟悉的卷积类似&#xff0c;unfold也是使用一个特定大小的窗口和步长自左至右、自上至下滑动&#xff0c;不同的是&#xff0c;卷积是滑动后与核求乘积&#xff08;所以取名为卷积&#xff09;&#…...

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的工程&#xff0c;打开cubemx cubemx配置 1.在Connectivity中点击USART1 Mode&#xff08;模式&#xff09;:Asynchronous&#xff08;异步模式&#xff09; 2.将PA9设置为USART1_TX&#xff0c;PA10设置为USART1_RX。 3.配置Parameter Settings. Baud R…...

车载ADB:让汽车更智能的桥梁

随着科技的不断进步&#xff0c;汽车行业也在迅速迈向智能化。车载Android系统&#xff08;通常称为Android Auto&#xff09;正在变得越来越流行&#xff0c;而Android Debug Bridge (ADB) 作为连接和调试这些系统的桥梁&#xff0c;也变得尤为重要。在本文中&#xff0c;我们…...

HarmonyOS-高级(一)

文章目录 一次开发、多端部署自由流转 &#x1f3e1;作者主页&#xff1a;点击&#xff01; &#x1f916;HarmonyOS专栏&#xff1a;点击&#xff01; ⏰️创作时间&#xff1a;2024年12月09日12点19分 一次开发、多端部署 布局能力 自适应布局 拉伸能力均分能力占比能力缩放…...

【优选算法-滑动窗口】长度最小的子数组、无重复字符的最长子串、最大连续1的个数、将x减为0的最小操作数、水果成篮

一、长度最小的子数组 题目链接&#xff1a; 209. 长度最小的子数组 - 力扣&#xff08;LeetCode&#xff09; 题目介绍&#xff1a; 给定一个含有 n 个正整数的数组和一个正整数 target 。 找出该数组中满足其总和大于等于 target 的长度最小的 子数组 [numsl, numsl1, .…...

Leetcode 每日一题 202.快乐数

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

SEC_ASA 第一天作业

拓扑&#xff1a; 实验需求&#xff1a; 注意&#xff1a;在开始作业之前必须先读“前言”&#xff0c;以免踩坑&#xff01;&#xff01;&#xff01;&#xff08;☞敢点我试试&#xff09; 按照拓扑图配置VLAN连接。 注意&#xff1a;ASA防火墙的 Gi0/1口需要起子接口&#x…...

Fluss:面向实时分析设计的下一代流存储

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

【一本通】质因数分解

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

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解决办法&#xff1a;设置请求头中的Referer字段 2.关于干坏事的问题后续不定期更新 欢迎共同探讨学习进步 1. 爬取图片出现403 问题出自案例9&#xff0c;已解决。 【Python网络爬虫笔记】9- 抓取优美图库高清壁纸 当在爬取图库图片时遇到 403 错误…...

Java SpringBoot 项目怎样在 IDEA 中运行、部署

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

GAMES101:现代计算机图形学-笔记-10

今天来聊一些基本的概念&#xff1a;相机&#xff0c;棱镜与光场。 众所周知&#xff0c;成像的方法有两种&#xff1a;合成与捕获。 像我们之前所学的内容如光栅化&#xff0c;如光线追踪&#xff0c;本质上都是合成图像的方法&#xff0c;他们只是在计算机中模拟来成像。 那…...

【前端面试】Http篇

1. HTTPS 概念 加密&#xff08;Encryption&#xff09; 防止数据被截获 数据完整性&#xff08;Data Integrity&#xff09; 防止数据篡改 身份验证&#xff08;Authentication&#xff09; 验证网站的真实性 2. HTTPS 与 HTTP 的区别 HTTP 是明文传输&#xff0c;HTTPS 是…...

ZZCMS2023存在跨站脚本漏洞(CNVD-2024-44822、CVE-2024-44818)

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

vscode(仍待补充)

写于2025 6.9 主包将加入vscode这个更权威的圈子 vscode的基本使用 侧边栏 vscode还能连接ssh&#xff1f; debug时使用的launch文件 1.task.json {"tasks": [{"type": "cppbuild","label": "C/C: gcc.exe 生成活动文件"…...

前端导出带有合并单元格的列表

// 导出async function exportExcel(fileName "共识调整.xlsx") {// 所有数据const exportData await getAllMainData();// 表头内容let fitstTitleList [];const secondTitleList [];allColumns.value.forEach(column > {if (!column.children) {fitstTitleL…...

MVC 数据库

MVC 数据库 引言 在软件开发领域,Model-View-Controller(MVC)是一种流行的软件架构模式,它将应用程序分为三个核心组件:模型(Model)、视图(View)和控制器(Controller)。这种模式有助于提高代码的可维护性和可扩展性。本文将深入探讨MVC架构与数据库之间的关系,以…...

postgresql|数据库|只读用户的创建和删除(备忘)

CREATE USER read_only WITH PASSWORD 密码 -- 连接到xxx数据库 \c xxx -- 授予对xxx数据库的只读权限 GRANT CONNECT ON DATABASE xxx TO read_only; GRANT USAGE ON SCHEMA public TO read_only; GRANT SELECT ON ALL TABLES IN SCHEMA public TO read_only; GRANT EXECUTE O…...

TRS收益互换:跨境资本流动的金融创新工具与系统化解决方案

一、TRS收益互换的本质与业务逻辑 &#xff08;一&#xff09;概念解析 TRS&#xff08;Total Return Swap&#xff09;收益互换是一种金融衍生工具&#xff0c;指交易双方约定在未来一定期限内&#xff0c;基于特定资产或指数的表现进行现金流交换的协议。其核心特征包括&am…...

Java面试专项一-准备篇

一、企业简历筛选规则 一般企业的简历筛选流程&#xff1a;首先由HR先筛选一部分简历后&#xff0c;在将简历给到对应的项目负责人后再进行下一步的操作。 HR如何筛选简历 例如&#xff1a;Boss直聘&#xff08;招聘方平台&#xff09; 直接按照条件进行筛选 例如&#xff1a…...

Python Ovito统计金刚石结构数量

大家好,我是小马老师。 本文介绍python ovito方法统计金刚石结构的方法。 Ovito Identify diamond structure命令可以识别和统计金刚石结构,但是无法直接输出结构的变化情况。 本文使用python调用ovito包的方法,可以持续统计各步的金刚石结构,具体代码如下: from ovito…...

水泥厂自动化升级利器:Devicenet转Modbus rtu协议转换网关

在水泥厂的生产流程中&#xff0c;工业自动化网关起着至关重要的作用&#xff0c;尤其是JH-DVN-RTU疆鸿智能Devicenet转Modbus rtu协议转换网关&#xff0c;为水泥厂实现高效生产与精准控制提供了有力支持。 水泥厂设备众多&#xff0c;其中不少设备采用Devicenet协议。Devicen…...

小木的算法日记-多叉树的递归/层序遍历

&#x1f332; 从二叉树到森林&#xff1a;一文彻底搞懂多叉树遍历的艺术 &#x1f680; 引言 你好&#xff0c;未来的算法大神&#xff01; 在数据结构的世界里&#xff0c;“树”无疑是最核心、最迷人的概念之一。我们中的大多数人都是从 二叉树 开始入门的&#xff0c;它…...

STM32标准库-ADC数模转换器

文章目录 一、ADC1.1简介1. 2逐次逼近型ADC1.3ADC框图1.4ADC基本结构1.4.1 信号 “上车点”&#xff1a;输入模块&#xff08;GPIO、温度、V_REFINT&#xff09;1.4.2 信号 “调度站”&#xff1a;多路开关1.4.3 信号 “加工厂”&#xff1a;ADC 转换器&#xff08;规则组 注入…...