性能测试浅谈

news2024/9/25 17:12:21

早期的性能测试更关注后端服务的处理能力。

一个用户去访问一个页面的请求过程,如上图。

  • 数据传输时间

当你从浏览器输入网址,敲下回车,开始...

真实的用户场景请不要忽视数据传输时间,想想你给远方的朋友写信,信件需要经过不同的交通运输工具送到朋友手上;当你的朋友写好了信,再次通过不同的交通工具送到你的手上。

性能测试过程中的请求与响应过程也类似,当我们发送一个请求,到服务器接收到这个请求需要时间,系统处理完后将处理结果返回给我们也需要时间。

  • 客户端处理时间

从我们的浏览器得到响应数据开始...

真实的用户场景不要忽略客户端的处理时间,你拿到信是不是就知道内容了?当然不是,你得拆开信封,把信的内容读一篇吧。

我们的浏览器也是如些,浏览器拿到的只有一些HTML、JS、CSS、图片... 的资源,更底层当然是二进制数据,需要花费时间把他们渲染成我们想要的网页。

  • 系统处理时间

从当系统得到请求后开始...

这是我们的性能测试主要关心的时间,当系统得到请求后,需要对请求进行处理,可能需要查询数据库服务,也可能需要调用其它的服务,最终生成处理结果并返回给客户端。

然而,我们在LoadRunner、JMeter进行性能测试的时候,是没有客户端处理时间的,你当然可以同时开100个网页(可以用多线程+Selenium实现)访问某网站试试,这没对服务器产生多少压力,先把自己的电脑搞挂了。

网络传输时间往往也很难模拟真实的场景,因为你网站的用户来可能来自世界各地,我们总不能在世界各地都搞一个客户端,就算可以,我们通过什么方式让他们“同时”发请求给服务器呢?

各位读者,我们约定明天早上8点一起出发去北京全聚德买一只烤鸭,把全聚德搞断货,这可能吗?虽然,我们的出发时间是一样的,但因为距离不一样,到达时间肯定不一样,根本对全聚德够不成并发压力嘛!。所以,我们的性能测试都是放到局域网进行的,就是为了尽量降低传输时间,模拟并发。

理解了这些,我们知道,我们所做的性能测试是无法模拟真实的情况,网络的传输时间太过复杂,客户端处理时间取决于用户的设备。我们能做的就是尽量保证服务器端的处理时间,以及在一定的时间可以支撑的并发量。


随着,技术的发展,越来越多的系统开始做前后端分离。后端,服务只提供接口,前端在不同的设备上以不同的方式展示。

在这样的架构下,我们的性能测试也划分为后端性能和前端性能。

后端性能其实就是接口性能。我们更多的时候不再设计模拟用户场景,而是针对单个或一组关联接口进行性能测试,这其实一定程度降低了测试的难度。

其实,不管是否为前后端分离的架构,大多时候他们走的都是HTTP协议。如果是前后端不分离,当你发送一个请求时,它会返回一堆数据:HTML、JS、CSS、图片、音视频...等,如果是前后端分离的架构,那么后端API返回的数据就单纯的多了,一般为JSON格式的数据。

显然只做后端性能是不够的,当用户看到一个页面时,不单单只有后端返回的接口数据。

这是我在访问一个页面时候得到的所有数据。在你的后端服务没有达到最大并发的前提下,那么影响用户体验的就两方面,一个是请求的个数,另一个是请求的文件大小。

这其实很好理解,你在群里来喊了一声,请大家吃饭,结果稀稀拉拉来了100多人,从前一天晚上喝到第二下午,你肯定受不了;而且,其中还有几个哥们特能喝,“一直喝”就是不倒,你是不是更受不了了。 如果只来了三、五个好友,大家随意小酌几杯各自回家,不是很好!?

所以,减少请求的个数,比如有些JS文件可以做合并;减少请求的大小,比如,有些图片做压缩处理。做好这两点,自然用户体验就会好很多,前端性能其实不需要通过“并发”来测试的。

