• 0
  • 0
分享

有一段时间没关注性能测试,但时常还能看到有小伙伴讨论性能,对于一些概念的理解很想深入讨论,但三言两语说不清,于是,还是花点时间写写吧!

今天有一个同学问:“一个小的系统,用户并发数为20个,那事务平均响应时间大概在什么范围内?”怕麻烦直接告诉他2/5/8原则,钻牛角尖的话,需要进一步确认什么样的小系统?提供的什么类型的业务?用户行为是什么样的?用户对系统的使用频率?就算同响应时时间一样,前端通过不同展现方法,用户的感知可能完全不一样。下面就真对这个问题延伸讨论一下从用户感知的角度看软件性能测试。

2/5/8原则

2/5/8原则是上个世纪80年代某公司真对自己公司的应用做的一个调查,调查的结果就是当用户能够在2秒以内得到响应时,会感觉系统的响应很快;当用户在2-5秒之间得到响应时,会感觉系统的响应速度还可以;当用户在5-8秒以内得到响应时,会感觉系统的响应速度很慢,但是还可以接受;而当用户在超过8秒后仍然无法得到响应时,会感觉系统糟透了,或者认为系统已经失去响应,而选择离开或者发起第二次请求。

到90年代的时候英国真对零售业的网站又做了一次调查,它的调查结果是一个用户真对一个页面的响应的最长忍耐时间是4s,超过4s大量的用户会选择放弃页面的响应。

我在《性能测试知多少---响应时间》中已经对用户的响应时间做过分析;就是从用户按下键盘或鼠标按键到整个页面在浏览器中的展示的过程分程可以分三个部分:

  • 呈现时间:浏览器接收到数据,解析渲染的时间。

  • 数据传输时间:发送与接收的数据在网络中传输的时间。

  • 系统处理时间:系统真对请求的处理并返回的时间。

我们在通过测试工具做性能测试的时候,第一个时间直接去掉,第二个时间进行阉割(因为一般的性能测试在局域网中进行,所以,数据传输时间基本可忽略),唯一保留的就是系统的处理时间。

你能用2/5/8原则么?你用性能测试工具得到的2秒,真实的用户感知恐怕要远远大于这个时间吧!?

不同业务的不同用户感知

真对不同业务类型的软件,用户的容忍度也是不一样的。百度和淘宝网都有搜索功能,而且都具有海量的数据,淘宝的搜索速度要慢于百度,不考虑技术层面,百度的搜索结果是纯文字信息;而淘宝搜索的商品会有大量图片,所以用户对淘宝的响应速度要“宽容”些。

从用户的心理分析,在使用百度的时候,对结果的显示显然更迫切;而我们平时在使用淘宝时叫“逛”淘宝,所以对结果的迫切性不强。

当然,如果是相同的业务,拿百度和到谷歌比,百度搜索结果1秒,谷歌需要10秒,相信谷歌再也不会被爱了。

不同使用频率的用户感知

装操作系统绝对是个耗时的事儿,少则也需要10分钟以上,但不少用户一年半载才装一次系统,所以,用户也基本可以接受这个事儿的耗时。如果是你每天早上开机需要10分钟以上,估计大多用户就要叫苦了。

所以,在一个系统中,用户频繁使用的功能上响应很慢的话,用户将很难忍受;相反,如果使用频率很低的功能,响应很慢用户也可接受。

减少用户等待感

最早是RobertBmiller在1968年的《resopnsetimeinman-computerconversationaltransactions》报告中描述了3个层次的响应时间,

  • 0.1~0.2s:用户认为得到的是即时响应。

  • 1~5s:用户感觉到基本信息的交互是基本流畅的。用户明显注意到了延迟,感受到计算机的“工作”过程。

  • 8s以上:用户会关注对话框。需要提示信息或进度条来确认系统仍然是处于处理过程的。

PeterBickford在调查用户反应时发现:在连续27次的连续反馈后,第28次操作时,计算机让用户等待2分钟,结果半数人每8.5秒左右就离开或按下重启键,使用鼠标指针的漏斗提示的界面会把用户的等待时间延长到20秒左右,使用动画的鼠标指针漏斗提示界面则会让用户的等待时间超过1分钟,而进度条可以让用户等待到最后。

PeterBickford的调查结果被广泛用到web软件系统的性有需求的响应时间定义中。

从上面的结果发现,增加用户感知远比性能的提升更能延长用户等待,这个非常有意思。也就是说在同样的响应时间下,用户感知将非常重要。

  • 无loading:如果响应非常短暂,最好不要用loading,用户无法看清loading,反而影响体验

  • Loading:如果响应时间大于1s的话可以加loading效果,增加用户感知。

  • 进度条:如果需要更长时度测需要使用进度条来增加用户感知。

时度条+倒计时:在一些需要长时间等待的处理过程中,时度条+倒计时是个不错的选择,倒计时可以让用户预计完成时间,以便用这个空闲去处理其它业。

最快给用户看到

