91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

jmeter學習指南之管理Cookies

發布時間:2020-08-03 03:18:17 來源:網絡 閱讀:507 作者:小強測試 欄目:軟件技術

今日文章主要內容介紹

一、使用Jmeter cookie的業務背景

二、解讀Jmeter官方文檔中的cookie管理器

三、線程組內部傳遞cookies

四、跨線程組傳遞cookies


jmeter視頻:https://edu.51cto.com/course/14305.html


1使用Jmeter cookie的業務背景

一、業務背景:

我們在工作中經常會遇到如下壓測場景:

登錄后對查詢、充值、購買...等業務進行壓測;

這種場景很熟悉吧?很多業務操作是要依賴登錄的,但是一個用戶在每次進行登錄時通常會生成cookie,而且在接下來的操作中都必須攜帶上它的cookie,服務器對后續的每次請求都會進行校驗。

首先想到的是從登錄響應中用正則表達式提取出cookies,然后在其它操作中調用不就行了嗎?

不行!

因為cookies并不是在登錄的響應結果中生成的,而是在response header中攜帶的,所以不能用正則表達式提取。

那用什么來獲取呢?我們先來看一下jmeter官方文檔中怎么說的吧:


2解讀Jmeter官方文檔

Jmeter官方文檔是這樣寫的:

jmeter學習指南之管理Cookies

下面我簡單翻譯一下:

cookie管理器元件有兩大功能:

  • 首先,它能夠像web瀏覽器一樣存儲和發送cookies。

  • 如果你有一個HTTP請求和響應包含一個cookie,cookie管理器會自動存儲該cookie,并能夠在該特定網站上接下來的所有請求中使用該 cookie。

  • JMeter的每個線程都有自己的“cookie存儲區”。所以,如果你正在測試一個使用cookie來存儲會話信息的網站,那么每個JMeter線程都有自己的會話。請注意,這種cookies不會在cookie管理器中展示出來,但可以在“查看結果樹”中看到它們。

  • JMeter會檢查收到的cookies是否對URL有效。這意味著跨域的cookie不能被存儲。如果你有竊聽行為,或者想要存儲跨域cookies,需要在jmeter.poperties中設置:“ CookieManager.check.cookies = false”。

  • 接收到的Cookies可以存儲為JMeter的線程變量。如果要把 cookies保存為變量,需要設置:

 “ CookieManager.save.cookies =true”。

  • 此外,默認情況下jmeter中的cookies在存儲時名字前綴為“ COOKIE_ ”,這是為了避免因局部變量重名引起的異常情況。如果不想用這個前綴,需要定義屬性“CookieManager.name.prefix = ”(一個或多個空格)。如果使用了前綴,則一個名稱為TEST的cookie的值可以通過$ {COOKIE_TEST}獲取 。

  • 其次,你可以手動添加一個cookie到cookie管理器。但是,如果你這樣做,這個cookie將被所有JMeter的線程共享。注意,這樣的cookies創建后生命周期會很長。

  • 空值的cookies默認被忽略掉。這可以通過設置JMeter的屬性進行更改:CookieManager.delete_null_cookies =false。請注意,這也適用手工定義的cookies-任何此類cookies在更新后會從cookie manager中移除。

  • 還需要注意的是cookie名稱必須是唯一的-如果一個cookie的名稱與已有cookie同名,它將取代原有的cookie。

  • 如果在一個sampler作用域中有多個cookie manager,目前沒有辦法去指定使用某一個。并且,一個cookie manager中保存的cookie不能被其它的cookie manager使用,所以要慎用多個cookie manger。

有沒有覺得很難理解呢?

 沒關系,下面我們來總結一下:

Cookie Manager主要有兩大作用:

1、自動管理cookie:

  • 就像瀏覽器一樣能夠自動存儲和發送Cookie,如果一個http請求的響應中包含Cookie,那么Cookie Manager就會自動地保存這些Cookie并在所有后來發送到該站點的請求中使用這些Cookie的值。每個線程都自己存儲cookie的區域。

  • 在cookie manager中看不到自動保存的cookie,我們可以在察看結果樹View Results Tree中看到被發送請求的Cookie Data

  • 要把Cookies保存到線程變量中,要定義屬性"CookieManager.save.cookies=true"。線程變量名為COOKIE_ + Cookie名。屬性CookieManager.name.prefix= 可以用來修改默認的COOKIE_的值。


