51Testing软件测试论坛

标题: 手动设置 关联 问题 [打印本页]

作者: higkoo    时间: 2007-8-24 15:59
标题: 手动设置 关联 问题
程序是这样的:
需要新建一个项目,项目有两个属性页面;
页面一:项目下可以挂多个子项目;
页面二:项目下可以挂多种类型子项目,每个类型也可能有多个文件。项目可以上传文件。(此贴不考虑)
目的:
需要新建一定数量的项目。
遇到的困难:
LoadRunner没有自动关联,手动关联设置失败。

过程说明:
新建项目时,服务器会给这个项目一个ID,新建子项都是靠这个ID识别的。
子项目也有ID(此贴不考虑)……
由于ID是动态生成的,必须设置关联。
查看源信息:
<tr bordercolor="#111111"  class="table-content" id="8a8196b2148c482c011496b320cd0014"
关联设置如下:
// {projID}= 8a8196b2148c482c011496b320cd0014
web_reg_save_param("projID",
  "LB/ic=projectId=",
  "RB/ic=&",
  "Ord=6",
  "RelFrameId=1",
  "Search=Body",
  "IgnoreRedirections=Yes",
  LAST);
回放出错:
addProj.c(151): 注册 web_reg_save_param 成功   [MsgId: MMSG-26390]
addProj.c(160): 警告: 带有参数分隔符的字符串“projdefine”不是参数。
addProj.c(160): 错误 -26377: 找不到请求的参数“projdefine”的匹配项。检查请求的边界是否存在于响应数据中。此外,如果要保存的数据超过 1024 个字节,请使用 web_set_max_html_param_len 增加参数大小   [MsgId: MERR-26377]
addProj.c(160): 通知: 正在保存参数“projdefine = ”
addProj.c(160): web_url("bid.struts_2") 最高严重级别为“ERROR”,1520 个正文字节,225 个标头字节


目前还在找原因

哪位有LR关联的详细说明?
作者: haiquan180    时间: 2007-8-24 16:04
sdlkfj5 把代码多贴出来一些
作者: higkoo    时间: 2007-8-24 16:14
原帖由 haiquan180 于 2007-8-24 16:04 发表
sdlkfj5 把代码多贴出来一些



  1. // {projdefine}= 8a8196b2148c482c011496b320cd0014
  2. web_reg_save_param("projdefine",
  3.   "LB/ic=projectId=",
  4.   "RB/ic=&",
  5.   "Ord=6",
  6.   "RelFrameId=1",
  7.   "Search=Body",
  8.   "IgnoreRedirections=Yes",
  9.   LAST);
  10. web_url("bid.struts_2",    //错误出现在这里,执行这一步脚本自动中止,因为根本没有获取到参数值
  11.   "URL=http://testserver/first/bid.struts?actionType=listBid&projectId={projdefine}&type=0101",
  12.   "Resource=0",
  13.   "RecContentType=text/html",
  14.   "Referer=http://testserver/first/roadproject.struts?actionType=roadproject_list",
  15.   "Snapshot=t24.inf",
  16.   "Mode=HTTP",
  17.   LAST);
  18. web_url("roadproject.struts_8",
  19.   "URL=http://testserver/first/roadproject.struts?actionType=costinfo_top&delSQL=1&projectId=projdefine",
  20.   "Resource=0",
  21.   "RecContentType=text/html",
  22.   "Referer=http://testserver/first/roadproject.struts?actionType=roadproject_list",
  23.   "Snapshot=t25.inf",
  24.   "Mode=HTTP",
  25.   LAST);
  26. web_concurrent_start(NULL);
  27. web_url("util.js_5",
  28.   "URL=http://testserver/first/jsp/includes/js/util.js",
  29.   "Resource=1",
  30.   "Referer=http://testserver/first/bid.struts?actionType=listBid&projectId=projdefine&type=0101",
  31.   LAST);
  32. web_url("ajax.js_5",
  33.   "URL=http://testserver/first/jsp/includes/js/ajax.js",
  34.   "Resource=1",
  35.   "Referer=http://testserver/first/bid.struts?actionType=listBid&projectId=projdefine&type=0101",
  36.   LAST);
  37. web_url("button.gif_3",
  38.   "URL=http://testserver/first/jsp/images/button.gif",
  39.   "Resource=1",
  40.   "Referer=http://testserver/first/roadproject.struts?actionType=costinfo_top&delSQL=1&projectId=projdefine",
  41.   LAST);
  42. web_concurrent_end(NULL);

