基于用户体验的性能测试:第三章 模拟个别的用户模式

发表于:2007-8-15 12:19

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:pent    来源:pent的博客

让我们来看看如何修改Name Search这段代码,以满足客户在搜索之前先看帮助这样的场景。列表1显示了满足场景的部分代码。

/*
->-> Session File Information <-<-
*/
#include <VU.h>
{
push Http_control = HTTP_PARTIAL_OK | HTTP_CACHE_OK | HTTP_REDIRECT_OK;
push Timeout_scale = 200; /* Set timeouts to 200% of maximum response time */
push Think_def = "LR";
Min_tmout = 120000; /* Set minimum Timeout_val to 2 minutes */
push Timeout_val = Min_tmout;
DP1 = datapool_open("Name_Search_Seg");
datapool_fetch(DP1);
push Think_avg = 0;
start_time ["View Search Page"];
stop_time ["View Search Page"];
start_time ["View Help"];
stop_time ["View Help"];
start_time ["View Search Results"];
stop_time ["View Search Results"];
}

列表1 查看帮助信息的Name Search脚本

那么我们如何模拟查看帮助的10%用户呢?这个简单,我们在每次脚本被调用时生成一个1~10之间的随机数字,当数字为1时将进行查看帮助的操作,否则跳过这一步。请看列表2。

->-> Session File Information <-<-
*/
#include <VU.h>
int percent; /* Declare the variable that will hold the random number */
{
push Http_control = HTTP_PARTIAL_OK | HTTP_CACHE_OK | HTTP_REDIRECT_OK;
push Timeout_scale = 200; /* Set timeouts to 200% of maximum response time */
push Think_def = "LR";
Min_tmout = 120000; /* Set minimum Timeout_val to 2 minutes */
push Timeout_val = Min_tmout;
DP1 = datapool_open("Name_Search_Seg");
datapool_fetch(DP1);
push Think_avg = 0;
start_time ["View Search Page"];
stop_time ["View Search Page"];
percent = uniform(1,10); /* Select a random number between 1 and 10 */
if (percent = 1) /* If the selected number is 1, view help */
{
start_time ["View Help"];
stop_time ["View Help"];
} /* If the selected number is not 1, script resumes here */
start_time ["View Search Results"];
stop_time ["View Search Results"];
}

列表2 模拟10%的用户查看帮助信息的脚本

其它3个可选路径也能够用类似的方法实现。

灵活的脚本方法对于处理这种不需要完成整个脚本,起始点和结束点相同的活动非常有用。这种方法的另一个很好的例子如用户的注册过程,对于初次使用的用户需要进行账号注册才能登录系统,但是,并非所有的用户都需要,因此,这也是脚本中需要考虑的。

比其它两种脚本方法来说,这种脚本方式实现起来更快并且所需的开销更少,同时冗余的代码也更少。把这种方法和其它的两种合起来一起使用,将能模拟几乎所有的用户模式。

这种方式的缺点在运行时就会显露出来。在录制过程中,有些socket可能会在if语句外面打开并在if语句里面引用,回放时如果if语句里面的脚本不执行的话会导致脚本执行失败。还有其它一些类似的问题。如果遇到这样的问题,你可以进行脚本调试,但这里我不会详细讨论。一般而言,弹出式的独立浏览窗口上的活动不会出现这种问题。

2.4.选择哪种方法

在大多数情况中,选择使用哪种方法来模拟用户使用模式只是一个个人偏好问题。上面已经提到,每种方法都有其优缺点,你只能根据具体的情况选择最佳的那种。在测试复杂的站点时,我通常会将3种脚本方法组合起来使用。

下面有一些选择方法供参考:

当站点满足以下情况时使用全路径脚本方法:

  • 只有少量的浏览路径冗余
  • 浏览路径中只有少量的datapool冗余
  • 使用安全的session
  • 通过URL的参数传递数据

当站点满足以下情况时使用路径片段方法:

  • 有很大的浏览路径冗余
  • 浏览路径中有大量的datapool冗余
  • 有限的安全性
  • 没有通过URL的参数传递数据

当站点满足以下情况时使用灵活脚本方法:

  • 存在起止都在同一页面的可选浏览路径
  • 存在弹出窗口的链接
64/6<123456>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号