JMeter系列教程 | 官方文件翻譯
1. 新手入門
1.0 概述
當你使用JMeter的時候一般會遵循以下過程:
1.0.1 建立測試計劃
首先,你需要啟動JMeter GUI
然後,你可以選擇從瀏覽器或本地應用程式記錄應用程式。通過選單:檔案 → Templates… → Recording。
注意,你還可以通過手動生成測試計劃,你需要閱讀文件並理解上面概念。
你還可以通過下面的方式進行除錯:
-
執行 → Start no pauses
-
執行 → 啟動
-
驗證執行緒組
和檢視結果樹的渲染和除錯(CSS/JQUERY, JSON, Regexp, XPath)。 確保在構建測試計劃時遵循最佳實踐。
1.0.2 負載測試執行
一旦測試計劃就緒,就可以開始負載測試了。第一步是配置執行JMeter的注入器,這對於任何其他負載測試工具包括:
-
在CPU、記憶體和網路方面對機器進行正確的調整。
-
作業系統的優化
-
Java設定: 確保你安裝Java支援的JMeter的最新版本。
-
正確調整Java堆大小: 預設的JMeter以512MB的堆執行,這可能對你的測試沒什麼幫助,主要取決於你的測試計劃和你想要執行的執行緒數。
一旦一切就緒,你將使用命令列模式(稱為非GUI模式)來執行負載測試。
不要使用GUI模式執行負載測試!
使用非gui模式,你可以生成包含CSV(或XML)結果的檔案,並在負載測試結束時生成JMeter生成HTML報告。預設情況下,JMeter將在執行時提供負載測試的摘要。
你還可以使用後端偵聽器在測試期間獲得實時結果。
1.0.3 負載測試分析
負載測試結果後,可以使用HTML報告來分析負載測試。
1.0.4 讓我們開始吧
開始使用JMeter最簡單的方法是首先下載最新的產品版本並安裝它。該版本包含構建和執行大多數型別的測試所需的所有檔案,例如 Web(HTTP / HTTPS)、FTP、JDBC、LDAP、Java、JUnit等。
如果你想要執行JDBC測試,那麼你當然需要來資料庫供應商JDBC驅動程式。JMeter不包含任何JDBC驅動程式。
JMeter包括JMS API jar包,但不包括JMS客戶端實現。如果要執行JMS測試,則需要從JMS提供下載適當的jar包。
有關安裝其他jar包的詳細資訊,請參閱JMeter Classpath部分。
接下來,啟動JMeter並通過建立測試計劃來熟悉JMeter基礎知識(例如,新增和刪除元素)。
最後,通過相關章節的學習,瞭解如何建立特定型別的測試計劃。例如,如果你對測試Web應用程式感興趣,那麼請參閱建立Web測試計劃的部分。其他具體的測試計劃部分是:
-
Advanced Web Test Plan
-
JDBC
-
FTP
-
JMS Point-to-Point
-
JMS Topic
-
LDAP
-
LDAP Extended
-
WebServices (SOAP)
一旦你熟悉構建和執行JMeter測試計劃,你就可以檢視各種配置元素(計時器、偵聽器、斷言和其他),這些元素可以讓你對測試計劃有更多的控制。
1.1 要求
要想執行JMeter,需要你的計算機環境滿足一些要求。
1.1.1 Java版本
JMeter需要一個完全相容的JVM 8,我們建議你安裝這些主要版本的最新版本。但是,JMeter 3.2在Java 9沒有完全測試。
因為JMeter只使用標準的Java APIs,所以,如果是由於JRE的實現問題導致JMeter無法執行請不要提交bug報告。
1.1.2 作業系統
JMeter是一個100%的Java應用程式,應該可以在任何具有相容Java實現的系統上執行。
使用JMeter測試的作業系統可以這裡wiki上檢視。
即使你的作業系統沒有在wiki頁面上列出,JMeter也應該可以在JVM相容的情況下執行。
1.2 可選項
如果你計劃進行JMeter開發,那麼你將需要下面列出的一個或多個可選包。
1.2.1 Java編譯器
如果你想構建JMeter源或開發JMeter外掛,那麼你將需要一個完全相容的JDK 8或更高版本。
1.2.2 Email支援
JMeter具有廣泛的電子郵件功能。它可以根據測試結果傳送電子郵件,並有一個POP3(S)/IMAP(S)取樣器。它也有一個SMTP(S)取樣器。
1.2.4 SSL加密
為了使用SSL加密(HTTPS)測試web伺服器,JMeter要求提供SSL的實現,就像Sun Java 1.4和上面的例子一樣。如果你的Java版本不包括SSL支援,那麼可以新增一個外部實現。在JMeter classpath 中包含必要的加密包。同時,更新系統。屬性來註冊SSL提供者。
JMeter HTTP 預設協議級別為TLS。這可以通過編輯JMeter屬性來改變 https.default.protocol 在 jmeter.properties 或 user.properties 。
JMeter HTTP samplers被配置為接受所有證書,不管是否可信,都不考慮有效時間,等等。 這是為了在測試伺服器上允許最大的靈活性。
如果伺服器需要客戶端證書,則可以提供此證書。
還有SSL管理器,用於對證書進行更大的控制。
JMeter代理伺服器(見下)支援記錄HTTPS(SSL)。
SMTP sampler可以選擇使用本地信任儲存或信任所有證書。
1.2.5 JDBC驅動
如果你想進行JDBC測試,則需要將資料庫供應商的JDBC驅動程式新增到classpath。確保檔案是jar檔案,而不是zip檔案。
1.2.6 JMS客戶端
JMeter現在包含來自Apache Geronimo的JMS API,因此你只需要從JMS提供者中新增適當的JMS客戶端實現jar包。詳情請參閱他們的檔案。在JMeter Wiki也可能找到一些相關資訊。
1.2.7 ActiveMQ JMS庫
你需要新增 activemq-all-X.X.X.jar 到你的classpath,新增 ../lib/ 目錄.
有關詳細資訊,請參閱 ActiveMQ初始配置頁面。
有關安裝jar包更多細節,請參見JMeter Classpath部分。
1.3 安裝
我們建議大多數使用者執行最新版本。
要安裝一個釋出版本,只需將zip/tar檔案解壓縮到需要安裝JMeter的目錄。如果你已經正確地安裝了JRE/JDK並設定了JAVA_HOME環境變數集,那麼你就沒有別的事情可做了。
如果目錄路徑包含任何空格,那麼可能會出現問題(特別是對於客戶機-伺服器模式)。
安裝目錄結構應該是這樣的(這裡的x.y表示版本號):
apache-jmeter-X.Y
apache-jmeter-X.Y/bin
apache-jmeter-X.Y/docs
apache-jmeter-X.Y/extras
apache-jmeter-X.Y/lib/apache-jmeter-X.Y/lib/ext
apache-jmeter-X.Y/lib/junit
apache-jmeter-X.Y/licenses
apache-jmeter-X.Y/printable_docs
如果需要,可以重新命名父目錄(即 apache-jmeter-X.Y),但是不要更改任何子目錄名稱。
1.4 執行JMeter
啟動JMeter,Windows下面執行jmeter.bat檔案,Unix下面執行jmeter檔案。這些檔案是可以在bin/目錄中找到。接下來你將看到JMeter GUI出現。
GUI模式只能用於建立測試指令碼,非GUI模式必須用於負載測試
在bin目錄中還有一些你可能會發現有用的指令碼。Windows指令碼檔案(CMD檔案需要Win2K或更高版本):
jmeter.bat
啟動JMeter (預設GUI模式)
jmeterw.cmd
啟動JMeter沒有windows shell控制檯 (預設GUI模式)
jmeter-n.cmd
刪除一個JMX檔案在執行非GUI測試
jmeter-n-r.cmd
刪除一個JMX檔案在執行非GUI遠端測試
jmeter-t.cmd
刪除一個JMX檔案在GUI模式下載入它
jmeter-server.bat
在伺服器模式啟動JMeter
mirror-server.cmd
在非GUI模式下執行JMeter映象伺服器
shutdown.cmd
執行關閉客戶端,以優雅地停止非GUI例項
stoptest.cmd
執行關閉客戶端,停止非GUI例項
The special name LAST can be used with jmeter-n.cmd , jmeter-t.cmd and jmeter-n-r.cmd and means the last test plan that was run interactively.
環境變數 JVM_ARGS 可以用來覆蓋jmeter中的JVM設定,jmeter.bat指令碼。例如:
set JVM_ARGS="-Xms1024m -Xmx1024m -Dpropname=propvalue" jmeter -t test.jmx …
Un*x 指令碼檔案; 應該在大多數Linux / UNIX系統上工作:
jmeter
啟動JMeter (預設GUI模式). 定義一些可能不適用於所有JVM的JVM設定。
jmeter-server
在伺服器模式啟動JMeter (使用適當的引數呼叫jmeter指令碼)
jmeter.sh
非常基礎的JMeter指令碼 (你可能需要調整JVM選項,比如記憶體設定).
mirror-server.sh
在非GUI模式下執行JMeter映象伺服器
shutdown.sh
執行關閉客戶端,以優雅地停止非GUI例項
stoptest.sh
執行關閉客戶端,停止非GUI例項
如果你使用的JVM不支援一些JVM選項,則可能需要編輯jmeter shell指令碼。JVM_ARGS環境變數可以用來覆蓋或設定額外的JVM選項,例如:
JVM_ARGS="-Xms1024m -Xmx1024m" jmeter -t test.jmx [etc.]
將重寫指令碼中的 堆 (HEAP)設定。
1.4.1 JMeter’s Classpath
JMeter自動在以下目錄中找到jar類:
JMETER_HOME/lib
用於公共jar包
JMETER_HOME/lib/ext
用於JMeter元件和外掛
如果你已經開發了新的JMeter元件,那麼你應該將它們jar並將jar複製到JMeter的 lib/ext 目錄中。JMeter將自動在這裡發現的任何jar中找到JMeter元件。不要使用 lib/ext 用於公共jar或外掛使用的依賴項jar;它只用於JMeter元件和外掛。
如果你不希望在 lib/ext 目錄中放置JMeter外掛jar,那麼在 jmeter.properties 中定義屬性 search_paths 。
實用程式和依賴項jar(庫等)可以放在 lib/ 目錄中。
如果你不想在 lib/ 目錄中放置這樣的jar,那麼可以在 jmeter.properties 通過 user.classpath 或 plugin_dependency_paths 定義屬性。請參閱下文以解釋這些差異。
其他jar(如JDBC、JMS實現和JMeter程式碼需要的其他支援庫)應該放在 lib/ 目錄中,而不是 lib/ext 目錄,或者新增到 user.classpath。
JMeter只會找到.jar檔案,而不是.zip檔案。
你還可以在 $JAVA_HOME/jre/lib/ext 中安裝公共Jar檔案,或者可以在 jmeter.properties 中設定屬性 user.classpath。
注意,設定 CLASSPATH 環境變數將沒有效果。這是因為JMeter是以“java - jar”開頭的,而java命令則預設忽略了CLASSPATH變數,使用 -jar
時的 -CLASSPATH
/ - cp
選項。
這將作用於所有的Java程式中,而不僅僅是JMeter。
1.4.2 通過模板建立能椒檔計劃
你可以從現有的模板建立一個新的測試計劃。
你使用選單: 檔案 → Templates…
出現一個彈出視窗,你可以在列表中選擇一個模板:
每個模板的文件說明從模板建立測試計劃時要做什麼。
1.4.3 使用JMeter設定代理
如果你正在防火牆/代理伺服器的上進行測試,你可能需要為JMeter提供防火牆/代理伺服器主機名和埠號。為此執行 jmeter[.bat] 檔案需要使用以下引數:
-H
[代理伺服器主機名或IP]
-P
[代理伺服器的埠號]
-N
nonproxy hosts
-u
[代理認證的使用者名稱——如果需要]
-a
[代理認證的密碼——如果需要]
例如:
jmeter -H my.proxy.server -P 8000 -u username -a password -N localhost
你也可以使用 –proxyHost, –proxyPort, –username, 和 –password 作為引數名。
命令列上提供的引數可以在系統上的其他使用者可見。
如果提供代理主機和埠,則JMeter設定以下系統屬性:
-
http.proxyHost
-
http.proxyPort
-
https.proxyHost
-
https.proxyPort
如果提供了非代理主機列表,則JMeter設定以下系統屬性:
-
http.nonProxyHosts
-
https.nonProxyHosts
因此,如果你不希望同時設定http和https代理,則可以定義系統中的相關屬性。屬性,而不是使用命令列引數。
也可以在測試計劃中定義代理設定,使用HTTP請求預設配置或HTTP請求取樣器元素。
JMeter也有自己的內建代理伺服器,HTTP(S)測試指令碼記錄器。這僅用於記錄HTTP或HTTPS瀏覽器會話。這與上面描述的代理設定不相混淆,當JMeter自己製作HTTP或HTTPS請求時,使用它們。
1.4.4 Non-GUI 模式(命令列模式)
對於負載測試,你必須在此模式下執行JMeter(沒有GUI)才能獲得最佳結果。為此,使用以下命令選項:
-n
它指定JMeter在非GUI模式下執行