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

本周免费下载杂志:《保健与生活》共计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

相关推荐

  • 2017年设计师该如何转型?来看阿里UED掌门人的演讲!

    温馨提示,扫文章底部二维码可看相关视频。UXD(User experience designer)概念为何在当下越来越热?这个新Title对设计师意味着什么?UXD对设计师提出了怎样的新要求,设计师们又如何去转型UXD呢?在设计师转型UXD的背景下,还需要讲求专业精深吗?纯视觉设计师VD(Visual designer)又有怎样的发展路径?三位阿里巴巴UED掌门人分别从自身视角对设计师转型UXD进行了解析。汪方进:阿里巴巴BBC UED...

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

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

    2018-01-30
  • Axure8.0展开收起

    设置菜单展开收起效果,且联动箭头朝上朝下动效。收起状态:箭头朝下,内容收起。展开状态:箭头朝上,内容展开。【步骤】1)设置展开内容与箭头为两个动态面板,命名2)点击事件设在点击菜单栏,同一个事件下控制两个面板状态。内容面板:箭头面板:设置旋转效果。点击菜单栏:点击运行即可。

    2018-03-15
  • AxureUX企业及通用型网站WEB端原型模板发布

    01作品信息作品名称:AxureUX企业及通用型网站WEB端原型模板作品类型:模板类发布日期:2018-04-02最新版本:v1.0主要适用:Web端软件版本:Axure 8.0文件大小:1.5MB作品编号:TEM007作品售价:¥19.00详细介绍及演示:http://www.axureux.com/home/templateswebgp.html复制以上链接在浏览器打开或点击文章底部阅读原文,建议在电脑上查看原型演示。02作品介绍本...

    2018-04-05
  • 极致用户体验的养成

    上周五约了朋友吃晚饭,提前约的顺风车。由于堵车,司机到了办公区的北门。经过沟通,我从定位地点过去找他。四扇车窗都是开的,他坐在副驾驶,烟刚抽了三分之二,后视镜旁还有未散尽的烟雾。他回头看见了我,我朝他微笑示意。确认了眼神,我是他的乘客,他马上把烟灭了。左手在空中挥了挥,右手扭转了空调按钮,抬起头在空中胡乱吹了几口气。隔着车窗看见副驾驶有件外套,说了句“久等了”,我便从右后侧上了车。刚落座,他就急忙表现出歉意:不好意思,不知道你走过来这么...

    2018-04-25
  • 小编来告诉你交互设计是什么啦!

    什么是交互设计用户界面有两部分的设计:交互设计和视觉设计。交互设计的产出物是可交互的低保真原型,设计内容包括:信息架构、页面布局、流程跳转。1. 信息架构信息架构,是为了让用户在使用APP、软件、网页的时候,能够快速找到自己需要的信息、资料、功能,并且在使用的过程不会迷路。它有层级、有逻辑顺序、要能反映信息(功能)的重要程度和关系。信息架构的组成部分:组织系统:关注如何组织信息。比如小说,按篇幅,可以分为短篇、中篇、长篇;按年代,可以分...

    2018-04-12
  • Axure原型设计:京东官网滚动界面

    91运营社群招募中,勾搭小编微信号:yueyingzheng88入社群每周91公开课,91风暴,全员参与,实际案例实际分析问题答疑,你提问题我解答行业专场,互联网金融,电商,新媒体运营等专场各地分站交流资源及人脉共享其他的。。。。欢迎各行业互联网运营达人加入我们91运营大家庭,会运营的人都来这里了!导读:作者分享了自己制作京东官网滚动界面原型的具体操作过程,希望大家可以从中受到些启发。正文先上京东官网原图(也可以自己搜素京东官网查看)先...

    2018-03-04
  • 交互设计 | “综合类&艺术类”院校申请侧重点指南

    回复【交互】,获得专业老师一对一专业指导随着现今数字智能等高科技的发展,交互设计成为近些年众多艺术留学生的热门首选专业。但热门并不代表很多同学都对交互设计有所了解,比如,根据向汉艺咨询的学生情况分析,90% 的同学都分不清什么是到底什么是交互,只是很表面的认为交互就是各种“APP”、“UI设计”或者VR/AR。实际上,即使国外最顶级的院校,你也找不到一所专门设立“APP”的专业,“UI设计”严格上来说只能算是“平面设计”,而设立VR/A...

    2018-04-21
  • sketch 44.1+汉化插件下载

    如果你喜欢UI设计如果你喜欢高效设计如果你喜欢简洁的设计最重要的,你得有个Macbook pro !Macbook pro!Macbook pro  !不要提什么macbook air,因为你是设计师,设计师,设计师。官网地址http://www.sketchcn.com/,可免费下载体验30天。  很值得购买的软件,只需要$99为什么选择 SketchSketch 是为图标设计和界面设计而生的。它是一个有着出色 UI 的一站式应用,所...

    2018-04-22
  • 日照这家单位招人啦!提成、五险一金、带薪培训、年终奖、节日福利···

    关于我们与其说我们是一个团队,我倒觉得我们更像一个温暖的大家庭。工作上我们团结协作、互相体恤,生活上我们互相帮助、彼此鼓励,家人遇到困扰,我们会拧成一股绳共度难关,家人有喜事有收获,我们会由衷的祝贺!我们每一个人都在用真心去经营我们的置业网大家庭,所以我们无比珍惜和感恩,也希望你和我们一样将它视如珍宝……公司简介日照置业网传媒有限公司主要经营各类广告的发布代理及各项活动策划,各类网站制作管理维护与设计,目前经营包含日照置业网等6家网站,...

    2018-04-08