測試Http協(xié)議的web應用時我們需要了解http協(xié)議。
*Test plan:
測試計劃,jmeter測試腳本根節(jié)點,每一個測試腳本就是一個測試計劃,名稱可以自定義。
@設置用戶全局變量,在“用戶定義的變量”中定義
@獨立運行每個線程組,如果一個測試計劃中有多個線程組,設置此項可以生效。
@運行的線程本次迭代完成后關閉Run teardown Thread Groups after shutdown od main threads
@函數(shù)測試模式,在調(diào)試腳本的過程中我們可能需要獲取服務器返回的詳細信息就可以選擇此項,此項記錄較多的數(shù)據(jù)會影響測試效率,所以在執(zhí)行性能測試時關閉此項。
@把測試需要依賴的jar包或包所在的目錄加入類路徑。Add directory or jar to classpath
*ThreadGroup 線程組,模擬虛擬用戶的發(fā)起點,在此可以設置線程數(shù)。
*Http Cookie Manage:訪問web頁面使會記錄Cookie信息,選擇默認即可
*User defined variables:用戶自定義的變量。
*Http Header Manager:管理Http頭信息。可以找到User-Agent Connection content-type cookie location302重定向地址等信息。
*Step1實際上是一個循環(huán)控制器,在邏輯控制器下,可以設置循環(huán)次數(shù)
整體的一個小例子:
第一步錄制,可以用badboy工具錄制,或者是jmeter配置代理進行錄制
第二步回放用badboy錄制好的腳本,加入一個監(jiān)聽器:查看結(jié)果樹,查看服務器返回信息;
結(jié)果回放不成功,不能新增內(nèi)容。登錄請求設置和發(fā)送新內(nèi)容請求更改為“跟隨重定向“,沿用前面的jsessionid,不用新生成一個。
第三步再次回放,成功。但是新帖亂碼。在Http請求中編碼處填上UTF-8
第四步用戶可以在任何板塊發(fā)布內(nèi)容。首先獲取到板塊的鏈接,然后再發(fā)帖。jmeter通過后置處理器(此場景需要用到正則表達式提取器)完成關聯(lián),獲取到板塊鏈接。
...
第五步性能測試,需要并發(fā)多個用戶,模擬多個不同賬號,需要參數(shù)化,配置元件。
此處選擇CSV Data Set Config:Filename文件本地地址,參數(shù)名稱逗號隔開,參數(shù)文件格式為:username,password
這些設置好之后,在Http請求中也要更改變量名,登錄名${login}密碼是${pwd}與上面名稱一樣就好、
第六步發(fā)送內(nèi)容不希望每次發(fā)送同樣信息,希望內(nèi)容隨機生成,需要參數(shù)化內(nèi)容,用到函數(shù)助手。此處選擇_RandomString,隨機生成字符串。
第七步測試地址可能多個,訪問地址參數(shù)化。Http請求中服務器名稱或IP,甚至是端口號。
在用戶自定義變量中定義URL、port變量輸入相應的IP地址、端口號;然后引用${URL}
第八步優(yōu)化,訪問地址畢竟不變,如果是手動開發(fā)腳本,每個請求都要寫一遍,這樣工作量太大,用到Http請求默認值。填上服務器名稱、端口、編碼、協(xié)議就好
第九步驗證結(jié)果正確性。有可能出現(xiàn)失敗的情況,通過斷言組件驗證測試結(jié)果。
此處用到響應斷言,對服務器的響應數(shù)據(jù)進行規(guī)制匹配。此處判斷登錄是否成功,首先要找到需要匹配的內(nèi)容:用戶名。在要測試的模式中輸入${username}
第十步把多個操作統(tǒng)計成一個事務,每個事務對應的是我們的請求。(性能測試的結(jié)果我們會關注TPS,代表的是每秒事務數(shù)),用到邏輯控制器中的事務控制器來完成。
第十一步讓虛擬用戶同一時刻發(fā)送請求,用到集合點定時器。
此處選擇同步定時器,保證取樣器在同一時刻向服務器發(fā)起負載,也可設置同步線程數(shù)量。
以上就完成了用戶登錄發(fā)送內(nèi)容的模擬行為。

Jmeter元件運行順序
腳本顯示的樹形結(jié)構(gòu),先執(zhí)行根節(jié)點再執(zhí)行子節(jié)點

重點小結(jié)
*Jmeter的代理錄制方式
*關聯(lián)

*參數(shù)化,把固定的數(shù)據(jù)動態(tài)化
*檢查點,響應斷言也支持正則表達式何變量,方便匹配服務器返回的內(nèi)容
*事務,事務控制器可以幫我們把一堆請求歸到一個大的事務中區(qū),便于報告分析
*集合點,更真實的模擬用戶負載
*Jmeter元件運行順序