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

性能测试新手误区:用户数与压力

同样的项目、同样的性能需求让不同的测试人员来测会是相同的结果么假设有这样一个小论坛性能测试人员得到的需求是“支持并发50人响应时间要在3秒以内”性能测试人员A和B同时开始进行性能测试各做各的。只考虑发帖这个操作A设计的测试场景是50人并发发帖得到的测试结果是平均完成时间是5秒。于是他提出了这个问题认为系统没有达到性能期望需要开发人员进行优化。B设计的测试场景是50个人在线并且在5分钟内每人发一个帖子也就是1分钟内有10个人发帖子最后得到的测试结果是平均完成时间2秒。于是他的结论是系统通过性能测试可以满足上线的压力。两个人得到了不同的测试结果完全相反的测试结论谁做错了或许这个例子太极端绝对并发和平均分布的访问压力当然是截然不同的那我们再来看个更真实的例子。还是一个小论坛需求是“100人在线时页面响应时间要小于3秒”。A和B又同时开工了这时他们都成长了经验更加丰富了也知道了要设计 出更符合实际的测试场景。假设他们都确认了用户的操作流程为“登录-进入子论坛-浏览列表-浏览帖子×10-发帖”即每个用户看10个帖子、发一个 帖子。于是他们都录制出了同样的测试脚本。A认为每个用户的操作一般间隔30s比较合适于是他在脚本中的每两个事务之间加上了30秒的等待思考时间。B想了想自己看论坛时的情景好像平均每次鼠标点击要间隔1分钟于是他在脚本中的每两个事务之间加上了1分钟的等待。他们都认为自己的测试场景比较接近实际情况可惜测试结果又是不同的很显然A场景的压力是B的两倍。那谁错了呢或者有人说是需求不明确导致的那么你需要什么样的需求呢看看我随手在网上51testing找的提问吧和上面的内容如出一辙。一定有很多的性能测试人员每天接到的就是这种需求又这样就开展了测试结果可想而知。这里我想问几个问题希望各位看完了上面的小例子后想一想如果有另一个人和你测同样的系统你们的测试结果会一致么如果不一致那么谁是正确的如何证明测试结果是有效的如果你有了一些疑惑对之前的测试结果少了一些自信那么请继续。服务器视角 vs. 用户视角性能测试中非常重要的一块内容就是模拟预期的压力测试系统运行在此压力下用户的体验是什么样的。那么压力是什么压力是服务器在不断的处理事情、甚至是同时处理很多事情。压力是服务器直接处理的“事情”而不是远在网络另一端的用户。下图中每一个颜色的线段代表一种操作。在任意一个时刻服务器都知道它有10个事务需要处理这10个事务也是有10个用户产生的。但它不知道的是整个时间段内的所有事务是由多少个用户与系统交互而产生的。这句话好像有点绕我再试着更形象的解释一下。时刻110个当前事务是由10个用户发起的。时刻2依然是10个正在进行的事务但可能是完 全不同的10个人发起的。在这段时间内服务器每一个时刻都在处理10个事务但是参与了这个交互过程对服务器产生压力的人可能会达到上百个也可能 只有最开始的10个。那么对于服务器来说压力是什么呢显然只是每时刻这10个同时处理的事务而到底是有10个人还是1000个人区别不大暂不考虑session 等问题。下面再从用户的视角来看看。实际的情况中不可能出现很多用户同一时刻开始进行操作的场景而是有一定的时间顺序的。正如下图所示在这个时间段内一共有23个用户进行了操作。但是服务器能看到这些用户么它知道的只是某一个时间点上有多少个正在执行的事务。大家可以数一下此图中任意时刻的并发事务依然是10个。其实这两个图描述的本来就是同一个场景只不过观察者的视角不同罢了。那么大家想想在性能需求中最常见到的“并发用户”到底是指的什么呢并发用户很多使用“并发用户”这个词的人并没有从服务器视角进行考虑。他们想的是坐在电脑前使用这个系统、对系统产生压力的人的个数。基于这个原因 我很少使用这个容易让人误解的词汇而是进行了更细的划分。主要有这么几个系统用户数注册用户数、在线用户数相对并发用户数、绝对并发用户数。上面几个例子中所说的“并发用户”实际就是在线用户数。其实我更喜欢叫做相对并发用户数因为这个词更容易让人感受到“压力”。相对并发用户 数指的是在一个时间段内与服务器进行了交互、对服务器产生了压力的用户的数量。这个时间段可以是一天也可以是一个小时。而需求人员必须要描述的 也正是这个内容。而绝对并发用户主要是针对某一个操作进行测试即多个用户同一时刻发起相同请求。可以用来验证是否存在 并发逻辑上的处理问题如线程不安全、 死锁等问题也可提供一些性能上的参考信息比如1个用户需要1秒而10个用户并发却需要30秒那很可能就会有问题需要进行关注因为10个用户请 求排队处理也应该只需要10秒啊。但这种绝对并发的测试同实际压力下的用户体验关系不大。再回到相对并发这个概念上来它与服务器的压力到底是什么关系呢如果你理解了前面的所有内容那么就会知道这两者其实没有直接联系当然了同一个测试用例中肯定是用户数越多压力越大。也就是说你得到的这种性能需求是无法知道服务器到底要承受多大压力的。那么如何开展性能测试如何模拟压力既然我们知道了所谓的压力其实是从服务器视角来讲的服务器要处理的事务才是压力那么我们就从这出发来探寻一下性能测试需要的信息。依然用之前的小论坛为例我们需要测试活跃用户为500人时系统的性能是否能还能提供良好的用户感受。假设现在的活跃用户有50个人或者通过另一个类似的系统来推算也行平均每天总的发帖量是50条、浏览帖子500次也就是每人每天发一个 帖子、浏览十个帖子为了方便讲解假设论坛只有这两个基本功能。那么我们就可以推算活跃用户达到500时每天的业务量也会成比例的增长也就是平 均每天会产生500个新帖子、浏览帖子5000次。进一步分析数据又发现。用户使用论坛的时间段非常集中基本集中在中午11点到1点和晚上18点到20点。也就是说每天的这些业务实际是分布在4个小时中完成的如下图随便找了个图意思一下数不一致。那我们的测试场景就是要用500个用户在4小时内完成“每人发一个帖子、浏览十个帖子”的工作量。注意上面的两处“平均每天……”、“分布在4个小时……”。敏感的测试人员应该能发现这个场景测的是平均压力也就是一个系统最平常一天的使用压力我喜欢称之为日常压力。显然除了日常压力系统还会有压力更大的使用场景比如某天发生了一件重要的事情那么用户就会更加热烈的进行讨论。这个压力我习惯叫做高峰期压力需要专门设计一个测试场景。这个场景需要哪些数据呢我们依然可以从现有的数据进行分析。比如上面提到的是“平均每天总的发帖量……”那么这次我们就要查到过去最高一 日的业务量。“分布在4个小时”也需要进行相应的修改比如查查历史分布图是否有更为集中的分布或者用更简单通用的80-20原则80%的工作在 20%的时间内完成。根据这些数据可以再做适当的调整设计出高峰期的测试场景。实际工作中可能还需要更多的测试场景比如峰值压力场景。什么是峰值压力呢比如一个银行网站可能会由于发布一条重磅消息使访问量骤增这个突发的压力也是性能测试人员需要考虑的。需要注意高峰期压力和峰值压力的区别高峰期压力是指系统正常的、预期内压力的一个高峰。而峰值压力是指那些不在正常预期内的压力可能几年才出现一次。这里只是举了个最简单的例子实际工作远比这复杂的多。需要哪些数据、如何获取很可能要取得这些数据就要花费很大的功夫。这其实就涉及到了一个很重要的内容用户模型和压力模型的建立以后会有专门的文章进行讲述。为什么要花这么大的精力来收集这些信息呢是因为只有通过这些有效的数据才能准确的去模拟用户场景准确的模拟压力获取到更加真实的用户体验。只有这样“不同的测试人员测出相同的结果”才会有可能实现而且结果都是准确有效的。要点回顾最后通过几个小问题来总结回顾一下你真的理解“并发用户”的意义么什么是用户视角和服务器视角什么是压力如何模拟预期压力最后下方这份完整的软件测试视频教程已经整理上传完成需要的朋友们可以自行领取【保证100%免费】​​​软件测试面试文档我们学习必然是为了找到高薪的工作下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料并且有字节大佬给出了权威的解答刷完这一套面试资料相信大家都能找到满意的工作。

