LoadRunner
的一个解决方案
某 web 项目需求信息:要求在用户的登录时间小于 5 秒(包含登录中下载所有资源的时间)情况下的最大用户并发数。
场景描述:以小规模的用户数每格一定的时间递增用户,递增的用户随正在运行的用户一起并发登录。每个用户的响应时间超过 5 秒就认为是错误。
LoadRunner 实现方式:
1 、录制脚本并把登录过程定义为一个事务,在事务前加一集合点;
2 、使用手动方案,设置用户数为较大的用户数;
3 、设置集合策略,选择 “ 释放:当达到 100% 运行用户时 ” ;
4 、设置加载方式为 “ 每 x 秒加载 y 个用户 ” ,数字根据具体情况设置;
5 、设置持续时间为 “ 无限期运行 ” ;
6 、在 Controller 的运行时设置中设置 “ 浏览器仿真 ” ,选中 “ 下载非 HTML 资源 ” 和 “ 每次迭代模拟一个新用户 ” ;
7 、在 “Internet 协议首选项 ” 的高级设置中,选中 “ 在本地保存快照资源 ” 和 “ 出现错误时激活快照 ” ;
8 、接上步,单击 “ 设置高级选项 ” 右侧的 “ 选项 ” 按钮,在弹出的窗口中设置 “HTTP 请求连接超时 ”“HTTP 请求接收超时 ”“ 步骤下载超时 ” 均为 5 秒,并选择 “ 由资源引起的步骤超时是一条警告信息 ” 为否。
9 、开始运行脚本。
辅助信息:
1 、可以参考 “ 从 Controller 中监视 VU 执行脚本的情况 ” 了解 Virtual User 的执行情况。
2 、可在脚本中适当增加检查点。
3 、以上第 8 步可能不太合理,你看出来了吗,一定还有更好的方式吧
某 web 项目需求信息:要求在用户的登录时间小于 5 秒(包含登录中下载所有资源的时间)情况下的最大用户并发数。
场景描述:以小规模的用户数每格一定的时间递增用户,递增的用户随正在运行的用户一起并发登录。每个用户的响应时间超过 5 秒就认为是错误。
LoadRunner 实现方式:
1 、录制脚本并把登录过程定义为一个事务,在事务前加一集合点;
2 、使用手动方案,设置用户数为较大的用户数;
3 、设置集合策略,选择 “ 释放:当达到 100% 运行用户时 ” ;
4 、设置加载方式为 “ 每 x 秒加载 y 个用户 ” ,数字根据具体情况设置;
5 、设置持续时间为 “ 无限期运行 ” ;
6 、在 Controller 的运行时设置中设置 “ 浏览器仿真 ” ,选中 “ 下载非 HTML 资源 ” 和 “ 每次迭代模拟一个新用户 ” ;
7 、在 “Internet 协议首选项 ” 的高级设置中,选中 “ 在本地保存快照资源 ” 和 “ 出现错误时激活快照 ” ;
8 、接上步,单击 “ 设置高级选项 ” 右侧的 “ 选项 ” 按钮,在弹出的窗口中设置 “HTTP 请求连接超时 ”“HTTP 请求接收超时 ”“ 步骤下载超时 ” 均为 5 秒,并选择 “ 由资源引起的步骤超时是一条警告信息 ” 为否。
9 、开始运行脚本。
辅助信息:
1 、可以参考 “ 从 Controller 中监视 VU 执行脚本的情况 ” 了解 Virtual User 的执行情况。
2 、可在脚本中适当增加检查点。
3 、以上第 8 步可能不太合理,你看出来了吗,一定还有更好的方式吧
从
Controller
窗口中查看当前脚本中的参数和
vu
的迭代次数的脚本实例:
#include "as_web.h"
static int iteration;
Action()
{
char *pp;
// 请自定义参数文件 NewParam
pp="value={NewParam}";
// 在 vugen 调试窗口中显示当前参数值,在 Controller 窗口中不会显示出来
lr_output_message("Para is:%s",lr_eval_string("{NewParam}"));
// 在 Controller 监视窗口中显示当前参数值和当前 vu 迭代次数,在 vugen 调试窗口中不会显示出来
lr_vuser_status_message("Para is:%s,%dTimes Iteration",lr_eval_string("{NewParam}"),++iteration);
return 0;
}
运行场景时在 Controller 运行窗口中单击 Vusers 按钮(开始方案按钮的下面),弹出窗口中可看到信息。
#include "as_web.h"
static int iteration;
Action()
{
char *pp;
// 请自定义参数文件 NewParam
pp="value={NewParam}";
// 在 vugen 调试窗口中显示当前参数值,在 Controller 窗口中不会显示出来
lr_output_message("Para is:%s",lr_eval_string("{NewParam}"));
// 在 Controller 监视窗口中显示当前参数值和当前 vu 迭代次数,在 vugen 调试窗口中不会显示出来
lr_vuser_status_message("Para is:%s,%dTimes Iteration",lr_eval_string("{NewParam}"),++iteration);
return 0;
}
运行场景时在 Controller 运行窗口中单击 Vusers 按钮(开始方案按钮的下面),弹出窗口中可看到信息。
web_url();
步骤包含了思考时间,即使是在没有指定的情况下。
解决方式:
即使没有指定思考时间,系统也会自动为 web_url("default.asp") 步骤指定思考时间。
在重播思考时间启用时该步骤会有 10 秒钟的暂停。忽略思考时间可以使它立即直接访问。
在 Analysis 中如果选中筛选器中的包含思考时间选项就可以在结果中看到思考时间。
以下是有关服务请求的细节知识:
“ 在某些情况下运行脚本时, LoadRunner 会加入它自己的思考时间。其中一种情况是当收到一个 401 错误时。当请求的 cookie 设置不正确时,有时应用服务器会返回 401 错误。 LoadRuner 一旦收到这个错误信息它就会等待 10 秒钟并且重新请求资源。这次 LoadRunner 将会向服务器发送正确的 cookie ,从而进行访问。 ”
“401 错误的存在要求站点运行正常。它的工作方式是这样的,第一次请求某个 URL 或着以一个新的会话返回了 URL ,服务器需要为此 URL 认证或指定一个 session id, 这样就会在错误的请求钟设置一个 cookie 信息。然后就会重新请求该 URL ,这次是使用的是一个有效的 cookie ,然后服务器发送你所请求的信息。 ”
“ 如果没有返回 401 错误的话就不能生成一个新的 cookie 。没有新的 cookie 的话就不能访问服务器。 ”
“ 在这里我们想要做的是让 LoadRunner 立即重新发送请求而不等待 10 秒。为了达到这个目的,请在脚本文件夹下 default.cfg 文件中的 [Web] 下面加入下面语句: ”
Retry401ThinkTime=0
“ 这样设置以后,从 Vugen 中再次运行脚本或把它加到新的场景中或在已有的场景中删除并重新加入后运行,就不会在重新请求资源时等待 10 秒钟了。 ”
解决方式:
即使没有指定思考时间,系统也会自动为 web_url("default.asp") 步骤指定思考时间。
在重播思考时间启用时该步骤会有 10 秒钟的暂停。忽略思考时间可以使它立即直接访问。
在 Analysis 中如果选中筛选器中的包含思考时间选项就可以在结果中看到思考时间。
以下是有关服务请求的细节知识:
“ 在某些情况下运行脚本时, LoadRunner 会加入它自己的思考时间。其中一种情况是当收到一个 401 错误时。当请求的 cookie 设置不正确时,有时应用服务器会返回 401 错误。 LoadRuner 一旦收到这个错误信息它就会等待 10 秒钟并且重新请求资源。这次 LoadRunner 将会向服务器发送正确的 cookie ,从而进行访问。 ”
“401 错误的存在要求站点运行正常。它的工作方式是这样的,第一次请求某个 URL 或着以一个新的会话返回了 URL ,服务器需要为此 URL 认证或指定一个 session id, 这样就会在错误的请求钟设置一个 cookie 信息。然后就会重新请求该 URL ,这次是使用的是一个有效的 cookie ,然后服务器发送你所请求的信息。 ”
“ 如果没有返回 401 错误的话就不能生成一个新的 cookie 。没有新的 cookie 的话就不能访问服务器。 ”
“ 在这里我们想要做的是让 LoadRunner 立即重新发送请求而不等待 10 秒。为了达到这个目的,请在脚本文件夹下 default.cfg 文件中的 [Web] 下面加入下面语句: ”
Retry401ThinkTime=0
“ 这样设置以后,从 Vugen 中再次运行脚本或把它加到新的场景中或在已有的场景中删除并重新加入后运行,就不会在重新请求资源时等待 10 秒钟了。 ”
使用自定义的
VuGen
脚本模板
步骤:
1 、创建一个新的脚本;
2 、对此脚本进行所需的设置(自定义);
3 、保存脚本;
4 、现在,拷贝该脚本目录下的 default.cfg 文件到 Program Files/Mercury Interactive/LoadRunner/template/{dir} 目录下。 {dir} 表示你将要创建脚本的出处。例如, Web/HTML 虚拟用户的目录是 /qtweb/ 目录。你也可以自定义 init.c 、 end.c 和 action.c ,这样以后新建的脚本都会使用这些模板了。
步骤:
1 、创建一个新的脚本;
2 、对此脚本进行所需的设置(自定义);
3 、保存脚本;
4 、现在,拷贝该脚本目录下的 default.cfg 文件到 Program Files/Mercury Interactive/LoadRunner/template/{dir} 目录下。 {dir} 表示你将要创建脚本的出处。例如, Web/HTML 虚拟用户的目录是 /qtweb/ 目录。你也可以自定义 init.c 、 end.c 和 action.c ,这样以后新建的脚本都会使用这些模板了。
更多精彩内容请访问 www.17testing.com