2011-08-17 35 views
4

希望這是JMeter測試的常見問題。如何在JMeter中動態設置HTTP Referer頭文件?

我通過JMeter設置代理服務器,在我們的開發環境中'記錄'一個測試用例。這工作得很好,我設置了一些'HTTP請求默認值'全局設置默認的'服務器名稱或IP'和'協議'。

既然在DEV上完成了測試,我們已經將代碼移動到我們的QA服務器以進行更多測試 - 並且我認爲我只需在默認情況下更改「服務器名稱」,然後運行測試。

有一兩件事我注意到的是,在我的測試情況下,每個採樣,其它的頭文件存在於「HTTP頭經理」對於具體的採樣 - 就像用戶代理,緩存控制等。Referer header是唯一一個關注我的人,因爲它仍然是'硬編碼'成爲DEV服務器。

有沒有一種方法來動態設置它 - 以便我可以在多個環境中運行此記錄的測試?這通常如何處理?

任何幫助表示讚賞!謝謝。

JG

回答

1

只有在HTTP請求中沒有提供值時,Jmeter纔會讀取HTTP請求默認值。如果您在請求中將域留空,它將從請求中讀取;否則它使用本地值。

作爲一個快速修復,在文本編輯器中打開JMX文件,並用空白值替換域的所有實例。一旦在Jmeter中打開文件,將域值添加回HTTP Request Default配置元素。

爲避免將來出現這種情況,請在錄製前填寫請求默認值。 Jmeter會自動過濾出符合默認值的值。

你也可以用變量和user defined values來做到這一點。小心你設定的默認值。例如,如果你說customerID = 123,任何時候Jmeter在錄音時檢測到'123',它都會用${customerID}代替它。所以,如果有值 '12345',JMeter會記錄${customerID}45

+0

啊,還好 - 這是什麼以及我談論的線條更。所以,快速修復就是在JMX中搜索/替換。大。但是,在測試案例中說,我有http://www.domain1.com/mypath?myvariable=myvalue的引用值,我如何設置默認值爲http://www.domain2.com/mypath?myvariable = myvalue,運行domain2的測試時?你可以給我一個例子嗎? – tresstylez

+1

啊,好問題。我有兩個HTTP默認請求元素 - 一個用於domain1,另一個用於domain2,通過禁用不使用的元素,我可以在兩者之間切換。 (技術上我使用「用戶定義的變量」,所以我可以有其他元素 - 管理員用戶名/密碼也在服務器之間改變) – BlackGaff

+0

太棒了。用戶定義的變量和多個HTTP默認請求元素是我所需要的。謝謝你,先生。 – tresstylez

3
  1. 設置JMeter的變量在測試計劃
  2. 的根命名server使用在HTTP請求的默認服務器名稱字段
  3. 變量使用的HTTP標頭經理引薦字段設置該變量

另外,如果您想將它從命令行傳遞到非GUI JMeter運行,您可以使用JMeter屬性而不是變量運行

0

我這樣做:

  • 創建用戶定義的變量命名SRVNAME和SRVPORT

  • 改變HTTP參照在JMX文件中的值是這樣的:

<elementProp name="Referer" elementType="Header"> 
    <stringProp name="Header.name">Referer</stringProp> 
    <stringProp name="Header.value">http://${SRVNAME}:${SRVPORT}/SomePage.html?querystring=blah</stringProp> 
</elementProp> 
  • 分配的值與覆蓋變量,這樣,性能可通過命令行提供:
${__P(srvname,www.defaultserver.org)} 
${__P(srvport,80)} 
  • 用於HTTP請求默認值的變量也是如此,在「服務器名稱或IP「和」端口號「文本框。

希望這有助於