51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

查看: 9758|回复: 15
打印 上一主题 下一主题

[原创] LR录制方式的区别(URL和HTML)讨论,url方式回放出错。请高手帮忙

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2008-10-30 17:44:47 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
使用lr也一段时间了,但感觉在有些方面还是不完全清楚,今天做了如下的测试,来区别URL和HTML方式的不通,但没想明白。
对于url方式和html方式看过的资料如下:
1、基于浏览器的应用程序推荐使用HTML-Based Script。
2、不是基于浏览器的应用程序推荐使用URL-Based Script。
3、如果基于浏览器的应用程序中包含了Java Script并且该脚本向服务器产生了请求,比如DataGrid的分页按钮等,也要使用URL-Based Script方式录制。
4、基于浏览器的应用程序中使用了HTTPS安全协议,使用URL-Based Script方式录制。
今天测试用两种方法做测试,脚本如下:
1、html方式的脚本如下(脚本其实就是打开百度,增加了一个事物点,搜索‘mm'字段,查询完毕后停止)
#include "web_api.h"


Action()
{
        web_add_cookie("BAIDUID=95365BBCE4C6412151BC3D9C92D8D55D:FG=1; DOMAIN=www.baidu.com");

        web_url("www.baidu.com",
                "URL=http://www.baidu.com/",
                "Resource=0",
                "RecContentType=text/html",
                "Referer=",
                "Snapshot=t1.inf",
                "Mode=HTML",
                LAST);


        lr_start_transaction("selectmm");

        lr_think_time( 5 );

        web_add_cookie("BAIDUID=95365BBCE4C6412151BC3D9C92D8D55D:FG=1; DOMAIN=s.baidu.com");

        web_submit_form("s",
                "Snapshot=t2.inf",
                ITEMDATA,
                "Name=wd", "Value=mm", ENDITEM,
                EXTRARES,
                "Url=http://s.baidu.com/w.gif?path=http://www.baidu.com/s?wd=mm&t=1225349094218", "Referer=http://www.baidu.com/s?wd=mm", ENDITEM,
                LAST);


        lr_end_transaction("selectmm", LR_AUTO);

        return 0;
}
2、url方式的脚本如下(脚本过程同上)
Action()
{
        web_add_cookie("BAIDUID=95365BBCE4C6412151BC3D9C92D8D55D:FG=1; DOMAIN=www.baidu.com");

        web_url("www.baidu.com",
                "URL=http://www.baidu.com/",
                "Resource=0",
                "RecContentType=text/html",
                "Referer=",
                "Snapshot=t1.inf",
                "Mode=HTTP",
                LAST);

       
        web_add_cookie("BAIDUID=95365BBCE4C6412151BC3D9C92D8D55D:FG=1; DOMAIN=gimg.baidu.com");

        web_concurrent_start(NULL);

        web_url("baidu_logo.gif",
                "URL=http://www.baidu.com/img/baidu_logo.gif",
                "Resource=1",
                "RecContentType=image/gif",
                "Referer=http://www.baidu.com/",
                LAST);

        web_url("gs.gif",
                "URL=http://gimg.baidu.com/img/gs.gif",
                "Resource=1",
                "RecContentType=image/gif",
                "Referer=http://www.baidu.com/",
                LAST);

        web_concurrent_end(NULL);

        lr_think_time( 4 );

        lr_start_transaction("selectmm");

        lr_think_time( 6 );

        web_submit_data("s",
                "Action=http://www.baidu.com/s",
                "Method=GET",
                "EncType=",
                "RecContentType=text/html",
                "Referer=http://www.baidu.com/",
                "Snapshot=t2.inf",
                "Mode=HTTP",
                ITEMDATA,
                "Name=wd", "Value=mm", ENDITEM,
                LAST);

        web_add_cookie("BAIDUID=95365BBCE4C6412151BC3D9C92D8D55D:FG=1; DOMAIN=c.baidu.com");

        web_concurrent_start(NULL);

        web_url("logo-yy.gif",
                "URL=http://www.baidu.com/img/logo-yy.gif",
                "Resource=1",
                "RecContentType=image/gif",
                "Referer=http://www.baidu.com/s?wd=mm",
                LAST);

        web_url("c.gif",
                "URL=http://c.baidu.com/c.gif?t=0&q=mm&p=0&pn=1",
                "Resource=0",
                "RecContentType=text/html",
                "Referer=http://www.baidu.com/s?wd=mm",
                "Mode=HTTP",
                LAST);

        web_concurrent_end(NULL);

        web_add_cookie("BAIDUID=95365BBCE4C6412151BC3D9C92D8D55D:FG=1; DOMAIN=s.baidu.com");

        web_url("w.gif",
                "URL=http://s.baidu.com/w.gif?path=http://www.baidu.com/s?wd=mm&t=1225349330734",
                "Resource=1",
                "RecContentType=image/gif",
                "Referer=http://www.baidu.com/s?wd=mm",
                LAST);


        lr_end_transaction("selectmm", LR_AUTO);

        return 0;
}

脚本录制完成后,运行url方式报错,运行日志如下:
Ending action vuser_init.
Running Vuser...
Starting iteration 1.
Starting action Action.
Action.c(6): web_add_cookie was successful          [MsgId: MMSG-26392]
Action.c(8): web_url("www.baidu.com") was successful, 2035 body bytes, 208 header bytes          [MsgId: MMSG-26386]
Action.c(17): web_add_cookie was successful          [MsgId: MMSG-26392]
Action.c(19): web_concurrent_start was successful          [MsgId: MMSG-26392]
Action.c(21): Registering web_url("baidu_logo.gif") was successful          [MsgId: MMSG-26390]
Action.c(28): Registering web_url("gs.gif") was successful          [MsgId: MMSG-26390]
Action.c(35): web_concurrent_end was successful, 1580 body bytes, 568 header bytes          [MsgId: MMSG-26386]
Action.c(39): Notify: Transaction "selectmm" started.
Action.c(43): web_submit_data("s") was successful, 7114 body bytes, 168 header bytes          [MsgId: MMSG-26386]
Action.c(55): web_add_cookie was successful          [MsgId: MMSG-26392]
Action.c(57): web_concurrent_start was successful          [MsgId: MMSG-26392]
Action.c(59): Registering web_url("logo-yy.gif") was successful          [MsgId: MMSG-26390]
Action.c(66): Registering web_url("c.gif") was successful          [MsgId: MMSG-26390]
Action.c(66): Error -26563: Non-empty response body is invalid with HTTP Status Code 204 (No Content) for "http://c.baidu.com/c.gif?t=0&q=mm&p=0&pn=1"   [issued at Action.c(74)]          [MsgId: MERR-26563]
Action.c(66): Warning -26652: Response body length (1) does not match the Content-Length header specification (0)
for "http://c.baidu.com/c.gif?t=0&q=mm&p=0&pn=1"   [issued at Action.c(74)]          [MsgId: MWAR-26652]
Action.c(74): web_concurrent_end highest severity level was "ERROR", 1619 body bytes, 402 header bytes          [MsgId: MMSG-26388]
Action.c(74): Notify: Transaction "selectmm" ended with "Fail" status (Duration: 0.3087).Ending action Action.
Ending iteration 1.
Ending Vuser...
Starting action vuser_end.
Ending action vuser_end.
Vuser Terminated.

问题:为什么会有这样的错误信息呢?为了避免url错误,那我使用html方式来录制脚本,但这两种录制对与测试结果的影响有那些。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?(注-册)加入51Testing

x
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
 楼主| 发表于 2008-10-30 18:28:31 | 只看该作者
我从结果上看是显示script的一个错误,但查阅很多资料都显示URL-mode适合录制使用applet和/或javascript的浏览器应用程序
方式吗,为什么会出这个错误呢,是关联的问题吗
回复 支持 反对

使用道具 举报

该用户从未签到

3#
 楼主| 发表于 2008-10-30 18:30:11 | 只看该作者
将url方式的以下两句屏蔽,回放正常。又查阅了web_concurrent_end(NULL);的意思,但还是不清楚为什么报错,高手指点下吧
web_concurrent_end(NULL);
web_add_cookie("BAIDUID=95365BBCE4C6412151BC3D9C92D8D55D:FG=1; DOMAIN=s.baidu.com");
回复 支持 反对

使用道具 举报

该用户从未签到

4#
发表于 2008-10-31 17:20:16 | 只看该作者
web_concurrent_end函数的意思就是为了模拟HTML模式录制时的并发状态。
HTML模式录制是把一个页面全部录制在一个请求里面,然后再分开录制,所以在一个请求里面就会有包含全部信息;
而URL模式会把不同的请求分开录制,一个页面打开可能有非常多的请求,LR为了要在这个模式下模拟并发情况,就用web_concurrent这个函数把同一个页面并发的情况包括起来,这样在运行脚本的时候就同时进行请求。
回复 支持 反对

使用道具 举报

该用户从未签到

5#
发表于 2008-10-31 17:21:11 | 只看该作者
正常运行脚本的时候可以把web_add_cookie删掉。
回复 支持 反对

使用道具 举报

该用户从未签到

6#
发表于 2008-10-31 22:57:12 | 只看该作者
这个问题很好回答,用httpwatch看"URL=http://c.baidu.com/c.gif?t=0&q=mm&p=0&pn=1",请求是不存在也就是网站的问题,所以回放是报错,而这个web_concurrent_end highest severity level was "ERROR", 1619 body bytes, 402 header bytes是因为前面它里面这个函数报错才报错!web_url("c.gif",
                "URL=http://c.baidu.com/c.gif?t=0&q=mm&p=0&pn=1",
                "Resource=0",
                "RecContentType=text/html",
                "Referer=http://www.baidu.com/s?wd=mm",
                "Mode=HTTP",
                LAST);
从函数中可以看出,URL=http://c.baidu.com/c.gif?t=0&q=mm&p=0&pn=1",c.gif是从     "http://www.baidu.com/s?wd=mm",跳转来的,所以其实这个是从你查询结果的页面跳转的一个资源,如果你只是测试mm搜索,那么   ?t=0&q=mm&p=0&pn=1"这个完全可以去掉,况且这个资源本来就不存在
回复 支持 反对

使用道具 举报

该用户从未签到

7#
发表于 2008-10-31 23:10:59 | 只看该作者
你使用浏览器就别用url模式了,上面的回答很到位了
回复 支持 反对

使用道具 举报

该用户从未签到

8#
发表于 2008-12-26 11:43:47 | 只看该作者
查看源代码,错误提示中提到的c.gif是存在的。可是为什么找不到啊。
回复 支持 反对

使用道具 举报

该用户从未签到

9#
发表于 2008-12-26 11:46:42 | 只看该作者
原帖由 云层 于 2008-10-31 23:10 发表
你使用浏览器就别用url模式了,上面的回答很到位了

仁兄此言诧异。试用浏览器跟用不用url模式不是绝对的关系,当要访问的网页中含有java script的时候,有必要用url模式
回复 支持 反对

使用道具 举报

该用户从未签到

10#
发表于 2008-12-26 14:25:46 | 只看该作者
学习了!


转载一下别人的文章~

在跟使用Loadrunner工具使用者交流的过程中,经常有人提到这个问题,基于HTML(HyperText Markup Language 超文本置标语言)模式录制

与基于URL(Uniform Resource Locator的缩写,统一资源定位符,也被称为网页地址,是因特网上标准的资源的地址。)录制模式到底有什么

不同?为什么通常情况下我们都会去选择使用URL模式去录制我们的业务脚本?所以在这里我把我知道的东西写出来跟同行分享和交流:

HTML是一种高级别的录制模式,这种模式是基于“浏览器”或者说是“内容敏感”的。这种录制选项是让浏览器去决定在回放下载HTML资源,

哪些页面资源(比如图片或者Flash内容)是需要被下载。

URL是一种低级别的录制模式,这种录制选项不允许浏览器去确定哪些页面资源(比如图片或者Flash内容)是需要下载的。每项资源在录制回

话的过程中都被录制到脚本中。这种级别录制模式同时也会录制其他任何隐藏的对象,比如session ID(也就是会话ID)信息,包括发给服务

端和从服务端收到的session ID信息。

脚本方面的不同,HTML级别录制模式将生成的是web_submit_form 语句来提交终端用户可以看见或者修改的信息。当基于HTML模式在提交窗体

时遇到错误,你可以选择URL模式去录制任何从服务端发送过来的请求和资源。而URL基本录制模式将生成的是web_submit_data语句,这些语句

记录的是所有通过浏览器实际发送给服务端的信息。值得注意的是URL录制模式会录制那些HTML模式没有能录制到隐藏信息。通常情况下,隐藏

信息里面会包含session ID信息。

写到这里,熟悉的人可能应该明白为什么在通常的情况下,我们选择URL模式去录制我们基于Web(HTTP/HTML)协议的脚本,概括的说就是现在

的应用(或者说将来的应用)为了安全性,都会包含像session ID、token等动态信息。简单的说就是每一访问,服务端都会给客户端发送一个

描述会话的session信息,而session ID使用的是动态的生成技术。如果要是脚本能够正常回放,通常需要把这个动态的信息保存下来,这个需

要使用到correlation 技术(也就是关联技术)。在以后我会在我的博客里面继续写我对关联的理解(包括自动关联、手工关联、规则等实用

技术)。
回复 支持 反对

使用道具 举报

该用户从未签到

11#
发表于 2008-12-26 22:46:25 | 只看该作者
原帖由 caqwl 于 2008-12-26 11:46 发表

仁兄此言诧异。试用浏览器跟用不用url模式不是绝对的关系,当要访问的网页中含有java script的时候,有必要用url模式



你是做性能测试,不是功能测试,js大多数时候都不会影响你的性能测试,所以pass吧
回复 支持 反对

使用道具 举报

该用户从未签到

12#
发表于 2009-3-13 17:32:32 | 只看该作者

问题解决了没?

我也遇到同样的问题,不知楼主最终解决了没?如果解决了告诉解决办法,O(∩_∩)O谢谢!
回复 支持 反对

使用道具 举报

  • TA的每日心情
    奋斗
    2022-5-8 19:23
  • 签到天数: 137 天

    连续签到: 1 天

    [LV.7]测试师长

    13#
    发表于 2009-3-14 23:41:46 | 只看该作者
    原帖由 云层 于 2008-12-26 22:46 发表



    你是做性能测试,不是功能测试,js大多数时候都不会影响你的性能测试,所以pass吧


    还是得看你测试的目标了,目标不一样要测试的内容也不一样,例如说我要测试的只是WEB应用的性能,页面上的那些JS不属于应用的内容,那我就可以不管JS内容
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    14#
    发表于 2012-4-23 17:02:34 | 只看该作者
    这个问题我也遇到了,这个到底是怎么回事啊,高手求指教啊。
    为什么使用HTML方式录制回放能成功,使用URL方式录一样的内容就是回放报和楼主一样的错误。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    15#
    发表于 2012-4-24 17:07:15 | 只看该作者
    204不是错误,只是一种信息提示,用URL模式每个请求都单独访问所以状态会多点,用HTML就整合在一起你某些看不到了,其实一般来说不会有啥区别的
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    擦汗
    2016-3-16 15:27
  • 签到天数: 25 天

    连续签到: 1 天

    [LV.4]测试营长

    16#
    发表于 2012-4-24 17:32:09 | 只看该作者
    新手学习中!谢谢各位
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

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

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

    GMT+8, 2024-5-10 03:23 , Processed in 0.082313 second(s), 28 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

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