51Testing软件测试论坛

标题: 用LR进行WEB测试,关联cookie出错! [打印本页]

作者: wethair    时间: 2006-5-23 17:43
标题: 用LR进行WEB测试,关联cookie出错!
比较长~,偶慢慢说~

1,用LR录制一个内部网站的登录页面,用URL录制的。录制后并编辑的脚本如下:
vuser_init()
{
web_set_max_html_param_len("1024");

//对cookie进行的关联
// [WCSPARAM User_Cookie 62 xSGGhP3KdyMJGK53R66QMghW2sK1pp71CzF1LH3zVLJt4jcl5Dp!-882202093] Parameter {User_Cookie} created by Correlation Studio
        web_reg_save_param("User_Cookie",
                "LB=Set-Cookie: JSESSIONID=G",
                "RB=;",
                "Ord=1",
                "RelFrameId=1",
                "Search=Headers",
                LAST);

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

        web_concurrent_start(NULL);
        web_url("css1.css",
                "URL=http://192.168.1.9/lab/css/css1.css",
                "Resource=1",
                "Referer=http://192.168.1.9/lab/LoginAction.do",
                LAST);

        web_url("button-dl.gif",
                "URL=http://192.168.1.9/lab/images/button-dl.gif",
                "Resource=1",
                "RecContentType=image/gif",
                "Referer=http://192.168.1.9/lab/LoginAction.do",
                LAST);

        web_concurrent_end(NULL);


        web_concurrent_start(NULL);
        web_url("bg3.jpg",
                "URL=http://192.168.1.9/lab/images/bg3.jpg",
                "Resource=1",
                "RecContentType=image/jpeg",
                "Referer=http://192.168.1.9/lab/LoginAction.do",
                LAST);

        web_url("loginbg.jpg",
                "URL=http://192.168.1.9/lab/images/loginbg.jpg",
                "Resource=1",
                "RecContentType=image/jpeg",
                "Referer=http://192.168.1.9/lab/LoginAction.do",
                LAST);

        web_concurrent_end(NULL);

        //对当前关联的参数进行输出
        lr_log_message("the init param is:%s", lr_eval_string("{User_Cookie}"));

        web_submit_data("LoginAction.do",
                "Action=http://192.168.1.9/lab/LoginAction.do",
                "Method=POST",
                "RecContentType=text/html",
                "Referer=http://192.168.1.9/lab/LoginAction.do",
                "Snapshot=t2.inf",
                "Mode=HTTP",
                ITEMDATA,
                "Name=companyId", "Value=1", ENDITEM,
                "Name=username", "Value={user}", ENDITEM,
                "Name=password", "Value={passwd}", ENDITEM,
                LAST);

2,运行到web_submit_data就报错了:vuser_init.c(73): Error -26612: HTTP Status-Code=500 (Internal Server Error) for "http://192.168.1.9/lab/LoginAction.do"          [MsgId: MERR-26612]
vuser_init.c(73): web_submit_data highest severity level was "ERROR", 3521 body bytes, 237 header bytes          [MsgId: MMSG-27178]
Abort was called from an action.

完整的输出如下:
Virtual User Script started
Starting action vuser_init.
Web Turbo Replay of LoadRunner 7.80.0 for WINXP; Web build 2271          [MsgId: MMSG-27143]
Run-Time Settings file: "E:\fzhy\try_script\web_url\\default.cfg"          [MsgId: MMSG-27141]
vuser_init.c(7): web_set_max_html_param_len was successful          [MsgId: MMSG-27182]
vuser_init.c(11): Registering web_reg_save_param was successful          [MsgId: MMSG-27180]
vuser_init.c(19): Redirecting "http://192.168.1.9/lab" (redirection depth=0)          [MsgId: MMSG-26694]
vuser_init.c(19): To location "http://192.168.1.9/lab/"          [MsgId: MMSG-26693]
vuser_init.c(19): Redirecting "http://192.168.1.9/lab/" (redirection depth=1)          [MsgId: MMSG-26694]
vuser_init.c(19): To location "http://192.168.1.9/lab/login.jsp"          [MsgId: MMSG-26693]
vuser_init.c(19): Redirecting "http://192.168.1.9/lab/login.jsp" (redirection depth=2)          [MsgId: MMSG-26694]
vuser_init.c(19): To location "http://192.168.1.9/lab/LoginAction.do"          [MsgId: MMSG-26693]
vuser_init.c(19): web_url was successful, 9471 body bytes, 915 header bytes, 56 chunking overhead bytes          [MsgId: MMSG-27175]
vuser_init.c(28): web_concurrent_start was successful          [MsgId: MMSG-27182]
vuser_init.c(29): Registering web_url was successful          [MsgId: MMSG-27180]
vuser_init.c(35): Registering web_url was successful          [MsgId: MMSG-27180]
vuser_init.c(42): web_concurrent_end was successful, 10487 body bytes, 316 header bytes          [MsgId: MMSG-27176]
vuser_init.c(45): web_concurrent_start was successful          [MsgId: MMSG-27182]
vuser_init.c(46): Registering web_url was successful          [MsgId: MMSG-27180]
vuser_init.c(53): Registering web_url was successful          [MsgId: MMSG-27180]
vuser_init.c(60): web_concurrent_end was successful, 109454 body bytes, 346 header bytes          [MsgId: MMSG-27176]
the init param is:yTWkDZQdLw6ncsYYHm1Xx1L9ZVgTpcybkffh2mJLRVQBDr7zMyb!-882202093            //关联参数的输出
vuser_init.c(73): Error -26612: HTTP Status-Code=500 (Internal Server Error) for "http://192.168.1.9/lab/LoginAction.do"          [MsgId: MERR-26612]
vuser_init.c(73): web_submit_data highest severity level was "ERROR", 3521 body bytes, 237 header bytes          [MsgId: MMSG-27178]
Abort was called from an action.

3,查看client request和server response

开始的client Request如下:
Header:
------------------------------------------
GET /lab HTTP/1.1
Accept: */*
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; (R1 1.3); .NET CLR 1.1.4322)
Connection: Keep-Alive
Host: 192.168.1.9

Body:
------------------------------------------
No Body was sent for this HTTP request.


开始的Server Response如下:
Header:
------------------------------------------
HTTP/1.1 200 OK
Date: Tue, 23 May 2006 08:59:02 GMT
Content-Length: 5459
Content-Type: text/html;charset=GBK
Set-Cookie: JSESSIONID=GyTXDbXrn8K9BwpyMvtTGXnybJzT6HLDPkJjV4JFqvSVXQpfH90q!-882202093; path=/


SubmitData的Client Request如下:
Header:
------------------------------------------
POST /lab/LoginAction.do HTTP/1.1
Content-Type: application/x-www-form-urlencoded
Referer: http://192.168.1.9/lab/LoginAction.do
Accept: */*
Cache-Control: no-cache
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; (R1 1.3); .NET CLR 1.1.4322)
Connection: Keep-Alive
Host: 192.168.1.9
Cookie: JSESSIONID=GyTXDbXrn8K9BwpyMvtTGXnybJzT6HLDPkJjV4JFqvSVXQpfH90q!-882202093
Content-Length: 37