复制代码

作者: silvertree    时间: 2007-8-24 16:22
"LB/ic=projectId=",
  "RB/ic=&",

这个边界在哪看的? recording log中有  你怎么贴的是:<tr bordercolor="#111111"  class="table-content" id="8a8196b2148c482c011496b320cd0014"却又设左边界为"projectId=" ??

如果是这样的话那边界值就错了.

边界值是根据recording log中的server信息来设定的,与代码中的无关
作者: higkoo    时间: 2007-8-24 16:34
标题: 录制日志
原帖由 silvertree 于 2007-8-24 16:22 发表
"LB/ic=projectId=",
  "RB/ic=&",

这个边界在哪看的? recording log中有  你怎么贴的是:


录制日志里:

  1. [Network Analyzer (12e4:130c)]   (Sid:  9) Server -> Client : 93 bytes  (Service=HTTP)
  2. [Web Request      (12e4:130c)] "GET /cost/bid.struts?actionType=listBid&projectId=8a8196b2148c482c011496b320cd0014&type=0101"   
  3. [Network Analyzer (12e4:130c)]   (Sid:  7) Client -> Server : 704 bytes (Service=HTTP)
  4. [Web Request      (12e4:130c)] "GET /cost/roadproject.struts?actionType=costinfo_top&delSQL=1&projectId=8a8196b2148c482c011496b320cd0014"
复制代码

作者: haiquan180    时间: 2007-8-24 16:42
8a8196b2148c482c011496b320cd0014 你这个东西每次是变化的吗?你再录制一个相同操作的脚本看一下
作者: silvertree    时间: 2007-8-24 16:44
ord=6又作何解?为什么要设为6?
作者: higkoo    时间: 2007-8-24 16:52
原帖由 haiquan180 于 2007-8-24 16:42 发表
8a8196b2148c482c011496b320cd0014 你这个东西每次是变化的吗?你再录制一个相同操作的脚本看一下


这个值每次都不一样。

我不设置关联回放,子项目都没有添加上去。


原帖由 silvertree 于 2007-8-24 16:42 发表
ord=6又作何解?为什么要设为6?


