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

终端用户视角下的性能测试,体验与度量的融合

传统的性能测试的度量标准是什么

响应时间(Response Time):

这是从客户端发出请求到接收到完整响应所需的时间。响应时间是衡量系统性能的重要指标,特别是在面向用户的应用中,因为它直接影响用户体验。
而用户体验的度量原则如下:
3秒原则:对于大多数Web应用和交互式应用,90%的接口响应能在3秒内通常被认为是理想的,能够提供流畅的用户体验。
5秒原则:5秒内的响应时间对于多数用户而言仍然是可接受的,尽管可能会感觉到轻微的延迟。
8秒原则:8秒通常是用户开始感到不耐烦的临界点。超过此时间,用户流失率显著增加。

每秒查询率(Queries Per Second):

它衡量的是一台服务器每秒钟能够响应的查询次数。这个指标主要用于描述服务器处理查询请求的能力,特别适用于那些主要职责是接收和处理查询的系统,比如数据库服务器、DNS服务器或其他专注于查询服务的组件。
度量标准如下

  • 对于一般的Web应用,QPS可以从几十到几千不等,具体取决于应用的性质和规模。
  • 对于高性能的数据库系统或云服务,QPS可能高达数万甚至数十万次。
吞吐量(Throughput):

表示单位时间内系统能够处理的请求数量,通常以每秒的事务数(Transactions Per Second, TPS)、点击数(Hits Per Second, HPS)或查询数(Queries Per Second, QPS)来衡量。

并发用户数(Concurrency):

是指系统同时处理的活跃用户数量。它可以帮助评估系统在高并发访问下的性能和稳定性。

CPU使用率(CPU Utilization):

衡量处理器的繁忙程度,即CPU在单位时间内用于处理任务的时间百分比。

内存使用率(Memory Utilization):

表示系统中可用内存与已分配给应用程序的内存的比例。过高的内存使用率可能导致系统响应变慢或出现内存泄漏等问题。

I/O操作(Input/Output Operations):

包括磁盘读写操作的频率和速度,以及网络数据传输速率,它们对数据库和文件系统密集型应用的性能有重要影响。

网络延迟(Network Latency):

是数据包从源地址到达目的地所需的时间,对分布式系统和互联网应用的性能至关重要。

错误率(Error Rate):

表示在特定时间段内发生的错误请求占总请求的比例,是系统可靠性和稳定性的一个指标。

以用户感受为核心的性能指标升级

在我多年的从业经历中,我深刻认识到性能并非仅是一组冷冰冰的技术指标,而是最终落实为终端用户切身的感受。这种感受源于用户与系统的每一次互动,特别是当系统响应迟缓,导致用户在期待与现实之间产生落差时,性能问题便变得尤为显著。

例如,在一年一度的购物狂欢节——双11期间,用户在抢购心仪商品时,最直观的体验莫过于支付环节的顺畅与否。当支付按钮反复点击却无响应,那种焦躁与失望感油然而生,这时,性能问题不再抽象,它成了用户心中挥之不去的阴影。

性能,本质上是一种主观体验,它随个体差异而变化。尽管专业测试人员对性能有着严谨的定义和标准,但在真实的使用场景中,当系统面临高负载挑战,连最基本的功能都无法保障时,任何技术上的优越性都将黯然失色。

在定义性能指标时,我们应超越单一视角,采取更加全面和用户导向的方法:

用户感知层面:以终端用户的真实反馈为出发点,将用户体验置于首位。
硬件资源层面:考虑现有硬件配置的限制,优化资源利用效率。
系统单元层面:分析各组件资源消耗,确保系统内部协同高效。
外部服务层面:考量第三方服务的稳定性与性能,避免成为系统瓶颈。

性能优化是一个持续的过程,它要求我们在项目早期阶段就开始规划,从设计之初就融入性能考量,而非事后补救。这是一项挑战,特别是在资源有限、环境多变的条件下,但正如任何技能的成长一样,持之以恒的努力定能带来显著的提升。

这样的表述既强调了性能测试与用户体验的紧密关联,也提出了一个更为全面的性能指标定义框架,同时鼓励持续优化和早期介入的重要性。

站在用户的角度上来说,用户关注的是什么?

  • 响应时间(Response Time)
  • 每秒查询率(Queries Per Second)
    基于此实际性能测试过程中,需要去关注用户层面的指标,当然实际测试执行过程中不同业务和不同时间所需要的性能指标是差异化的。