Body:
------------------------------------------
"companyId=1&username=lab&password=lab"


SubmitData的Server Response如下:
Header:
------------------------------------------
HTTP/1.1 500 Internal Server Error
Date: Tue, 23 May 2006 08:59:03 GMT
Content-Length: 3521
Content-Type: text/html
Set-Cookie: JSESSIONID=GyTXC1QgGv0tRxJCQQb7S7mCKfjJpnPRTN1jqyNqpW7GWdWprmLc!-882202093; path=/
Connection: Close

4,偶地问题:
a:为什么关联保存的参数中的cookie和SubmitData时Header里的cookie不一样?
b:明明SubmitData的cookie和最初的server端发送的cookie一样,为什么SubmitData还返回500错误?(用户名和密码是正确的哈~)
c:为什么SubmitData又返回一个cookie?

哪位大侠看明白并且发现问题了?在下不胜感激~~~~~~
作者: ilovejolly    时间: 2006-5-23 20:42
为什么要关联cookie
作者: wethair    时间: 2006-5-23 22:00
标题: 啊啊阿~斑竹~~~~
(脸红~),忘了说最初的问题,不关联cookie,还是会出现2的那个问题:
运行到web_submit_data就报错了:vuser_init.c(73): Error -26612: HTTP Status-Code=500 (Internal Server Error) for "http://192.168.1.9/lab/LoginAction.do"          [MsgId: MERR-26612]
vuser_init.c(73): web_submit_data highest severity level was "ERROR", 3521 body bytes, 237 header bytes          [MsgId: MMSG-27178]
Abort was called from an action.
作者: wethair    时间: 2006-5-23 22:02
标题: 接上个~
所以我就做了个关联,如果不关联能够消除这个问题,哪当然就不用做了。。。。。
汗。。。。。我是8是很迷糊。。。。。。。。
作者: ilovejolly    时间: 2006-5-24 20:14
看server的log
作者: yuxingxin    时间: 2006-5-25 10:07
你将record和replay的log详细的比较一下,看看为什么回放时server汇报500 error,
另外,你也看看错误的内容是什么,可能会给你一点启发。
作者: rabbit_tian    时间: 2006-5-25 17:24
一般COOKIE是不用关联,再检查一下脚本,是否有服务器返回的参数
作者: wethair    时间: 2006-5-25 23:59
标题: 哈哈哈~问题解决了~!!!
谢谢斑竹!!谢谢楼上的各位!!!!!
其实解决的办法不是添加关联,大家说的对,不关联也可以.
我对比了录制的和回放的Client Request,把回放时header里面比录制里面缺少的内容,手工添加进去,运行OK啦!