Ord我最初写的1,有错误,本人也不太理解,就按论坛里的例子改成了6,出现的错误提示是一样的  :(
作者: haiquan180    时间: 2007-8-24 17:04
8a8196b2148c482c011496b320cd0014 在Recording Log 中第一次出现的log贴出来
作者: 今天有雾    时间: 2007-8-24 17:06
ord 的意思,如果当前出现相同的匹配项,那么表示取的是第六次的内容,我记得以前有本书上是这么说的,不知道对不对,如果不对,请大家及时纠正
作者: haiquan180    时间: 2007-8-24 17:13
楼上说的对啊
作者: higkoo    时间: 2007-8-24 17:20
原帖由 haiquan180 于 2007-8-24 17:04 发表
8a8196b2148c482c011496b320cd0014 在Recording Log 中第一次出现的log贴出来


这是从录制日志,开头,向下搜索,每一次出现这个字符串的位置:

  1. [Network Analyzer (13fc: 7c0)] Request Connection: Remote Server @ 10.1.22.50 (Service=)  (Sid= 10)  PROXIED!
  2. [Web Request      (13fc: f2c)] "GET /cost/jsp/includes/js/util.js"   
  3. [Network Analyzer (13fc: f2c)]   (Sid:  9) Client -> Server : 610 bytes (Service=HTTP)
  4. [Web Request      (13fc: f2c)] "GET /cost/roadproject.struts?actionType=costinfo_top&delSQL=1&projectId=8a8196b2148c482c011496b320cd0014"
复制代码

作者: haiquan180    时间: 2007-8-24 17:28
web_reg_save_param("projID",
  "LB=projectId="
  "RB=",
  LAST);

试试
作者: haiquan180    时间: 2007-8-24 17:30
最好把你的RecordingLog.txt传上来看看
作者: higkoo    时间: 2007-8-24 17:31
标题: 老是提示找不到参数
原帖由 今天有雾 于 2007-8-24 17:06 发表
ord 的意思,如果当前出现相同的匹配项,那么表示取的是第六次的内容,我记得以前有本书上是这么说的,不知道对不对,如果不对,请大家及时纠正


我就这个动作
  1. vuser_init  //打开首页
  2. Login   //登录
  3. Addproj  //新增一个项目
  4. SelectIt  //选中刚新增的项目
  5. vuser_end  //没有录制
复制代码


我回放的时候,选择扩展日志,记录服务器的返回数据,发现 那串字符 在 Login之后就有了(登录成功——>显示列表——>默认选中第一行)。新增的项目按名称排序,录制的时候是显示在第一行。

我把手动写的关联脚本,放在

  1. Login   //登录
  2. Addproj  //新增一个项目
  3. 这两个动作的头和尾,都提示
  4. 错误 -26377: 找不到请求的参数“projID”的匹配项。检查请求的边界是否存在于响应数据中。此外,如果要保存的数据超过 1024 个字节,请使用 web_set_max_html_param_len 增加参数大小   [MsgId: MERR-26377]
复制代码

作者: higkoo    时间: 2007-8-24 17:36
原帖由 haiquan180 于 2007-8-24 17:28 发表
web_reg_save_param("projID",
  "LB=projectId="
  "RB=",
  LAST);  试试

还是一样的错误。

原帖由 haiquan180 于 2007-8-24 17:28 发表

最好把你的RecordingLog.txt传上来看看

作者: haiquan180    时间: 2007-8-24 17:49
单看这些也找不到左右边界啊  问下你想测什么 为什么选择双协议呢?
作者: higkoo    时间: 2007-8-24 17:53
标题: 有压力,未解决……
原帖由 haiquan180 于 2007-8-24 17:49 发表
单看这些也找不到左右边界啊  问下你想测什么 为什么选择双协议呢?



一个Java B/S结构 程序,没有选择双协议的,只选择了HTTP协议而已的。

我一直很纳闷,我之前类似的项目,手动测试关联是没有问题的,今天这个稍复杂一点。

  试了一下午也没有打到问题在哪。

都下班了……   sdlkfj7
作者: haiquan180    时间: 2007-8-24 18:07
[Network Analyzer (13fc: f2c)] Address lookup for testserver = 10.1.22.43
[Network Analyzer (13fc:1394)] Address lookup for testserver = 10.1.22.43
[Network Analyzer (13fc:1394)] Request Connection: Remote Server @ 10.1.22.50:9016   (Service=)  (Sid=  1)  PROXIED!
[Web Request      (13fc: f2c)] "GET /cost/"   
[Network Analyzer (13fc: f2c)]   (Sid:  1) Client -> Server : 281 bytes (Service=HTTP)
[Network Analyzer (13fc: f2c)]   (Sid:  1) Server -> Client : 280 bytes  (Service=HTTP)
[Web Request      (13fc: f2c)] "GET /cost/login.struts"   
[Network Analyzer (13fc: f2c)]   (Sid:  1) Client -> Server : 454 bytes (Service=HTTP)
[Network Analyzer (13fc: f2c)]   (Sid:  1) Server -> Client : 285 bytes  (Service=HTTP)
sdlkfj7 你那怎么是这个样子的呢
作者: higkoo    时间: 2007-8-25 09:47
原帖由 haiquan180 于 2007-8-24 18:07 发表
[Network Analyzer (13fc: f2c)] Address lookup for testserver = 10.1.22.43
[Network Analyzer (13fc:1394)] Address lookup for testserver = 10.1.22.43
[Network Analyzer (13fc:1394)] Request Connec ...


这个程序,就是之前发贴“回放失败”
http://bbs.51testing.com/thread-87592-1-1.html
后来改成URL录制方式,协议只有HTTP



目前我的方法:
录制两个同样的动作,查找动态值,确定需要关联的,然后使用
web_reg_save_param 手动定义参数
用法都是对照帮助文件 或 网上的文章,不过实际应用中总有些和别人不同的地方。

没有一个官方的详细说明 sdlkfj7

你们手动关联是怎么做的呢?大概说一下,我回去再琢磨一下。
作者: ebuluo    时间: 2007-9-10 19:10
有没有这种可能,虽然出现的可关联处很多,但是你并没有找对最终需要的那个,也有可能是第3个,第4个啊,我建议你选成all,然后全部打印出来做一下比较
作者: higkoo    时间: 2007-9-11 11:59
原帖由 ebuluo 于 2007-9-10 19:10 发表
有没有这种可能,虽然出现的可关联处很多,但是你并没有找对最终需要的那个,也有可能是第3个,第4个啊,我建议你选成all,然后全部打印出来做一下比较



被安排到其它项目了,有机会接触类似问题再跟贴
作者: SWeiNi    时间: 2007-9-11 17:48
服务器在每个浏览器第一次跟它要数据时,都会在数据中夹带一个唯一的辨识码,接下来就会利用这个辨识码来辨识跟它要数据的是不是同一个浏览器。一般称这个辨识码为Session ID。对于每个新的交易,服务器都会产生新的Session ID给浏览器。而VuGen还是用旧的Session ID向服务器要数据,服务器会发现这个Session ID是失效的或是它根本不认识这个Session ID,就不会传送正确的网页数据给VuGen了sdlkfj5
作者: tongfenglcz    时间: 2007-9-20 09:41
原帖由 今天有雾 于 2007-8-24 17:06 发表
ord 的意思,如果当前出现相同的匹配项,那么表示取的是第六次的内容,我记得以前有本书上是这么说的,不知道对不对,如果不对,请大家及时纠正


ord是匹配项的顺序或者出现的个数(注意是occurrencenumber不是occurrence times),默认值为1,如果指定为‘All’,ord就把参数值存储在一个数组里,如
web_url("Visitors",
       "URL=/cntmi/soft/QA/test/cntmi.html/35346546--
          4784428>wellcome",

       "TargetFrame=",

       "RecContentType=text/html",

       "SupportFrames=0",

        LAST);

35346546-- 478442每次是变动的,手动关联如下:
web_req_save_param ("pram", "NOTFOUND=ERROR", "LB=cntmi.html/","RB=>wellcome", "ORD=6", LAST);


web_url("Visitors",
       "URL=/cntmi/soft/QA/test/cntmi.html/{pram}>wellcome",

       "TargetFrame=",

       "RecContentType=text/html",

       "SupportFrames=0",

        LAST);
注意这里的6是匹配项出现于URL的第6项
如有理解错误  请及时更正 谢谢
作者: tongfenglcz    时间: 2007-9-20 09:49
标题: 回复 #1 higkoo 的帖子
我发现问题所在了,如果说的不对请大家指正。
通过楼主贴出来的代码,我发现楼主的右边界不一致,就是说指定一个右边界是不够的,因为它不一致---有时是”}&type=0101”有时是“”。这种情况下,指定”“为可选择的右边界(Alternate right boundary )。
作者: anglix    时间: 2007-9-20 13:10
标题: 回复 #25 tongfenglcz 的帖子
支持!




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2