上图为性能一款App使用的性能指标,这里的侧重点在于App拿到接口数据之后如何更快的把页面渲染出来,以及在渲染的过程中对硬件资源的消耗情况,还有用户在不同页面的切换的流畅度。

谁让手机硬件一直跟不上App的需求,所以,我们才需要关心App对移动设备的CPU、内存、FPS、耗电、流量的使用情况。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/838762.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

visio,word添加缺少字体,仿宋_GB2312、楷体_GB2312、方正小标宋简体等字体下载

一. 内容简介 visio,word添加缺少字体,仿宋_GB2312、楷体_GB2312、方正小标宋简体等字体下载 二. 软件环境 2.1 visio 三.主要流程 3.1 下载字体 http://www.downza.cn/ 微软官方给的链接好多字体没有,其他好多字体网站,就是给你看个样式&#xff…

JMeter(二十四)、使用吞吐量控制器实现不同的用户操纵不同的业务

一、需求 需求:博客系统,模拟用户真实行为,80%的用户阅读文章,20%的用户创建文章,创建文章的用户随机的删除或者修改文章。 二、脚本实现 80%的用户查看文章 20%用户创建文章 根据post_id是否能整除2,决…

在线课堂,视频点播,springboo+vue

springbootvue三端(管理后台,教师端,用户端)端可提供源码,可远程安装,需要的加微信: 体验地址:http://edu.dgrxs.com/ 用户端: 管理端: 教师端:

IDEA中怎么使用git下载项目到本地,通过URL克隆项目(giteegithub)

点击 新建>来自版本控制的项目 点击后会弹出这样一个窗口 通过URL拉取项目代码 打开你要下载的项目仓库 克隆>复制 gitee github也是一样的 返回IDEA 将刚刚复制的URL粘贴进去选择合适的位置点击克隆 下载完成

三星进军机器人市场?特斯拉首款人形机器人“擎天柱”明年上市

根据报道,三星电子正在积极研究进军机器人市场的战略。此战略由三星电子的Device eXperience(DX)部门的专业企划小组制定。据可靠消息透露,该企划小组已着手制定相关计划,以推动公司在机器人市场的发展。 根据外媒报道…

危大工程智慧工地源码,微服务+Java+Spring Cloud +UniApp +MySql 物联网、人工智能、视频AI分析

一套智慧工地管理平台源码,PC端移动APP端可视货数据管理端源码 智慧工地可视化系统利用物联网、人工智能、云计算、大数据、移动互联网等新一代信息技术,通过工地中台、三维建模服务、视频AI分析服务等技术支撑,实现智慧工地高精度动态仿真&a…

【docker】docker私有仓库