有时候增加loading可以增加用户等待,但他不是最好用户体验,还记得一张很大的图片是怎么显示的么?

自顶向下显示,自顶向下逐行的来显示,直到整个完整的图片

切成若干小图,得到一个小图展示一个小图,终使用户看到完整的图片。

由模糊到清晰,一张图片有规律的先抽取上面一部分像素显示,使一张图片由模糊到清晰。

分页显示:

当用户请求一批数据时,只给用户最先看到的一页的数据,翻页时再来加载展示第二页的数据。

边展示边加载:

你一定访问过花瓣网吧!滚动条永远也拖不到底部,因为屏幕的大小总是有限的,所以有可以采用边显示边处理加载。

性能测试分前端性能与后端性能,一般的性能测试更关心后端,但不管什么样的产品最终是要给用户用的。以用户感知为导向的性能测试才更有意义。


作者:虫师

原文链接:https://www.cnblogs.com/fnng/p/3297814.html

  • 【留下美好印记】
    赞赏支持
登录 后发表评论
+ 关注

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          •   前言  在做web自动化的过程中,相信用到最多的浏览器就是chrome浏览器,那么在chrome中有许多关于selenium的配置内容,这个你知道吗?  单个浏览器调试  在编写自动化用例的过程中,经常会进行调式代码,正常情况下,当我们在写完用例,执行代码就会给我们重新打开一个浏览器,然后在进行一系列的操作。如果我们的需要调式的地方比较容易做到,这个方法就很容易,那如果我们需要调试的位置需要做很多前置操作,那么就浪费我们的时间。这个时候我们就可以通过打开浏览器调试功能,然后让浏览器直接在当前的页面进行debug。  打开浏览器调试需要进行以下操作:  1.将chrome浏览器安装地址配置到...
            14 14 1939
            分享
          •   前言  在跑自动化测试中,测试过程中会用到一些测试数据,其中这些测试数据包括临时测试数据和常用到的数据,经常用到的数据,我们可以通过Excel或者yaml文件的方式进行存储,那么临时文件的呢?今天安静来介绍pytest中的一个内置函数就可以方便的帮我们解决这个问题。  tmpdir  tmpdir是属于pytest中的一个内置函数,这个函数表示的意思是在测试开始运行前创建一个临时文件目录,并在测试结束后进行删除。这个临时文件目录可以用来存放我们的测试数据。  使用方法  在测试用例后面直接写入tmpdir,需要用到创建临时文件或者临时文件夹的时候直接进行创建。import pyt...
            0 0 871
            分享
          • 软件性能测试中有一类很重要的测试——负载测试,包括并发测试和容量测试。负载测试的重要工作在于找到系统的性能拐点。在并发测试中我们不断地增加事物的用户并发数,观察系统所可以接受的并发数是否与设置的并发数保持一致,或者在增加并发数的时候观察系统的响应时间是否在可接受的范围之内(比如<3秒》)。当并发数少的时候,实际并发数与设置并发数是一致的,当系统并发数达到一定的数量后,实际并发数保持恒定,不会受到设置并发数的增加而增加了。或者系统的响应时间会超过设定的目标值。如图一所示,A即为我们找到的并发测试的拐点。图一:负载测试的拐点同样,在容量测试中,我们不断地往数据库中灌入数据,在开始数据量比较少...
            0 0 2005
            分享
          •   前言  在学习自动化或者是去面试自动化相关岗位时,难免会遇到的一个问题是:如何处理自动化请求中的登录信息?不论是在学习接口自动化还是出去面试自动化测试岗位,测试人员遇到的一个问题都是如何处理登录?  举例一个很简单的例子:  在做接口自动化测试的时候,肯定会遇到一种测试场景在进行操作的时候会提示用户进行登录或者直接返回HTTP状态码401(未授权)。  例如:我们在进行电商平台购物时,要创建订单前都会提示我们先进行登录。 因为HTTP协议是无状态的,所以在创建订单时,服务器不知道哪个用户在操作。因此,用户在创建订单时必须要先进行登录,登录成功后服务器会返回一个特定的标识,该标识用于识别用户...
            15 15 1194
            分享
          • 配置管理的定义(1)是采用技术手段和行政手段进行管理和监督的一套规范化方法;(2)对配置项的功能特性和物理特性加以标志,并将其文件化,并控制这些特性的变更;(3)报告变更进行的情况、变更实施的状态,以及验证与规定要求的一致性。配置管理的意义配置管理能够解决的问题:1)多重维护问题:解决多个用户对同一文件进行修改所引起的版本不一致问题;2)同时修改问题:解决多个用户对同一文件同时进行修改所引起的资源冲突问题;3)丢失版本或不知版本问题:即要明确保留哪个版本,销毁哪个版本。配置管理的主要内容:制定配置管理计划、配置项识别、建立配置管理系统、基线化、建立配置库、变更控制、配置状态统计、配置审计1、制...
            11 11 2082
            分享
      • 51testing软件测试圈微信