51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 2829|回复: 16
打印 上一主题 下一主题

[原创] 录制下来的脚本运行时间和业务实际时间不一致?web_reg_save_param的用法求助

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2008-3-7 14:57:44 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
查询某一列表,脚本录制下来就一个请求,但有思考时间,大概8秒(不一定),若撇开思考时间,脚本执行这个请求非常快,1秒钟不到,而这个请求就是对数据库的一个查询操作,这条sql直接连数据库查询花费了12秒左右的时间。实际业务中显示这个列表也差不多是12秒左右。
如果运行脚本包含这个思考时间的话,一个vuser好像跟实际是接近的,但多用户并发时思考时间始终不会因并发用户数而增加的,但实际软件中多用户查询是要慢的,对于这种情况怎么处理?这个脚本录制地有问题吗?(浏览器的缓存机制已经取消)
这个请求的脚本是这样的

        web_custom_request("Manager!getListItemLevelGrid.action_2",
                "URL=http://192.168.0.114:9080/XMGL/pages/Item/Manager!getListItemLevelGrid.action",
                "Method=POST",
                "Resource=0",
                "RecContentType=text/html",
                "Referer=http://192.168.0.114:9080/XMGL/pages/ItemList.htm",
                "Snapshot=t12.inf",
                "Mode=HTML",
                "EncType=text/xml; charset=UTF-8",
                "Body=<Request><Param><Name><![CDATA[hsql]]></Name><Value><![CDATA[select distinct o \tfrom ViewItemListInfo o,OperEnterprise op,\t\t Operator jo\twhere op.id.enterpriseGuId=o.enterpriseGuid and o.delflag is null and \t\t((o.infoguid=jo.divisionGuId \t\t\tand o.infotype=2 and jo.enIsbnCode='310001')\t\t\tor (o.infoguid=5937 and o.infotype=1)) \t\tand o.opertime = (select max(wl.subTime) from WorkLog wl where wl.itemGuid=o.id.itemGuid and wl.exchangeCode in('SEND','RESEND','ZJ','REVERT','PRESENT')) "
                "\t\tand o.year=2008\t\tand jo.guId=5937\t\tand NVL(o.status,0)<>-1 \t\tand NVL(o.status,0)<>10      and o.exCode<>'ITEMSAVE' and o.exCode<>'SAVE'\t\tand op.id.operatorGuId=5937 and op.id.year=2008 order by o.opertime desc]]></Value></Param><Param><Name><![CDATA[condition]]></Name><Value><![CDATA[]]></Value></Param><Param><Name><![CDATA[enGuid]]></Name><Value><![CDATA[_rootId]]></Value></Param></Request>\r\n",
                LAST);

[ 本帖最后由 newtester2008 于 2008-3-11 17:21 编辑 ]
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
 楼主| 发表于 2008-3-7 18:03:59 | 只看该作者
实际业务场景运行时,数据库服务器CPU使用率瞬间达到80-100%,而脚本运行时,数据库服务器CPU使用率基本没什么变化,脚本运行时,没有真的去执行这条sql吗?
应用服务器是Apache+Websphere+Unix,数据库服务器win2ksrv+Oracle9.2
数据库服务器是普通PC,配置不是很好,但如上所述的这个问题是怎么回事呢?请求帮助
回复 支持 反对

使用道具 举报

该用户从未签到

3#
发表于 2008-3-9 10:47:01 | 只看该作者
数据都正确返回了吗?
回复 支持 反对

使用道具 举报

该用户从未签到

4#
 楼主| 发表于 2008-3-9 13:18:57 | 只看该作者
原帖由 Zee 于 2008-3-9 10:47 发表
数据都正确返回了吗?

oho,回放快照显示,每个服务器响应的body部分都是为空的。

经对比,客户端请求的header部分,录制和回放存在一些区别
录制:
request-type: xmlhttp
Cookie: _grid2DataCell0=grid1_colWidth%3D100%2C187%2C100%2C130%2C169%2C100%2C100%2C100%2C100%2C100%2C100%2C100%2C100%2C100%2C100; JSESSIONID=0000PK9LM1YzCzPTRn_Zn167P8X:-1
回放:
Cookie: _grid2DataCell0=grid1_colWidth%3D100%2C187%2C100%2C130%2C169%2C100%2C100%2C100%2C100%2C100%2C100%2C100%2C100%2C100%2C100

录制的cookie存在JSESSIONID,而回放不存在。这是否是记录登录用户的临时产生的一个sessionid,每次都在变?(录制的每一个custom request的这段cookie内容都是一样的)
当脚本回放时,这个sessionid已经失效,导致无法识别登录用户从而无法返回真实数据?