目录 一、说明二、私有仓库搭建三、上传镜像到私有仓库四、从私有仓库拉取镜像 一、说明 1.docker官方的docker hub(https://hub.docker.com)是一个用于管理公共镜像的仓库,可以从上面拉取镜像到本地,也可以把自己的镜像推送上去 2.若服务器无法访问互联…

牵着她——表白不成功算我输(Python实现)

目录 1 牵着她的手一直走下去 2 一首小情诗送给甜甜的她 3 历史总结的哲学想法 4 表白不成功算我输(Python代码) 1 牵着她的手一直走下去 今天牵着她的手,她很贴心。一起并肩赏樱花🌸。骑着快车,清风抚摸着我俩的…

消息队列项目(2)

我们使用 SQLite 来进行对 Exchange, Queue, Binding 的硬盘保存 对 Message 就保存在硬盘的文本中 SQLite 封装 这里是在 application.yaml 中来引进对 SQLite 的封装 spring:datasource:url: jdbc:sqlite:./data/meta.dbusername:password:driver-class-name: org.sqlite.…

MySQL索引3——Explain关键字和索引优化(SQL提示、索引失效、索引使用规则)

目录 Explain关键字 索引性能分析 Id ——select的查询序列号 Select_type——select查询的类型 Table——表名称 Type——select的连接类型 Possible_key ——显示可能应用在这张表的索引 Key——实际用到的索引 Key_len——实际索引使用到的字节数 Ref ——索引命…

安捷伦54642D混合信号示波器

安捷伦54642D混合信号示波器 附加功能: 带宽:500兆赫(131---4587---6435) 通道:2个模拟和16个数字 采样速率:2Gs/s 记录长度:8分钟 获得专利的高清显示系统 灵活触发,包括CAN、I2C、LIN、SPI和USB 接口总线上的深层存储器传输 强大、灵活的触…

嵌入式笔试面试刷题(day5 IIC详解)

文章目录 前言一、IIC需要几根线分别是什么线二、IIC优势三、IIC可以挂载多少个从设备,主设备1.从设备数量2.主设备数量 四、IIC是全双工还是半双工五、SDA和SCL为什么配置为上拉开漏输出模式1.为什么要配置为开漏输出不能是推挽输出a.实现线与功能b.保护设备不会被…

XXL-JOB执行器集群及分片功能

系统架构图 XXL-JOB职责划分 准备工作 1.下载代码 https://gitee.com/xuxueli0323/xxl-job/tree/2.3.0/ 2.将xxl-job sql执行 3.修改xxl-job-admin数据库链接及账号密码 4.创建日志目录修改日志文件指定输出目录 5.启动项目后访问xxl-job-admin http://localhost:8080/xxl-…

GD32F103*固件库移植μCOS-Ⅲ详细教程与解析(最终版本已上传,可下载)

GD32F103*固件库移植μCOS-Ⅲ详细教程与解析(最终版本已上传,可下载) GD32F103*移植μCOS-Ⅲ详细教程与解析,欢迎指正 文章目录 GD32F103*固件库移植μCOS-Ⅲ详细教程与解析(最终版本已上传,可下载&#x…

GitHub上删除项目后,IDEA分享项目到GitHub提示Remote is already on GitHub

文章目录 一、错误信息二、解决方法1.删除GitHub上的项目2.找到项目里的.git隐藏文件3.找到config文件4.打开config文件,删除[remote "git-test"]及下面两行内容5.继续使用IDEA分享项目到GitHub即可 一、错误信息 二、解决方法 1.删除GitHub上的项目 2.…

亿邦智库天猫:2023年中国家电产业带白皮书(附下载)

关于报告的所有内容,公众【营销人星球】获取下载查看 核心观点 中国家电产业市场始于上个世纪80年代,经过近四十年的发展,中国家电产业经历了以产能为主导的“供给驱动〞 阶段、线下网点为主导的“溪道驱动”阶段,现已全面进入以…

Windows批处理基础

一、【echo】显示文本内容 echo | Microsoft Learnhttps://learn.microsoft.com/zh-cn/windows-server/administration/windows-commands/echo 显示消息或者打开或关闭命令回显功能。 如果不结合任何参数使用,echo 会显示当前回显设置。 1.1、echo显示文本常用命…

【GEMM预备工作】行主序和列主序矩阵的内存中的连续性,解决理解问题

在内存存储中,默认矩阵是按照行优先储存的,即矩阵的每一列在内存中是连续的。行优先矩阵储存中行数据是不连续的。 而对于列主序的矩阵,是按照列优先储存的,即矩阵的每一行在内存中是连续的。列优先矩阵储存中列数据是不连续的&am…

过滤器的使用和编码过滤器案例

过滤器的使用和编码过滤器案例 案例:设置UTF-8编码

Python - 【socket】 服务端Server异常重启处理简单示例Demo(二)

一. 前言 当socket服务端通信出现异常时,我们需要做重启程序,可根据具体场景做出选择 二. 示例代码 1. 重启服务 import socket import time import sys import tracebackHOST 127.0.0.1 # 服务器IP地址 PORT 8080 # 服务器端口号 BACKLOG 5 #…