JMeter實戰(一) 體系結構
- 2020 年 10 月 12 日
- 筆記
此為開篇,介紹JMeter的組成結構,閱讀後對JMeter形成整體認知和初步印象。
為了便於後續講解,先明確下2個術語。
元件:如HTTP請求、事務控制器、響應斷言,就是一個元件。
組件:如邏輯控制器,就是組件。組件中包含一個或多個元件。
大的叫組件,小的叫元件,也沒那麼嚴謹,你想叫控件都行。
先以組件的維度,看一下JMeter結構圖:

X、Y、Z形成了一個三維立體空間。
X1~X5表示的是:5個模擬過程。
Y1表示的是:用戶請求。
Y2表示的是:結果驗證。
Z表示的是:結果收集。
X1【取樣器】

通過訪問 測試計劃|線程組|取樣器 添加 Sampler。
可以把它看做是一個沒有界面的瀏覽器,可以發送請求,接收響應。支持HTTP請求、WebService請求(SOAP/XML-RPC)、Java請求等。涵蓋了協議包括HTTP、FTP、JAVA、LDAP、MAIL、MongoDB、SMTP、SOAP、TCP、Junit等。還能寫BeanShell腳本,一種類似Java的腳本開發語言。
X1【斷言】

通過 測試計劃|斷言 添加 Assertions。線程組也能添加斷言。
一般用響應斷言(Response Assertion)比較多。可以寫BeanShell實現自定義複雜斷言。
X1【監聽器】

通過 測試計劃|監聽器 添加 Listener。線程組也可以添加監聽器。
可以用於展示結果。如察看結果樹(View Results True),查看每次請求和響應。聚合報告(Aggregate Report),類似測試報告。
另外,也可以把測試結果數據保存到文件,供再次分析使用。
X2【前置處理器】

通過 測試計劃|前置處理器 添加 Pre Processors。線程組也可以添加前置處理器。
在發送請求前,需要做一些環境或數據準備,就需要用前置處理器。比如對數據庫操作前,需要先建立數據庫連接。
X2【配置元件】

可以通過 測試計劃|配置元件 添加 Config Element。線程組也可以添加配置元件。
它的作用是,為取樣器提供配置數據。比如使用 CSV Data Set Config,從文件中讀取測試數據。比如使用函數(函數助手)生成動態數據。比如使用HTTP Cookie Manager,自動記錄服務器返回的Cookie信息。比如使用User Defined Variables,預置一些初始化變量。
X2【後置處理器】

可以通過 測試計劃|後置處理器 添加 Post Processors。線程組也可以添加後置處理器。
它的作用是處理響應數據。比如正則表達式提取器(Regular Expression Extractor),使用正則表達式來匹配響應結果,提取部分數據。
X3【邏輯控制器】

可以通過 測試計劃|線程組|邏輯控制器 添加 Logic Controller。
它用來對處理邏輯進行控制。比如只登陸一次,可以用 Once Only Controller 來實現。
X4【定時器】

可以通過 測試計劃|線程組|定時器 添加 Timer。
它用來設定等待時間。比如等待5秒後再發送請求。比如讓多個請求等待到同一時刻發送。
不同定時器有不同功能。
X5【線程組】

可以通過 測試計劃|線程組 添加 Threads(Users)。
Threads(Users),既是Thread,也是User。JMeter一個線程模擬一個用戶。
Test Fragment

可以通過 測試計劃|Test Fragment 添加。線程組也可以添加。
可用於臨時備份元件,Test Fragment下的元件不會被運行。封裝後可被模塊控制器調用,就像編程一樣。
簡要回顧
本文通過JMeter結構圖展開。取樣器、斷言、監聽器組合在一起就可以完成發送請求、驗證結果和記錄結果。前置處理器、配置元件、後置處理器都是為取樣器提供數據支持的。邏輯控制器可以實現各種需求。定時器可以設置集合點和等待時間等。JMeter是用線程組來模擬的,一個線程就是一個用戶。Test Fragment可以用來備份元件,底下的元件不會被運行。
參考資料
《全棧性能測試修鍊寶典JMeter實戰》
下一篇《JMeter實戰(二) 運行原理》