- 浏览: 34310 次
- 性别:
- 来自: 上海
最新评论
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 931归总一下,处理列表关联后针对部分特定内容判定方法: 1、对两个 ... -
Loadrunner中web_reg_save_param的使用详解(转载)
2012-07-26 00:11 3952应用范围在使用Loadrunner进行性能测试时,经常遇到一种 ... -
LoadRunner参数化详解 (转载)
2012-07-20 00:02 1087参数化的方法 ... -
LR 关联高级篇
2012-07-13 14:26 11553.7.6 关联函数的高级使用 上面详细介绍了关联的作用和关 ... -
随机数
2010-03-17 22:10 1410vuser_init() { int id; char *vu ... -
关于怎么在LR中模拟下载的动作(转)
2010-01-15 16:31 1329#include "as_web.h" ... -
loadrunner的atof函数有问题(转)
2010-01-15 16:28 1112float x; char *s = &quo ... -
界面设计与测试规则
2010-01-15 16:28 795界面是软件与用户交互 ... -
LoadRunner本机录制http协议程序遇到的问题以及解决方法
2010-01-15 16:26 1049在本机录制asp.net程序petshop的时候刚开始使用了传 ... -
C语言应用于LR中-如何得到数组长度(转)
2010-01-15 16:24 1511C语言没有提供获取数组长度的函数,最起码我不知道,所以编写了一 ... -
Return的返回值
2010-01-15 16:23 789问题: 在创建和 ... -
LR script
2010-01-15 16:21 816#include "web_api.h" ... -
脚本学习笔记
2010-01-15 09:53 13661、写入数据到文件:(实际应用中可以将关联得到的参数写入文件) ... -
LR 脚本 循环读取并显示该文件中的每行数据
2010-01-15 09:49 18491、循环读取并显示该文件中的每行数据:(只能读数字内容) Ac ... -
linux下有什么检测内存溢出的工具
2009-06-10 19:34 2708Linux c++上常用内存泄露检测工具有valgrind, ... -
内存溢出解决方法
2009-06-10 19:33 2361最近做了个任务,内存溢出问题;静态影像下无问题,可是在动态影像 ... -
SQL
2009-03-29 21:47 708http://bbs.51testing.com/thread ... -
软件测试工程师面试英语
2009-03-29 21:38 10751. What types of docume ... -
tomcat占用内存
2008-06-12 22:34 1687大家都知道可以通过tomcat5w.exe文件来改变tomca ...
相关推荐
关联数组的键可以是字符串或者数字,而且不必是连续的,这与索引数组的数值连续键不同。接下来将详细介绍操作PHP关联数组的10个技巧: 1、添加数组元素:在PHP中,可以通过指定键和对应的值直接创建关联数组。如果...
主要分为两种类型:关联数组和索引数组。这两种数组在处理数据时有着不同的特性和用法。 1. **关联数组**: 关联数组是通过键(key)和值(value)对来组织数据的。键可以是任何字符串,而值则可以是任何类型的数据...
Shell提供了两种类型的数组:普通数组和关联数组。 1. **普通数组** - **定义**:普通数组用一对圆括号`()`表示,元素之间用空格分隔。例如,`a=(1 2 3)`定义了一个包含三个元素的数组。 - **长度**:使用`${#...
一、数组和关联数组 数组是Shell脚本非常重要的组成部分,它借助索引将多个独立的独立的数据存储为一个集合。普通数组只能使用整数作为数组索引,关联数组不仅可以使用整数作为索引,也可以使用字符串作为索引。通常...
然而,在某些情况下,可能需要将二维关联数组转换成字符串形式,以便于数据的输出、存储或进一步处理。本文详细介绍了一种实现将二维关联数组转换成字符串的方法,涵盖了数组递归遍历、转换、去重和拼接等技术要点。...
本篇将详细讲解Linux Shell中的两种数组类型:序列数组和关联数组,并提供实例来帮助理解它们的使用方法。 1. **关联数组** 关联数组,也称为哈希表或字典,允许我们使用任意字符串作为索引来存储和检索值。在...
本文将详细介绍如何使用array_merge() 函数来合并关联数组和非关联数组。 关联数组(associative array)是一种使用字符串或其他类型的值作为键的数组。与之相对的是索引数组(indexed array),其键是数字索引。在...
1、从数组的下标分为索引数组、关联数组 代码如下: /* 索引数组,即通常情况下所说的数组 */ var ary1 = [1,3,5,8]; //按索引去取数组元素,从0开始(当然某些语言实现从1开始) //索引实际上就是序数,一个整型...
数组分为两种主要类型:索引数组和关联数组。 **索引数组** 是一种以数字作为键的数组,这些键通常是连续的整数,并且自增。在PHP中,索引数组的默认起始键值是0,每次增加一个元素,键值自动递增1。例如: ```php...
这种灵活性使得关联数组在处理复杂的数据结构时尤其有用,比如数据库查询结果、配置文件、或者在需要以键值对形式存储数据的场景。 `array_keys()`函数是PHP提供的一个内置函数,专门用于处理关联数组。正如描述中...
在处理复杂的关联数组时,还可以使用嵌套的foreach循环来遍历数组中的数组(多维数组),这为处理诸如表格数据、数据库查询结果等复杂数据提供了便利。 最后,尽管foreach循环非常适合遍历关联数组,但也有其他一些...
二维关联数组可以理解为一个数组中的每个元素又是一个包含多个键值对的数组,这样的结构使得数据组织更为灵活。本篇文章将详细讲解如何遍历PHP中的二维关联数组,并通过实例来加深理解。 首先,我们需要了解两种...
关联数组是一种特殊的数据结构,其中的键(key)通常是字符串,而值(value)可以是任何类型的数据。有时,我们需要根据关联数组的键进行排序,以便于数据分析或展示。PHP提供了一个名为`ksort()`的内置函数,专门...
本文实例讲述了python创建关联数组(字典)的方法。分享给大家供大家参考。具体分析如下: 关联数组在python中叫字典,非常有用,下面是定义字典的两种方法 # Dictionary with quoted or variable keys d1 = {name:...
然而,对于初学者而言,关联数组可能会带来一些常见问题。以下是针对这些问题的详细解释和解决方法: **问题 1:使用字符串作为键名,忘记加引号** 在PHP中,字符串键名必须用引号括起来,否则PHP会尝试将其解析为...
标题中的“IE9关联数组导致内存泄漏测试报告”指出了一个特定的问题,即在使用Internet Explorer 9(IE9)浏览器时,由于与关联数组(Array-like object)相关的编程技术,可能会引发内存泄漏问题。内存泄漏是指程序...
在系统Verilog(SV)中,数组是一种非常重要的数据结构,它允许我们存储相同类型的数据集合。这篇原创的“SV中数组代码实践笔记”显然旨在帮助读者深入理解如何在硬件描述语言中有效地使用数组。以下是对SV数组的...