将normdist函数拷贝到脚本中#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_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之时有一个随机的正态分布时间。如果你愿意的话,可以检查一下全部修改后的脚本。
5.高级用户:双峰正态分布
为了应用这种分布,你应该有Rational TestStudio的性能测试经验以及C语言的基本了解。我测试过的很多网站就有些这样的页面,它们的用户访问呈双峰正态分布。想象一个有很多文字的页面,首次访问时用户可能会详细地阅读这些文字,下一次你就会直接的跳过这个页面到下一个页面了。这种页面的用户延迟时间如图8所示。
?
图8 文字性网页所展现的双峰正态分布
在这个例子中,假设60%的用户花了8秒的时间浏览了这个页面并寻找下一个链接,而其它40%的用户花了45秒的时间详细的阅读了整个页面。你会发现这是两个有着不同的最小值、最大值、标准差的正态分布。在脚本中模拟这种分布的方法生成一个0到10的随机数,并创建一个控制逻辑,当随机数字落在1~6之间时实现左边的延迟,在7~10时实现右边的延迟。