基于用户体验的性能测试:模拟个别的用户延迟(续)

本周免费下载杂志:《保健与生活》共计12本,请点击下行红色文字链接获取下载地址杂志推荐《保健与生活》3.       在TestStudio中生成时间延迟使用Rational TestStudio的VuC语言,有很多方法可以生成时间延迟。对于如何使用Think_avg及相关的命令和参数来实现,Rational的文档和培训资料已经做了详细的说明,这里不做深入讨论,只做简要介绍。这个方法只有在Think_avg命令不在计时器(Timer)里...

基于用户体验的性能测试:模拟个别的用户延迟(续)

本周免费下载杂志:《保健与生活》共计12本,请点击下行红色文字链接获取下载地址

杂志推荐《保健与生活》

3.       在TestStudio中生成时间延迟

使用Rational TestStudio的VuC语言,有很多方法可以生成时间延迟。对于如何使用Think_avg及相关的命令和参数来实现,Rational的文档和培训资料已经做了详细的说明,这里不做深入讨论,只做简要介绍。这个方法只有在Think_avg命令不在计时器(Timer)里面或附近时才有效。我发现Think_avg命令更容易代表客户端的处理过程,但对用户模型来说并不合适。关于计时器和客户端处理时间模型将在后续的文章中详细讨论。

当脚本中的用户延迟不包含在计数器中的时候使用delay命令。下面是使用delay命令创建静态值以及均匀、负指数、正态分布以实现用户延迟的讨论。

如果已经明确某些活动消耗了所有用户8秒的操作时间(很少,但有可能),可用以下命令:

delay(8000);

括号中的数值是静态延迟值,以毫秒为单位。此命令的语法是delay(value);,静态延迟一般只用在精确模型中。

如果确定用户在网站上执行活动的时间在6到12秒之间,那么均匀分布能准确地代表实际用户。命令如下:

delay(uniform(6000,12000));

在这个例子中,6000是最小值而12000是最大值,以毫秒为单位。此命令的语法是delay(uniform(min_value, max_value))。

如果确定用户在网站上活动的时间在9到15秒之间,但大部分用户接近9秒而不是15秒,同时没有用户少于9秒,这时使用负指数分布将最准确。典型的例子比方是只有当9秒的短片播放完后,下一步的按钮才会显示。命令如下:

delay(negexp(9000,15000));

在这个例子中,9000是最小值而15000是最大值,以毫秒为单位。此命令的语法是delay(negexp(min_value, max_value))。

在VuC函数中并没有创建正态分布的延迟命令。为此,我们用下列的函数以及delay命令的组合构成了正态分布。注意,normdist函数在每个脚本中必须直接放在#include命令下面。

int func normdist(min, max, stdev) /* specifies input values
for normdist function */

/* min: Minimum value; max: Maximum value;
stdev: degree of deviation */
int min, max, stdev;
{

/* declare range, iterate and result as integers -VuC
does not support floating point math */
int range, iterate, result;

/* range of possible values is the difference between the
max and min values */
range = max -min;

/* this number of iterations ensures the proper shape of
the resulting curve */
iterate = range / stdev;

/* integers are not automatically initialized to 0
upon declaration */
result = 0;

/* compensation for integer vs. floating point math */
stdev += 1;
for (c = iterate; c != 0; c--) /* loop through iterations */
result += (uniform (1, 100) * stdev) / 100;

/* calculate and tally result */
return result + min; /* send final result back */
}

将这个函数以0毫秒为最小值,25000毫秒为最大值,3200毫秒为标准差,执行1000次产生的正态分布如图7所示。需要注意的是,这里使用了与理想正态曲线相同的参数,只是把单位由秒替换成毫秒。大家可以看到,这个曲线图与图5的理想正态分布几乎是一样的。

基于用户体验的性能测试:模拟个别的用户延迟(续)

图7 用normdist函数生成的正态分布

delay函数在正态分布中使用频率最高。可用以下命令来模拟一个10秒到35秒之间,标准差为3.2秒,呈正态分布的用户延迟(对于上面的例子而言,只是将时间右移了10秒):

delay(normdist(10000,25000,3200));

这里10000是最小值而25000是最大值,3200是标准差,均以毫秒为单位。此命令的语法为:delay(normdist(min_value, max_value, std_deviation))。记住,如果脚本里面没有normdist函数的代码将会报错。

4.       Now You Try IT

为了证明这些概念的简单和有效,我建议大家跟着下面的练习一起做,前提是大家已经知道如何录制和回放VU脚本,以及如何在录制过程中插入timer。