2、手動管理Cookie:

  • 手動添加Cookie到Cookie Manager,這些Cookie的值會被所有線程共享。 

  • 比較簡單的做法是使用firefox的firebug導出cookies ,然后再導入到jmeter的cookie manager中,當然,這里也可以通過Add按鈕手動添加cookies。

jmeter學習指南之管理Cookies

jmeter學習指南之管理Cookies

Tips:

1、需要注意的是域、路徑必須填上,尤其是域;因為Jmeter現版本默認不支持跨域的請求,不填的話設置的Cookie不會被帶上。

2、在需要取Cookie的線程里添加一個Http Cookie管理器,可以默認為空,但是一定要添加,否則是不會存儲cookie變量的

3、這樣在同一個線程(組)內其它操作組件都是可以直接通過${COOKIE_xxxx}來獲取

4、目前jmeter在一個sampler中不能同時有多個cookie manager

5、想要跨域存儲cookies,需要設置 CookieManager.check.cookies =false


3線程組內部傳遞cookies

了解了cookie manager,現在我們回到業務場景中來:

如何實現對查詢接口(必須先登錄,攜帶cookie)進行壓測?

jmeter學習指南之管理Cookies

這是一個很簡單的場景,但是如果直接按照上面這樣的方式去執行,你會發現結果會報錯,因為jmeter默認不會保存cookies,需要加上cookie manager,如下所示:


jmeter學習指南之管理Cookies

如上,加一個空的cookie manager即可以自動保存cookie,并且能夠在同一個線程組之間傳遞cookie,此時再次運行腳本就通過了。


但是我們并不需要同時對登錄操作進行壓測,也就是說,我只需要用一個用戶登錄一次,然后循環進行其它業務操作,這時候需要把登錄和查詢操作分別放在兩個線程組中,但是jmeter官方文檔中說cookies不能跨域傳遞的,也就是不能在線程組中共享,那要怎么實現呢?


 4 跨線程組傳遞cookies

官方文檔中說cookie變量是線程內有效,線程外無效,但是實際測試同一個線程組的其它線程是可以直接訪問的

如果是跨線程組的情況,不能直接訪問,可以用其它的方式來進行cookie變量的共享,試驗了幾種方式,下面這種方式最簡單:

通過JMeterUtils.setProperty和JMeterUtils.getPropDefault方法實現

1、在生成cookie的請求中添加beanshell postprocessor后置處理器,并添加如下腳本,把cookie保存在Jmeter屬性參數中:

import org.apache.jmeter.util.JMeterUtils; 
JMeterUtils.setProperty(“cookie_name”, “cookie_value”); 

其中cookie_name和cookie_value分別換成你對應的cookie名稱(不帶COOKIE_前綴)和cookie值


2、在需要使用cookie的另一個線程組的請求中添加beanshell preprocessor前置處理器,并添加如下腳本,取出cookie的值,并存入線程變量中:
import org.apache.jmeter.util.JMeterUtils; 
String value = JMeterUtils.getPropDefault(“cookie_name”);

Vars.put(“cookie_name”,value);

這里的cookie_name和前面設置的名稱一樣。

然后在該線程組中就可以使用${cookie_name}來獲取cookie的值,也就是實現了跨線程組傳遞cookie。


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

长沙市| 霍林郭勒市| 长泰县| 宁晋县| 宿松县| 通山县| 新建县| 耒阳市| 泰安市| 万安县| 株洲市| 伽师县| 崇阳县| 都安| 任丘市| 隆尧县| 嘉祥县| 石台县| 康定县| 沂源县| 澄城县| 泰宁县| 隆回县| 重庆市| 涞水县| 安国市| 普兰店市| 漯河市| 许昌县| 扬中市| 宝应县| 五寨县| 石嘴山市| 奇台县| 芒康县| 新津县| 元阳县| 太和县| 静海县| 大竹县| 周宁县|