当前位置: 首页 > 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…...

C++实现分布式网络通信框架RPC(3)--rpc调用端

目录 一、前言 二、UserServiceRpc_Stub 三、 CallMethod方法的重写 头文件 实现 四、rpc调用端的调用 实现 五、 google::protobuf::RpcController *controller 头文件 实现 六、总结 一、前言 在前边的文章中&#xff0c;我们已经大致实现了rpc服务端的各项功能代…...

(二)原型模式

原型的功能是将一个已经存在的对象作为源目标,其余对象都是通过这个源目标创建。发挥复制的作用就是原型模式的核心思想。 一、源型模式的定义 原型模式是指第二次创建对象可以通过复制已经存在的原型对象来实现,忽略对象创建过程中的其它细节。 📌 核心特点: 避免重复初…...

ETLCloud可能遇到的问题有哪些?常见坑位解析

数据集成平台ETLCloud&#xff0c;主要用于支持数据的抽取&#xff08;Extract&#xff09;、转换&#xff08;Transform&#xff09;和加载&#xff08;Load&#xff09;过程。提供了一个简洁直观的界面&#xff0c;以便用户可以在不同的数据源之间轻松地进行数据迁移和转换。…...

OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别

OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别 直接训练提示词嵌入向量的核心区别 您提到的代码: prompt_embedding = initial_embedding.clone().requires_grad_(True) optimizer = torch.optim.Adam([prompt_embedding...

SpringTask-03.入门案例

一.入门案例 启动类&#xff1a; package com.sky;import lombok.extern.slf4j.Slf4j; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cache.annotation.EnableCach…...

回溯算法学习

一、电话号码的字母组合 import java.util.ArrayList; import java.util.List;import javax.management.loading.PrivateClassLoader;public class letterCombinations {private static final String[] KEYPAD {"", //0"", //1"abc", //2"…...

LangChain知识库管理后端接口:数据库操作详解—— 构建本地知识库系统的基础《二》

这段 Python 代码是一个完整的 知识库数据库操作模块&#xff0c;用于对本地知识库系统中的知识库进行增删改查&#xff08;CRUD&#xff09;操作。它基于 SQLAlchemy ORM 框架 和一个自定义的装饰器 with_session 实现数据库会话管理。 &#x1f4d8; 一、整体功能概述 该模块…...

华为OD机考-机房布局

import java.util.*;public class DemoTest5 {public static void main(String[] args) {Scanner in new Scanner(System.in);// 注意 hasNext 和 hasNextLine 的区别while (in.hasNextLine()) { // 注意 while 处理多个 caseSystem.out.println(solve(in.nextLine()));}}priv…...

腾讯云V3签名

想要接入腾讯云的Api&#xff0c;必然先按其文档计算出所要求的签名。 之前也调用过腾讯云的接口&#xff0c;但总是卡在签名这一步&#xff0c;最后放弃选择SDK&#xff0c;这次终于自己代码实现。 可能腾讯云翻新了接口文档&#xff0c;现在阅读起来&#xff0c;清晰了很多&…...

Unity中的transform.up

2025年6月8日&#xff0c;周日下午 在Unity中&#xff0c;transform.up是Transform组件的一个属性&#xff0c;表示游戏对象在世界空间中的“上”方向&#xff08;Y轴正方向&#xff09;&#xff0c;且会随对象旋转动态变化。以下是关键点解析&#xff1a; 基本定义 transfor…...