1.响应时间的差异化
  • Web应用
    2-5-10原则:2秒以内响应被认为是快速的,5秒以内是可接受的,而10秒是许多用户愿意等待的极限。
  • 移动应用
    移动应用的响应时间期望通常与Web应用相似,但考虑到移动网络的潜在延迟,有时标准会稍微放宽。
  • 游戏和实时应用
    对于游戏和需要高度实时性的应用,响应时间可能需要更低,例如100毫秒或以下,以减少输入延迟。
  • 数据密集型应用
    对于数据密集型或计算密集型应用,如大型数据库查询或科学计算,响应时间可能较长,但仍需在合理范围内,以确保工作效率。
  • 工业自动化和控制系统
    在这类系统中,响应时间可能需要精确到毫秒级别,以确保系统的实时性和安全性。
1.每秒查询率的差异化

不同行业和应用领域对QPS的要求各不相同。例如,金融交易系统可能需要极高的QPS以保证实时交易的顺畅,而小型企业网站的QPS需求则可能相对较低,在实际应用中,QPS的度量标准需要根据具体的服务类型和业务需求来确定。通常,系统架构师和运维团队会设定一个目标QPS,以确保系统能够在预期的负载下稳定运行

文章原创首发于微信公众号 软件测试微课堂,更多内容欢迎关注微信公众号查看

相关文章:

终端用户视角下的性能测试,体验与度量的融合

传统的性能测试的度量标准是什么 响应时间(Response Time): 这是从客户端发出请求到接收到完整响应所需的时间。响应时间是衡量系统性能的重要指标,特别是在面向用户的应用中,因为它直接影响用户体验。 而用户体验的度…...

KCP源码解析系列(二)KCP协议结构体

一、KCP协议包 1.1 kcp协议包 kcp中只有一种数据包,不管是数据还是控制信息,都用这个数据包来表示 0 4 5 6 8 (BYTE) ---------------------------- | conv |cmd|frg| wnd | ---------------------------- 8 | …...

微软运行库全集合:一站式解决兼容性问题

开发者在部署应用程序时经常遇到因缺少运行库而引发的兼容性问题。为了解决这一问题,电脑天空推荐微软常用运行库合集,一个集成了微软多个关键运行库组件的软件包。 📚 包含组件概览: Visual Basic Virtual Machine:…...

【 亿邦动力网-注册安全分析报告】

前言 由于网站注册入口容易被黑客攻击,存在如下安全问题: 暴力破解密码,造成用户信息泄露短信盗刷的安全问题,影响业务及导致用户投诉带来经济损失,尤其是后付费客户,风险巨大,造成亏损无底洞 …...

算法笔记|Day26贪心算法IV

算法笔记|Day26贪心算法IV ☆☆☆☆☆leetcode 452. 用最少数量的箭引爆气球题目分析代码 ☆☆☆☆☆leetcode 435. 无重叠区间题目分析代码 ☆☆☆☆☆leetcode 763.划分字母区间题目分析代码 ☆☆☆☆☆leetcode 452. 用最少数量的箭引爆气球 题目链接:leetcode …...

CVPR2023《DNF: Decouple and Feedback Network for Seeing in the Dark》暗光图像增强论文阅读笔记

相关链接 论文链接 https://openaccess.thecvf.com/content/CVPR2023/papers/Jin_DNF_Decouple_and_Feedback_Network_for_Seeing_in_the_Dark_CVPR_2023_paper.pdf 代码链接 https://github.com/Srameo/DNF 摘要 RAW数据的独特属性在低光照图像增强方面展现出巨大潜力。…...

大厂进阶七:React状态管理全解析

前言: React 中用于状态管理的hook及库有:useState、useReducer、useContext、useReducer useContext和一些第三方的库如redux、mobx等。 1、useState 单一组件某个具体状态 2、useReducer 单一组件中多个状态管理,策略分发机制统一管理…...

【ocr识别003】flask+paddleocr+bootstrap搭建OCR文本推理WEB服务

1.欢迎点赞、关注、批评、指正,互三走起来,小手动起来! 2.了解、学习OCR相关技术知识领域,结合日常的场景进行测试、总结。如本文总结的flaskpaddleocrbootstrap搭建OCR文本推理WEB服务应用示例场景。 文章目录 1.代码结构2.效果演…...

