让我们来看看如何修改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的参数传递数据
当站点满足以下情况时使用灵活脚本方法:
- 存在起止都在同一页面的可选浏览路径
- 存在弹出窗口的链接