代码如下:
vuser_init()
{
        web_url("lab",
                "URL=http://192.168.1.9/lab",
                "Resource=0",
                "RecContentType=text/html",
                "Referer=",
                "Snapshot=t1.inf",
                "Mode=HTTP",
                LAST);

        web_concurrent_start(NULL);
        web_url("css1.css",
                "URL=http://192.168.1.9/lab/css/css1.css",
                "Resource=1",
                "Referer=http://192.168.1.9/lab/LoginAction.do",
                LAST);

        web_url("button-dl.gif",
                "URL=http://192.168.1.9/lab/images/button-dl.gif",
                "Resource=1",
                "RecContentType=image/gif",
                "Referer=http://192.168.1.9/lab/LoginAction.do",
                LAST);

        web_concurrent_end(NULL);


        web_concurrent_start(NULL);
        web_url("bg3.jpg",
                "URL=http://192.168.1.9/lab/images/bg3.jpg",
                "Resource=1",
                "RecContentType=image/jpeg",
                "Referer=http://192.168.1.9/lab/LoginAction.do",
                LAST);

        web_url("loginbg.jpg",
                "URL=http://192.168.1.9/lab/images/loginbg.jpg",
                "Resource=1",
                "RecContentType=image/jpeg",
                "Referer=http://192.168.1.9/lab/LoginAction.do",
                LAST);

        web_concurrent_end(NULL);

       //-----添加的代码
       web_add_header("Accept_Encoding","gzip,deflate");   
       web_add_header("Accept_Language","zh-cn");
      //--------------------

        web_submit_data("LoginAction.do",
                "Action=http://192.168.1.9/lab/LoginAction.do",
                "Method=POST",
                "RecContentType=text/html",
                "Referer=http://192.168.1.9/lab/LoginAction.do",
                "Snapshot=t2.inf",
                "Mode=HTTP",
                ITEMDATA,
                "Name=companyId", "Value=1", ENDITEM,
                "Name=username", "Value={user}", ENDITEM,
                "Name=password", "Value={passwd}", ENDITEM,
                LAST);

再次对大家表示感谢!!!!!希望我的问题也能给别人一点提示!
作者: chris78    时间: 2006-7-21 17:37
其实在录制脚本时,选择录制header就可以解决这个问题
作者: soswhp    时间: 2007-5-16 10:14
同样的问题,我选择了录制header,但还有错误.
recording options->advanced->headers,里面选择,没有错吧?
作者: soswhp    时间: 2007-5-16 13:37
顶!!!
作者: machao514    时间: 2007-5-16 14:26
好文章
作者: soswhp    时间: 2007-5-17 08:52
原帖由 soswhp 于 2007-5-16 10:14 发表
同样的问题,我选择了录制header,但还有错误.
recording options->advanced->headers,里面选择,没有错吧?

有人知道原因吗?
作者: xuyan0568    时间: 2007-6-5 08:43
标题: 顶,感谢
顶,感谢
作者: freshman0216    时间: 2007-6-6 15:04
学到了一种解决问题的思路
作者: caiw0418    时间: 2010-11-22 17:11
很好
作者: jj_ljw    时间: 2010-11-22 17:14
这个要顶,可以借鉴解决问题
作者: 小陆123    时间: 2016-8-5 11:03
不错




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