Loadrunner中cookie解释与用法
Loadrunner中cookie解释与用法 loadrunner中与cookie处理相关的常用函数如下:
web_add_cookie(): 添加新的cookie或者修改已经存在的cookie
web_remove_cookie(): 删除指定的cookie
web_cleanup_cookies(): 删除所有被Vuser保存的cookie
web_reg_add_cookie(): 如果找到某些特定文字,则添加到cookie中
loadrunner中cookie处理的经典问答:
问题1:当录制 Vuser 脚本时,VuGen 处理 Cookie 吗,
VuGen 会自动处理所有通过 HTTP 标头设置的 Cookie。但是,VuGen 无法始终正确地处理由 JavaScript. 或
标记设置的 Cookie。
问题2:当运行 Web Vuser 脚本时,Vuser 会重新使用在录制 Vuser 脚本时使用过的相同 Cookie 吗, 可能会,也可能不会,这取决于 Cookie 的类型。
Cookies 可以分成两种类别:永久 Cookie 和会话 Cookie:
永久 Cookie:向 Web 服务器标识您的身份并且在有限的时间段内有效的纯文本字符串。永久 Cookie 存储在硬盘上。
会话 Cookie:仅在当前访问(会话)期间向 Web 服务器标识您的身份的纯文本字符串。会话 Cookie 不会存储在硬盘上。
当录制 Web Vuser 脚本时,VuGen 会检测发送到浏览器的所有 Cookie。
VuGen 会按如下方式区分永久 Cookie 和会话 Cookie:
永久 Cookie:VuGen 将永久 Cookie 的详细信息直接录制成 Vuser 脚本。VuGen 使用 web_add_cookie 将永久 Cookie 包括在 Vuser 脚本中。当运行 Vuser 脚本时,Vuser 会根据需要使用这些永久 Cookie。
会话 Cookie:VuGen 不保存在录制会话期间所使用的会话 Cookie。而是在录制时缓存会话 Cookie,然后在停止录制时丢弃它们。
当运行 Vuser 脚本时,Vuser 使用从 Web 服务器接收的新会话 Cookie。即,Vuser 不会重新使用在录制脚本时生成的相同会话 Cookie。这些会话 Cookie 存储在 Vuser Cookie 缓存中,然后在 Vuser 停止时被丢弃。Vuser 不会保存这些会话 Cookie。
问题3:每个 Vuser 都有其自己唯一的 Cookie 缓存吗,
是的,每个 Vuser 都有其自己唯一的 Cookie 缓存 - 会话 Cookie 不共享,即使 Vuser 在同一负载生成器上运行。
问题4:在运行脚本之前,必须在录制的 Vuser 脚本中将 Cookie 参数化吗,
有时需要。在录制脚本时,VuGen 会将永久 Cookie 复制到 Vuser 脚本中。当运行 Vuser 脚本时,Vuser 会使用所录制的永久 Cookie。如果每个 Vuser 都需要唯一的永久 Cookie,那么您需要在 Vuser 脚本中将 Cookie 参数化。
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=:8080/bbs/index.php",
"referer=;, "Mode=HTML",
"RecContentType=text/html", LAST ); return 0; } 最后注明一下:loadrunner 的 web 录制功能是自动的增
加 cookie 的,只要在 cookie 不过期的情况下,我 们不需要手工的增加 cookie,当出现录制不上或录制的
值发生变化时可以手工进行添加. 在 loadrunner 场景设计使用其他负载机器时,同样可以使用你本机的这
个 cookie 值进行,不会因为客户 端机器发生变化而产生影响.