可以这么理解吗?如何来解决这个问题?

录制的脚本中不存在sessionid,在客户端请求的header的cookie中
在初始的action中,第一句就是web_add_cookie("_grid2DataCell0=grid1_colWidth%3D100%2C187%2C100%2C130%2C169%2C100%2C100%2C100%2C100%2C100%2C100%2C100%2C100%2C100%2C100; DOMAIN=192.168.0.114

怎么捕捉这个JSESSIONID并使该脚本有效执行?

[ 本帖最后由 newtester2008 于 2008-3-9 19:36 编辑 ]
回复 支持 反对

使用道具 举报

该用户从未签到

5#
发表于 2008-3-9 22:12:15 | 只看该作者
关联一下。
回复 支持 反对

使用道具 举报

该用户从未签到

6#
 楼主| 发表于 2008-3-10 09:41:15 | 只看该作者
原帖由 Zee 于 2008-3-9 22:12 发表
关联一下。

扫描关联,没有找到要关联的内容?
回复 支持 反对

使用道具 举报

该用户从未签到

7#
 楼主| 发表于 2008-3-10 09:49:08 | 只看该作者
录制的脚本中不存在sessionid,在树->客户端请求->header的cookie中存在JSESSIONID
回复 支持 反对

使用道具 举报

  • TA的每日心情
    开心
    2014-12-26 13:34
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

    8#
    发表于 2008-3-10 10:32:05 | 只看该作者

    关联

    不能自动关联 就需要手动设置关联喔……
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    9#
     楼主| 发表于 2008-3-10 20:04:08 | 只看该作者
    关联也需要通过web_reg_save_param,把sessionid赋予一参数,然后在脚本中把相关的sessionid用该参数替换。可我的脚本中是不存在sessionid的啊
    是我不理解web_reg_save_param的含义用法吗?
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    10#
     楼主| 发表于 2008-3-10 20:26:43 | 只看该作者
    再说说我的脚本
    web_custom_request("login.in",
      "URL=http://192.168.0.114:9080/XMGL/login.in",
      "Method=POST",
      "Resource=0",
      "RecContentType=text/html",
      "Referer=http://192.168.0.114:9080/XMGL/framework/login.htm",
      "Snapshot=t4.inf",
      "Mode=HTML",
      "EncType=text/xml; charset=UTF-8",
      "Body=<Request><aram><Name><![CDATA[operatorCode]]></Name><Value><![CDATA[shiqiqi]]></Value></Param><aram><Name><![CDATA[password]]></Name><Value><![CDATA[123456]]></Value></Param></Request>\r\n",
      LAST);

    web_url("index.htm",
      "URL=http://192.168.0.114:9080/XMGL/framework/index.htm?B565EB169B36D639BB723E0BB0E9303F",
      "Resource=0",
      "RecContentType=text/html",
      "Referer=",
      "Snapshot=t5.inf",
      "Mode=HTML",
      EXTRARES,
      "Url=images/bg_left2.gif", "Referer=http://192.168.0.114:9080/XMGL/framework/index.htm?B565EB169B36D639BB723E0BB0E9303F", ENDITEM,
      "Url=htc/tree/Tree.htc", "Referer=", ENDITEM,
      "Url=images/bg_copyright.gif", "Referer=http://192.168.0.114:9080/XMGL/framework/index.htm?B565EB169B36D639BB723E0BB0E9303F", ENDITEM,
      "Url=images/bg_bt.gif", "Referer=http://192.168.0.114:9080/XMGL/framework/index.htm?B565EB169B36D639BB723E0BB0E9303F", ENDITEM,
      "Url=htc/tree/constant.js", "Referer=http://192.168.0.114:9080/XMGL/framework/index.htm?B565EB169B36D639BB723E0BB0E9303F", ENDITEM,
      "Url=htc/tree/public.js", "Referer=http://192.168.0.114:9080/XMGL/framework/index.htm?B565EB169B36D639BB723E0BB0E9303F", ENDITEM,
      "Url=htc/tree/Tree.js", "Referer=http://192.168.0.114:9080/XMGL/framework/index.htm?B565EB169B36D639BB723E0BB0E9303F", ENDITEM,
      "Url=htc/tree/Display.js", "Referer=http://192.168.0.114:9080/XMGL/framework/index.htm?B565EB169B36D639BB723E0BB0E9303F", ENDITEM,
      "Url=htc/tree/Row.js", "Referer=http://192.168.0.114:9080/XMGL/framework/index.htm?B565EB169B36D639BB723E0BB0E9303F", ENDITEM,
      "Url=htc/tree/TreeNode.js", "Referer=http://192.168.0.114:9080/XMGL/framework/index.htm?B565EB169B36D639BB723E0BB0E9303F", ENDITEM,
      "Url=htc/tree/event.js", "Referer=http://192.168.0.114:9080/XMGL/framework/index.htm?B565EB169B36D639BB723E0BB0E9303F", ENDITEM,
      "Url=htc/tree/DataSource.js", "Referer=http://192.168.0.114:9080/XMGL/framework/index.htm?B565EB169B36D639BB723E0BB0E9303F", ENDITEM,
      "Url=images/loadingbar.swf", "Referer=http://192.168.0.114:9080/XMGL/framework/index.htm?B565EB169B36D639BB723E0BB0E9303F", ENDITEM,
      LAST);

    web_custom_request这个请求,服务器响应的body部分如下:
    Body:
    ------------------------------------------
    <key>B565EB169B36D639BB723E0BB0E9303F</key>



    这个是根据登录用户随机产生的数值,每次都在变。该段脚本的客户端请求header的cookie中还没有JSESSIONID


    web_url("index.htm", .......这段脚本中,header的cookie中就添加了JSESSIONID,之后的每个web_custom_request web_url的客户端请求header的cookie中都带有JSESSIONID


    针对这种情况,应该如何处理?

    [ 本帖最后由 newtester2008 于 2008-3-10 20:32 编辑 ]
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    11#
    发表于 2008-3-11 00:09:03 | 只看该作者
    关联的数据,不是在脚本中去找的。要到server response中去找。
    如果不是本地生成的动态值,这个值是从服务器传过来的。就可以检查出来。
    你去看看generator log.
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    12#
     楼主| 发表于 2008-3-11 09:51:35 | 只看该作者
    回放日志中找B565EB169B36D639BB723E0BB0E9303F,第一次就是出现在http://192.168.0.114:9080/XMGL/framework/index.htm?B565EB169B36D639BB723E0BB0E9303F

    在生成日志中显示
    $$$$$$ Response Header For Transaction With Id 17 Ended $$$$$$

    ****** Response Body For Transaction With Id 17 ******
    <key>B565EB169B36D639BB723E0BB0E9303F</key>
    $$$$$$ Response Body For Transaction With Id 17 Ended $$$$$$

    web_custom_request("login.in",   之前添加
    web_reg_save_param("userid","LB=<key>","RB=</key>","Search=All",LAST);
    lr_output_message ("%s", lr_eval_string("{userid}"));

    回放提示“错误 -26377: 找不到请求的参数“userid”的匹配项”
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    13#
    发表于 2008-3-11 13:24:23 | 只看该作者
    是不是这个web_reg_save_param("userid","LB=<key>","RB=</key>","Search=All",LAST);函数位置放的不对呀?
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    14#
     楼主| 发表于 2008-3-11 15:11:45 | 只看该作者
    原帖由 hhy0824 于 2008-3-11 13:24 发表
    是不是这个web_reg_save_param("userid","LB=","RB=","Search=All",LAST);函数位置放的不对呀?


    放web_custom_request或web_url之前都不行,况且B565EB169B36D639BB723E0BB0E9303F是web_custom_request这段脚本server返回的结果,放在这之前应该没错吧
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    15#
     楼主| 发表于 2008-3-11 19:55:25 | 只看该作者
    大家再指点一下么,拜托了

    [ 本帖最后由 newtester2008 于 2008-3-11 20:00 编辑 ]
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    16#
     楼主| 发表于 2008-3-12 14:00:44 | 只看该作者
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    17#
     楼主| 发表于 2008-3-13 11:18:45 | 只看该作者
    这个问题解决了,web_reg_save_param用法并没有错,URL直接添加了用户代码和密码,返回成功
    web_reg_save_param ("UserID","LB=<key>","RB=</key>","Search=body",LAST);

    web_custom_request("login.in",
      "URL=http://192.168.0.114:9080/XMGL/login.in?operatorCode=shiqiqi&password=123456",
      "Method=POST",
      "Resource=0",
      "RecContentType=text/html",
      "Referer=http://192.168.0.114:9080/XMGL/framework/login.htm",
      "Snapshot=t4.inf",
      "Mode=HTML",
      "EncType=text/xml; charset=UTF-8",
      //"Body=<Request><aram><Name><![CDATA[operatorCode]]></Name><Value><![CDATA[shiqiqi]]></Value></Param><aram><Name><![CDATA[password]]></Name><Value><![CDATA[123456]]></Value></Param></Request>\r\n",
      LAST);

    lr_output_message ("The UserID is: %s",lr_eval_string ("{UserID}"));
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

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

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

    GMT+8, 2024-11-14 20:35 , Processed in 0.084264 second(s), 27 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

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