您的位置:首页 > 其它

使用cookie绕过登录进行性能测试

2012-10-15 11:57 323 查看
LR 使用 web_add_cookie 函数进行 cookie 模拟

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%2BrekHgiy0YXJd8m1y9vq6aV4bg3GGMs a9s;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%2BrekHgiy0YXJd8m1y9vq6aV4bg3GGMs a9s;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.doaction=Index", "Mode=HTML", "RecContentType=text/html", LAST ); return 0; } 最后注明一下:loadrunner 的 web 录制功能是自动的增 加 cookie 的,只要在 cookie 不过期的情况下,我 们不需要手工的增加 cookie,当出现录制不上或录制的 值发生变化时可以手工进行添加. 在 loadrunner 场景设计使用其他负载机器时,同样可以使用你本机的这 个 cookie 值进行,不会因为客户 端机器发生变化而产生影响.

不抓cookie的方法有很多比如使用httpwatch 记录登录的操作过程
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: