一、前言
對測試來說,jmeter應該是大家使用較頻繁的測試工具之一,因為其開源、免費、輕量、功能強大,支持很多種協議,除了測功能,還能做自動化和性能測試;
據某機構的調查,性能並發工具中,jmeter市場占有率已經50%+,超過了老大哥loadrunner;這么一款如此優秀的工具,對測試而言,是必須掌握的;經常看到群里大家討論jmeter的各種功能,我發現有些朋友過度使用了一些不必要的功能;其實,jmeter常用的功能並不多,把主要的掌握,基本上就可以搞定90%的需求了,所以,不要把時間耗費在工具不常用的功能上,如果是做性能測試,分析定位調優才是重點。
二、jmeter常用功能(性能方向)
從jmeter2.x版本用到現在的5.x,常用的功能也就下面列舉的這些,我不詳細單講,因為網上很多介紹,我博客或者B站,也有對應的實戰應用:
測試計划
線程組
【Sampler】
HTTP請求:可以參考:測試必備:jmeter測試http協議接口的各種傳參方式
BeanShell Sampler
Debug Sampler:只看到jmeter變量如果是其它協議,比如java、dubbo、websocket、smtp、tcp、jdbc,添加對應的取樣器等即可,如果沒有,那么就需要我們自己開發,所以,java基礎是必備的。
【邏輯控制器】
事務控制器
ForEach控制器
僅一次控制器
【前置處理器】
BeanShell PreProcessor
【后置處理器】
正則表達式提取器:關聯的方式很多,我喜歡用萬能的正則。另外,大家可以看之前寫的:jmeter關聯的5種方式
Debug PostProcessor:除了可以看到jmeter變量,還可以看到配置信息,最好放在正則表達式提取器后面,否則看不到提取的結果
BeanShell PostProcessor
【斷言】
響應斷言
BeanShell斷言
【定時器】
常數定時器
高斯隨機定時器
Synchronizing Timer
【配置元件】
HTTP信息頭管理器
HTTP Cookie管理器
CSV 數據文件設置
HTTP請求默認值
【監聽器】
查看結果樹
聚合報告
函數助手
常用的函數需要掌握,如隨機函數等,舉例:生成1-1000的隨機數,可以通過${__Random(1,1000,key)}生成隨機數,通過${key}可以獲取這個隨機數;
分布式壓測
分布式壓測也是需要掌握的,參考:jmeter5.1分布式壓測
另外,beanshell相關的,可以參考:玩轉jmeter:beanshell必備技能
三、jmeter執行順序
配置元件 → 前置處理器 → 定時器 → 取樣器 → 后置處理器 → 斷言 → 監聽器;
同一層級的,順序執行;
四、jmeter最佳實踐
最后,我們來看看官方的最佳實踐,地址是:https://jmeter.apache.org/usermanual/best-practices.html
大概意思是:Jmeter壓測時減少資源使用的一些建議,即使壓測結果會更准確。翻譯如下:
1.使用CLI(Command Line interface:命令行界面)模式:jmeter-n-t test.jmx-l test.jtl
2.盡可能少地使用偵聽器;如果像上面那樣使用-l標志,它們都可以被刪除或禁用。
3.在負載測試期間不要使用“查看結果樹”或“查看表中的結果”偵聽器,只在腳本編寫階段使用它們來調試腳本。
4.不要使用很多相似的采樣器,而是在一個循環中使用相同的采樣器,並使用變量(CSV數據集)來改變樣本。[Include控制器在這里沒有幫助,因為它將文件中的所有測試元素添加到測試計划中。]
5.不使用功能模式
6.使用CSV輸出而不是XML
7.只保存您需要的數據
8.盡量少用斷言
9.使用性能最高的腳本語言(請參閱JSR223部分)
如果您的測試需要大量的數據(特別是如果需要隨機化的話),請在一個可以用CSV數據集讀取的文件中創建測試數據。這避免了在運行時浪費資源。