从零开始搭建 LVS 高性能集群 (DR模式)

从零开始搭建 LVS 高性能集群 (DR模式) 架构 本设计方案采用三台服务器构建集群,使用Linux Virtual Server (LVS) 作为负载均衡器,运行在直接路由 (DR) 模式下。集群中的每一台服务器都将运行相同的服务,以实现 高可用…...

Linux环境开发工具【yum与vim】

🌈个人主页:Yui_ 🌈Linux专栏:Linux 🌈C语言笔记专栏:C语言笔记 🌈数据结构专栏:数据结构 文章目录 1.Linux软件包管理器yum1.1 快速使用yum 2. Linux编辑器-vim的使用2.1 vim的基本…...

laravel GuzzleHttp Client 无法获取返回的错误信息

Client发送一些请求,当返回状态不是200的时候,无法获取完整错误信息 $client new Client([base_uri > $this->getUri()./order/aaaaaa,timeout > 30,verify > false]);try {$response $client->request(POST, , [headers > [Lang&g…...

XMOS 多路音频解码器

当谈及高性能音频解码器,XMOS 是一个不容忽视的名字。作为音频解决方案领域的领军者,XMOS 的多路音频解码器在音频处理技术中扮演着至关重要的角色。下面我们一起深入探讨 XMOS 多路音频解码器去了解这一技术的魅力。 设计背景:追求音频极致…...

XSS小游戏(题目+解析)

xss题目练习地址&#xff1a; xss小游戏 游戏界面 一、Ma Spaghet! 我将题目要求进行翻译: 题目的主要要求就是&#xff1a;弹出一个&#xff08;1337&#xff09;的弹窗 开始解题&#xff1a; Let’s Go! 首先&#xff0c;传个参数看看 发现参数直接显示在了 < h2 >…...

《Redis核心技术与实战》学习笔记4——AOF日志:宕机了,Redis如何避免数据丢失?

文章目录 AOF 日志是如何实现的&#xff1f;三种写回策略 日志文件太大了怎么办&#xff1f;AOF 重写会阻塞吗?小结 大家好&#xff0c;我是大白。 如果有人问你&#xff1a;“你会把 Redis 用在什么业务场景下&#xff1f;”我想你大概率会说&#xff1a;“我会把它当作缓存使…...

NextJs - 服务端/客户端组件之架构多样性设计

NextJs - 服务端/客户端组件之架构多样性设计 前言一. 架构设计1.1 SSR流式渲染常见错误设计之 - 根页面同步阻塞1.2 架构设计之 - 客户端组件依赖于服务端组件数据① 使用 Redux 完成数据共享 1.3 架构设计之 - 单页内的分步骤跳转① 如何做到服务端组件和客户端组件之间的切换…...

使用 Python 进行 PDF 文件加密

使用 Python 解密加密的 PDF 文件-CSDN博客定义一个名为的函数&#xff0c;该函数接受三个参数&#xff1a;输入的加密 PDF 文件路径input_pdf、输出的解密 PDF 文件路径output_pdf和密码password。https://blog.csdn.net/qq_45519030/article/details/141256661 在数字化时代…...

Spring Boot集成RabbitMQ

目录 1.RabbitMQ简介2.添加依赖3.配置RabbitMQ连接4.DirectExchange4.1 消费者4.2 生产者4.3 测试4.4 一个交换机对多个队列4.5 一个队列对多个消费者 5.FanoutExchange5.1 消费者5.2 生产者5.3 测试 6.TopicExchange6.1 消费者6.2 生产者 1.RabbitMQ简介 RabbitMQ是一个由Erl…...

OLED屏幕制造工艺流程

OLED屏幕制造工艺流程是一个复杂且精细的过程&#xff0c;涉及多个关键步骤以确保最终的显示效果和性能。以下是OLED屏幕制造工艺流程的主要步骤&#xff1a; 1. 衬底制作与准备 材料选择&#xff1a;OLED器件需要一个透明的导电衬底&#xff0c;通常使用玻璃或塑料材料。 清…...

knowLedge-VueCLI项目中环境变量的定义与使用

1. env 1.1简介 在 Vue CLI 创建的项目中&#xff0c;你可以通过 .env 文件来定义环境变量。Vue CLI 支持多种 .env 文件&#xff0c;它们根据文件名中的前缀来决定何时加载和使用这些环境变量。 以下是一些常见的 .env 文件及其用途&#xff1a; .env&#xff1a;在任何环境…...

【C#】 接口 继承

简介 继承是面向对象编程的核心特性之一&#xff0c;它允许我们创建一个类&#xff08;称为子类&#xff09;来继承另一个类&#xff08;称为基类&#xff09;的属性和方法。 作用 这样&#xff0c;我们可以重用代码&#xff0c;减少重复&#xff0c;并使我们的代码更加模块…...

后进先出(LIFO)详解

LIFO 是 Last In, First Out 的缩写&#xff0c;中文译为后进先出。这是一种数据结构的工作原则&#xff0c;类似于一摞盘子或一叠书本&#xff1a; 最后放进去的元素最先出来 -想象往筒状容器里放盘子&#xff1a; &#xff08;1&#xff09;你放进的最后一个盘子&#xff08…...

(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)

题目&#xff1a;3442. 奇偶频次间的最大差值 I 思路 &#xff1a;哈希&#xff0c;时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况&#xff0c;哈希表这里用数组即可实现。 C版本&#xff1a; class Solution { public:int maxDifference(string s) {int a[26]…...

超短脉冲激光自聚焦效应

前言与目录 强激光引起自聚焦效应机理 超短脉冲激光在脆性材料内部加工时引起的自聚焦效应&#xff0c;这是一种非线性光学现象&#xff0c;主要涉及光学克尔效应和材料的非线性光学特性。 自聚焦效应可以产生局部的强光场&#xff0c;对材料产生非线性响应&#xff0c;可能…...

Linux 文件类型,目录与路径,文件与目录管理

文件类型 后面的字符表示文件类型标志 普通文件&#xff1a;-&#xff08;纯文本文件&#xff0c;二进制文件&#xff0c;数据格式文件&#xff09; 如文本文件、图片、程序文件等。 目录文件&#xff1a;d&#xff08;directory&#xff09; 用来存放其他文件或子目录。 设备…...

Linux相关概念和易错知识点(42)(TCP的连接管理、可靠性、面临复杂网络的处理)

目录 1.TCP的连接管理机制&#xff08;1&#xff09;三次握手①握手过程②对握手过程的理解 &#xff08;2&#xff09;四次挥手&#xff08;3&#xff09;握手和挥手的触发&#xff08;4&#xff09;状态切换①挥手过程中状态的切换②握手过程中状态的切换 2.TCP的可靠性&…...

python如何将word的doc另存为docx

将 DOCX 文件另存为 DOCX 格式&#xff08;Python 实现&#xff09; 在 Python 中&#xff0c;你可以使用 python-docx 库来操作 Word 文档。不过需要注意的是&#xff0c;.doc 是旧的 Word 格式&#xff0c;而 .docx 是新的基于 XML 的格式。python-docx 只能处理 .docx 格式…...

【python异步多线程】异步多线程爬虫代码示例

claude生成的python多线程、异步代码示例&#xff0c;模拟20个网页的爬取&#xff0c;每个网页假设要0.5-2秒完成。 代码 Python多线程爬虫教程 核心概念 多线程&#xff1a;允许程序同时执行多个任务&#xff0c;提高IO密集型任务&#xff08;如网络请求&#xff09;的效率…...

NFT模式:数字资产确权与链游经济系统构建

NFT模式&#xff1a;数字资产确权与链游经济系统构建 ——从技术架构到可持续生态的范式革命 一、确权技术革新&#xff1a;构建可信数字资产基石 1. 区块链底层架构的进化 跨链互操作协议&#xff1a;基于LayerZero协议实现以太坊、Solana等公链资产互通&#xff0c;通过零知…...

06 Deep learning神经网络编程基础 激活函数 --吴恩达

深度学习激活函数详解 一、核心作用 引入非线性:使神经网络可学习复杂模式控制输出范围:如Sigmoid将输出限制在(0,1)梯度传递:影响反向传播的稳定性二、常见类型及数学表达 Sigmoid σ ( x ) = 1 1 +...

Caliper 配置文件解析:config.yaml

Caliper 是一个区块链性能基准测试工具,用于评估不同区块链平台的性能。下面我将详细解释你提供的 fisco-bcos.json 文件结构,并说明它与 config.yaml 文件的关系。 fisco-bcos.json 文件解析 这个文件是针对 FISCO-BCOS 区块链网络的 Caliper 配置文件,主要包含以下几个部…...