4.1.      确定用户延迟和分布情况的练习

选择一个完全静态的网站,因为每次都变化的网站只会妨碍学习过程。接着确定一个导航的路径,比如在onblestat.com网站的首页上,点击About Us,然后点击Essentials,最后点击Heritage。首先在记事本上记下你认为每个页面可能的用户分布和延迟时间,然后找一些同事根据纸上的指示进行操作,并记录下他们在这些页面的停留时间。看看实际的时间与分布是否接近于记事本上的记录。

4.2.      在VuC的练习中模拟用户延迟和分布情况

在这个网站的不同测试时间,我用尽了4个方法来确定用户延迟和分布情况。在所有的案例中,根据正态分布曲线获得不同的时间值。出于对于这个例子的考虑,我们假设并非总是如此,这样你才能看到如何使用内置的C函数和我之前介绍的新的normdist函数来产生时间延迟。

我重申一点,这个例子中的延迟和分布并不能很好地代表实际网站交互。我会在这篇文章地讨论中创建练习来论证所有的主题。

首先基于一个静态网站录制一个简单的VU脚本(我用noblestat.com来录制)。录制时用timer将每个页面包括起来。(你也可以用timer block,但录制出来的原始脚本有点差别,我会在第5章详细介绍timer block)。录制3个页面,Home Page、Page1、Page2。

录制完成之后用1个虚拟用户回放一下,确保没有修改之前的脚本回放成功。然后再用Robot打开脚本并找到第一个stop_time命令。这部分的脚本如下:

http_header_recv ["RDN_on_~233"] 304; /* Not Modified */
http_nrecv ["RDN_on_~234"] 100 %% ; /* 238 bytes -From Cache */
stop_time ["Home Page"];
start_time ["Page1"];
set Think_avg = 12342;
/* Keep-Alive request over connection www_noblestar_com */
http_request ["RDN_on_~235"]

这部分代码停止了计时器对加载主页的时间统计,并开始了对加载Page1的计时器统计,再等待了差不多12秒后才开始对Page1的下载。实际上,你并不想将12秒的延迟时间也算在计时器里面的,还有并不希望12秒是静态值,而是一个6秒到18秒延迟范围的正态分布。你可以通过删除或注释掉start_time命令后的set Think_avg这一行,同时在stop_time和start_time命令之间加入delay(uniform(6000,18000))来实现。这段代码显示如下:

http_header_recv ["RDN_on_~233"] 304; /* Not Modified */
http_nrecv ["RDN_on_~234"] 100 %% ; /* 238 bytes -From Cache */
stop_time ["Home Page"];
delay(uniform(6000,18000)); /* added to replace Think_avg below */
start_time ["Page1"];
/* set Think_avg = 12342; -replaced by delay above*/
/* Keep-Alive request over connection www_noblestar_com */
http_request ["RDN_on_~235"]

现在这段代码将统计主页和Page1的真正加载时间,等到用户阅读完主页之后才访问Page1页面,并且等待时间是一个6到18秒正态分布下的随机时间。

找到Page1的stop_time命令,原始代码如下:

http_header_recv ["RDN_on_~242"] 200; /* OK */
http_nrecv ["RDN_on_~243"] 100 %% ; /* 9997 bytes */
stop_time ["Page1"];
start_time ["Page2"];
set Think_avg = 8536;
set Server_connection = www_noblestar_com_1;
/* Keep-Alive request over connection www_noblestar_com_1 */
http_request ["RDN_on_~244"]

和上面一样,这段脚本停止了Page1的计时器,开始了Page2的计时器,并延迟了8.5秒左右的时间。这里,你希望把8秒的静态延迟改为最小值6秒、最大值14秒、标准差2秒的正态分布延迟。如果你没有计算延迟范围标准差的方法,那么将最大延迟时间减去最小延迟时间再乘以25%是一个比较精确的、可以接受的方式。

将normdist函数拷贝到脚本中#include命令的下面,代码如下:

