性能测试浅谈

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

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

  • 数据传输时间

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

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

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

  • 客户端处理时间

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

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

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

  • 系统处理时间

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

~~~~
为什么要写这么一篇文章,因为有一个同学说,他们老大让他用JMeter测试系统的性能,还要计算页面完全加载完成的时间,我想你读了这篇文章之后应该就不会再提这样的“要求”了。

原文地址:https://www.cnblogs.com/fnng/p/10982665.html

时间: 2024-08-30 13:22:36

性能测试浅谈的相关文章

【转载】性能测试浅谈

本文主要针对WEB系统的性能测试.不涉及具体的执行操作,只是本人对性能测试的一点理解和认识. 性能测试的目的,简单说其实就是为了获取待测系统的响应时间.吞吐量.稳定性.容量等信息.而发现一些具体的性能相关的缺陷(如内存溢出.并发处理等问题),我认为只是一种附加结果.从更高的层次来说,性能测试最想发现的,是瓶颈.如何能得到所需要的信息,就需要从多方面进行测试. 性能测试的内容 性能测试种类的划分与定义这里就不说了,各有各的说法,比如性能测试.负载测试.压力测试这三个词,在网上能找到N个版本的定义,

<转>性能测试浅谈

本文主要针对WEB系统的性能测试.不涉及具体的执行操作,只是本人对性能测试的一点理解和认识. 性能测试的目的,简单说其实就是为了获取待测系统的响应时间.吞吐量.稳定性.容量等信息.而发现一些具体的性能相关的缺陷(如内存溢出.并发处理等问题),我认为只是一种附加结果.从更高的层次来说,性能测试最想发现的,是瓶颈.如何能得到所需要的信息,就需要从多方面进行测试. 性能测试的内容 性能测试种类的划分与定义这里就不说了,各有各的说法,比如性能测试.负载测试.压力测试这三个词,在网上能找到N个版本的定义,

Android移动客户端性能测试浅谈——电量

本文由作者张迎贞授权网易云社区发布. APP性能测试除了需要监控PCU.内存占用.流量等,还需要获取APP的电量数据,测试在可接受范围内,避免APP出现过度消耗电量的现象.手机有很多硬件模块:CPU,蓝牙,GPS,显示屏,Wifi,射频(Cellular Radio)等,在手机使用过程中,这些硬件模块可能处于不同的状态,譬如WIFI打开或关闭,屏幕是亮还是暗,CPU运行或休眠. 硬件模块在不同的状态下的耗电量是不同的.Android在进行电量统计时,并不是采用直接记录电流消耗量的方式,而是跟踪硬

性能测试指标浅谈

出入性能测试,大部分人都是从录制脚本调通开始.谁知这是漫漫长征第一步而已,场景设定完成以后,需要加监控指标时,这一堆指标都是干什么使的?下面来浅谈下这些指标吧. 吞吐量 如果是从统计上讲就是在一次性能测试过程中,网络上传输的数据总量.举个例子就像手机一直用流量上网,那本月流量统计就是本月的吞吐量. 一次测试过程中传输了多少数据对于一般的性能测试来说,往往意义不太大.除非有流量限制的需求,对过程的流量总数限定在一定的范围内时候,会关注这个指标. 人们口头上甚至有很多软件实现中所说的吞吐量其实是吞吐

浅谈软件性能测试中关键指标的监控与分析

浅谈软件性能测试中关键指标的监控与分析 一.软件性能测试需要监控哪些关键指标? 软件性能测试的目的主要有以下三点: Ø  评价系统当前性能,判断系统是否满足预期的性能需求. Ø  寻找软件系统可能存在的性能问题,定位性能瓶颈并解决问题. Ø  判定软件系统的性能表现,预见系统负载压力承受力,在应用部署之前,评估系统性能. 而对于用户来说,则最关注的是当前系统: Ø  是否满足上线性能要求? Ø  系统极限承载如何? Ø  系统稳定性如何? 因此,针对以上性能测试的目的以及用户的关注点,要达到以上

浅谈自动化测试流程

浅谈AST(自动化测试)流程,欢迎大家多多指点,多提宝贵意见. AST阶段一:需求收集——分析自动化测试需求 1.举行启动会议,对SUT(被测试的系统)进行总体描述 2.SUT的要求是可测试和可自动化的 3.评估哪些测试可以自动化 4.分析当前生命周期中SUT使用的工具和复用现有的AST工具 5.对AST和测试中需要的工具进行评估,并提出建议 6.确定和讨论测试环境,包括测试环境的采购和安排,列出测试环境的概要 7.与开发相关人员一起走查一遍AST测试需求,最后达成一致意见 8.给出可以自动化的

并发浅谈-锁和Token的应用

并发 即在同一时刻内有多个完成同一任务的进程或线程在同时运行.并发一般发生在大流量集中访问如抢购或秒杀等业务场景中,它所带来的影响主要表现在以下两个方面:1:造成系统的负载压力过大.比如说mysql天生在处理大并发时表现的异常吃力,并发大时经常可以造成数据库挂掉.2:造成业务资源的竞争出现.比如说兑换一个激活码,并发下可能会出现两个人同时兑换到的同一个激活码. 从开发的经验来看,一般开发者在写程序逻辑时,绝大多数的情况下是没有考虑并发问题的:这其中有两个方面,一是与业务有关,二是与经验有关:其中

iOS应用架构浅谈

缘由 从事iOS工作一年多了,主要从事QQ钱包SDK开发和财付通app维护,随着对业务的慢慢熟悉,最近在思考这两款应用架构设计的思想,刚好昨天在微信里看了一篇iOS大牛对终端应用架构的分享,乘热打铁,下面浅谈下我对ios应用架构设计的理解,写的不好或不对的地方,欢迎大家拍砖,我们一起来探讨. 假如问你一个iOS or Android app的架构,你会从哪些方面来说呢? 不要急着给出你的答案,可以先在你的脑子里思考3分钟,再看下面我要讲的内容. 其实对于iOS客户端应用的架构来说,复杂度不亚于服

浅谈APP测试经验

近年来,随着智能手机兴起,很多App软件不断涌起.那今天我浅谈一下本人在工作如何测试App软件与经验. 一.App三种开发模式介绍(测试App时,必须要先了解您测试的App是用什么模式开发的) 1.Native APP 2.Web APP 3.Hybrid AP 对App开发模式不清楚的人.请自行百度. 二.通用App测试点(这些点必须测试) 1. 使用App时,手机耗电情况: 2 .App占用手机内存情况: 3 .App安装包的大小: 4. 使用App时,流量消耗情况: 5 .App在WiFi