51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

查看: 106815|回复: 64
打印 上一主题 下一主题

LoadRunner的一个解决方案

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2005-11-29 23:53:40 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
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步可能不太合理,你看出来了吗,一定还有更好的方式吧^_^
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1
回复

使用道具 举报

该用户从未签到

2#
 楼主| 发表于 2005-11-29 23:54:01 | 只看该作者
从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按钮(开始方案按钮的下面),弹出窗口中可看到信息。
回复 支持 反对

使用道具 举报

该用户从未签到

3#
 楼主| 发表于 2005-11-29 23:54:20 | 只看该作者
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秒钟了。”
回复 支持 反对

使用道具 举报

该用户从未签到

4#
 楼主| 发表于 2005-11-29 23:54:35 | 只看该作者
使用自定义的VuGen脚本模板
步骤:
1、创建一个新的脚本;
2、对此脚本进行所需的设置(自定义);
3、保存脚本;
4、现在,拷贝该脚本目录下的default.cfg文件到Program Files\Mercury Interactive\LoadRunner\template\{dir}目录下。{dir}表示你将要创建脚本的出处。例如,Web/HTML虚拟用户的目录是\qtweb\目录。你也可以自定义init.c、end.c和action.c,这样以后新建的脚本都会使用这些模板了。
回复 支持 反对

使用道具 举报

该用户从未签到

5#
发表于 2005-12-1 09:30:35 | 只看该作者
借鉴。
回复 支持 反对

使用道具 举报

该用户从未签到

6#
发表于 2005-12-1 16:59:37 | 只看该作者
very good,楼主性能测试经验丰富呀
谢谢分享
回复 支持 反对

使用道具 举报

该用户从未签到

7#
发表于 2005-12-14 15:53:05 | 只看该作者
“LoadRunner的一个解决方案
某web项目需求信息:要求在用户的登录时间小于5秒(包含登录中下载所有资源的时间)情况下的最大用户数“

对于这个需求, 步骤8 似乎起着至关重要的作用。一个事务是指从request 发出到 客户端接收到response为止, 不包括下载时间, 但需求中的5s 包含下载时间,期待好的解决方案...
回复 支持 反对

使用道具 举报

该用户从未签到

8#
发表于 2006-2-27 13:59:14 | 只看该作者

请教二楼的代码该怎么设置?

#include "web_api.h"


Action()
{


char *pp;

//以下这句到底有没有?
int *iteration; //不写这句话会报错,但这个迭代的笔数应该是系统给出的吧? 查了手册,好像又得设才是?


//请自定义参数文件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);

[ 本帖最后由 suchboy 于 2006-2-27 14:04 编辑 ]
回复 支持 反对

使用道具 举报

该用户从未签到

9#
发表于 2006-3-18 15:15:02 | 只看该作者
原帖由 lotus 于 2005-12-1 16:59 发表
very good,楼主性能测试经验丰富呀
谢谢分享


好的方案出来了吗?
我还没找到
期待ING
回复 支持 反对

使用道具 举报

该用户从未签到

10#
发表于 2006-4-12 16:23:25 | 只看该作者
第三、四步冲突了吧
既然设置了集合点
那么“每×秒加载×个”和同时加载还有什么区别?
另外这种类型的测试目标测试是不是更好呢?
回复 支持 反对

使用道具 举报

该用户从未签到

11#
发表于 2006-4-12 18:11:59 | 只看该作者

学习中

学习中
回复 支持 反对

使用道具 举报

该用户从未签到

12#
发表于 2006-4-24 18:10:30 | 只看该作者
第三、四步冲突了吧
既然设置了集合点
那么“每×秒加载×个”和同时加载还有什么区别?
另外这种类型的测试目标测试是不是更好呢?

-----------------------------------------------------------------
这个是有区别的,同时加载是在集合点前加载,
“每×秒加载×个”在集合点前不一定加载了X个
这个跟集合点的超时时间设置是有关的,在control->scenario->rendezvous中设置
如果在超时时间内加载完所有的负载,这样就和同时加载没有区别
如果没有在超时时间内加载完,就没有那么大的负载量
回复 支持 反对

使用道具 举报

该用户从未签到

13#
发表于 2006-4-26 13:47:58 | 只看该作者
这样的例子我选用测试目标来测试,也是可以的.
谢谢,分享!
回复 支持 反对

使用道具 举报

该用户从未签到

14#
发表于 2006-5-15 18:10:37 | 只看该作者
测试的系统为B/s结构,手工运行时客户端响应比较慢
因为大量的数据在客户端运行,服务器压力不大,用loadrunner运行,比如保存一个单据的action才几百毫秒,但是手工运行保存感觉需要5秒,差距比较大
如何获得客户端准确的运行时间
这个如何获得呢,楼主,假如客户要求响应时间就是可以看到结果的时间是一定的时间,我如何获得客户端的时间
回复 支持 反对

使用道具 举报

该用户从未签到

15#
发表于 2006-6-19 12:50:26 | 只看该作者
希望楼主能搞个C/S项目的案例来分析指教一下啊sdlkfj1
回复 支持 反对

使用道具 举报

该用户从未签到

16#
发表于 2006-7-12 19:03:24 | 只看该作者
just like that
回复 支持 反对

使用道具 举报

该用户从未签到

17#
发表于 2006-7-26 16:36:40 | 只看该作者
楼主为何不回答各位所提出的问题,
这个贴子好像并不是楼主自己原创的吧。我在网站上其它很多地方都搜到了和楼主完全一样的贴。。
回复 支持 反对

使用道具 举报

该用户从未签到

18#
发表于 2006-8-1 08:57:20 | 只看该作者
TO:mafangliht
可以用函数,取得事务时间,大于5则将此事务结果置为FALSE,
回复 支持 反对

使用道具 举报

该用户从未签到

19#
发表于 2006-8-8 15:13:45 | 只看该作者
我初步接触了一下LR但是不知道从何下手呀
那位高手可以指教一下
谢谢
回复 支持 反对

使用道具 举报

该用户从未签到

20#
发表于 2006-9-2 23:49:05 | 只看该作者
看不懂的东西,,郁闷中~~
回复 支持 反对

使用道具 举报

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

GMT+8, 2024-5-11 12:48 , Processed in 0.089020 second(s), 27 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

快速回复 返回顶部 返回列表