html tool

2014年9月15日星期一

loadrunner for web_add_cookie

问题: 开发人员交流,webIM未登陆用户本地cookies设置超时time为1年,脚步单个运行都是ok的,但在负载测试中没有看到提交的数据,看了是脚步的cookies问题。
go了一下处理如下:
1. add:http://easyloadrunner.blogspot.com/2013/06/some-tips-and-tricks.html
"Delete (or comment out) all the “web_add_cookie” statements in the script. Some applications use explicit cookies to keep track of users. Therefore cookies statements have to be commented out otherwise old cookies are sent to the server again and it will not work. "
1.1 add: https://groups.google.com/forum/#!topic/lr-loadrunner/myw9ZQKhN-I
"
no need to correlate those values in web_add_cookie.....u can remove or comment those things from ur script...it is better to remove those things from the script....it doesnot make any difference to the script.
- show quoted text -
"
[popexizhi:这里的意见都是remove ,delete or comment ,可以测试一下]

2.add:https://groups.google.com/forum/#!topic/lr-loadrunner/z5ZlL-Gw4WU
Hi Franklin, 

We also has got a similar kind of situation 
What we did is we paramatrized the last 6 digits by using the 
parameter type as "Random Number" 

and Radom Rage will be from 1 to 999999 then select %06lu and update 
value on each Iteration..... 

it worked for me. Try it and let me know.... Thanks 

With Regards, 
k.Srihari 
[popexizhi:这个是对cookie存储值直接参数化后6位了,可以测试一下]

3.add:http://www.51testing.com/html/25/349125-243033.html
--------------------------------------------------------------------------
web_add_cookie 这个的函数原来真的能过逃过登录,哈哈,这个苦苦纠结我的问题呀。
函数原型:int web_add_cookie( const char *Cookie);
其中 cookie参数列表格式添加如下:
Defines the cookie to add or modify. The Cookie parameter has the following format:
name=VALUE; (required) //需要添加的cookie变量名=变量值,必须有
domain=DOMAIN_NAME; (required) 需要cookie的域名,必须有
expires=DATE;  失效日期 可以可无,最好有。又 错了,该字段是根据服务端设置的,服务端设置可以保存多长时间,就保存多长时间,Lr在模拟时该时间一般要在服务端允许的时间范围内,但是不在范围内好像 也不报错,估计也不会有用,有的cookie是根据session来的,比如截图中的cookie有效期为end of session,意思就是session死了,cookie也就失效了,所以你设置再长时间也没有用啦。path=PATH; (default path is "/") cookie路径,默认是当前路径还是根目录呀?这个/目录到底是哪里呢?都 不是,该path路径的意思是cookie的适应范围,/代表该cookie从该程序的根目录起适用。这个也是要根据服务端设置来的,看截图的path路 径为/,表示呀该cookie从该应用的根目录开始适用,lr中按照此设置即可,当然也可以设置成根目录以下的目录,可是你客户端怎么知道根目录以下还有 哪些目录呢?哈哈,所以这能照抄服务端返回的目录啦。使用办法,在firefox浏览器中运行一次实际的登录过程,登录过程中开启httpfox插件,获取接受到的cookies各个字段的值,然后加到lr的初始化里(vuser_init()),绕过登录。
代码如下:
web_add_cookie ("tonido-login-seed-10001=588831e0-2d20-43bf-8aad-979590571e68; path=/; expires=Wednesday, 09–Nov–2011 23:12:40 GMT; domain=kortide.tonidoid.com");

web_add_cookie ("tonido-login-hash-10001=df420fa77e1facf1c5ad1d3de3b5ee007bffcf09; path=/; expires=Wednesday, 09–Nov–2021 23:12:40 GMT; domain=kortide.tonidoid.com");

web_add_cookie ("tonido-login-user-10001=kortide@tonidoid.com; path=/; expires=Wednesday, 09–Nov–2011 23:12:40 GMT; domain=kortide.tonidoid.com");

参数里的name,value,path,domain的值都是可以直接从httpfox中获取到的,至于expires你可以随便写,只要是未来时间即可。具体可看截图哈。
添加完cookie后,那些需要登录后才能进行的操作,再也不用登录后再操作了,因为登录实在是太消耗时间了,测试时遇到tonidoid只能同时登录5个用户的限制,我想做超过5个用户的并发场景,一直模拟不出来,这下应该能解决了,一会试试。
千真万确,解决了,哈哈。
http://tbaike.com/index.php?category-view-6.html 一个测试类的网站

又尝试写了一个函数自动获取页面换回的cookie:
int login(char cookies[10][100] )
{
char  cookie[50]; // The formatted value of outFlightParam
int len,i;
        web_reg_save_param("cookie",
        "LB=Set-Cookie:",
        "RB=HttpOnly",
        "ORD=ALL",
        "Search=headers",
        LAST);
    web_custom_request("loginprofile",
        "URL=http://url",
        "Method=POST",
        "Resource=0",
        "RecContentType=text/xml",
        "Mode=HTML",
        "EncType=text/plain; charset=utf-8",
        "Body=profile={profile}&safemode=0&autologin=1&password={password}",
        LAST);
        len=atoi(lr_eval_string("{cookie_count}"));
        for (i=1;i<=len;i++) {
            sprintf(cookie,"{cookie_%d}",i);
            sprintf(cookies[i-1],"%s",lr_eval_string(cookie));
            lr_output_message("cookies %s",cookies[i-1]);

}

结果ok~~
---------------------------------------------------------------------------------
[popexizhi:这个绝对是个惊喜,可以测试一下这个函数:)]

没有评论:

发表评论