1. 程式人生 > >分散式壓測系列之Jmeter4.0第一季

分散式壓測系列之Jmeter4.0第一季

1)Jmeter4.0介紹

jmeter是個純java編寫的開源壓測工具,apache旗下的開源軟體,一開始是設計為web測試的軟體,由於發展迅猛,現在可以壓測許多協議比如:http、https、soap、ftp、database資料庫、LDAP  輕量目錄訪問協議、TCP、SOMP(簡單郵件協議)等,由於是純java編寫,可以在蘋果、window或者Linux下執行,全功能的測試IDE,允許快速的建立測試計劃(從瀏覽器或本地應用程式,官網地址:http://jmeter.apache.org),Jmeter是一箇中高階開發或者測試人員都必須掌握的一個工具。

目前用的常用測試工具對比:

1、loadrunner:效能穩定,壓測結果及細粒度大,可以自定義指令碼進行壓測,但是太過於重大,功能比較繁多
2、apache ab(單介面壓測最方便):模擬多執行緒併發請求,ab命令對發出負載的計算機要求很低,既不會佔用很多CPU,也不會佔用太多的記憶體,但卻會給目標伺服器造成巨大的負載, 簡單DDOS攻擊等
3、webbench:webbench首先fork出多個子程序,每個子程序都迴圈做web訪問測試。子程序把訪問的結果通過pipe告訴父程序,父程序做最終的統計結果。

2)特點

  • 提供GUI圖形介面和非GUI介面進行壓測,在windows下面進行開發測試壓測指令碼,然後直接在linux上執行
  • 可以提供完整的動態HTML壓測報告
  • 純java編寫,一次編寫,四處壓測
  • 多執行緒框架允許通過多個執行緒同時進行取樣壓測,並通過單獨的執行緒組同時取樣不同的功能
  • 提供高度可擴充套件的功能,自定義外掛:
  • 提供函式可用於為測試提供動態輸入或提供資料操作。
  • 通過Maven,Graddle和Jenkins的第三方開源庫輕鬆持續整合

3)準備工作

需要安裝java執行環境,建議安裝JDK環境,雖然JRE也可以,但是壓測https需要JDK裡面的 keytool工具;
新版本Jmeter4.0,需要JDK8以上版本,JDK9或者JDK10都可以;並配置好JDK環境(這裡就不講配置JDK環境了)
下載對應的Jmeter4.0版本並解壓(官網地址:http://jmeter.apache.org/)
windows系統: http://mirrors.tuna.tsinghua.edu.cn/apache//jmeter/binaries/apache-jmeter-4.0.zip
Mac或者Linux:http://mirrors.tuna.tsinghua.edu.cn/apache//jmeter/binaries/apache-jmeter-4.0.tgz

4)jmeter4.0解壓目錄檔案講解

bin:核心可執行檔案,包含配置
	jmeter.bat: windows啟動檔案:
	jmeter: mac或者linux啟動檔案:
	jmeter-server:mac或者Liunx分散式壓測使用的啟動檔案
	jmeter-server.bat:mac或者Liunx分散式壓測使用的啟動檔案
	jmeter.properties: 核心配置檔案
	examples:壓測指令碼檔案JMX和動態讀取csv引數檔案案例
	result—template:視覺化HTML
	template:JMX的模板檔案
			
docs:Jmeter的API文件
extras:外掛拓展的包
lib:核心的依賴包
ext:核心包
junit:單元測試包

5)Jmeter核心元件介紹

什麼是測試計劃(Test plan)?

    就是壓測的一個流程,比如壓測什麼介面,併發多少使用者,協議等等,在測試計劃下面配置執行緒組,取樣器,監聽器等元件

什麼是執行緒組(Thread Group)?

執行緒組就是模擬多少使用者併發訪問你的應用,這個組裡面共有多少使用者,建立方法如上圖現在“新增->threads->執行緒組“
    引數說明:
    執行緒數:虛擬使用者數。一個虛擬使用者佔用一個程序或執行緒			
    準備時長(Ramp-Up Period(in seconds)):全部執行緒啟動的時長,比如100個執行緒,20秒,則表示20秒內100個執行緒都要啟動完成,每秒啟動5個執行緒			
    迴圈次數:每個執行緒傳送的次數,假如值為5,100個執行緒,則會發送500次請求,可以勾選永遠迴圈

什麼是取樣器(Sampler)?

真正幹活的元件,取樣器裡面配置你要壓測的介面,協議,引數等
可以建立各種取樣器,如Http請求,FTP請求,JDBC壓測資料庫請求,JMS等,對應的取樣器有不同的配置
以http請求取樣器為例
	名稱:取樣器名稱,一般是介面名稱,方便後續進行區分,比如“login介面”
	註釋:取樣器的描述,方便別人理解,類似壓測介面描述
	web伺服器配置
		協議:壓測的協議,比如“http”或者"https"
		伺服器名稱或IP:壓測目標機器的埠或者伺服器IP地址,比如 www.xdclass.net
		埠號:壓測目標機器的埠號,比如 8080
	HTTP請求配置
		方法:http的請求方法,常用的有GET,POST,PUT,DELETE,PATCH等
		路徑:壓測的介面的URL,比如 /api/v1/users
		Content encoding:是否進行內容編碼
		
		自動重定向:http有302狀態碼返回的時候,重定向,但不會產生記錄,不可以做關聯請求,
		比如比如第二個請求要用到第一個請求的資料,則選擇自動重定向無法做關聯
		跟隨重定向:會產生記錄,可以做關聯,預設勾選這個
		Use multipart/from-data for HTTP POST :當傳送POST請求時,使用Use multipart/from-data方法傳送,預設不選中。
		parameters:引數配置
		Files Upload:檔案上傳配置

什麼是結果樹?

壓測的結果檢視,可以看到壓測傳送的url,http引數,返回結果,返回的整個響應,然後如果有斷言或者除錯,可以看到斷言是否通過等等
新增路徑: 執行緒組->新增->監聽器->察看結果樹
如果不新增結果數,則點選壓測開始按鈕,壓測具體響應我們無法知道,所以需要新增結果數,
一來是方便除錯壓測指令碼,看請求引數,路徑是否正常
切換到結果數檢視頁面,點選壓測按鈕就可以進壓測,邊壓測可以邊看到請求的結果。

補充個小技巧,就是GUI圖形介面語言版本中英文切換:

1、控制檯修改
	menu -> options -> choose language 選擇對應的語言版本就可以
2、配置檔案修改	
	bin目錄 -> jmeter.properties
			預設 #language=en
			改為 language=zh_CN 

OK,Jmeter4.0壓力測試第一季入門先到這裡,

下一站章 會再分享Jmeter高階知識,比如斷言使用,動態讀取CSV引數,壓測Mysql,阿里雲Linux環境非GUI介面壓測,分散式壓測等等

視訊課程參考:

https://edu.csdn.net/course/detail/7587

關注我們,分享前沿動態