- 浏览: 34610 次
- 性别:
- 来自: 上海
最新评论
http://www.blogjava.net/xingcyx/archive/2007/10/22/155041.html
工具:LoadRunner11,系统WINDOS XP。被测系统:DISCUZ。
业务一:登录后,发表帖子,返回帖子列表,浏览刚才新增的帖子。
关注点:如何浏览刚才新增的贴子,而不是其他帖子。
关联点:浏览帖子的URL中连接的地址,在Response Boby中显示为
<link href="http://localhost/bbs/forum.php?mod=viewthread&tid=23" rel="canonical" />,将http://localhost/bbs/forum.php?mod=viewthread&tid=23关联即可。
业务二:登录后,在帖子列表,随机浏览帖子。
关注点:如何能随机的浏览帖子,并且记录下浏览的那个帖子。
关联点:在帖子列表的URL中,在Response Boby中显示为<a href="forum.php?mod=viewthread&tid=22&extra=page%3D1" nclick="atarget(this)" class="xst" >测试之任重道远</a>,只需关联tid=22即可。但是返回的应该是很多的关联,所以需要在关联函数中添加Ord=All,就能关联到所有的参数,存在参数数组中。
用for (i=1;i<=lr_paramarr_len("link");i++)
{
lr_output_message (lr_paramarr_idx ("link",i));
}
x=lr_paramarr_random ("link");
lr_save_string (x,"param");
达到随机取值,并且打印所有的关联到的参数。
2.2 获取参数数组
前面的方法有一个缺点,它只能点击某个板块的第一个帖子。这显然不是我们想要的结果。我们想要结果是能够随机点击某个板块的一个帖子。这时需要用到参数数组。
也就是执行 web_reg_save_param()函数的时候将某个板块首页的全部帖子的tid保存到一个参数数组中。脚本如下:
web_reg_save_param("topictid",
"LB=<a href=\"forum.php?mod=viewthread&tid=",
"RB=&extra=page%3D1\" onclick=\"atarget(this)\" class=\"xst\" >",
"Search=NoResource",
"Notfound=warning",
"ORD=ALL",
LAST);
对照可以看出,此处把ORD=1,修改为了ORD=ALL。
修改后整体脚本如下:
viewtopic()
{
//用于记录参数数组的长度
int len;
//用于记录参数数组中随机取出的一个参数的值
char * topic;
//查找出所有帖子的的tid,并将此放入参数数组中
web_reg_save_param("topictid",
"LB=<a href=\"forum.php?mod=viewthread&tid=",
"RB=&extra=page%3D1\" onclick=\"atarget(this)\" class=\"xst\" >",
"Search=NoResource",
"Notfound=warning",
"ORD=ALL",
LAST);
//进入某个版块
web_url("forum.php_3",
"URL=http://{IP}/bbs/forum.php?mod=forumdisplay&fid={fid}",
"Resource=0",
"RecContentType=text/html",
"Referer=http://{IP}/bbs/forum.php",
"Snapshot=t122.inf",
"Mode=HTML",
LAST);
//将数组长度的值赋值给len变量
len = atoi(lr_eval_string("{topictid_count}"));
//将参数数组中随机取出的一个值赋给topic变量
topic = lr_paramarr_random("topictid");
//将参数数组中随机取出的值保持为randomtopic参数
lr_save_string( topic,"randomtopic");
if( len == 0)
{
return 0;
}else
{
web_url("forum.php_4",
"URL=http://{IP}/bbs/forum.php?mod=viewthread&tid={randomtopic}&extra=page%3D1",
"Resource=0",
"RecContentType=text/html",
"Referer=http://{IP}/bbs/forum.php?mod=forumdisplay&fid=2",
"Snapshot=t125.inf",
"Mode=HTML",
EXTRARES,
"Url=static/image/common/share_btn.png", "Referer=http://{IP}/bbs/forum.php?mod=viewthread&tid=997&extra=page%3D1", ENDITEM,
"Url=static/image/common/midavt_shadow.gif", "Referer=http://{IP}/bbs/forum.php?mod=viewthread&tid=997&extra=page%3D1", ENDITEM,
"Url=static/image/common/fastreply.gif", "Referer=http://{IP}/bbs/forum.php?mod=viewthread&tid=997&extra=page%3D1", ENDITEM,
"Url=static/image/common/edit.gif", "Referer=http://{IP}/bbs/forum.php?mod=viewthread&tid=997&extra=page%3D1", ENDITEM,
LAST);
}
return 0;
}
在此说明下参数数组。我们可以通过下面的方法生成一个参数数组。
lr_save_string("www.baidu.com","site_1");
lr_save_string("www.sina.com","site_2");
lr_save_string("www.163.com","site_3");
lr_save_string("www.qq.com","site_4");
lr_save_string("4","site_count");
此时参数数组名为site,各个参数的名为site_1,site_2,site_3,site_4。在一个参数数组中,有一个参数用来记录参数数组的长度。即参数名_count。
需求:通过关联取得的ParamName参数可能存在多个值,需要对每个ParamName参数值进行处理
脚本:可通过3种不同的实现方式,将每个参数值作为HTTP请求内容发出
web_reg_save_param("ParamName",
"LB/IC=\"id\":\"OutputParameter.",
"RB/IC=\",\"",
"Ord=All",
"Search=Body",
"RelFrameId=1",
LAST);
...
Paramcount=atoi(lr_eval_string("{ParamName_count}")); //参数个数
i=1;
while (i<=Paramcount) {
sprintf(str,"{ParamName_%d}",i); //生成ParamName_i
//方法一:将变量转为参数,直接在请求中使用参数
lr_save_string(lr_eval_string(str),"Value"); //对每个参数进行处理
web_submit_data("FreeQueryServlet_24",
"Action=http://datasvr01:8081/freequery/FreeQueryServlet",
"Method=POST",
"RecContentType=text/html",
"Referer=http://datasvr01:8081/freequery/js/freequery/businessview/Preview.html",
"Snapshot=t27.inf",
"Mode=HTTP",
ITEMDATA,
"Name=className", "Value=ClientReportService", ENDITEM,
"Name=methodName", "Value=addNewParam", ENDITEM,
"Name=params", "Value=[\"{ClientID}\",\"OutputParameter.{Value}\",\"\"]", ENDITEM,
LAST);
//方法二:通过strcpy、strcat方式组织字符串,通过变量发送请求
strcpy(s,"Value=[\"{ClientID}\",\"OutputParameter.");
strcat(s,str);
strcat(s,"\",\"\"]");
web_submit_data("FreeQueryServlet_24",
"Action=http://datasvr01:8081/freequery/FreeQueryServlet",
"Method=POST",
"RecContentType=text/html",
"Referer=http://datasvr01:8081/freequery/js/freequery/businessview/Preview.html",
"Snapshot=t27.inf",
"Mode=HTTP",
ITEMDATA,
"Name=className", "Value=ClientReportService", ENDITEM,
"Name=methodName", "Value=addNewParam", ENDITEM,
"Name=params", s, ENDITEM,
LAST);
//方法三:通过sprintf格式化输出生成需要的字符串,通过变量发送请求
sprintf(s,"Value=[\"{ClientID}\",\"OutputParameter.%s\",\"\"]",str);
web_submit_data("FreeQueryServlet_24",
"Action=http://datasvr01:8081/freequery/FreeQueryServlet",
"Method=POST",
"RecContentType=text/html",
"Referer=http://datasvr01:8081/freequery/js/freequery/businessview/Preview.html",
"Snapshot=t27.inf",
"Mode=HTTP",
ITEMDATA,
"Name=className", "Value=ClientReportService", ENDITEM,
"Name=methodName", "Value=addNewParam", ENDITEM,
"Name=params", s, ENDITEM,
LAST);
i++;
}
工具:LoadRunner11,系统WINDOS XP。被测系统:DISCUZ。
业务一:登录后,发表帖子,返回帖子列表,浏览刚才新增的帖子。
关注点:如何浏览刚才新增的贴子,而不是其他帖子。
关联点:浏览帖子的URL中连接的地址,在Response Boby中显示为
<link href="http://localhost/bbs/forum.php?mod=viewthread&tid=23" rel="canonical" />,将http://localhost/bbs/forum.php?mod=viewthread&tid=23关联即可。
业务二:登录后,在帖子列表,随机浏览帖子。
关注点:如何能随机的浏览帖子,并且记录下浏览的那个帖子。
关联点:在帖子列表的URL中,在Response Boby中显示为<a href="forum.php?mod=viewthread&tid=22&extra=page%3D1" nclick="atarget(this)" class="xst" >测试之任重道远</a>,只需关联tid=22即可。但是返回的应该是很多的关联,所以需要在关联函数中添加Ord=All,就能关联到所有的参数,存在参数数组中。
用for (i=1;i<=lr_paramarr_len("link");i++)
{
lr_output_message (lr_paramarr_idx ("link",i));
}
x=lr_paramarr_random ("link");
lr_save_string (x,"param");
达到随机取值,并且打印所有的关联到的参数。
2.2 获取参数数组
前面的方法有一个缺点,它只能点击某个板块的第一个帖子。这显然不是我们想要的结果。我们想要结果是能够随机点击某个板块的一个帖子。这时需要用到参数数组。
也就是执行 web_reg_save_param()函数的时候将某个板块首页的全部帖子的tid保存到一个参数数组中。脚本如下:
web_reg_save_param("topictid",
"LB=<a href=\"forum.php?mod=viewthread&tid=",
"RB=&extra=page%3D1\" onclick=\"atarget(this)\" class=\"xst\" >",
"Search=NoResource",
"Notfound=warning",
"ORD=ALL",
LAST);
对照可以看出,此处把ORD=1,修改为了ORD=ALL。
修改后整体脚本如下:
viewtopic()
{
//用于记录参数数组的长度
int len;
//用于记录参数数组中随机取出的一个参数的值
char * topic;
//查找出所有帖子的的tid,并将此放入参数数组中
web_reg_save_param("topictid",
"LB=<a href=\"forum.php?mod=viewthread&tid=",
"RB=&extra=page%3D1\" onclick=\"atarget(this)\" class=\"xst\" >",
"Search=NoResource",
"Notfound=warning",
"ORD=ALL",
LAST);
//进入某个版块
web_url("forum.php_3",
"URL=http://{IP}/bbs/forum.php?mod=forumdisplay&fid={fid}",
"Resource=0",
"RecContentType=text/html",
"Referer=http://{IP}/bbs/forum.php",
"Snapshot=t122.inf",
"Mode=HTML",
LAST);
//将数组长度的值赋值给len变量
len = atoi(lr_eval_string("{topictid_count}"));
//将参数数组中随机取出的一个值赋给topic变量
topic = lr_paramarr_random("topictid");
//将参数数组中随机取出的值保持为randomtopic参数
lr_save_string( topic,"randomtopic");
if( len == 0)
{
return 0;
}else
{
web_url("forum.php_4",
"URL=http://{IP}/bbs/forum.php?mod=viewthread&tid={randomtopic}&extra=page%3D1",
"Resource=0",
"RecContentType=text/html",
"Referer=http://{IP}/bbs/forum.php?mod=forumdisplay&fid=2",
"Snapshot=t125.inf",
"Mode=HTML",
EXTRARES,
"Url=static/image/common/share_btn.png", "Referer=http://{IP}/bbs/forum.php?mod=viewthread&tid=997&extra=page%3D1", ENDITEM,
"Url=static/image/common/midavt_shadow.gif", "Referer=http://{IP}/bbs/forum.php?mod=viewthread&tid=997&extra=page%3D1", ENDITEM,
"Url=static/image/common/fastreply.gif", "Referer=http://{IP}/bbs/forum.php?mod=viewthread&tid=997&extra=page%3D1", ENDITEM,
"Url=static/image/common/edit.gif", "Referer=http://{IP}/bbs/forum.php?mod=viewthread&tid=997&extra=page%3D1", ENDITEM,
LAST);
}
return 0;
}
在此说明下参数数组。我们可以通过下面的方法生成一个参数数组。
lr_save_string("www.baidu.com","site_1");
lr_save_string("www.sina.com","site_2");
lr_save_string("www.163.com","site_3");
lr_save_string("www.qq.com","site_4");
lr_save_string("4","site_count");
此时参数数组名为site,各个参数的名为site_1,site_2,site_3,site_4。在一个参数数组中,有一个参数用来记录参数数组的长度。即参数名_count。
需求:通过关联取得的ParamName参数可能存在多个值,需要对每个ParamName参数值进行处理
脚本:可通过3种不同的实现方式,将每个参数值作为HTTP请求内容发出
web_reg_save_param("ParamName",
"LB/IC=\"id\":\"OutputParameter.",
"RB/IC=\",\"",
"Ord=All",
"Search=Body",
"RelFrameId=1",
LAST);
...
Paramcount=atoi(lr_eval_string("{ParamName_count}")); //参数个数
i=1;
while (i<=Paramcount) {
sprintf(str,"{ParamName_%d}",i); //生成ParamName_i
//方法一:将变量转为参数,直接在请求中使用参数
lr_save_string(lr_eval_string(str),"Value"); //对每个参数进行处理
web_submit_data("FreeQueryServlet_24",
"Action=http://datasvr01:8081/freequery/FreeQueryServlet",
"Method=POST",
"RecContentType=text/html",
"Referer=http://datasvr01:8081/freequery/js/freequery/businessview/Preview.html",
"Snapshot=t27.inf",
"Mode=HTTP",
ITEMDATA,
"Name=className", "Value=ClientReportService", ENDITEM,
"Name=methodName", "Value=addNewParam", ENDITEM,
"Name=params", "Value=[\"{ClientID}\",\"OutputParameter.{Value}\",\"\"]", ENDITEM,
LAST);
//方法二:通过strcpy、strcat方式组织字符串,通过变量发送请求
strcpy(s,"Value=[\"{ClientID}\",\"OutputParameter.");
strcat(s,str);
strcat(s,"\",\"\"]");
web_submit_data("FreeQueryServlet_24",
"Action=http://datasvr01:8081/freequery/FreeQueryServlet",
"Method=POST",
"RecContentType=text/html",
"Referer=http://datasvr01:8081/freequery/js/freequery/businessview/Preview.html",
"Snapshot=t27.inf",
"Mode=HTTP",
ITEMDATA,
"Name=className", "Value=ClientReportService", ENDITEM,
"Name=methodName", "Value=addNewParam", ENDITEM,
"Name=params", s, ENDITEM,
LAST);
//方法三:通过sprintf格式化输出生成需要的字符串,通过变量发送请求
sprintf(s,"Value=[\"{ClientID}\",\"OutputParameter.%s\",\"\"]",str);
web_submit_data("FreeQueryServlet_24",
"Action=http://datasvr01:8081/freequery/FreeQueryServlet",
"Method=POST",
"RecContentType=text/html",
"Referer=http://datasvr01:8081/freequery/js/freequery/businessview/Preview.html",
"Snapshot=t27.inf",
"Mode=HTTP",
ITEMDATA,
"Name=className", "Value=ClientReportService", ENDITEM,
"Name=methodName", "Value=addNewParam", ENDITEM,
"Name=params", s, ENDITEM,
LAST);
i++;
}
发表评论
-
列表判定状态值 关联
2012-08-31 12:12 942归总一下,处理列表关联后针对部分特定内容判定方法: 1、对两个 ... -
Loadrunner中web_reg_save_param的使用详解(转载)
2012-07-26 00:11 3971应用范围在使用Loadrunner进行性能测试时,经常遇到一种 ... -
LoadRunner参数化详解 (转载)
2012-07-20 00:02 1105参数化的方法 ... -
LR 关联高级篇
2012-07-13 14:26 11663.7.6 关联函数的高级使用 上面详细介绍了关联的作用和关 ... -
随机数
2010-03-17 22:10 1422vuser_init() { int id; char *vu ... -
关于怎么在LR中模拟下载的动作(转)
2010-01-15 16:31 1340#include "as_web.h" ... -
loadrunner的atof函数有问题(转)
2010-01-15 16:28 1120float x; char *s = &quo ... -
界面设计与测试规则
2010-01-15 16:28 805界面是软件与用户交互 ... -
LoadRunner本机录制http协议程序遇到的问题以及解决方法
2010-01-15 16:26 1056在本机录制asp.net程序petshop的时候刚开始使用了传 ... -
C语言应用于LR中-如何得到数组长度(转)
2010-01-15 16:24 1521C语言没有提供获取数组长度的函数,最起码我不知道,所以编写了一 ... -
Return的返回值
2010-01-15 16:23 800问题: 在创建和 ... -
LR script
2010-01-15 16:21 825#include "web_api.h" ... -
脚本学习笔记
2010-01-15 09:53 13781、写入数据到文件:(实际应用中可以将关联得到的参数写入文件) ... -
LR 脚本 循环读取并显示该文件中的每行数据
2010-01-15 09:49 18631、循环读取并显示该文件中的每行数据:(只能读数字内容) Ac ... -
linux下有什么检测内存溢出的工具
2009-06-10 19:34 2716Linux c++上常用内存泄露检测工具有valgrind, ... -
内存溢出解决方法
2009-06-10 19:33 2372最近做了个任务,内存溢出问题;静态影像下无问题,可是在动态影像 ... -
SQL
2009-03-29 21:47 715http://bbs.51testing.com/thread ... -
软件测试工程师面试英语
2009-03-29 21:38 10861. What types of docume ... -
tomcat占用内存
2008-06-12 22:34 1700大家都知道可以通过tomcat5w.exe文件来改变tomca ...
相关推荐
六、从数组变量复制到关联数组 七、元素的增删 八、列出数组的索引和值 九、用关联数组循环 十、用关联数组创建数据结构 1、(单)链表 2、结构 3、树 第十章 格式化输出 一、定义打印格式 二、显示打印格式 三、...
mybatis实战教程mybatis in action之四实现关联数据的查询 mybatis实战教程mybatis in action之五与spring3集成附源码 mybatis实战教程mybatis in action之六与Spring MVC 的集成 mybatis实战教程mybatis in action...
- 当引用作为函数参数时,它提供了类似指针的功能,但更安全,因为它是强制关联的。 4. **引用作为函数参数**: 使用引用作为函数参数,可以避免值传递的开销,因为它们提供对原始对象的直接访问。这类似于指针,...
- 整个移植过程涉及到多个文件的修改,如`SSCStringHandle.h`、`SSCStringHandle.c`和`PhoneSetup.c`,这反映了MTK平台中系统服务、语言设置和输入法集成的紧密关联性。 这篇笔记对MTK平台的开发环境配置、资源...
1. **Ruby 基础**:学习 Ruby 首先要掌握其基础语法,如变量、常量、数据类型(包括字符串、数组、哈希等)、控制结构(条件语句、循环)、方法定义和调用、类与对象、模块、继承和多态性等。 2. **元编程**:Ruby ...