#include
int func normdist(min, max, stdev)
int min, max, stdev; // min: Minimum value; max: Maximum value;
stdev: degree of deviation allowed
{
int range, iterate, result;
range = max ? min;
iterate = range / stdev;
result = 0;
stdev += 1;
for (c = iterate; c != 0; c--)
result += (uniform (1, 100) * stdev) / 100;
return result + min;
}
{
push Http_control = HTTP_PARTIAL_OK | HTTP_CACHE_OK | HTTP_REDIRECT_OK;

然后删除或注释掉start_time命令下面的set Think_avg这一行,并在stop_time和start_time命令之间添加delay(normdist(6000,14000,2000))。这段代码如下:

http_header_recv ["RDN_on_~242"] 200; /* OK */
http_nrecv ["RDN_on_~243"] 100 %% ; /* 9997 bytes */
stop_time ["Page1"];
delay(normdist(6000, 14000, 2000)); /* added to replace Think_avg below */
start_time ["Page2"];
/* set Think_avg = 8536; -replaced by delay above*/
set Server_connection = www_noblestar_com_1;
/* Keep-Alive request over connection www_noblestar_com_1 */
http_request ["RDN_on_~244"]

再次强调,没有normdist函数的话脚本执行将会出错。现在这段代码也能正确的统计Page1、Page2的加载时间了,并且在用户阅读Page1之时有一个随机的正态分布时间。如果你愿意的话,可以检查一下全部修改后的脚本。

(未完待续)

版权声明:基于分享的精神,为了有更多的测试同行能从中受益,本文可以被转载。请在转载时保留此版权声明,并保证文章的完整性,但不得用于任何商业用途或其他以盈利为目的的用途。
基于用户体验的性能测试:模拟个别的用户延迟(续)
基于用户体验的性能测试:模拟个别的用户延迟(续)原文名称:User Experience, Not Metrics
基于用户体验的性能测试:模拟个别的用户延迟(续)原文作者:Scott Barber
基于用户体验的性能测试:模拟个别的用户延迟(续)原文出处:http://www.perftestplus.com/resources/UENM2.pdf
基于用户体验的性能测试:模拟个别的用户延迟(续)
基于用户体验的性能测试:模拟个别的用户延迟(续)译文名称:基于用户体验的性能测试
基于用户体验的性能测试:模拟个别的用户延迟(续)翻译:pent
基于用户体验的性能测试:模拟个别的用户延迟(续)译文地址:http://www.cnblogs.com/pent/archive/2007/07/01/802117.html

基于用户体验的性能测试:模拟个别的用户延迟(续)

猜你喜欢

  1. 《蔬菜,这样吃最健康》

  2. 男生追女生追到一半为什么不追了?

  3. 算命先生是怎么帮别人算命的?

  4. 治愈系书籍推荐,让寒冬增添温暖

基于用户体验的性能测试:模拟个别的用户延迟(续)

原创文章,作者:交互精选,如若转载,请注明出处:https://www.iamue.com/35018/

(0)
交互精选交互精选
上一篇 2018-02-01
下一篇 2018-02-01

相关推荐

  • 设计中的交互设计——什么是交互设计

    上一篇我们探讨了设计的本质,结论是设计的本质是解决问题,满足人们的需要。有的朋友可能会问:工程学也是解决问题,比如造一座桥,就解决了一条河两岸的交通问题。那么设计和工程学有什么区别呢?这里我想补充一点:设计是漂亮得解决问题,即设计除了需要考虑如何为人们服务,还需要考虑以一种美观的、令人赏心悦目的方式来服务。因此,“漂亮”这个因素,也很必要。既然交互设计是设计学科里的一个分类,那么交互设计一定首先满足设计的本质:漂亮得解决问题。下面我们来...

    2018-03-13
  • 《用户体验可视化指南》视频讲书(4)

    这是《用户体验可视化指南》书中第一章的最后一个视频了。继续上个视频继续介绍几种共线图,这次横向比较各种共线图的差异,使用它们的原则和好处。点击视频观看(大约14分钟,推荐室内安静、有wifi环境下播放)兰静同学听后分享这节内容是第一章的精华,一定一定一定要边听边看书本,最好多看几遍。主要分为2个部分:在这节视频中,结合书本第3个大模块中的内容,详细讲解了这5类常见共线图的差异和各自的特色。闭上眼睛想一想,要是还想不起来服务蓝图、体验地图...

    2018-04-07
  • UED中国最美民宿大奖十强榜单揭晓

    你的内心是否有一种渴望,在纷杂忙乱的都市生活之后,去放松身心,亲近自然?你会向往自由的空气与水,向往与有趣的人们相遇,你会需要一个有温度的空间,让你做回真正的自己。从山间居所到林中小屋,从海边美宿到都市一隅,最美民宿,它们的美只为打动你。它们或许承载着美丽的风景,或许被美好的人们所赋予的生活填满,又或者发生着许多奇妙的故事;它们也许出自专业的设计师之手,又或许是来自对生活有理想的人们坚韧而温柔的初心;它们在江南、在大理、在北京........

    2018-02-01
  • 【优秀作业展示】交互设计基础(三)

    《交互设计基础》是学习交互设计的重要课程,在大三上学期开课。任课教师是工业设计系的华梅立老师,通过老师的认真指导和对该课程的学习,大家对交互设计有了进一步的了解,在老师的引导下,同学们对高铁取订票界面设计进行了深入的分析和再设计,并选取了感兴趣的小方向进一步拓展。接下来就看看学完本课程后同学们的优秀作业。优秀学生作业第三期陆晗产品设计15201高铁购票界面设计搜索目的地如果没有没有您想要的目的地可以选择搜索功能选择日期如果选择三天以后出...

    2018-05-08
  • 用户体验:从幽灵按钮到空心元素,它们一直在流行

    幽灵按钮和类似的空心元素,在诸多的设计趋势当中,还是显得颇为单薄的。它们的转化率看起来不够突出,和其他的固定形体相比,吸引力也一般,它们的视觉效果主要取决于周围的对比度和环境本身,一句话,缺点很多。即便如此,它们并没有很快消失,相反依然活跃在设计的一线。它们能够如此,很大程度上是因为我们对于这些元素已经习以为常了。它们最初出现在 UI 界面上的时候,用户所感到的迷惑和混乱,已经逐步消失,我们都知道,它是一个按钮。现在的幽灵按钮和类似的元...

    2018-05-04
  • 【交互设计】寒假专业设计课程计划

    以清华力量武装自己寒假班开课时间:2018年1月27日 —2月8日报到时间:1月26日 (全天报到)寒假课程不局限于清华美院考研,寒假基础班以专业为导向,报考全国其他院校的同学也可参加。学习最高要求和最高水平的课程,全国名校任你选!说明: 交互设计的考试内容和实际工作基本类似,非考研类同学也可以报名学习,想转型学习或从事交互设计行业的其他专业同学也可报名。师资介绍:老师一:L老师本科中央美术学院数码媒体专业,清美交叉学科硕士考研成绩:初...

    2018-01-30
  • 一些交互设计原则 | 蓝鲸

    从用户角度来说,交互设计是一种如何让产品更易用,让用户更愉悦的产品设计。它致力于了解目标用户和他们的期望,了解用户在同产品交互时彼此的行为,了解用户心理和行为特点。以下就介绍一下在交互设计中一些通用的原则。1、前馈/反馈:前馈就是操作之前要给的信息,提示用户点击之后会出现什么、点击之后结果是什么。前馈适用于新产品(还不知道怎么用的产品)。反馈就是用户操作结束后给的信息提示。如:您的操作过于频繁,请稍后再试。2、状态可见原则:比如进度条,...

    2018-04-24
  • AR与用户体验简析

    说道AR想必大家都不陌生,所谓AR就是增强现实技术,现在普遍的应用是在移动端,通过相机拍摄现实场景,并通过AR技术在屏幕上生成想要的图案,使能够栩栩如生的浮现在屏幕上,好似实物就在眼前一样。首先我们值得注意的是个人电脑和智能手机是所有人都想要拥有和使用的产品,一旦产品价格进入消费者能够承受的价位,爆发是完全没有问题的;其次,两者的核心技术其实都集中在CPU、显示屏等电子元件相关领域,这些产品的发展基本上都遵循摩尔定律,即18-24月性能...

    2018-02-27
  • 人工智能对交互设计的影响

    人工智能(Artificial Intelligence),英文缩写为AI。它是研究、开发用于模拟、延伸和扩展人的智能的理论、方法、技术及应用系统的一门新的技术科学。人工智能的本质,是数据+算法。人工智能的概念其实已经提出来了60年,中间也经历过很多次虚假的黎明期,为什么说现在人工智能时代真正的黎明呢?这里面有三个原因:首先是大数据和云计算。在数据上,移动互联网的发展,已经把我们生活中的各种信息不断数字化,这些数据储存在云上,就可以被利...

    2018-03-28
  • 交互设计:谈谈那些极具争议的设计方法

    作者:中大yzh全文共 2556 字,阅读需要 6 分钟———— / BEGIN / ————交互设计是一门有关设计学、用户心理学、图形学和计算机理论的综合型新兴领域,由于其及其复杂的学科交叉性,以及在不同的情景下,对同一类组件的要求经常会有所不同,导致目前在该领域内有时会出现一些看似正确其实极富争议的设计方法。在这里,我们就讨论一下这些具有争议的设计方法。争议方法1:在线填表时应该标注“可选填”的填表项在线填表时,需要在表格上面注明“...

    2018-02-01