Jmeter有豐富的組件,邏輯控制器、配置原件、Sampler、定時器、前置處理器、后置處理器、斷言、監聽器;而編寫腳本一定要養成個人習慣,讓人看到Jmeter的腳本目錄結構樹能夠一目了然;因此,首先需要了解的是協議、以及Jmeter的元件執行順序來作為參考,養成自己的書寫習慣。
嗯。。關於協議部分,在協議分類隨筆中進行記錄,本篇就書寫習慣以及一個完整的Jmeter腳本應該包含什么做以記錄。
Jmeter組件執行順序:(摘自《全棧Jmeter》)
1、配置原件(如果存在)
2、前置處理器(如果存在)
3、定時器(如果存在)
4、取樣器(如果存在)
5、后置處理器(如果存在且取樣器的結果不為空)
6、斷言(如果存在且取樣器的結果不為空)
7、監聽器(如果存在且取樣器的結果不為空)
而一個完整的Jmeter(此處以HTTP協議為例)腳本應該包含哪些組件呢?
眾所周知,HTTP協議結構(request)中包含請求頭、請求行、請求數據,那么在Jmeter中實現HTTP請求也必然需要進行模擬一個完整的請求才能得到響應。而在編寫Jmeter腳本的時候便需要養成良好的習慣,結構樹一目了然,不論是工作,還是需要其他人來解決問題,相信都能快速的定位。因此,需要將Jmeter的組件執行順序以及協議結構相結合,組成一個完整的腳本。
OK,一個簡單的訪問百度頁面的例子就OK了,當然直接訪問百度首頁不需要任何參數,因此下方請求數據不需要填寫;值得一提的是此處的協議和端口號,如果在協議處填寫https,那么端口號是可以不填的,因為它會自己默認為443(https的默認端口號);當然,直接填寫http,后邊的端口號也會默認為80的。
當然,此處例子中在“HTTP信息頭管理器”中是什么都沒有填寫。可以在下方的監聽器看得出來:
至於在什么情況下會加入信息頭信息,信息頭中涉及到哪些信息,見下文;
可以從上圖看得出來,一個完整的Jmeter腳本至少要包含一個線程組、一個請求,監聽器;線程組可進行設置循環、線程數;Sampler中配置請求地址、協議、參數等;監聽器來進行監聽請求以及響應內容;
可以切換查看的響應方式,吶、這個就是百度的原始頁面了;可以看到的是並沒有HTML、CSS等頁面渲染元素;
So,這便是一個完整的HTTP請求的Jmeter腳本。
可以看得出來,(除去線程組)是將配置原件放在了第一位,接着是請求,監聽器;並沒有像錄制的腳本一樣,將信息頭一類的配置元件放入Sampler下一級,調試都不容易,試着找個問題都眼花繚亂。
因此,自行編寫時一定要養成良好的習慣,最起碼是要有調試方便,層次分明的優點。