相关文章:

性能测试新手误区:用户数与压力

同样的项目、同样的性能需求,让不同的测试人员来测,会是相同的结果么? 假设有这样一个小论坛,性能测试人员得到的需求是“支持并发50人,响应时间要在3秒以内”,性能测试人员A和B同时开始进行性能测试&…...

237.2亿元!电容式触摸按键控制芯片2032年市场规模锁定,技术迭代催生新增长极

据恒州诚思调研统计,2025年全球电容式触摸按键控制芯片市场规模约159亿元,预计未来将持续保持平稳增长态势,到2032年市场规模将接近237.2亿元,未来六年复合年均增长率(CAGR)为5.9%。在智能设备广泛普及、消…...

Z-Image-Turbo-rinaiqiao-huiyewunv部署教程:国产海光DCU GPU HIP环境适配关键步骤

Z-Image-Turbo-rinaiqiao-huiyewunv部署教程:国产海光DCU GPU HIP环境适配关键步骤 1. 项目概述 Z-Image Turbo (辉夜大小姐-日奈娇)是基于Tongyi-MAI Z-Image底座模型开发的专属二次元人物绘图工具。该工具通过注入辉夜大小姐(日奈娇)微调safetensors权重&#x…...

Z-Image-Turbo_Sugar脸部Lora部署案例:教育机构AI绘画实训平台建设方案

