• 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

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

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          • 1.接口测试的介绍1.1接口测试的定义接口测试是测试系统组件间接口的一种测试。接口测试主要用于检测外部系统与系统之间以及内部各个子系统之间的交互点。测试的重点是要检查数据的交换,传递和控制管理过程,以及系统间的相互逻辑依赖关系等。1.2接口的类型①程序内部的接口②系统对外的接口1.3接口的分类①webService接口,走soap协议通过http传输,请求报文和返回报文都是xml格式的,在测试的时候用通过工具才能进行调用、测试。②http api接口,走http协议,通过路径来区分调用的方法,请求报文都是key-value形式的,返回报文一般都是json串,有get和post等方法,这也是最常...
            0 0 1422
            分享
          •   测试左移  对于需求,代码,质量,效率,《代码大全》很早就从软件工程实践角度说明了一个bug产生的不同阶段,修复一个bug的成本从需求阶段,设计阶段,测试阶段有着天壤差别。不仅从成本上,从修复难度,引入新问题的可能性,沟通成本,团队状态也会有很大的影响。由于大部分bug都是在写代码的阶段就引入的,测试左移本质上可以尽早的发现,预防问题,使用必要的测试手段在软件开发周期的早些阶段发现问题。测试越是集中到后期,尤其是集成测试时进行功能测试,产品的复杂度就越高,出现问题后,越难以定位bug,修复时间花费越长。所以,bug越早被发现,越节约成本。这也是测试左移被普遍接受的原因。  测试左移的手段:...
            0 0 824
            分享
          •   最近发现微软出了一个用于Web UI自动化的python库——Playwright,很感兴趣,所以做了一些研究,和大家分享一下。  说到UI自动化,可能大家和我一样,主要是用Selenium。毕竟Selenium可是UI自动化方面的王者。而且Selenium上手很快,使用者广泛,社区活跃,遇到问题随时可以找到一大堆相关的网页给你提供帮助。  那既然这样,为什么新出的这个Playwright还能掀起一阵热潮呢?  一方面这是IT技术领域的一个趋势,从业人需要时刻关注业内的新技术,新方向,不断提升自己的能力,或者给公司,团队带来新的idea,这样才能不断在职业生涯中稳步向前。  另一方面,Se...
            12 12 4117
            分享
          •   如果你恰好刚刚进入一家新公司,领导一上来就让你开展自动化测试,作为一名初出茅庐的测试新人,除了手足无措,你只能默默慨叹自己能力尚欠,眼前只会出现一个又一个无从下手的问题:  作为手工测试,如何营造机会和环境解决我们自身提升的瓶颈?(好慌!以为自己手工测试已经登峰造极,不料我慌了……)  如何在最短的时间内能够跨入自动化测试人才的队伍?(我就想想,万一实现了呢……)  如何落地自动化测试呢?(领导一说话,哭泣哭泣怕了怕了……)  又如何在后续继续提升发展呢?(老大不小了,不能一事无成了……)  面对以上种种问题,我们究竟该如何面对?又该如何解决?  你可能会这样做:  1.买了好几本编程语言...
            0 0 798
            分享
          •   随着信息化技术的不断发展,软件安全成了软件行业的重大挑战,因此安全测试也成为了测试人员必备的技能之一。沐沐在安全测试过程中较为常见的就是接口越权漏洞,在尝试过多种工具进行越权漏洞测试后,最终找到了个人认为最便捷最有效率的方式,即使用Burp Suite工具的Auth Analyzer插件进行接口越权批量测试;并且将接口越权测试作为常态化测试内容,不断提升软件安全测试的深度和广度。下文将对接口越权和Burpsuite工具进行简介,重点说明Auth Analyzer插件进行接口越权批量测试的步骤。  一、接口越权  越权访问(Broken Access Control,简称 BAC)是 Web...
            0 0 1552
            分享
      • 51testing软件测试圈微信