1. 程式人生 > >JMeter系列教程 | 官方文件翻譯

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模式下執行