Z-Image-Turbo_Sugar脸部Lora部署案例:教育机构AI绘画实训平台建设方案 1. 引言:当艺术教育遇上AI绘画 想象一下,一所艺术设计学院的学生,正在学习人物肖像绘画。传统的教学方式,学生需要花费大量时间练习素描、色彩…...

Win11下RTX4060显卡如何一步到位配置Pytorch1.12.0+CUDA11.6(附版本兼容性对照表)

Win11下RTX4060显卡一步到位配置PyTorch1.12.0CUDA11.6全攻略 RTX40系显卡的强劲性能为深度学习带来了全新体验,但版本兼容性问题常让开发者头疼。本文将手把手带你完成从驱动匹配到环境验证的全流程,特别针对RTX4060显卡与PyTorch1.12.0的兼容性进行深…...

抖音批量下载终极指南:高效获取无水印视频的完整解决方案

抖音批量下载终极指南:高效获取无水印视频的完整解决方案 【免费下载链接】douyin-downloader 项目地址: https://gitcode.com/GitHub_Trending/do/douyin-downloader 想象一下这样的场景:你在抖音上发现了一位宝藏创作者,他的每个视…...

TMS320F280049工程移植实战:当你的代码从一台电脑搬到另一台,如何快速修复‘索引路径’错误?

TMS320F280049工程移植实战:跨越电脑的代码迁移艺术 当你从同事那里接过一个精心调试的CCS工程,或从GitHub下载了某个开源项目,满心期待地点击"Build"按钮时,却看到满屏的"file not found"和链接错误——这种…...

项目博客1 会议记录:实训选题讨论

会议日期:3.12会议议程:一、观看老师解读创新实训文件二、观看往届优秀作品,汲取选题灵感三、咨询学长学姐建议四、讨论并确认选题五、分配后期到开题答辩之间各组员任务会议详细记录:一、3.12晚6:30-7:30&…...

Pixel Fashion Atelier保姆级教程:Dual GPU协同锻造高定皮装全流程

Pixel Fashion Atelier保姆级教程:Dual GPU协同锻造高定皮装全流程 1. 环境准备与快速部署 1.1 系统要求 在开始使用Pixel Fashion Atelier之前,请确保您的系统满足以下最低配置: 操作系统:Ubuntu 20.04 LTS或更高版本显卡&am…...

Llama-3.2V-11B-cot多模态推理实战:支持中文提问+英文图像描述双向理解

Llama-3.2V-11B-cot多模态推理实战:支持中文提问英文图像描述双向理解 1. 项目概述 Llama-3.2V-11B-cot是基于Meta最新多模态大模型开发的高性能视觉推理工具,专为双卡RTX 4090环境优化。这个工具最特别的地方在于它能同时理解中文提问和英文图像描述&…...

