在負載測試中需要考慮的的一個重要要素是思考時間(think time), 也就是在兩次成功的訪問請求之間的暫停時間。 有多種情形揮發導致延遲的發生: 用戶需要時間閱讀文字內容,或者填表,或者查找正確的鏈接等。未認真考慮思考時間經常會導致測試結果的失真。例如,估計數值不恰當,也就是被測系統可以支持的最多用戶量(并發用戶)看起來好像要少一些等。?
Jmeter提供了一整套的計時器(timer)來模擬思考時間(think time), 但是仍舊存在一個問題:: 如何確定適當的思考時間呢?幸運的是, JMeter 提供了一個不錯的答案:使用 JMeter HTTP 代理服務器(Proxy Server)元件。?
代理服務器會記錄在使用一個普通的瀏覽器(如FireFox 或 Internet Explorer)瀏覽一個web應用時的操作。 另外, JMeter 在記錄操作的同時會建立一個測試計劃(test plan)。這個功能能提供以下便利:?
不必手工建立HTTP 訪問請求, 尤其是當要設置一些令人乏味的參數時(然而,非英文的參數也許不能正常工作) 。JMeter 將會錄制包括隱含字段(hidden fields)在內的所有內容。?
在生成的測試計劃中,Jmeter會包含瀏覽器生成的所有的 HTTP 報頭,如User-Agent (e。g。, Mozilla/4。0), 或AcceptLanguage (e。g。, zh-tw,en-us;q=0。7,zh-cn;q=0。3)等。?
JMeter 會根據設置在錄制操作的同時建立一些定時器,其延遲時間是完全根據真實的操作來設置的
現在讓我們來看一下如何配置Jmeter的錄制功能。 在JMeter 的控制臺上, 在工作臺(WorkBench)元件上單擊右鍵,然后選擇”add the HTTP Proxy Server “。 注意是在WorkBench 上單擊右鍵而不是在Test Plan上, 因為現在是要為記錄操作進行配置而不是要運行測試計劃。??HTTP Proxy Server 的實現原理就是通過配置瀏覽器的代理服務器而使所有的訪問請求通過JMeter發送(,因而被Jmeter把訪問過程錄制下來)。?
如圖3所示, HTTP代理服務器(HTTP Proxy Server)元件的一些參數必須被配置:?
端口(port): 代理服務器的監聽端口?
目標控制器(Target Controller): 是代理用于存儲生成的數據的控制器,默認情況下,, JMeter 將會在當前的測試計劃中找一個記錄用的控制器用于存儲,此外也可以在下拉菜單中選擇任意控制起來存儲,通常默認值就可以了。?
分組(Grouping): 確定在測試計劃中如何來為生成的元件分組。 有多個選項, 一般可以選擇“只存儲每個組的第一個樣本”,否則,將會原樣錄制URLs,包括包含圖像和JavaScripts腳本的頁面。當然 也可以嘗試一下默認值“不對樣本分組”("Do not group samples"),來看一下JMeter 建立的原版的測試計劃。?
包含模式(Patterns to Include) 和 排除模式(Patterns to Exclude) :幫助過濾一些不需要的訪問請求。
Jmeter提供了一整套的計時器(timer)來模擬思考時間(think time), 但是仍舊存在一個問題:: 如何確定適當的思考時間呢?幸運的是, JMeter 提供了一個不錯的答案:使用 JMeter HTTP 代理服務器(Proxy Server)元件。?
代理服務器會記錄在使用一個普通的瀏覽器(如FireFox 或 Internet Explorer)瀏覽一個web應用時的操作。 另外, JMeter 在記錄操作的同時會建立一個測試計劃(test plan)。這個功能能提供以下便利:?
不必手工建立HTTP 訪問請求, 尤其是當要設置一些令人乏味的參數時(然而,非英文的參數也許不能正常工作) 。JMeter 將會錄制包括隱含字段(hidden fields)在內的所有內容。?
在生成的測試計劃中,Jmeter會包含瀏覽器生成的所有的 HTTP 報頭,如User-Agent (e。g。, Mozilla/4。0), 或AcceptLanguage (e。g。, zh-tw,en-us;q=0。7,zh-cn;q=0。3)等。?
JMeter 會根據設置在錄制操作的同時建立一些定時器,其延遲時間是完全根據真實的操作來設置的
現在讓我們來看一下如何配置Jmeter的錄制功能。 在JMeter 的控制臺上, 在工作臺(WorkBench)元件上單擊右鍵,然后選擇”add the HTTP Proxy Server “。 注意是在WorkBench 上單擊右鍵而不是在Test Plan上, 因為現在是要為記錄操作進行配置而不是要運行測試計劃。??HTTP Proxy Server 的實現原理就是通過配置瀏覽器的代理服務器而使所有的訪問請求通過JMeter發送(,因而被Jmeter把訪問過程錄制下來)。?
如圖3所示, HTTP代理服務器(HTTP Proxy Server)元件的一些參數必須被配置:?
端口(port): 代理服務器的監聽端口?
目標控制器(Target Controller): 是代理用于存儲生成的數據的控制器,默認情況下,, JMeter 將會在當前的測試計劃中找一個記錄用的控制器用于存儲,此外也可以在下拉菜單中選擇任意控制起來存儲,通常默認值就可以了。?
分組(Grouping): 確定在測試計劃中如何來為生成的元件分組。 有多個選項, 一般可以選擇“只存儲每個組的第一個樣本”,否則,將會原樣錄制URLs,包括包含圖像和JavaScripts腳本的頁面。當然 也可以嘗試一下默認值“不對樣本分組”("Do not group samples"),來看一下JMeter 建立的原版的測試計劃。?
包含模式(Patterns to Include) 和 排除模式(Patterns to Exclude) :幫助過濾一些不需要的訪問請求。

圖 3。 JMeter 代理服務器(Proxy Server)。
當你點擊開始(Start)按鈕時,代理服務器就會開始記錄所接受的HTTP 訪問請求。 當然,在開始記錄前,要首先設置好瀏覽器的代理服務器設置。在代理服務器元件中可以增加一個定時器子元件(配置元件),用于告知Jmeter來在其生成的HTTP請求中自動的增加一個定時器。Jmeter會自動把實際的延遲時間存儲為一個被命名為T的Jmeter變量,因此,如果在代理服務器元件里使用了高斯隨機定時器,就應該在其中的固定延遲偏移(Constant Delay Offset)設置項里添上${T}(用于自動引用紀錄的延遲時間),如圖4所示。這是另一個節省時間的便利特性。

圖 4。 在代理服務器組建中增加一個高斯隨機定時器?
定時器將會使相應的的取樣器被延遲。 延時的規則是,在上一個訪問請求被響應并延時了指定的時間后,下一個被定時器影響的取樣訪問請求才會被發送出去。因此, 你必須手工刪除第一個取樣器中自動生成的定時器,因為第一個取樣器不需要定時器。?
在啟動HTTP代理服務器以前,要在測試計劃中增加一個線程組(thread group),在線程組中增加一個錄制控制器(recording controller)用于存儲生成的結果。 否則, 生成的元件將會被直接添加到工作臺里。另外, 在錄制控制器里增加一個HTTP請求默認值元件HTTP Request Defaults 元件 (是一個配置元件) 也很重要,這樣Jmeter就不填寫使用了默認值的字段。?
錄制完成后, 停止HTTP 代理服務器; 在錄制控制器元件上單擊右鍵將記錄的元件保存為一個文件用于以后重用,另外,不要忘了恢復瀏覽器的代理服務器設置。??