前言
對測試來說,jmeter應該是大家使用較頻繁的測試工具之一,因為其開源、免費、輕量、功能強大,支持很多種協議,除了測功能,還能做自動化和性能測試;
據某機構的調查,性能並發工具中,jmeter市場占有率已經50%+,超過了老大哥loadrunner;
這么一款如此優秀的工具,對測試而言,是必須掌握的;
經常看到群里大家討論jmeter的各種功能,我發現有些朋友過度使用了一些不必要的功能;其實,jmeter常用的功能並不多,把主要的掌握,基本上就可以搞定90%的需求了,所以,不要把時間耗費在工具不常用的功能上,如果是做性能測試,分析定位調優才是重點。
jmeter常用功能(性能方向)
從jmeter2.x版本用到現在的5.x,常用的功能也就下面列舉的這些,我不詳細單講,因為網上很多介紹,我博客或者公眾號,也有對應的實戰應用:
測試計划
線程組
【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最佳實踐
最后,我們來看看官方的最佳實踐,地址是:
http://jmeter.apache.org/usermanual/best-practices.html
大概意思是:
Jmeter壓測減少資源使用的一些建議,即壓測結果會更准確:
1、使用非GUI模式(也就是CLI,Command Line Interface,命令行界面):jmeter -n -t test.jmx -l result.jtl
2、少使用Listener, 如果使用-l參數,它們都可以被刪除或禁用
3、在加載測試期間不要使用“查看結果樹”或“用表格查看結果”監聽器,只能在腳本階段使用它們來調試腳本
4、包含控制器在這里沒有幫助,因為它將文件中的所有測試元素添加到測試計划中
5、不要使用功能模式
6、使用CSV輸出而不是XML
7、只保存你需要的數據
8、盡可能少地使用斷言
9、如果測試需要大量數據,尤其是需要將其隨機化,可以提前准備好測試數據放到數據文件中,從CSV數據集中讀取, 這樣可以避免在運行時浪費資源
如有不准之處,或者補充,請文末留言,謝謝。