通义千问3-4B资源推荐:从镜像获取到性能优化,一站式指南

通义千问3-4B资源推荐:从镜像获取到性能优化,一站式指南 1. 模型概览 1.1 核心定位 通义千问3-4B-Instruct-2507(Qwen3-4B-Instruct-2507)是阿里云2025年开源的一款轻量化大语言模型,以"4B参数实现30B级性能&q…...

ANSYS Box Color 和 Transparent 应变为可编辑状态 无法选中 解决办法

取消勾选 Material Appearance 即可恢复编辑。...

如何在5分钟内快速上手Adafruit GFX图形库:Arduino显示开发的完整指南

如何在5分钟内快速上手Adafruit GFX图形库:Arduino显示开发的完整指南 【免费下载链接】Adafruit-GFX-Library adafruit/Adafruit-GFX-Library: 是 Adafruit 推出的一款图形库,支持多种硬件平台。适合用于显示图片和文本等图形内容。特点是提供了简单的 …...

运算符(重要:++、--)

public class 运算符 {/*算术运算符&#xff1a; — * / % --赋值运算符&#xff1a;关系运算符&#xff1a;> < > < ! instanceof &#xff08;返回结果为boolean值&#xff09;逻辑运算符:&& || !* */public static void main(String[] args) {int a1…...

【机器人避障路径规划】从C-Space到A算法的多边形机器人避障路径规划研究附Matlab代码

✅作者简介&#xff1a;热爱科研的Matlab仿真开发者&#xff0c;擅长毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。 &#x1f34e; 往期回顾关注个人主页&#xff1a;Matlab科研工作室 &#x1f447; 关注我领取海量matlab电子…...

零基础玩转OpenClaw:Qwen3.5-9B镜像10分钟快速体验

零基础玩转OpenClaw&#xff1a;Qwen3.5-9B镜像10分钟快速体验 1. 为什么选择云主机快速体验OpenClaw 作为一个长期关注AI自动化工具的技术爱好者&#xff0c;我第一次接触OpenClaw时就被它的理念吸引了——一个能在本地电脑上像人类一样操作鼠标键盘、读写文件的AI智能体。但…...

多频相位展开(Multi-frequency Phase Unwrapping)”可以替代格雷码?

一、结论k 的本质 “需要加多少个 2π 才和低频一致”多频相位展开通过不同频率的包裹相位建立约束关系&#xff0c;利用低频相位提供粗略位置估计&#xff0c;再通过高频相位精细匹配&#xff0c;从而计算出需要补偿的2π周期数k&#xff0c;实现绝对相位恢复。对比Gray Code…...

嵌入式模块设计:内聚与耦合的工程实践

嵌入式模块设计的工程实践1. 模块化设计基础理论1.1 模块化质量评估标准模块化设计质量直接影响嵌入式系统的两个关键指标&#xff1a;可维护性&#xff1a;系统修改和功能扩展的难易程度可扩展性&#xff1a;新增功能模块对现有系统的影响程度评估模块化质量的核心维度&#x…...

避坑指南:Unity 2022版Subtractive模式在开放世界地形的正确用法

Unity 2022开放世界地形中Subtractive模式的深度应用与避坑指南 在开发大型开放世界项目时&#xff0c;光照系统的选择往往决定了项目的视觉品质与性能表现。Subtractive模式作为Unity提供的四种混合光照模式之一&#xff0c;在特定场景下能够提供独特优势&#xff0c;但也存在…...

FinBERT2:金融NLP领域的技术突破与业务价值实现

FinBERT2&#xff1a;金融NLP领域的技术突破与业务价值实现 【免费下载链接】FinBERT 项目地址: https://gitcode.com/gh_mirrors/finb/FinBERT FinBERT2作为基于320亿Token中文金融语料预训练的专业双向编码器&#xff0c;专为弥合大语言模型在金融领域部署差距而设计…...

Qwen-Image-2512-SDNQ网页版全攻略:从零到一,轻松创作AI画作

Qwen-Image-2512-SDNQ网页版全攻略&#xff1a;从零到一&#xff0c;轻松创作AI画作 1. 认识Qwen-Image-2512-SDNQ网页版服务 你是否曾经想过用AI来创作画作&#xff0c;却被复杂的配置和代码吓退&#xff1f;Qwen-Image-2512-SDNQ网页版服务正是为解决这个问题而生。这个服务…...

Phi-4-Reasoning-Vision多场景落地方案:构建支持中英文混合提问的多模态推理平台

Phi-4-Reasoning-Vision多场景落地方案&#xff1a;构建支持中英文混合提问的多模态推理平台 1. 项目概述 Phi-4-Reasoning-Vision是一款基于微软Phi-4-reasoning-vision-15B多模态大模型开发的高性能推理工具。该工具专为双卡RTX 4090环境优化&#xff0c;通过精心设计的交互…...

Mockito 5.14.1 + JUnit 5实战:多线程环境下静态方法Mock的终极解决方案

Mockito 5.14.1 JUnit 5实战&#xff1a;多线程环境下静态方法Mock的终极解决方案 在当今高并发的Java应用开发中&#xff0c;多线程测试已成为确保系统稳定性的关键环节。然而&#xff0c;当我们需要在多线程环境下Mock静态方法时&#xff0c;传统的单线程测试策略往往会失效…...

深入剖析 Redis 的三种集群方式以及实战配置

Redis作为高性能内存数据库&#xff0c;其集群化部署是解决单节点性能瓶颈与实现高可用的关键。本篇将深入剖析三种主流的集群方式&#xff1a;主从复制、哨兵模式&#xff08;Sentinel&#xff09;与官方集群&#xff08;Cluster&#xff09;&#xff0c;并为您提供详细的搭建…...

终极指南:如何免费实现PC微信QQ消息防撤回,告别信息丢失烦恼

终极指南&#xff1a;如何免费实现PC微信QQ消息防撤回&#xff0c;告别信息丢失烦恼 【免费下载链接】RevokeMsgPatcher :trollface: A hex editor for WeChat/QQ/TIM - PC版微信/QQ/TIM防撤回补丁&#xff08;我已经看到了&#xff0c;撤回也没用了&#xff09; 项目地址: h…...

Navicat 17.3新功能实测:AI辅助数据库管理的5个实用场景

Navicat 17.3新功能实测&#xff1a;AI辅助数据库管理的5个实用场景 数据库管理工具正在经历一场由AI驱动的变革。作为行业标杆的Navicat在17.3版本中引入了一系列智能功能&#xff0c;这些创新正在重新定义DBA和开发者的日常工作方式。本文将深入剖析五个最具实用价值的AI应用…...

win10 Windows服务器开放端口防火墙规则 远程控制桌面

旧电脑作为局域网服务器配置使用&#xff0c;打开远程桌面&#xff0c;配置静态IP开放端口号netsh advfirewall firewall add rule name"3306-TCP-IN" dirin actionallow protocolTCP localport3306 profileany enableyes netsh advfirewall firewall add rule name&…...

GLM-4.7-Flash实战体验:用Ollama一键搭建,实测代码生成与文档摘要

GLM-4.7-Flash实战体验&#xff1a;用Ollama一键搭建&#xff0c;实测代码生成与文档摘要 1. 快速部署GLM-4.7-Flash 1.1 镜像选择与启动 在CSDN星图镜像广场搜索"ollama glm-4.7-flash"&#xff0c;找到对应的镜像卡片。点击"一键部署"按钮后&#xff…...

UPX终极压缩工具:如何让可执行文件瘦身50%以上?

UPX终极压缩工具&#xff1a;如何让可执行文件瘦身50%以上&#xff1f; 【免费下载链接】upx UPX - the Ultimate Packer for eXecutables 项目地址: https://gitcode.com/gh_mirrors/up/upx 你是否曾经因为软件安装包太大而烦恼&#xff1f;或者因为移动存储空间不足而…...

SUPER COLORIZER系统集成:在.NET框架中调用模型服务的完整方案

SUPER COLORIZER系统集成&#xff1a;在.NET框架中调用模型服务的完整方案 如果你正在用.NET技术栈开发桌面应用或者网站&#xff0c;想把那个能把黑白照片变彩色的SUPER COLORIZER功能加进去&#xff0c;那你来对地方了。我见过不少团队&#xff0c;面对一个现成的AI模型服务…...