1. 程式人生 > >LR使用web_add_cookie函數進行cookie模擬

LR使用web_add_cookie函數進行cookie模擬

再次 .com 獲取cookie tty clean 關閉瀏覽器 coo bsp dom

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值進行,不會因為客戶端機器發生變化而產生影響。

本文轉自:http://www.cnblogs.com/Lemon_s/articles/1759696.html

LR使用web_add_cookie函數進行cookie模擬