session和cookie的概念
關於session和cookie應該有很多文章都進行了一一說明,這里就不再重復贅述,我覺得有一個博客寫的挺不錯的!可以去參照他寫的博客,寫的非常的詳細,比喻也非常的形象,看了之后秒懂!
http://blog.csdn.net/axin66ok/article/details/6175522
按照我的理解就是:
cookie保持你訪問的權限信息。
session限制你訪問權限信息的有效時間,一旦過期就不能在訪問了,比如說我們經常遇到了,很長一段時間網頁沒有去操作,就會自動退出登陸。你要進行操作就必須要重新登陸!
關聯的概念
既然說到了上面的session和cookie,其實這個session和cookie是每次都會變化的!所以在session和cookie失效后,你需要重新獲取這些值,如果用到Jmeter來做這些操作的話,你不能每次手動去修改,那么就需要用關聯,做好關聯后,讓Jmeter自動去獲取這些變化的值。
所以在這里,就要跟大家說說,什么是關聯。
一句話解釋:在每次請求中都會變化的值,且每次都是從服務器發送過來的,那么就需要去做些特別的處理來獲取這個動態值!這個就叫做關聯!舉個例子:
1.你往數據庫插入數據時,有一個id,這個就是動態值,每次都會變得!
2.你提交bug時,bug id 是動態值,有序遞增的!
3.比如上面說到的cookie和session
你如果用Jmeter來代替你手工做這些事情,就需要用到關聯,讓Jmeter自動跟服務器請求並傳給下一步。
實例說明
1.用Badboy錄制腳本后,導出為jmeter文件,並在Jmeter中打開
2.有時在http請求頁面中“路徑”會看到網頁鏈接引用:http://www.xxx.com/xxx_app;jsessionid=${jsessionid}。或者網頁鏈接后顯示:?jsessionid 或者顯示一串數字,如下圖所示:
解決:
1、因為Session默認是需要Cookie支持的,但有些客戶瀏覽器是關閉Cookie的
【而jsessionid是存儲在Cookie中的,如果禁用Cookie的話,服務器得不到jsessionid,這樣也就沒法根據jsessionid獲得對應的session,獲得不了session就得不到session中存儲的數據了。】
這個時候就需要在URL中指定服務器上的session標識,也就是類似“jsessionid=5F4771183629C9834F8382E23BE13C4C” 這種格式。
2、此jsessionid是跟隨上一網頁獲取的,是隨機的故,我們需要通過上一網頁的響應數據,引用該jsessionid
步驟:
1)、查找到上一頁面中響應數據中的jessionid的value
2)、在該頁面下添加子節點:右鍵添加正則表達式,我們要獲取的是jsessionid,正則如下:
正則表達式一定要正確,不能貪婪匹配,必須精確匹配!
3)這樣,正則表達式就獲取到了每次請求都會變化的jsessionid
然后再請求,就會發現jsessionid會自動變化,由Jmeter來獲取!
參考文檔:http://blog.csdn.net/ydppqh/article/details/46859997
如果你想進一步了解關聯方面的知識,我覺得小坦克的博客寫的挺不錯的,還有實際的練習給你們!
推薦鏈接:http://www.cnblogs.com/TankXiao/p/4045439.html
關於cookie的保持,還有另外一個鏈接可以提供給大家:http://blog.csdn.net/ydppqh/article/details/46861455
如果有更多問題想要討論,可以加入我們的群:333782754
或者直接在貼吧發問:http://tieba.baidu.com/f?kw=%E6%9F%A0%E6%AA%AC%E8%BD%AF%E4%BB%B6%E6%B5%8B%E8%AF%95&ie=utf-8&tp=0