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

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

相关推荐

  • 交互设计之流程设计(1)

    流程设计是将信息架构转变为交互稿的重要步骤,什么是流程设计呢?简单来说,就是用户完成一项任务的步骤流程,用户是怎样一步一步的完成任务的。本文将从流程设计重要性、如何进行流程设计、流程设计与交互工作三个方面来阐述流程设计。一、流程设计的重要性流程设计对于用户体验来说非常重要,一个好的流程设计将会给用户带来非常的体验。在这里从流程设计是什么、流程设计中需要考虑的问题、优秀流程设计的好处三个方便来进行讲解。1 流程设计是什么首先理解交互设计是...

    2018-05-06
  • 语音交互中的“等待体验”研究

    文 | 叨叨来自雷锋网(leiphone-sz)的报道雷锋网按:本文来自百度人工智能交互设计院,通过实验的方式,研究了语音交互中用户对于智能音箱的“等待体验”。雷锋网编辑在不改变原意的基础上做了精编。回顾人机交互发展史,人类先后经历了基于命令行的CLI 时代,基于鼠标键盘的GUI时代,基于触摸的初级NUI时代。后面每一个阶段比前一个阶段更自然,学习成本更低,综合效率更高。进入AI时代,人工智能给机器带来三种能力:感知能力、认知能力、自然...

    2018-01-30
  • Axure从入门到精通-第0课,课程介绍

    紫豆子开始新的教程编写,讲解Axure的使用。还是希望5次课程可以把这个软件讲通。这是一款很容易上手的产品,可能有的人已经会了。我们先看看下面由Axure做的网页是不是有点跟我们见过的Axure不太一样了为什么学这个软件?入门简单,它就像一个大的画布,你可以简单的通过拖拽组建在页面中添加你要放置的内容;不像PS那么难学。可以做一些简单的动画效果;可以让一个组建旋转、移动、缩放、消失、出现等等;可以做一些简单的交互效果;例如点击一个画布中...

    2018-04-29
  • 职场趣事 | 70、80、90后同坐一个办公室,竟然是这样

    随着90后渐入职场,70后、80后、90后同坐一个办公室也越来越普遍。70后们有的正在向事业巅峰冲刺,有的甚至开始规划退休的生活;80后一边感慨青春已逝,一边拼命工作养家糊口;90后此时已经带着独有的个性和不被70、80后理解的文化杀入职场。都说三岁就会有代沟,更何况十岁?小编带你看看这三代人在生活方式、聊天话题等方面都有哪些区别↓↓↓大家对号入座看看,有没有戳中内心?(来源:中国新闻网)部落窝教育推出的原创Word、Excel、PPT...

    2018-03-13
  • 【文创•职通车】2018校园招聘信息

    序号001未而思伯文化传媒(杭州)有限公司2007 年成立至今,经历了十年的发展,从最初的单一媒介投放板块到如今的以视频内容创作,品牌营销传播为两大核心板块。十年媒体资源、渠道积累,坚持立足浙江为中心,面向江浙沪,以传统媒体+新媒体的渠道传播组合方式。(向上滑动启阅)一、 总监助理( 1 名)职位描述:1、本科以上学历,具有良好的协调沟通能力,良好的文字功底;2、完成总监交代的任务,负责项目的对接协调统筹工作;3、负责总监的工作日程安排...

    2018-03-20
  • 你们做交互设计都使用哪些权威的工具呢?

    达内UI设计,中国UID课程标准制定者工具是设计师的重要榜首,好的设计离不开好的工具,那么你交互设计都使用哪些权威的工具呢?本文为大家总结一下。哪里能学到企业需要的设计技术?2018学设计到哪里学就业更好?零基础学设计多久能学会?转行学设计学完好就业么?1月达内UI免费训练营火热报名中,全程大咖级讲师亲授,为你解析UI行业发展趋势,就业前景,帮你了解设计,轻松入门,更快一步成为设计大牛!马上阅读原文或者回复:姓名+电话+城市报名吧!好消...

    2018-01-30
  • 美国交互设计“综合类amp;艺术类”院校申请差异对比?

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

    2018-05-04
  • 在Axure中,如何用动态面板实现banner的轮播效果(附Axure教程及软件)

    axure功能太强大,动态面板可能已经搞得你头晕眼花了,更别提7.0版本的中继器了。废话不多说,还是和大家分享一下动态面板实现banner轮播的效果,对动态面板还不熟的,不妨来看看这个效果的制作过程,然后自己试着做一做,绝对增加自己的信心。就拿某宝首页banner轮播效果为例进行说明:1前期线稿图,部件准备01先画个大概的位置线框图,如下图所示,做了3张banner的轮播效果02banner位置的占位符转换为动态面板(鼠标右键,转换动态...

    2018-03-06
  • 作品集总结|本科建筑跨专业申请交互设计?Dream School还是皇艺?这可能吗?

    PS-ONE#20180504建筑背景,申请交互设计跨专业申请结果如何?本科建筑,转专业申请交互设计Master?并且Dream School还是世界第一的RCA皇家艺术学院?在经历了PS-ONE历时8个月的内部评审后她如愿以偿了吗?。。。。。。8个月后爱丁堡大学,get拉夫堡,get交互设计,是细节非常复杂的专业涉及到的知识点、设计思维,对转专业申请者来说,是很苛刻的所以拿到爱丁堡、拉夫堡这样强势院校的Offer已经是很不错的结果了但...

    2018-05-04
  • 《交互设计专题二》——华南理工大学设计学院本科教学汇报展 • 第二回

    《交互设计专题二》《交互设计专题二》课程针对智能化产品设计领域,鼓励设计背景的学生学习基本的软硬件技术,发掘产品需求,提出设计概念,开展设计研究,并亲自动手完成功能样机。经过5周的课程,7组共27名学生,完成了7个不同主题的设计和初步的功能样机实现。《交互设计专题二》只是信息与交互设计实验班的初步尝试,在国内也鲜有既有模式可供借鉴,课程内容、教学方式、设计展开过程、样机实现以及最后的课程设计汇报,都有不成熟的地方。因此,诚邀大家前来参观...

    2018-02-21