1 为什么要使用cookie模拟
从日常项目测试过程中的问题说起。
比如要进行论坛中的文件下载功能的测试。我们都知道只有登录用户才能进行下载操作,这样我们的测试过程可能就变成了先登录系统,然后再进行下载操作。在使用loadrunner设计脚本时就要先在初始化部分写登录脚本,然后再action中写下载操作,当单个用户运行时我们可能看不到什么问题。当用户并发量较多时,问题马上暴露出来了。大部分用户可能很长时间也没有下载成功,大量的初始化登录操作已经给系统造成了很大的压力,而在日常访问中,这种大量短时间登录的压力是不容易出现的。这样的测试结果可能无法达到我们的测试目标。
的确,不能处理较大的登录吞吐可能已经是系统的瓶颈了,我们可以通过这种全流程的测试方式发现登录的问题。但是后续的测试我们可能就无法进行下去了。当项目组解决了登录的吞吐问题时,可能项目工期已经十分紧张了,再进行重要的下载功能测试可能已经太晚了。
这种情况在测试过程中经常会出现,我们要如何绕过登录尽早的进行后续的下载操作呢?如果网站使用了cookie的机制,则我们可以尝试使用下面的方法。
2 怎么使用loadrunner模拟
Loadrunner的web函数中提供了几个关于cookie的函数。
web_remove_cookie()
web_add_cookie()
web_cleanup_cookies();
web_reg_add_cookie();
这里我们为了模拟cookie绕过登录使用web_add_cookie();
首先获取网站留在客户端上的cookie都存储了什么。通常主要内容包括名字,值,过期时间,作用域和路径,分为会话cookie和文件cookie。会话cookie存储在内存里,关闭浏览器后就没有了,这种很难模拟。文件cookie是将cookie信息写到硬盘上,关闭浏览器再次打开后仍可以使用。我们要模拟的就是这种存储在硬盘文件里的cookie。我们观察cookie文件的内容,如果使用ie的话,在“C:/Documents and Settings/用户名/Local Settings/Temporary Internet Files”中的用户名@域名的文件里,cookie存储都是加密的,所以我们直接看并看不出什么特别的东西,也搞不清楚具体是什么。这时我们借助IE webdeveloper 工具获取cookie值如下所示:
cdb_cookietime=2592000;cdb_smile=1D1; cdb_sid=71WKOd; cdb_auth=TzsVl16XRFahjqkfuWyoF5OzI%2BrekHgiy0YXJd8m1y9vq6aV4bg3GGMsa9s; cdb_visitedfid=20; cdb_onlineusernum=28
获得了cookie信息后,我们进行编辑loadrunner脚本。将cookie每个分号分行,使用UltraEdit进行列模式操作,在每句后面加上域名。(域名在webdeveloper的Attributes下也可以找到domain对应值),修改完成后如下。
web_add_cookie("cdb_cookietime=2592000;domain=172.16.1.3");
web_add_cookie("cdb_smile=1D1;domain=172.16.1.3");
web_add_cookie("cdb_sid=71WKOd;domain=172.16.1.3");
web_add_cookie("cdb_auth=TzsVl16XRFahjqkfuWyoF5OzI%2BrekHgiy0YXJd8m1y9vq6aV4bg3GGMsa9s;domain=172.16.1.3");
web_add_cookie("cdb_visitedfid=20;domain=172.16.1.3");
web_add_cookie("cdb_onlineusernum=28;domain=172.16.1.3");
把这些值放在要访问的url的web函数之前,你就可以绕过登录进行后续操作了。
如:
Action()
{
web_add_cookie("cdb_cookietime=2592000;DOMAIN=172.16.1.3");
web_add_cookie("cdb_smile=1D1;DOMAIN=172.16.1.3");
web_add_cookie("cdb_oldtopics=D280D39523D39418D;DOMAIN=172.16.1.3");
web_add_cookie("cdb_sid=eSuWgw;DOMAIN=172.16.1.3");
web_add_cookie("cdb_auth=TzsVl16XRFahjqkfuWyoF5OzI%2BrekHgiy0YXJd8m1y9vq6aV4bg3GGMsa9s;DOMAIN=172.16.1.3");
web_add_cookie("cdb_visitedfid=20;DOMAIN=172.16.1.3");
web_url("cookies",
"URL=http://172.16.1.3:8080/bbs/index.php",
"referer=http://172.16.1.3/newiweb/index/dealIndex.do?action=Index",
"Mode=HTML",
"RecContentType=text/html",
LAST
);
return 0;
}
最后注明一下:loadrunner的web录制功能是自动的增加cookie的,只要在cookie不过期的情况下,我们不需要手工的增加cookie,当出现录制不上或录制的值发生变化时可以手工进行添加。
在loadrunner场景设计使用其他负载机器时,同样可以使用你本机的这个cookie值进行,不会因为客户端机器发生变化而产生影响。
分享到:
相关推荐
LR常用函数的应用 web_reg_save,lr_save_string,lr_eval_string等函数
这是我自己在使用过程中整理下来的,欢迎大家下载查看,谢谢各位的支持
使用lr_db_connect对数据库进行性能测试 ---作者云层
用来连接LR进行手机端的抓包测试,用来连接LR进行手机端的抓包测试
lr_Del_license(regedit)
安装loadrunner11.0 需要破解的lr_Del_license
应该用lr_eval_string来取值。比如{NewParam}(LR中参数化的变量)直接用这个引用是没有问题的。但是如果如下:Action(){chara[10];strcpy(a,"{NewParam}");lr_message 在LR中,C的变量和LR的参数是不一样的。 任何...
Loadrunner常用函数总结帖 一. 关于常用的 lr_eval_string 二. strstr函数 三. web_submit_data函数使用 四. web_add_header
逻辑回归实现症状特征选择 利用python编程 实现特征重要性排序
常用的两种信道估计算法,基于matlab,可以正常运行
编译原理实验,LR(1)分析器 C++实现,实现了Action表和goto表,以及对句子的分析
编译器LR(0)分析表的构造,用于编译器语法分析。
设计一个给定LR分析表,输入一个句子,能由依据LR分析法判别句子的合法性。(3人) 【基本要求】 动态模拟算法的基本功能是: (1) 输入LR分析表和一个句子; (2) 判别该句子的合法性; 【测试数据】 依据文法:...
LR分析器的实现代码,相信能对编译原理学习的人有所帮助,针对代码有详细的解释
这是一个编译原理的程序,请大家放心的下载,是关于lr分析法的。
编译原理的课程设计 实现了LR_0_分析表的构造 绝对的好东西
一个关于LR(1)的分析器 希望对大家有一点帮助
,需要用编写脚本用soap协议,发送...原来用 lr_xml_get_values函数解析,后来看到说这个函数的性能很低,所以想换web_custom_request发送,用web_reg_save_param来解析。但是不成功,现在把代码贴出来各位帮忙看看:
LoadRuner12.6实战项目,Web Tours1.0资源,有需自取,没有积分限制,原下载地址:https://marketplace.microfocus.com/appdelivery/content/web-tours-sample-application