1. 程式人生 > 實用技巧 >Jmeter使用手冊(上)

Jmeter使用手冊(上)

JMETER中文手冊

1。 開始

1.0概述

當使用JMeter你通常會遵循這個過程:

1.0.1測試計劃建設

要做到這一點,你會的在GUI執行JMeter模式。
然後你可以選擇記錄應用程式從一個瀏覽器,或本地應用程式。 您可以使用的選單檔案模板…記錄

請注意您也可以手動構建你的計劃。 確保你讀這篇文章文件瞭解主要概念。

您還將使用這些選項之一:除錯它
  • 執行開始沒有停頓
  • 執行開始
  • 驗證執行緒組

樹檢視的結果渲染器或測試人員(CSS / JQUERY, JSON、Regexp XPath)。
確保你遵循最佳實踐在構建您的測試計劃。

1.0.2負載測試執行

一旦你的測試計劃已經準備好了,你可以開始你的負載測試。 第一步是配置執行JMeter的注射器,這是其他任何負載測試工具包括:

  • 正確的機器尺寸的CPU、記憶體和網路
  • 作業系統調優
  • Java設定:確保您安裝最新版本的Java JMeter的支援
  • 增加Java堆大小。 預設情況下執行JMeter堆1 GB,這對您的測試可能還不夠,取決於您的測試計劃和您想要執行的執行緒數量
一切準備就緒後,您將使用CLI模式(以前稱為命令列模式非gui模式負載測試)來執行它。 不要使用GUI模式執行負載測試!
使用CLI模式,您可以生成一個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。

看到JMeter類路徑部分細節安裝額外的jar。

接下來,開始JMeter和經過建立一個測試計劃部分 熟悉JMeter使用者指南的基礎(例如,新增和刪除元素)。

最後,經過適當的部分如何構建一個特定型別的測試計劃。 例如,如果您有興趣測試一個Web應用程式,然後看到的部分構建一個Web測試計劃。 其他具體的測試計劃部分:

一旦你熟悉了構建和執行JMeter測試計劃,你可以看看 各種配置元素(計時器,偵聽器,斷言,和其他人),給你更多的控制 在你的測試計劃。

1.1需求

JMeter要求計算環境滿足最低要求。

1.1.1 Java版本

JMeter是相容Java 8或更高。 我們強烈建議您安裝最新的小版本的主要版本安全與效能的原因。

因為JMeter只使用標準Java api,請不要檔案錯誤報告如果你JRE執行失敗 JMeter因為JRE的實現問題。

雖然您可以使用JRE,最好安裝一個JDK作為HTTPS的記錄,JMeter的需要keytool從JDK工具。

1.1.2作業系統

JMeter是一個100%的Java應用程式,應該任何系統上正確地執行 有一個相容的Java實現。

作業系統使用JMeter測試可以檢視這個頁面在JMeter wiki。

即使你的作業系統是沒有上市的wiki頁面,JMeter應該執行在JVM是相容的。

1.2可選

如果你打算做JMeter開發,那麼你將需要下列一個或多個可選包。

1.2.1 Java編譯器

如果你想建立JMeter源或開發JMeter外掛,那麼你需要一個完全相容的JDK 8或更高。

1.2.2 SAX XML解析器

JMeter Apache的Xerces XML解析器。 你有告訴JMeter的選項 使用不同的XML解析器。 要做到這一點,包括第三方的類在JMeter的解析器類路徑, 和更新jmeter.properties檔案的完整名稱解析器 實現。

1.2.3郵件支援

JMeter有著豐富的電子郵件功能。 它可以根據測試結果傳送電子郵件,有一個POP3 / IMAP的取樣器。 它也有一個SMTP (S)取樣器。

1.2.4 SSL加密

測試一個web伺服器使用SSL加密(HTTPS), JMeter要求一個 實現SSL提供,Sun Java 1.4及以上的情況。 如果你的版本的Java不包括SSL支援,那麼可以新增一個外部實現。 在JMeter的包含必要的加密包類路徑。 另外,更新system.properties註冊SSL提供者。

JMeter HTTP違約TLS協議水平。 這可以通過編輯JMeter屬性改變https.default.protocoljmeter.propertiesuser.properties

JMeter HTTP取樣器配置為接受所有證書, 不管是否可信,不管時間有效性等。這是在測試伺服器允許最大的靈活性。

如果伺服器要求客戶端證書,可以提供。

還有一SSL經理為更好的控制證書。

JMeter代理伺服器(見下文)支援HTTPS (SSL)記錄

SMTP取樣器可以選擇使用一個本地信任儲存區或信任所有證書。

1.2.5 JDBC驅動程式

您需要新增資料庫廠商的JDBC驅動程式類路徑如果你想做JDBC測試。 確保檔案是一個jar檔案,而不是一個zip。

JMS客戶端相對於1.2.6

JMeter現在包括從Apache Geronimo的JMS API,所以你只需要新增適當的JMS客戶端實現 從JMS提供者jar (s)。 詳情請參考其文件。 可能還有一些資訊JMeter維基

1.2.7庫編寫ActiveMQ JMS

您需要新增jaractivemq-all-X.X.X.jar到您的類路徑中,例如通過儲存它lib /目錄中。

看到ActiveMQ初始配置頁面獲取詳細資訊。

看到JMeter類路徑部分安裝額外的jar的更多細節。

1.3安裝

我們建議大多數使用者執行最新版本

要安裝一個新的釋出版本,只需解壓zip / tar檔案到目錄中 你想要JMeter安裝。 只要你有一個JRE / JDK安裝正確 和JAVA_HOME環境變數設定,沒有更多的對你。

可能有問題(尤其是在客戶機-伺服器模式)如果目錄路徑包含任何空格。

安裝目錄結構應該是這樣的(在哪裡X.Y是版本號):

你可以重新命名父目錄(即。apache-jmeter-X.Y)如果你想要,但是不改變任何子目錄的名稱。

1.4執行JMeter


JMeter執行,執行jmeter.bat(Windows)或jmeter(Unix)檔案。 這些檔案中發現的目錄中。 在很短的時間之後,應該會出現JMeter GUI。

GUI模式只能用於建立測試指令碼,CLI模式(非GUI)必須用於負載測試

有一些額外的指令碼目錄,您可能會發現有用的。 Windows指令碼檔案(.CMD檔案需要Win2K或更高版本):

jmeter.bat
在GUI模式下執行JMeter(預設情況下)
jmeterw.cmd
執行JMeter沒有windows shell控制檯(在GUI模式預設情況下)
jmeter-n.cmd
下降一個JMX檔案執行一個CLI模式測試
jmeter-n-r.cmd
下降一個JMX檔案遠端執行一個CLI模式測試
jmeter-t.cmd
下降一個JMX檔案在GUI模式載入它
jmeter-server.bat
在伺服器模式開始JMeter
mirror-server.cmd
在CLI模式下執行JMeter映象伺服器
shutdown.cmd
執行關閉客戶端停止優雅CLI模式例項
stoptest.cmd
執行關閉客戶端突然停止一個CLI模式例項
特殊的名字去年可以使用jmeter-n.cmd,jmeter-t.cmdjmeter-n-r.cmd和手段執行互動式地最後一個測試計劃。

有一些環境變數,可以用來定製JMeter的JVM設定。 一個簡單的方法來設定這些是通過建立一個檔案命名setenv.bat目錄中。 這樣一個檔案可能看起來像:

JVM_ARGS可以用來覆蓋JVM設定的jmeter.bat指令碼,並將設定在JMeter開始,例如:

環境變數可以定義如下:

DDRAW
JVM選項影響使用直接畫,如。-Dsun.java2d.ddscale = true。 預設是空的。
GC_ALGO
JVM垃圾收集器的選擇。 預設為- xx: + UseG1GC - xx: MaxGCPauseMillis = 250 - xx: G1ReservePercent = 20
JVM記憶體設定時使用JMeter開始。 預設為-Xms1g -Xmx1g - xx: MaxMetaspaceSize = 256
JMETER_BIN
JMeter bin目錄(必須結束\)。 值將被猜到了,什麼時候setenv.bat被稱為。
JMETER_COMPLETE_ARGS
如果設定顯示,JVM_ARGSJMETER_OPTS只使用,。 所有其他選項如GC_ALGO將被忽略。 預設是空的。
JMETER_HOME
安裝目錄。 從位置會猜到了嗎jmeter.bat
JMETER_LANGUAGE
Java執行時選項來指定使用的語言。 預設為:-Duser。 語言=“en”-Duser.region =“en”
JM_LAUNCH
java可執行檔案的名稱,比如java.exe(預設)或javaw.exe
JVM_ARGS
當開始使用JMeter Java選項。 這將是最後一次新增到java命令。 預設為空

聯合國* x指令碼檔案; 應該工作在大多數Linux / Unix系統:

jmeter
在GUI模式下執行JMeter(預設情況下)。 定義了一些JVM設定可能無法適用於所有JVM。
jmeter-server
在伺服器模式開始JMeter(與合適的引數呼叫JMeter指令碼)
jmeter.sh
非常基本的JMeter指令碼(您可能需要調整JVM選項如記憶體設定)。
mirror-server.sh
在CLI模式下執行JMeter映象伺服器
shutdown.sh
執行關閉客戶端停止優雅CLI模式例項
stoptest.sh
執行關閉客戶端突然停止一個CLI模式例項

可能需要設定幾個環境變數配置JMeter所使用的JVM。 這些變數可以是直接在shell啟動設定jmeter指令碼。 例如設定變數JVM_ARGS例如,將覆蓋大部分預定義的設定呢

將覆蓋堆設定指令碼。

永久設定這些變數,你可以把它們在一個檔案中setenv.sh目錄中。 這個檔案將執行JMeter通過呼叫時採購jmeter指令碼。 為一個例子bin / setenv.sh可能看起來像:

環境變數可以定義如下:

GC_ALGO
Java執行時選項指定JVM的垃圾收集演算法。 預設為- xx: + UseG1GC - xx: MaxGCPauseMillis = 250 - xx: G1ReservePercent = 20
Java執行時記憶體管理選項時使用JMeter是開始。 預設為-Xms1g -Xmx1g - x: MaxMetaspaceSize = 256
JAVA_HOME
必須在您的Java開發工具包安裝。 執行“所需除錯”的論點。 在一些作業系統JMeter將全力想JVM的位置。
JMETER_COMPLETE_ARGS
如果設定顯示,JVM_ARGSJMETER_OPTS只使用,。 所有其他選項如GC_ALGO將被忽略。 預設是空的。
JMETER_HOME
可能指向您的JMeter安裝dir。 如果空它將相對jmeter指令碼。
JMETER_LANGUAGE
Java執行時選項來指定使用的語言。 預設為-Duser。 語言= en -Duser.region = en
JMETER_OPTS
Java執行時選項時使用JMeter是開始。 特別的選擇作業系統可能被JMeter補充道。
JRE_HOME
必須在您的Java執行時安裝點。 預設為JAVA_HOME如果是空的。 如果JRE_HOMEJAVA_HOME都是空的,JMeter將嘗試猜猜嗎JAVA_HOME。 如果JRE_HOMEJAVA_HOME都是集,JAVA_HOME使用。
JVM_ARGS
當開始使用JMeter Java選項。 這些將被新增JMETER_OPTS和在其他JVM選項。 預設為空

1.4.1 JMeter的類路徑中

JMeter自動發現類的jar在以下目錄:

JMETER_HOME / lib
用於utility jar
JMETER_HOME / lib / ext
用於JMeter元件和外掛

如果你有新的JMeter元件開發, 那麼你應該jar和jar複製到JMeter的lib / ext目錄中。 JMeter JMeter元件會自動找到任何jar在這裡找到。 不要使用lib / extutility jar或依賴jar檔案所使用的外掛; 它只是用於JMeter元件和外掛。

如果你不想把JMeter外掛jarlib / ext目錄, 然後定義屬性search_pathsjmeter.properties

效用和依賴jar檔案可以放在(庫等)自由目錄中。

如果你不想把這樣的罐子自由目錄, 然後定義屬性user.classpathplugin_dependency_pathsjmeter.properties。 見下文的解釋不同。

其他jar(如JDBC、JMS實現和其他支援庫所需的JMeter程式碼) 應該放在自由目錄——而不是lib / ext目錄, 或新增到user.classpath

JMeter只會找到. jar檔案,不. zip

你也可以安裝utility Jar檔案$ JAVA_HOME / jre / lib / ext,或者你可以設定 財產user.classpathjmeter.properties

注意,設定類路徑環境變數沒有影響。 這是因為JMeter開始”java jar”, 和java命令默默地忽略了類路徑變數,類路徑/- cp選擇的時候jar使用。

這發生在所有Java程式,而不只是JMeter。

1.4.2從模板建立測試計劃

您可以建立一個新的測試計劃從現有模板。

所以你使用選單檔案模板…或模板圖示:

模板圖示項

出現一個彈出,然後您可以選擇一個模板列表包括:

模板彈出

一些模板可能需要來自使用者的輸入引數。 對論文的,點選建立按鈕後, 將出現一個新視窗如下圖:

引數視窗

當你完成了引數,點選驗證按鈕,將建立模板。

每個模板的文件解釋瞭如何從模板建立測試計劃之後。

您可以建立自己的模板文件在這裡

3使用JMeter背後的一個代理

如果你從後面測試防火牆/代理伺服器,您可能需要為JMeter提供 防火牆或代理伺服器的主機名和埠號。 為此,執行jmeter (。bat)檔案 從命令列以下引數:

- e
(代理方案使用非http -可選)
- h
(代理伺服器主機名或ip地址)
- p
(代理伺服器埠)
- n
nonproxy主機(如。* .apache.org | localhost)
- u
(代理身份驗證使用者名稱——如果需要的話)
——一個
(代理身份驗證密碼——如果需要的話)
例子:

您還可以使用--proxyScheme,--proxyHost,--proxyPort,--使用者名稱,--密碼作為引數名稱

提供一個命令列引數可能對系統上的其他使用者可見。

如果提供的代理方案,那麼JMeter設定系統屬性如下:

  • http.proxyScheme

如果代理提供主機和埠,然後JMeter設定系統屬性如下:

  • http.proxyHost
  • http.proxyPort
  • https.proxyHost
  • https.proxyPort
如果提供了nonproxy主機列表,然後JMeter設定系統屬性如下:
  • http.nonProxyHosts
  • https.nonProxyHosts

如果你不希望設定http和https代理, 您可以定義相關屬性system.properties而不是使用命令列引數。

代理設定也可以定義在一個測試計劃,使用HTTP請求違約配置或HTTP請求取樣器元素。

JMeter也有它自己的內建代理伺服器,HTTP (S)測試指令碼錄音機。 這只是用來記錄HTTP或HTTPS瀏覽器會話。 這不是與上述代理設定,混淆時,使用JMeter使HTTP或HTTPS請求本身。

1.4.4 CLI模式(命令列模式被稱為非GUI模式)

對於負載測試,您必須執行JMeter在這種模式下(沒有GUI)來得到最優的結果。 為此,使用 下面的命令選項:

- n
這將指定JMeter是在cli模式下執行
- t
(名字JMX檔案,其中包含測試計劃)。
- l
(韓國樂團的名字檔案記錄樣本結果]。
- j
JMeter執行日誌檔案的名稱。
-r
在指定的伺服器執行測試JMeter財產”remote_hosts
-R
(遠端伺服器列表)在指定的遠端伺服器上執行測試
-g
(CSV檔案路徑)生成報告只儀表板
- e
負載測試後生成報告儀表板
- o
輸出資料夾生成負載測試後報告儀表板。 資料夾不存在或者是空的

指令碼還允許您指定可選的防火牆/代理伺服器資訊:

- h
(代理伺服器主機名或ip地址)
- p
(代理伺服器埠)
例子

如果屬性jmeterengine.stopfail.system.exit被設定為真正的(預設是), 然後JMeter將呼叫system . exit (1)如果不能停止所有執行緒。 通常這不是必要的。

1.4.5伺服器模式

分散式測試在伺服器模式,執行JMeter遠端節點,然後控制伺服器從GUI (s)。 您還可以使用CLI模式執行遠端測試。 啟動伺服器,執行jmeter-server (。bat)在每個伺服器主機。

指令碼還允許您指定可選的防火牆/代理伺服器資訊:

- h
(代理伺服器主機名或ip地址)
- p
(代理伺服器埠)
例子:

如果你想退出伺服器執行一個單獨的測試後,然後定義JMeter屬性server.exitaftertest = true

從客戶機執行測試在CLI模式下,使用以下命令:

哪裡:
- g
用於定義JMeter屬性設定的伺服器
- x
意味著退出伺服器的測試
-Rserver1, server2
可以代替嗎-r提供的伺服器列表開始。 覆蓋remote_hosts,但沒有定義屬性。

如果屬性jmeterengine.remote.system.exit被設定為真正的(預設是), 然後JMeter將呼叫system . exit (0)測試結束後停止RMI。 通常這不是必要的。

1.4.6重寫屬性通過命令列

Java系統屬性和JMeter屬性可以直接覆蓋在命令林 (而不是修改jmeter.properties)。 為此,使用以下選項:

- d [prop_name] =[value]
定義了一個java系統屬性的值。
- j [prop_name] =[value]
定義了一個當地的JMeter的財產。
- g [prop_name] =[value]
定義了一個JMeter財產被髮送到遠端伺服器。
- g (propertyfile)
包含JMeter屬性來定義一個檔案被髮送到遠端伺服器。
- l[category]=[priority]
覆蓋一個日誌設定,設定一個特定類別優先級別。

- l國旗也可以使用未經根類別名稱設定日誌級別。

例子:

處理命令列屬性在創業早期,但在日誌系統已經成立。

1.4.7日誌和錯誤訊息

自3.2以來,JMeter日誌沒有通過配置屬性檔案(s)等jmeter.properties任何更多的, 但它是通過一個配置Apache Log4j 2配置檔案 (log4j2.xml在JMeter推出的目錄,預設情況下)。 此外,每個程式碼包括JMeter和外掛必須使用SLF4J圖書館 自3.2年離開日誌。

這是一個例子log4j2.xml檔案為每個類別定義了兩個日誌輸出源和Loggers節點。

所以,如果你想改變的日誌級別org.apache.http例如類別除錯水平, 你可以簡單的新增(或取消)以下記錄器元素log4j2.xml啟動JMeter之前檔案。有關如何配置的更多細節log4j2.xml檔案, 請參閱Apache Log4j 2配置頁面。

日誌級別為特定類別或者根記錄器可以直接覆蓋在命令列(而不是修改log4j2.xml)。 為此,使用以下選項:

- l[category]=[priority]
覆蓋一個日誌設定,設定一個特定類別優先級別。 自3.2以來,推薦使用一個完整的類別名稱(例如,org.apache.jmetercom.example.foo), 但如果類別名稱開始jmeterjorphan,org.apache.將預先計劃內部類別名稱輸入構造一個完整的類別名稱(即,org.apache.jmeterorg.apache.jorphan向後相容性。

例子:

不同的日誌:舊的和新的實踐:

JMeter使用SLF4J日誌API和Apache Log4j 2作為一個日誌框架自3.2以來,不是所有的日誌級別 3.2完全匹配之前使用一個可用的新SLF4J / Log4j2提供的日誌級別。 因此,請牢記以下差異和新建議的實踐 如果你需要任何現有的日誌配置和日誌程式碼遷移。

類別舊習俗在3.2之前新的實踐自3.2年
記錄器參考 記錄器參考通過LoggingManager:
LoggingManager。 getLoggerFor (String類);
LoggingManager.getLoggerForClass ();
使用SLF4J API與類別或明確的類:
LoggerFactory。 getlog (String類);
LoggerFactory.getLogger (Foo.class);
日誌級別配置或命令列引數 舊日誌級別:
  • 除錯
  • 資訊
  • 警告
  • 錯誤
  • FATAL_ERROR
  • 沒有一個
通過SLF4J / Log4j2對映到一個新的水平:
  • 除錯
  • 資訊
  • 警告
  • 錯誤
  • 錯誤
FATAL_ERROR SLF4J API不支援, 它被視為錯誤相反,不打破現有的程式碼。 還有一致命的日誌級別的選擇。 跟蹤特定的級別,這是小於除錯3.2以來,另外支援。 查詢SLF4J或Apache Log4J 2檔案細節。
JMeter一般不會使用彈出錯誤對話方塊,因為這些會干擾 執行測試。 也不報告任何錯誤,錯誤地拼寫變數函式;對方, 相反, 只是作為參考。 看到函式和變數的更多資訊

如果JMeter測試期間檢測到一個錯誤,一個訊息將被寫入到日誌檔案中。 日誌檔案中定義的名稱log4j2.xml檔案(或使用- j選項,見下文)。 它預設為jmeter.log,並將推出JMeter的目錄中找到。

選單選項日誌檢視器在底部窗格中顯示日誌檔案主要JMeter視窗。

在GUI模式下,錯誤的數量/致命的訊息在右上的登入日誌檔案顯示。

錯誤/致命的計數器

命令列選項- j jmeterlogfile允許程序 在最初的讀取屬性檔案之後, 之前,任何進一步的屬性進行處理。 因此允許預設的jmeter.log覆蓋。 jmeter的指令碼,測試計劃名稱作為一個引數(如。jmeter-n.cmd)已經被更新 使用測試計劃定義日誌檔案的名字, 如測試計劃Test27.jmx將日誌檔案Test27.log

當執行在Windows上,檔案就會出現jmeter除非你有設定視窗顯示副檔名。 (你應該做的,讓它更容易檢測到病毒和其他有害物質,假裝文字檔案…)

以及記錄錯誤,jmeter.log檔案記錄一些關於測試執行的資訊。 例如:

日誌檔案可以幫助判斷錯誤的原因, JMeter不中斷測試顯示一個錯誤對話。

1.4.8命令列選項的完整列表

呼叫JMeter是“jmeter - ?“將列印所有的命令列選項的列表。 這些如下所示。

注意:JMeter日誌檔案的名字是格式化為SimpleDateFormat(應用於當前日期) 如果它包含成對的單引號,.e.g。 ”jmeter_ yyyyMMddHHmmss . log

如果特別的名字去年用於- t,- j- l旗幟, 然後JMeter將意味著最後一個測試計劃 這是在互動模式下執行。

1.4.9 CLI模式關閉

2.5.1版本之前,JMeter呼叫system . exit ()當一個CLI模式測試完成。 這對直接呼叫JMeter應用程式引起的問題,所以JMeter不再呼叫system . exit ()對於一個正常的測試完成。 (一些致命的錯誤仍然可能呼叫system . exit ()] JMeter將退出所有非守護執行緒開始,但它是可能的,一些非守護執行緒 可能依然存在; 這將防止JVM退出。 發現這種情況,JMeter啟動一個新的守護程序執行緒前退出。 這個守護程序執行緒等待一會; 如果返回的等待,那麼明顯 JVM無法退出,說為什麼執行緒列印一條訊息。

房地產jmeter.exit.check.pause可以用來覆蓋的預設暫停2000 ms(2秒)。 如果設定為0,然後JMeter不啟動守護執行緒。

1.5配置JMeter

如果你想修改的屬性JMeter執行需要 要麼修改user.properties/ bin目錄或建立 自己的副本jmeter.properties並在命令列中指定它。

注意:您可以定義額外的JMeter屬性檔案中定義的 JMeter財產user.properties有預設值嗎user.properties。 檔案將自動載入當前目錄中找到 或者在JMeter bin目錄中找到。 同樣的,system.properties用於更新系統屬性。

命令列選項和屬性檔案按照以下順序進行處理:

  1. - p propfile
  2. jmeter.properties(或檔案的- p然後載入選項)
  3. -j logfile
  4. 日誌記錄是初始化
  5. user.properties載入
  6. system.properties載入
  7. 處理所有其他命令列選項

2。 建立一個測試計劃

JMeter測試計劃描述了一系列的步驟將執行時執行。 一個完整的 測試計劃將包括一個或多個執行緒組,邏輯控制器,示例生成 控制器、監聽器、計時器、斷言和配置元素。

2.1新增和刪除元素

新增元素一個測試計劃可以通過右鍵單擊一個元素的 樹,選擇一個新的元素從“新增”列表中。 此外,元素可以 從檔案載入,通過選擇“merge”或“open”選項。

刪除一個元素,確保元素被選中,右鍵單擊元素, 並選擇“remove”選項。

2.2載入和儲存元素

從檔案載入一個元素,右鍵單擊現有樹元素 你想新增載入元素,並選擇“merge”選項。 選擇的檔案 儲存你的元素。 JMeter將合併到樹的元素。

為了節省樹元素,右鍵單擊並選擇一個元素“Save Selection As...”選項。 JMeter將儲存選中的元素,加上下面所有子元素。 通過這種方式, 您可以儲存測試樹片段和單個元素,供以後使用。

2.3配置樹元素

測試樹中的任何元素將控制在JMeter的右手座標系。 這些 控制元件允許您配置特定的測試元素的行為。 我們可以 配置為一個元素取決於什麼型別的元素。

測試樹本身可以通過拖放操作在測試元件樹。

2.4儲存測試計劃

雖然不是必需的,我們建議您儲存的測試計劃 檔案在執行之前。 儲存測試計劃,選擇“儲存”或“Save Test Plan As…“從 檔案選單(最新版本,它不再是必要的選擇 測試計劃元素第一)。

JMeter允許您儲存整個測試計劃樹或 只有一部分。 只儲存元素位於一個特定的“分支” 在測試計劃的測試計劃樹中,選擇樹中的元素的開始 “分支”,然後點選你的滑鼠右鍵訪問”Save Selection As...”選單項。 另外,選擇適當的測試計劃的元素,然後選擇“Save Selection As...“從 編輯選單。

2.5執行一個測試計劃

執行您的測試計劃,選擇“start”(Control+r) 從“執行”選單項。 JMeter執行時,它顯示了一個綠色的小盒子的右手端部分選單欄。 你也可以檢查”執行”選單。 如果“run“是禁用的,”stop“啟用, 然後執行JMeter測試計劃(或者,至少,它認為它是)。

數字左邊的綠色箱子活動執行緒的數量/總數量的執行緒。 這些只適用於本地執行測試; 他們不包括任何執行緒開始遠端系統在使用客戶機/伺服器模式。

這裡所描述的那樣使用GUI模式時只能使用除錯您的測試計劃。 真正的負載測試執行,使用CLI模式。

2.6停止測試

有兩種型別的stop命令可以從選單:

  • stop(Control+.)- - -立即停止執行緒如果可能的話。 許多取樣器可中斷這意味著積極的樣品可以提前終止。 停止命令將檢查所有執行緒已停止在預設的超時,5000毫秒= 5秒。 (這可以改變使用JMeter屬性jmeterengine.threadstop.wait] 如果執行緒沒有停止,那麼將顯示一條訊息。 停止命令可以重試,但如果失敗了,那麼有必要退出JMeter清理。
  • shutdown(Control+,)- - -請求 當前執行緒結束時停止任何工作。 不會中斷任何活躍的樣本。 模態對話方塊關閉將保持活躍,直到所有執行緒已停止。
如果關閉耗時太長。 關閉關閉對話方塊,並選擇執行/停止,或者只是按Control+.

當執行JMeter在CLI模式中,沒有選單,和JMeter等按鍵沒有反應Control+.。 所以JMeter CLI模式在特定埠(預設偵聽命令4445年,請參閱JMeter的財產jmeterengine.nongui.port)。 JMeter支援自動選擇另一個埠如果使用預設埠 由另一個JMeter例項(例如)。 在這種情況下,JMeter將試著下一個更高的港口,繼續,直到 它到達JMeter屬性jmeterengine.nongui.maxport),預設為4455年。 如果maxport小於或等於什麼港口,埠掃描將不會發生。
選擇埠顯示在控制檯視窗中。
目前支援的命令是:

  • Shutdown——優雅的關閉
  • StopTestNow——立即關閉
使用這些命令可以傳送shutdown[.cmd |.sh]stoptest [.cmd | . sh]指令碼 分別。 在JMeter的指令碼目錄中。 該命令將只接受如果指令碼執行相同的主機。

2.7錯誤報告

JMeter警告和錯誤的報告jmeter.log檔案,以及一些測試執行本身的資訊。 JMeter顯示警告/錯誤發現的數量jmeter.log檔案(三角形)的警告圖示旁邊的右手的視窗。 單擊警告圖示顯示jmeter.log檔案的底部JMeter的視窗中。 只是偶爾可能會有一些錯誤,JMeter無法陷阱和日誌; 這些將會出現在命令控制檯。 如果測試不像你期望的行為,請檢查日誌檔案,以防任何錯誤報告(例如,可能是一個函式呼叫語法錯誤)。

抽樣錯誤(例如HTTP 404 -檔案未找到)通常不是發表在日誌檔案中。 而這些被儲存為屬性的示例結果。 樣品的狀態結果中可以看到各種不同的偵聽器。

Apache JMeter是100%純java桌面應用程式,被設計用來測試客戶端/伺服器結構的軟體(例如web應用程式)。它可以用來測試包括基於靜態和動態資源程式的效能,例如靜態檔案,Java Servlets,Java 物件,資料庫FTP伺服器等等。JMeter可以用來在一個伺服器、網路或者物件上模擬重負載來測試它的強度或者分析在不同的負載型別下的全面性能。

另外,JMeter能夠通過讓你們用斷言建立測試指令碼來驗證我們的應用程式是否返回了我們期望的結果,從而幫助我們迴歸測試我們的程式。為了最大的靈活性,JMeter允許我們使用正則表示式建立斷言。

3。 測試計劃的要素

本節描述一個測試計劃的不同部分。

最小測試將包括測試計劃,一個執行緒組和一個或多個取樣。

3.0測試計劃

測試計劃的物件有一個複選框“功能測試". . 如果選中,它 將導致JMeter記錄為每個樣本從伺服器返回的資料。 如果你有 選擇一個檔案在您的測試偵聽器,這些資料將被寫入檔案。 這可能是有用的 你在做一個小執行以確保JMeter是正確配置,您的伺服器 返回預期的結果。 結果是,檔案將巨大的快速增長,和 JMeter的效能就會受到影響。 這個選項應該是如果你做壓力測試(它 預設是關閉的)。

如果你不記錄資料檔案,這個選項沒有區別。

您還可以使用配置按鈕一個偵聽器來決定哪些領域。

3.1執行緒組

執行緒組元素是測試計劃的開始點。 所有控制器和取樣器必須線上程組。 其他元素,例如偵聽器,可以直接放置在測試計劃, 在這種情況下,他們將適用於所有執行緒組。 顧名思義,該執行緒組 元素控制執行緒的數量JMeter將使用來執行您的測試。 的 一個執行緒組允許您控制:

  • 設定執行緒的數量
  • 設定過渡時期
  • 設定執行測試的次數

每個執行緒將執行完整的測試計劃,完全獨立 其他的測試執行緒。 多個執行緒用於模擬併發連線 你的伺服器應用程式。

過渡時期告訴JMeter多久採取“快速啟動”的全部數量 執行緒。 如果使用了10個執行緒,過渡時期是100秒 JMeter需要100秒讓所有10個執行緒啟動並執行。 每個執行緒將 前面的執行緒開始10(100/10)秒後開始了。 如果有30個執行緒 過渡時期的120秒,然後每個連續的執行緒將被延後4秒。

過渡需要足夠長的時間,以避免太大的工作量 的測試和足夠短,最後一個執行緒開始執行 第一批完成(除非人希望這樣的事發生)。

從過渡狀態=數量的執行緒並根據需要調整向上或向下。

預設情況下,執行緒組配置為通過它的元素迴圈一次。

執行緒組還提供了一個排程器。 單擊複選框底部的執行緒組面板啟用/禁用額外的欄位 您可以輸入測試的持續時間,啟動延遲,執行的開始和結束時間。 您可以配置時間(秒)啟動延遲(秒)控制 每個執行緒組的持續時間和多少秒後開始。 當測試開始,JMeter將等待啟動延遲(秒)在啟動執行緒前 執行緒組的配置和執行時間(秒)時間。 請注意這兩個選項覆蓋開始時間結束時間

或者(儘管不推薦不是非常靈活)可以使用兩個其他領域開始時間結束時間。 當測試開始,JMeter將如果有必要等到啟動時間。 每個週期結束時,JMeter檢查結束時間已經達到了,如果是這樣,執行停止, 否則,測試是可以繼續,直到達到迭代限制。

3.2控制器

JMeter有兩種型別的控制器:取樣器和邏輯控制器。 這些驅動測試的處理。

取樣器告訴JMeter傳送請求到伺服器。 為 例子,如果你希望JMeter取樣器新增一個HTTP請求 傳送一個HTTP請求。 你也可以通過新增一個自定義請求 取樣器或多個配置元素。 更多的 資訊,請參閱取樣器

邏輯控制器JMeter用來讓你定製邏輯 決定什麼時候傳送請求。 例如,您可以新增一個交錯 邏輯控制器之間交替取樣兩個HTTP請求。 有關更多資訊,請參見邏輯控制器

3.2.1取樣器

取樣器告訴JMeter向伺服器傳送請求並等待響應。 他們加工的順序出現在樹上。 控制器可以用來修改的重複取樣器的數量。

JMeter取樣器包括:

  • FTP請求
  • HTTP請求(可以用於SOAP或REST Webservice也)
  • JDBC的請求
  • Java物件請求
  • JMS請求
  • JUnit測試請求
  • LDAP請求
  • 郵件請求
  • 作業系統程序請求
  • TCP請求
你可以設定每個取樣器有幾個屬性。 您可以進一步定製一個取樣器通過新增一個或多個配置元素的測試計劃。

如果你要傳送相同型別的多個請求(例如, HTTP請求)到同一臺伺服器上,考慮使用一個預設的配置 元素。 每個控制器都有一個或多個預設元素(見下文)。

記得一個偵聽器新增到您的測試計劃來檢視和/或儲存 你請求的結果到磁碟。

如果你有興趣在JMeter執行基本的驗證 響應你的請求,新增一個斷言來 取樣器。 例如,在壓力測試一個web應用程式,伺服器 可能會返回一個成功的HTTP響應程式碼,但頁面可能有錯誤或 可能失去的部分。 您可以新增斷言檢查特定的HTML標記, 常見的錯誤字串,等等。 使用常規JMeter允許您建立這些斷言 表示式。

JMeter的內建取樣

3.2.2邏輯控制器

邏輯控制器JMeter用來讓你定製邏輯 決定什麼時候傳送請求。 邏輯控制器可以改變訂單的請求來自他們 子元素。 他們可以修改請求自己,導致JMeter重複 請求,等等。

瞭解邏輯控制器在測試計劃的影響,考慮 以下測試樹:

  • Test Plan
    • Thread Group
      • Once Only Controller
      • Load Search Page(HTTP取樣器)
      • Interleave Controller
        • Search “A”(HTTP取樣器)
        • Search “B”(HTTP取樣器)
        • HTTP default request(配置元素)
      • HTTP default request(配置元素)
      • Cookie Manager(配置元素)

關於這個測試的第一件事是將只執行登入請求 第一次通過。 後續的迭代將跳過它。 這是由於 的影響Once Only Controller

在登入之後,下一個取樣器載入搜尋頁面(想象一個 web應用程式的使用者登入,然後去一個搜尋頁面搜尋)。 這 只是一個簡單的請求,而不是透過任何邏輯控制器。

載入搜尋頁面後,我們要做一個搜尋。 實際上,我們想做的事 兩個不同的搜尋。 然而,我們想重新載入程式碼搜尋頁面本身 每個搜尋。 我們可以做這個通過4簡單的HTTP請求元素(載入搜尋, 搜尋“A”,載入搜尋,搜尋“B”)。 相反,我們使用Interleave Controller通過在一個孩子請求每通過一次考驗。 它使 排序(即不通過一個隨機,但“記住”)的 子元素。 交叉2孩子請求可能過度,但很容易 8日或20個孩子請求。

注意HTTP Request Defaults屬於交錯控制器。 想象一下,“Search A”和“Search B” 相同的路徑資訊(HTTP請求規範包含域,港口,方法,協議, 路徑和引數,以及其他可選專案)。 這是有道理的——都是搜尋請求, 達到相同的後端搜尋引擎(一個servlet或cgi指令碼,假設)。 而不是 配置兩個HTTP路徑欄位相同的取樣資訊,我們 可以抽象的資訊到一個單獨的配置元素。 當交錯 控制器“傳遞”要求“搜尋”或“搜尋B”,它將填補這一空白 值從HTTP預設請求配置元素。 所以,我們離開路徑欄位 空白的請求,並把這些資訊放到配置元素。 在這個 情況下,這是一個小受益最多,但它展示了功能。

下一個元素樹中的違約是另一個HTTP請求,這一次了 執行緒組本身。 執行緒組有一個內建的邏輯控制器,因此,它使用 此配置元素完全如上所述。 它填補了空白 要求通過。 它是非常有用的在web測試離開域 你所有的HTTP取樣器元素領域空白,相反,把這些資訊 成一個HTTP預設請求元素,新增到執行緒組。 通過這樣做,你可以 不同的伺服器上測試您的應用程式只通過改變一個行業在你的測試計劃。 否則,您需要編輯每一個取樣器。

最後一個元素是一個HTTP Cookie經理。 Cookie經理應該被新增到所有web -否則JMeter測試 忽略餅乾。 通過新增它線上程組級別,我們確保所有HTTP請求 將共享相同的餅乾。

邏輯控制器可以組合實現不同的結果。 看到的列表內建的 邏輯控制器

3.2.3測試片段

是一種特殊型別的測試片段的元素控制器那 存在於測試計劃樹作為執行緒組元素在同一水平。 它是著名的 從一個執行緒組,它並不執行,除非它是 引用的一個模組控制器或者一個Include_Controller

這個元素是純粹在測試計劃中程式碼重用

3.3偵聽器

JMeter使用者提供資訊收集的測試用例 JMeter執行。 圖結果偵聽器情節上的響應時間圖。 “樹”檢視結果偵聽器顯示取樣器請求和響應的細節,和可以顯示基本的HTML和XML表示響應。 其他偵聽器提供總結或聚合資訊。

另外,偵聽器可以直接的資料到一個檔案供以後使用。 JMeter提供領域的每一個偵聽器來表示檔案來儲存資料。 還有一個配置按鈕可以用來選擇哪些欄位儲存,以及是否使用CSV或XML格式。

注意,所有偵聽器儲存相同的資料; 唯一的區別是資料的方式呈現在螢幕上。

偵聽器可以新增測試的任何地方,包括直接根據測試計劃。 他們只會收集資料元素或低於他們的水平。

有幾個listenersJMeter的。

3.4定時器

預設情況下,一個JMeter執行緒按順序執行取樣器沒有停頓。 我們建議您指定一個延遲通過新增一個可用的計時器 你的執行緒組。 如果你不新增一個延遲,JMeter可以壓倒你的伺服器 做太多的請求在很短的時間。

一個計時器將導致JMeter延遲一定的時間之前每一個 取樣器的範圍

如果您選擇新增多個定時器執行緒組,JMeter的總和 的定時器和停頓的時間之前執行的取樣定時器應用。 定時器可以新增取樣的孩子或控制器為了限制應用的取樣器。

提供一個停頓在一個測試計劃的一個地方,一個可以使用流控制行動取樣器。

3.5斷言

斷言允許你斷言關於收到響應 伺服器被測試。 使用斷言,可以本質上,你的“測試” 應用程式返回你期望的結果。

例如,您可以斷言一個查詢的響應將包含一些 特定的文字。 您所指定的文字可以是一個perl風格正則表示式,和 可以表明,反應是包含文字,或應匹配 整個反應。

您可以新增斷言任何取樣器。 例如,您可以 新增一個斷言一個HTTP請求,檢查文字,“</ HTML>". . JMeter 將檢查文字出現在HTTP響應。 如果JMeter沒有找到 文字,那麼它將標誌著這是一個失敗的請求。

注意,斷言適用於所有的取樣器範圍。 限制一個斷言一個取樣器,新增斷言作為取樣器的一個孩子。

檢視斷言結果,新增斷言偵聽器執行緒組。 失敗的斷言也將出現在樹檢視和表偵聽器, 並將計入錯誤%年齡例如聚合和總結報告。

3.6配置元素

一個配置元素與取樣器工作。 雖然它不傳送請求 (除了HTTP (S)測試指令碼錄音機),它可以新增或修改請求。

配置元素可以從只在樹枝裡面你把元素的地方。 例如,如果你把一個HTTP Cookie經理在一個簡單的邏輯控制器,餅乾經理 你只能訪問HTTP請求控制器內部簡單的邏輯控制器(見圖1)。 Cookie管理器都可以訪問HTTP請求“Web頁面1”和“Web頁面2”,但不是“Web頁面3”。

同時,配置元素在一個樹枝的優先順序高於相同的元素在一個“父” 分支。 例如,我們定義了兩個HTTP請求違約元素,“Web違約1”和“Web違約2”。 因為我們把“網路違約1”內迴路控制器,只有“Web頁面2”可以訪問它。 另一個HTTP 請求將使用“網路預設值2”,因為我們把它線上程組(所有其他分支的“父”)。

圖1 - 測試計劃配置元素的可訪問性 使用者定義的變數配置元素是不同的。 它處理的開始測試,不管它在哪裡。 為簡單起見,建議放置元素只有在執行緒組的開始。

3.7預處理程式元素

取樣器請求之前的預處理程式執行一些操作。 如果一個預處理程式附加到取樣器元素,那麼它將執行取樣器元素之前執行。 預處理程式通常是用來修改的設定示例請求它執行之前,或更新變數不是從響應中提取文字。 看到範圍規則為更多的細節在預處理程式執行。

3.8後處理器元素

後處理器執行一些操作後取樣器請求。 如果後處理器連線到一個取樣器元素,那麼它將執行後,取樣器元素。 後處理器是最常用來處理響應資料,常常提取值。 看到範圍規則當執行後處理器的更多細節。

3.9執行順序

  1. Configuration elements 配置元素
  2. Pre-Processors 預處理程式
  3. Timers 計時器
  4. Sampler 取樣器
  5. Post-Processors 後處理器(除非SampleResult)
  6. Assertions斷言(除非SampleResult)
  7. Listeners(除非SampleResult)
請注意,計時器,斷言,前置和後處理器只是如果有取樣器處理申請。 邏輯控制器和取樣處理順序出現在樹中。 其他的測試元素處理根據找到的範圍,和測試元素的型別。 (在一個型別、元素的順序處理它們出現在樹)。

例如,在以下測試計劃:

  • 控制器
    • 後處理器1
    • 取樣器1
    • 取樣器2
    • 定時器1
    • 斷言1
    • 預處理程式1
    • 定時器2
    • 後處理器2
執行的順序是:
預處理程式1
定時器1
定時器2
取樣器1
後處理器1
後處理器2
斷言1

預處理程式1
定時器1
定時器2
取樣器2
後處理器1
後處理器2
斷言1

3.10範圍規則

JMeter測試樹包含元素層次和命令。 一些元素在測試樹是嚴格的等級制度(偵聽器,配置元素,後處理器,前處理器,斷言,計時器),和一些主要是命令(控制器,取樣器)。 當您建立您的測試計劃,您將建立一個有序列表示例請求(通過取樣)代表一組要執行的步驟。 這些請求通常是組織內控制器還命令。 鑑於以下測試樹:

示例測試樹

請求的順序將是,一,二,三,四。

一些控制器影響他們的子元素的順序,你可以讀到這些特定的控制器元件參考

其他元素層次。 例如,斷言是分層測試樹。 如果母公司是一個請求,然後應用於該請求。 如果它的 父母是一個控制器,然後它會影響所有請求的後裔 控制器。 在樹下面的測試:

層次結構的例子

斷言# 1是僅適用於請求,而斷言2和3 # 2應用於請求。

另一個例子,這一次使用定時器:

複雜的例子

在本例中,請求命名,以反映他們的順序將被執行。 計時器# 1將適用於請求兩個,三個,四個層次的元素(注意順序無關)。 斷言3 # 1只適用於請求。 定時器2號將會影響所有的請求。

希望這些例子明確配置(分層)元素是如何應用的。 如果你想象每個請求傳遞了樹枝,母公司,母公司的母公司,等等,每一次收集所有父母的配置元素,那麼您將看到它是如何工作的。

配置元素頭經理、餅乾經理和授權管理器 從配置預設元素區別對待。 從配置中設定預設的元素合併成一組值取樣器可以訪問。 然而,從經理不合並設定。 如果不止一個經理在取樣器的範圍, 只有一個經理,但是目前還沒有指定的方法哪一個使用。

3.11屬性和變數

JMeter屬性定義在jmeter.properties(見開始——配置JMeter更多的細節)。
jmeter屬性是全球性的,主要是用於定義一些jmeter使用預設值。 例如房地產remote_hosts定義了伺服器JMeter將嘗試遠端執行。 屬性可以在測試計劃中引用 ——看功能——讀屬性- - - - - - 但不能用於表值。

JMeter變數每個執行緒都是本地的。 每個執行緒的值可能是相同的,或者他們可能是不同的。
如果一個變數被一個執行緒更新,只改變執行緒變數的副本。 例如正則表示式提取器後處理器 將其變數根據其執行緒讀過的樣品,而這些可以使用 同樣的執行緒。 對於如何引用變數和函式的細節,明白了函式和變數

注意,定義的值測試計劃使用者定義的變數配置元素 可用在啟動時對整個測試計劃。 如果相同的變數是由多個UDV元素定義的,然後最後一個生效。 一旦一個執行緒啟動,初始設定的變數複製到每個執行緒。 等其他元素使用者引數預處理程式或正則表示式提取器後處理器 可用於定義相同的變數(或建立新的)。 這些修正只適用於當前執行緒。

setProperty函式可用於定義一個JMeter的財產。 這些測試計劃是全球性的,因此可用於執行緒間傳遞資訊——應該是必要的。

變數和屬性都是區分大小寫的。

3.12使用變數parameterise測試

變數沒有改變——他們可以定義一次,如果獨處,不會改變的價值。 所以你可以使用它們作為表示式的速記,頻繁的出現在一個測試計劃。 常數在跑步或物品,但執行之間可能會有所不同。 例如,一個主機的名稱,或在一個執行緒組執行緒的數量。

當決定如何構建一個測試計劃, 記下哪些物品是不變的執行,但執行期間可能發生了變化。 決定對這些——一些變數名 可能使用一個命名約定,如加上字首C_K_或者只使用大寫字母 區分變數在測試期間,需要改變。 還要考慮哪些物品需要當地一個執行緒 例如計數器或價值觀與正則表示式提取後處理器。 您可能希望使用一個不同的命名約定。

例如,您可以定義以下測試計劃:

你可以參考這些測試計劃中${host}${threads}等。 如果你以後想要改變主機,只是改變的價值主機變數。 這為少量測試沒問題,但變得乏味當測試許多不同的組合。 一個解決方案是使用屬性來定義變數的值,例如:
你可以改變的部分或全部命令列上的值如下:

4。 構建一個Web測試計劃

在本節中,您將學習如何建立一個基本的測試計劃測試網站。 你會 建立5個使用者傳送請求在JMeter兩頁的網站。 同時,你會告訴使用者執行測試兩次。 的總數 請求使用者請求(5)x (2) x(重複2次)= 20 HTTP請求。 來 建立測試計劃,您將使用下列元素:執行緒組,HTTP請求,HTTP請求違約,圖結果

更先進的測試計劃,請參閱建立一個先進的Web測試計劃

4.1新增使用者

第一步你想做的每一個JMeter測試計劃是新增一個執行緒組元素。 執行緒組告訴 JMeter的使用者數量你想模擬,使用者應該傳送的次數 請求,請求他們應該送多少。

繼續新增ThreadGroup元素首先選擇測試計劃, 點選你的滑鼠右鍵新增選單,然後選擇 Add→ThreadGroup。

您現在應該看到測試計劃下的執行緒組元素。 如果你不 看到的元素,那麼“擴大”點選測試計劃樹 測試計劃的元素。

接下來,您需要修改預設屬性。 選擇執行緒組元素 在樹上,如果您還沒有選擇它。 您現在應該看到執行緒 JMeter的集團控制面板在正確的部分視窗(見圖4.1 下圖)

圖4.1。 執行緒組的預設值

首先提供一個更具描述性的名字我們的執行緒組。 的名字 欄位中,輸入JMeter的使用者。

接下來,增加使用者的數量(稱為執行緒)5。

下一個欄位的過渡時期,保留預設值1 秒。 這個屬性告訴JMeter多久開始每個之間的延遲 使用者。 例如,如果你輸入一個5秒的過渡時期,JMeter的意志 完成你所有的使用者開始在年底前5秒。 所以,如果我們有 5使用者和一個5秒過渡時期,然後開始使用者之間的延遲 將1秒(5使用者/ 5秒= 1使用者每秒)。 如果你設定 值為0,那麼JMeter將立即開始你所有的使用者。

最後2的輸入一個值 迴圈計數字段。 這個屬性告訴JMeter多少次重複你的 測試。 如果你進入一個迴圈計數的值為1,然後JMeter只執行您的測試 一次。 JMeter反覆執行您的測試計劃,選擇永遠 複選框。

在大多數應用程式中,您必須手動接受 您所作的改變在一個控制面板。 然而,在JMeter,控制面板 你讓他們自動接受您的更改。 如果你改變 一個元素的名稱,這棵樹將被更新後用新的文字 把控制面板(例如,當選擇另一個樹元素)。

參見圖4.2完成JMeter使用者執行緒組。

圖4.2。 JMeter使用者執行緒組

4.2新增HTTP請求的預設屬性

既然我們已經定義了使用者,現在是時候來定義他們的任務 將被執行。 在本節中,您將指定預設設定 為您的HTTP請求。 然後,在4.3節中,您將新增HTTP請求 元素使用一些指定的預設設定。

首先選擇JMeter使用者(執行緒組)元素。 點選你的滑鼠按鈕 新增選單,然後選擇Add→→HTTP請求的配置元素 預設值。 然後選擇這個新元素以檢視其控制面板(見圖4.3)。

圖4.3。 HTTP請求違約

像大多數JMeter的元素,HTTP請求違約控制 小組名稱欄位,您可以修改。 在這個例子中,離開這一領域 預設值。

跳到下一個欄位,它是Web伺服器的伺服器名稱/ IP。 為 您正在構建的測試計劃,所有HTTP請求將被髮送到相同的 Web伺服器,jmeter.apache.org。 這個域名輸入到欄位。 這是唯一的領域,我們將指定一個預設的,所以剩下的離開 欄位保留預設值。

HTTP請求並沒有告訴JMeter違約元素 傳送一個HTTP請求。 它只定義的預設值 使用HTTP請求元素。

參見圖4.4完成HTTP請求違約元素

圖4.4。 HTTP違約為我們的測試計劃

4.3新增Cookie支援

幾乎所有web測試應該使用cookie的支援,除非您的應用程式 特別不使用cookie。 要新增餅乾支援,只需新增一個HTTP Cookie Manager對每一個執行緒組在你的測試計劃。 這將確保每個執行緒都有自己的 cookie,但所有共享HTTP請求物件。

圖4.5。 HTTP Cookie經理

新增HTTP Cookie Manager,簡單地選擇執行緒組,並選擇新增→ →HTTP配置元素 餅乾經理,從編輯選單,或者右鍵單擊彈出選單。

4.4新增HTTP請求

在我們的測試計劃,我們需要做兩個HTTP請求。 第一個是 JMeter主頁(http://jmeter.apache.org/),第二個是對的 改變頁面(http://jmeter.apache.org/changes.html)。

JMeter傳送請求的順序出現在樹上。

通過新增第一個開始HTTP請求JMeter使用者元素(add→Sampler→HTTP Request)。 然後,選擇HTTP請求元素樹中的和編輯以下屬性 (見圖4.6):

  1. Name欄位改為“主頁”。
  2. 將路徑欄位設定為“/”。 記住,你不需要設定伺服器 名稱欄位,因為你已經在HTTP請求中這個值指定預設值 元素。
圖4.6。 HTTP請求JMeter主頁

接下來,新增第二個HTTP請求和編輯(見以下屬性 圖4.7:

  1. Name欄位更改為“Home page”。
  2. 將路徑欄位設定為“/ changes.html”。
圖4.7。 HTTP請求JMeter頁面變化

4.5新增一個偵聽器來檢視儲存測試結果

最後一個元素是一個需要新增到您的測試計劃偵聽器。 這個元素是 負責將所有HTTP請求的結果儲存在一個檔案和展示 資料的視覺化模型。

選擇JMeter使用者並新增一個元素圖結果偵聽器(Add→Listener →Backend Listener)。

4.6登入一個網站

這裡不是這樣的,但是有些網站要求您登入之前允許您執行某些操作。 在一個瀏覽器,登入將作為使用者名稱和密碼的形式, 和一個按鈕提交表單。 按鈕生成一個POST請求,通過表單項的值作為引數。

在JMeter,新增一個HTTP請求,並設定方法。 你需要知道的名稱欄位使用的形式,和目標頁面。 這些可以通過檢查發現登入頁面的程式碼。 (如果這是很難做的,您可以使用JMeter代理記錄器記錄登入序列。) 設定路徑的目標提交按鈕。 單擊Add按鈕兩次,輸入使用者名稱和密碼資訊。 有時登入表單包含額外的隱藏欄位。 這些需要被新增。

圖4.8。 樣本HTTP登入請求

4.7選擇相同的使用者或不同的使用者

在建立一個測試計劃時,每個執行緒組迭代,我們可以選擇模擬相同的使用者執行多個迭代, 或不同的使用者執行一個迭代。 您可以配置這種行為線上程組元素,HTTP快取管理器,HTTP Cookie Manager,HTTP授權管理器 由這個設定控制。

圖4.9。 選擇相同的使用者或不同的使用者

你可以選擇清除cookie快取內容/授權在CookieManager /快取管理器/授權管理器中, 或選擇控制的執行緒組。

圖4.10。 使用控制CookieManager執行緒組圖4.11。 使用執行緒組來控制快取管理器圖4.12。 使用執行緒組控制授權管理器

5。 建立一個先進的Web測試計劃

在本節中,您將學習如何建立先進測試計劃測試網站。

一個基本的例子的測試計劃,請參閱構建一個Web測試計劃

5.1使用URL重寫處理使用者會話

如果您的web應用程式使用URL重寫而不是餅乾儲存會話資訊, 那麼你需要做一些額外的工作來測試你的網站。

正確應對URL重寫,JMeter需要解析HTML 接收從伺服器和檢索獨特的會話ID,使用適當的HTTP URL重寫修改器來完成這一任務。 只需輸入您的會話ID的名稱引數修改器,和它 會發現它並將它新增到每個請求。 如果請求已經有一個值,它將被取代。 如果“快取會話Id ?”檢查,最後發現會話Id將被儲存, 將使用,如果前面的HTTP樣本不包含一個會話id。

URL重寫的例子

下載這個例子。 在圖1所示 使用URL重寫測試計劃。 注意,URL重寫SimpleController新增修飾語, 從而確保它只會影響請求SimpleController。

圖1 -測試樹

在圖2中,我們看到了URL重寫修改器GUI,只有為使用者指定一個欄位 會話ID的名稱引數。 還有一個複選框,表明會話ID 是路徑的一部分(用“;”分隔),而不是一個請求引數

圖2 -請求引數

5.2使用http資訊頭管理器

HTTP資訊頭管理器允許您定製什麼資訊 JMeter傳送HTTP請求頭。 這個頭包括屬性如"User-Agent", "Pragma", "Referer"等。

HTTP資訊頭管理器,就像HTTP Cookie Manager, 應該被新增線上程組級別,除非出於某種原因,你想嗎 指定不同的不同的標題HTTP請求物件 你的測試。

6。 構建一個數據庫測試計劃

在本節中,您將學習如何建立一個基本的測試計劃測試資料庫伺服器。 您將建立50個使用者2 SQL請求傳送到資料庫伺服器。 同時,你會告訴使用者執行測試100次。 所以,總數 使用者的請求(50)x(2請求)x(重複100次)= 10 000年JDBC請求。 建立測試計劃,您將使用下列元素:執行緒組,JDBC的請求,摘要報告

下面的例子使用了MySQL資料庫驅動程式。 使用這個驅動程式,它包含. jar檔案(如mysql-connector-java-X.X.X-bin.jar)必須複製到JMeter/ lib。目錄(見JMeter的類路徑中更多的細節)。

6.1新增使用者

第一步你想做的每一個JMeter測試計劃是新增一個執行緒組元素。 的執行緒組 告訴JMeter的使用者數量你想模擬,使用者應該多長時間 傳送請求,他們應該傳送的請求的數量。

繼續新增ThreadGroup元素首先選擇測試計劃, 點選你的滑鼠右鍵新增選單,然後選擇AddThreadGroup

您現在應該看到測試計劃下的執行緒組元素。 如果你不 看到的元素,然後擴大通過單擊測試計劃樹 測試計劃的元素。

接下來,您需要修改預設屬性。 選擇執行緒組元素 在樹上,如果您還沒有選擇它。 您現在應該看到執行緒 JMeter的控制面板在正確的部分視窗(見圖6.1 下圖)

圖6.1。 執行緒組的預設值

首先提供一個更具描述性的名字我們的執行緒組。 的名字 欄位中,輸入JDBC的使用者

你需要一個有效的資料庫,資料庫表和使用者級訪問 表。 這裡所示的示例中,資料庫的“cloud”和表名 ”vm_instance”。

接下來,增加使用者的數量50

下一個欄位的過渡時期,離開的價值10秒。 這個屬性告訴JMeter多久開始每個之間的延遲 使用者。 例如,如果你輸入一個10秒的過渡時期,JMeter的意志 完成你所有的使用者開始在年底前10秒。 所以,如果我們有 50個使用者和一個10秒過渡時期,然後開始使用者之間的延遲 將200毫秒(10秒/ 50使用者= 0.2秒/使用者)。 如果你設定 值為0,那麼JMeter將立即開始你所有的使用者。

最後,輸入一個值One hundred.在 迴圈計數字段。 這個屬性告訴JMeter多少次重複你的 測試。 JMeter反覆執行您的測試計劃,選擇永遠 複選框。

在大多數應用程式中,您必須手動接受 您所作的改變在一個控制面板。 然而,在JMeter,控制面板 你讓他們自動接受您的更改。 如果你改變 一個元素的名稱,這棵樹將被更新後用新的文字 把控制面板(例如,當選擇另一個樹元素)。

參見圖6.2完成JDBC使用者執行緒組。

圖6.2。 JDBC使用者執行緒組

JDBC 6.2新增請求

既然我們已經定義了使用者,現在是時候來定義他們的任務 將被執行。 在本節中,您將指定JDBC請求 執行。

首先選擇JDBC的使用者元素。 點選你的滑鼠按鈕 得到新增選單,然後選擇AddConfig ElementJDBC Connection Configuration。 然後,選擇這個新元素以檢視其控制面板(見圖6.3)。

設定以下欄位(這些假設我們將使用一個MySQL資料庫名為“cloud”):

  • 變數名(這裡:myDatabase)繫結到池中。 這就需要來唯一地標識該配置。 它使用JDBC取樣器來確定要使用的配置。
  • 資料庫URL:jdbc: mysql: / / ipOfTheServer: 3306 /cloud
  • JDBC驅動程式類:com.mysql.jdbc.Driver
  • 使用者名稱:資料庫的使用者名稱
  • 密碼:密碼的使用者名稱

螢幕上的其他領域可作為預設值。

JMeter建立一個數據庫連線池的配置設定在控制面板中指定。 池是JDBC所請求的變數名”欄位。 可以使用幾種不同的JDBC配置元素,但他們必須有唯一的名稱。 每個JDBC請求必須引用一個JDBC配置池。 不止一個JDBC請求可以引用同一池。

圖6.3。 JDBC配置

再次選擇JDBC使用者元素。 點選你的滑鼠按鈕 得到新增選單,然後選擇AddSamplerJDBC Request。 然後,選擇這個新元素以檢視其控制面板(見圖6.4)。

圖6.4。 JDBC的請求

在我們的測試計劃,我們會讓兩個JDBC請求。 第一個是 選擇所有執行的VM例項,第二是選擇“刪除”(顯然你應該VM例項 改變這些例子適合您的特定的資料庫)。 這些 如下例所示。

JMeter的順序傳送請求,你將它們新增到樹中。

開始通過編輯以下屬性(見圖6.5):

  • 改名為“VM Running”。
  • 輸入池名稱:“myDatabase“一樣(在配置元素)
  • 輸入SQL查詢字串欄位。
  • 輸入引數值欄位的Running的價值。
  • 輸入的引數型別”VARCHAR”。
圖6.5。 JDBC請求第一SQL請求

接下來,新增第二個JDBC請求和編輯以下屬性(參見 圖6.6):

  • 改名為“VM Expunging”。
  • 改變Parameter values的值為‘Expunging”。
圖6.6。 JDBC請求第二個請求

6.3將偵聽器新增到檢視/儲存測試結果

最後一個元素是一個需要新增到您的測試計劃偵聽器。 這個元素是 負責將所有JDBC請求的結果儲存在一個檔案中 並呈現結果。

選擇JDBC的使用者元素,並新增一個摘要報告偵聽器(AddListenerSummary Report)。

儲存測試計劃,並執行測試選單RunStartCtrl+R

偵聽器顯示了結果。

圖6.7。 圖結果偵聽器

7。 構建一個FTP測試計劃

在本節中,您將學習如何建立一個基本的測試計劃測試一個FTP站點。 你會 建立四個使用者傳送兩個檔案在一個FTP站點的請求。 同時,你會告訴使用者執行測試兩次。 的總數 請求使用者請求(4)x (2) x(重複2次)= 16 FTP請求。

建立測試計劃,您將使用下列元素:執行緒組,FTP請求,FTP請求違約,檢視的結果表

7.1新增使用者

第一步你想做的每一個JMeter測試計劃是新增一個執行緒組元素。 執行緒組告訴 JMeter的使用者數量你想模擬,使用者應該傳送的次數 請求,他們應該傳送的請求的數量。

繼續新增執行緒組元素首先選擇測試計劃, 點選你的滑鼠右鍵新增選單,然後選擇AddThreadGroup。

您現在應該看到執行緒組元素在測試計劃。如果你不 看到的元素,那麼“擴大”點選測試計劃樹測試計劃元素。

接下來,您需要修改預設屬性。 選擇執行緒組元素 在樹上,如果您還沒有選擇它。 您現在應該看到執行緒 JMeter的集團控制面板在正確的部分視窗(見圖7.1 下圖)

圖7.1。 執行緒組的預設值

首先為我們提供了一個更具描述性的名稱執行緒組。的名字 欄位中,輸入“FTP使用者”。

接下來,使用者的數量增加到4。

下一個欄位的快速啟動時期,保留預設值0 秒。 這個屬性告訴JMeter多久開始每個之間的延遲 使用者。 例如,如果你輸入一個快速啟動5秒,JMeter的意志 完成你所有的使用者開始在年底前5秒。 所以,如果我們有 5使用者和一個5秒快速啟動期,然後開始使用者之間的延遲 將1秒(5使用者/ 5秒= 1使用者每秒)。 如果你設定 值為0,那麼JMeter將立即開始你所有的使用者。

最後,輸入一個值為2 的迴圈計數欄位。 這個屬性告訴JMeter多少次重複你的 測試。 JMeter反覆執行測試計劃,選擇永遠複選框。

在大多數應用程式中,您必須手動接受 您所作的改變在一個控制面板。 然而,在JMeter,控制面板 你讓他們自動接受您的更改。 如果你改變 一個元素的名稱,這棵樹將被更新後用新的文字 把控制面板(例如,當選擇另一個樹元素)。

參見圖7.2完成FTP使用者執行緒組。

圖7.2。 FTP使用者執行緒組

7.2新增預設FTP請求屬性

既然我們已經定義了使用者,是時候定義的任務 將被執行。 在本節中,您將指定預設設定 為您的FTP請求。 然後,在7.3節中,您將新增FTP請求元素使用一些指定的預設設定。

首先選擇FTP使用者元素。 點選你的滑鼠按鈕 新增選單,然後選擇AddConfig ElementFTP Request Default。然後,選擇這個新元素以檢視其控制面板(見圖7.3)。

圖7.3。 FTP請求違約

像大多數JMeter的元素,FTP請求違約控制 小組名稱欄位,您可以修改。 在這個例子中,離開這一領域 預設值。

跳到下一個欄位,它是FTP伺服器的伺服器名稱/ IP。 為 您正在構建的測試計劃,所有FTP請求將被髮送到相同的 在這種情況下FTP伺服器ftp.domain.com。 這個域名輸入到欄位。 這是唯一的領域,我們將指定一個預設的,所以剩下的離開 欄位保留預設值。

並沒有告訴JMeter FTP請求違約元素 傳送一個FTP請求。 它只定義的預設值 使用FTP請求元素。

參見圖7.4完成FTP請求違約元素

圖7.4。 FTP違約為我們的測試計劃

7.3新增FTP請求

在我們的測試計劃,我們需要兩個FTP請求

JMeter傳送請求的順序出現在樹上。

通過新增第一個開始FTP請求FTP使用者元素(AddSamplerFTP Request)。 然後,選擇FTP請求樹中的元素和編輯以下屬性 (見圖7.5):

  1. 改變的名字“File1”。
  2. 改變遠端檔案場/目錄中。
  3. 改變使用者名稱欄位“匿名”。
  4. 改變密碼欄位“[email protected]”。
你不需要設定伺服器名稱場,因為你已經指定 這個值的FTP請求違約元素。 圖7.5。 FTP請求file1

接下來,新增第二個FTP請求和編輯(見以下屬性 圖7.6:

  1. 改變的名字“File2”。
  2. 改變遠端檔案欄位“/目錄/ file2.txt”。
  3. 改變使用者名稱欄位“匿名”。
  4. 改變密碼欄位“[email protected]”。
圖7.6。 FTP請求file2

7.4將偵聽器新增到檢視/儲存測試結果

你需要新增最後一個元素測試計劃是一個偵聽器。 這個元素是 負責儲存所有的結果FTP請求在一個檔案並呈現 資料的視覺化模型。

選擇元素並新增一個FTP使用者檢視的結果表偵聽器(AddlistenerView Results In Table)。

執行您的測試和檢視結果。

圖7.7。 表偵聽器中檢視結果

8。 構建一個LDAP測試計劃

在本節中,您將學習如何建立一個基本的測試計劃測試LDAP伺服器。 您將建立四個使用者傳送請求四LDAP伺服器上測試。 同時,你會告訴 使用者執行測試4次。 所以,請求的總數(4個使用者)x(4請求) (重複4次)= 64 LDAP請求。 建立測試計劃,您將使用下列元素:執行緒組,LDAP請求,LDAP請求違約,檢視的結果表

這個例子假定LDAP伺服器可在ldap.test.com。

8.1新增使用者

第一步你想做的每一個JMeter測試計劃是新增一個執行緒組元素。 執行緒組告訴JMeter的使用者數量你想模擬,使用者應該傳送的次數 請求,他們應該傳送的請求的數量。

繼續新增ThreadGroup元素首先選擇測試計劃,點選你的 滑鼠右鍵來獲得新增選單,然後選擇AddThreadGroup。 您現在應該看到 執行緒組元素下的測試計劃。 如果您沒有看到的元素,然後測試計劃樹的“擴大” 點選測試計劃元素。

圖8 . 1。 執行緒組和最終測試樹

8. 2新增登入配置元素

首先選擇LDAP使用者元素。 點選你的滑鼠 按鈕新增選單,然後選擇AddConfig ElementLoginConfig Element。 然後,選擇這個新元素以檢視其控制面板。

像大多數JMeter的元素,登入配置元素控制面板有一個名字 可以被修改。 在這個例子中,離開這個欄位的預設值。

圖8。 2登入配置元素對我們的測試計劃

輸入使用者名稱欄位“LDAP User”,
密碼欄位“LDAP Password”

這些值將使用LDAP請求。

8個。 3新增LDAP請求違約

首先選擇LDAP使用者元素。 點選你的滑鼠按鈕 得到新增選單,然後選擇AddConfig ElementLDAP Request Defaults。 然後, 選擇這個新元素以檢視其控制面板。

像大多數JMeter的元素,LDAP請求違約控制面板有一個名字 可以被修改。 在這個例子中,離開這個欄位的預設值。

圖8。 為我們的測試計劃3 LDAP違約 輸入DN欄位”LDAP根專有名稱”。
輸入LDAP伺服器的Servername欄位”ldap.test.com”。
port:389
這些值預設為LDAP請求。

8.4新增LDAP請求

在我們的測試計劃,我們需要四個LDAP請求。

  1. 內建的新增測試
  2. 內建搜尋測試
  3. 內建的修改測試
  4. 內建刪除測試

JMeter的順序傳送請求,你將它們新增到樹中。 先將第一個LDAP請求新增到LDAP使用者元素 (AddSamplerLDAP Request)。 然後,選擇LDAP請求樹中的元素 和編輯以下屬性

  1. 重新命名為“新增“這個元素
  2. 選擇新增測試單選按鈕的測試配置集團
圖8 a.4.1 LDAP請求內建新增測試

你不需要設定Servername領域,港口領域,使用者名稱,密碼DN因為你已經指定這個值登入配置元素LDAP請求違約。

接下來,新增第二個LDAP請求和編輯以下 屬性

  1. 重新命名為“搜尋“這個元素
  2. 選擇搜尋測試單選按鈕的測試配置集團

接下來,新增第三個LDAP請求和編輯以下屬性

圖8 a.4.2 LDAP請求內建搜尋測試
  1. 重新命名為“修改“這個元素
  2. 選擇修改測試單選按鈕的測試配置集團

接下來,新增第四個LDAP請求和編輯以下屬性

圖8 a.4.3 LDAP請求內建修改測試
  1. 重新命名為“刪除“這個元素
  2. 選擇刪除測試單選按鈕的測試配置集團
圖8 a.4.4 LDAP請求內建刪除測試

8個。 5新增響應斷言

您可以新增一個響應斷言元素。 這個元素將檢查接收到的響應資料通過驗證如果響應文字”成功的”。 (AddAssertionRequest Assertion)。

注意:這個樹中的位置, 斷言將為每個LDAP執行請求的響應。
  1. 選擇文字響應單選按鈕的應對現場測試集團
  2. 選擇子字串單選按鈕的模式匹配規則集團
  3. 點選新增按鈕和新增字串”成功的“在模式測試
圖8。 5 LDAP響應斷言

8. 6一個偵聽器新增到檢視/儲存測試結果

最後一個元素需要新增到您的測試計劃是一個偵聽器。 這個元素是負責儲存所有LDAP的結果 請求一個檔案和呈現的視覺模型資料。 選擇LDAP 使用者在表元素,並新增一個檢視的結果 (AddListenerView Results in Table)

圖8。 6表偵聽器檢視的結果

8 b。 建立一個擴充套件LDAP測試計劃

在本節中,您將學習如何建立一個基本的測試計劃測試LDAP 伺服器。

擴充套件的LDAP取樣器是高度可配置的,這也意味著它 一些時間來建立一個正確的測試規劃。 然而你可以調整它到你的 的需求。

您將建立1使用者傳送請求九LDAP伺服器上測試。 同時,你會告訴 使用者執行測試一次。 所以,請求的總數使用者(1)x(9請求) (重複一遍)= 9LDAP請求。 建立測試計劃,您將使用下列元素:
執行緒組,
新增LDAP請求違約,
新增LDAP請求,
將一個偵聽器新增到檢視/儲存測試結果

這個例子假定LDAP伺服器是可用的ldap.test.com

對於缺乏經驗的LDAP使用者,我建立一個小 LDAP教程這就解釋了 幾個LDAP操作,可用於構建一個複雜的測試規劃。

照顧在使用LDAP特殊字元的專有名稱,在這種情況下(例如,您想要使用一個+註冊一個 專有名稱)你需要逃避性格通過新增一個”\”的牌子在那之前的性格。 額外的例外:如果你想新增一個\字元在一個專有名稱(在新增或重新命名操作),您需要使用反斜槓。

例子:

8 b。 1新增使用者

第一步你想做的每一個JMeter測試計劃是新增一個執行緒組元素。 執行緒組告訴JMeter的使用者數量你想模擬,使用者應該傳送的次數 請求,他們應該傳送的請求的數量。

繼續新增執行緒組首先選擇元素測試計劃,點選你的 滑鼠右鍵來獲得新增選單,然後選擇AddThread(User)Thread Group。 您現在應該看到執行緒組元素在測試計劃。 如果您沒有看到的元素,然後測試計劃樹的“擴大” 點選測試計劃元素。

圖8責任。 執行緒組的預設值

8 b。 2新增LDAP請求違約

使用者首先選擇LDAP Ext元素。 點選你的滑鼠按鈕 得到新增選單,然後選擇AddConfig ElementLDAP Extended Request Defaults。 然後, 選擇這個新元素以檢視其控制面板。

像大多數JMeter的元素,LDAP擴充套件請求違約控制面板有一個名字 可以被修改。 在這個例子中,離開這個欄位的預設值。


圖8 b。 為我們的測試計劃2 LDAP違約

對於每個不同的操作,可以填寫一些預設值。 在所有情況下,當一個預設的填充,這是用於LDAP請求延長。 對於每個請求,您可以填寫的值覆蓋預設的LDAP請求延長取樣器。 當沒有輸入值為一個測試是必要的,以不可預知的方式測試會失敗!

我們不會在這裡輸入任何預設值,我們會建立一個非常小的測試規劃,我們將解釋所有的不同領域,當我們新增LDAP擴展采樣。

8 b。 3新增LDAP請求

在我們的測試計劃,我們想使用所有9 LDAP請求。

  1. 執行緒繫結
  2. 搜尋測試
  3. 比較測試
  4. 單一的bind / unbind測試
  5. 新增測試
  6. 修改測試
  7. 重新命名條目(moddn)
  8. 刪除測試
  9. 執行緒解開

JMeter的順序傳送請求,你將它們新增到樹中。

新增一個請求總是先:
新增LDAP請求延長LDAP使用者Ext元素(AddSamplerLDAP Ext Request)。 然後,選擇LDAP Ext請求樹中的元素 和編輯以下屬性。

8 b.3.1新增一個執行緒繫結請求

  1. 重新命名的元素:“1。 執行緒繫結
  2. 選擇“執行緒繫結”按鈕。
  3. 輸入主機名值的LDAP伺服器Servername欄位
  4. 進入portnumber從LDAP伺服器(636年:在港口領域ldap通過SSL)
  5. (可選)進入baseDN在DN欄位中,將使用這個baseDN作為搜尋的起始點,新增、刪除等。
    照顧這必須的共享水平為所有你的要求,例如,當所有資訊儲存ou =使用者,dc =測試,dc = combasedn中,您可以使用這個值。
  6. (可選)輸入您想要使用使用者的專有名稱進行身份驗證。 當這個欄位是空的,一個匿名繫結將建立。
  7. (可選)輸入你想進行身份驗證的使用者的密碼,一個空的密碼也將導致一個匿名繫結。
  8. (可選)輸入一個值與LDAP連線超時
  9. (可選)複選框使用安全LDAP協議如果你訪問LDAP通過SSL (LDAP)
  10. (可選)複選框TrustAll如果你想讓客戶信任所有證書
圖8 b.3.1。 執行緒繫結的例子

8 b.3.2新增一個搜尋請求

  1. 重新命名的元素:“2。 搜尋測試
  2. 選擇“搜尋測試”按鈕。
  3. (可選)進入searchbase下你想執行搜尋,相對於basedn,用於繫結請求的執行緒。
    空的時候,作為搜尋basedn基地,這檔案是很重要的,如果你想使用一個“基本項”或“一級”的搜尋(見下文)
  4. 進入searchfilter,任何像樣的LDAP搜尋篩選器會做,但是現在,使用一些簡單的,喜歡(sn = Doe)(cn = *)
  5. (可選)範圍欄位中輸入範圍,它有三個選擇:
    1. baseobject搜尋
      只使用給定searchbase,只有檢查屬性或存在。
    2. onelevel搜尋
      只搜尋一個水平低於給定searchbase使用
    3. 子樹搜尋
      搜尋物件在任何時候低於給定basedn
  6. (可選)大小限制,指定返回條目的最大數量,
  7. (可選)時間限制,指定最大的毫秒數,伺服器可以使用來執行搜尋。 這不是應用程式將等待的最長時間。
    很大returnset返回時,從一個非常快的伺服器,在一個非常緩慢,你可能需要等待很長時間搜尋請求的完成,但是這個引數不會影響。
  8. (可選)你想要在搜尋答案屬性。 這可以用來限制大小的答案,特別是當有非常大的屬性(比如一個物件jpegPhoto)。 有三種可能性:
    1. 離開空(預設設定也必須是空的)這將返回所有屬性。
    2. 放在一個空值(”“),它將請求一個不存在的屬性,所以在現實中它沒有返回任何屬性
    3. 的屬性,用分號隔開。 它將只返回所請求的屬性
  9. (可選)返回物件。 檢查將返回所有java物件屬性,將新增這些請求的屬性,如上面指定的。
    不意味著沒有java物件屬性將返回。
  10. (可選)廢棄的別名。 檢查將意味著它將跟隨引用,不不會說。
  11. (可選)解析搜尋結果。 檢查將意味著它會導致響應資料,不不會說。
圖8 b.3.2。 搜尋請求的例子

8 b.3.3新增一個比較請求

  1. 重新命名的元素:“3所示。 比較測試
  2. 選擇“比較”按鈕。
  3. 輸入你想要的entryname形式的物件比較操作工作,相對於basedn。 ”cn = jdoe, ou =Users
  4. 進入過濾器相比,這一定是形式”屬性=值”,如。 ”mail= [email protected]
圖8 b.3.3。 比較的例子

8 b.3.4新增一個bind / unbind

  1. 重新命名的元素:“4所示。 單一的bind / unbind測試
  2. 選擇“單一的bind / unbind”按鈕。
  3. 輸入你想要的全部來自使用者的專有名稱用於身份驗證。
    如。cn = jdoe, ou =Users,dc =test,dc = com當這個欄位是空的,一個匿名繫結將建立。
  4. 輸入你想進行身份驗證的使用者的密碼,一個空的密碼也將導致一個匿名繫結。
照顧:這一個bind / unbind實際上是兩個獨立的操作但不容易分裂!圖8 b.3.4。 單一的bind / unbind例子

8 b.3.5新增一個新增請求

  1. 重新命名的元素:“5。 新增測試
  2. 選擇“新增”按鈕。
  3. 輸入物件的專有名稱新增,相對於basedn。
  4. 新增一行在“新增測試”表,填寫屬性和值。
    當你需要不止一次相同的屬性,新增一個新行,再加屬性,一個不同的值。
    所有必要的屬性和值必須指定通過測試,見圖!
    (有時伺服器新增屬性”objectClass =最高”,這可能會給一個問題。
圖8 b.3.5。 新增請求示例

8 b.3.6新增一個修改的請求

  1. 重新命名的元素:“6。 修改測試
  2. 選擇“修改測試”按鈕。
  3. 輸入物件的專有名稱修改,相對於basedn。
  4. 新增一行在“修改測試“表,與“新增”按鈕。
  5. 您需要輸入您想修改屬性,值(可選),操作碼。 這個操作碼的意思:
    新增
    這將意味著屬性值(而不是可選的,在這種情況下)將被新增到屬性。
    當屬性不存在,它將被建立和附加價值
    現有的,和多值定義,添加了新的價值。
    當現有的,但單值,它就會失敗。
    取代
    這將覆蓋屬性與給定的新值(可選)
    當屬性不存在,它將被建立和附加價值
    當它現有的舊值刪除,添加了新的價值。
    刪除
    當沒有賦值,所有的值將被刪除
    只給出一個值時,該值將被刪除
    當給定值不存在,測試就會失敗
  6. (可選)在“新增更多的修改修改測試”表。
    所有修改指定必須成功,讓修改測試通過。 當一個修改失敗, 任何修改將條目將保持不變。
圖8 b.3.6。 修改示例

8 b.3.7新增一個重新命名請求(moddn)

  1. 重新命名的元素:“7所示。 重新命名條目(moddn)
  2. 選擇“重新命名輸入”按鈕。
  3. 輸入條目的名稱,相對於baseDN,在“舊條目名稱”欄位。
    也就是說,如果你想重新命名”cn =小John Doe, ou =使用者”,設定“baseDNdc =test,dc = com”, 你需要輸入“cn =約翰初級能源部,ou =使用者“在舊條目名稱欄位。
  4. 輸入新名稱的條目,相對於baseDN,在“新的專有名稱”欄位。
    當你只修改RDN,它只會重新命名的條目
    還當你新增一個不同的子樹,例如你改變cn = john doe, ou =Userscn = john doe, ou = oldusers,它將條目。 你也可以移動整個子樹(如果您的LDAP伺服器支援這個!),例如:ou =Users,ou =retired,ou = oldusers, ou =Users, 這將完整的子樹,加上子樹中所有退休人員的新地方的樹。
圖8 b.3.7。 重新命名的例子

8 b.3.8新增刪除請求

  1. 重新命名的元素:“8。 刪除測試
  2. 選擇“刪除”按鈕。
  3. 輸入條目的名稱,相對於baseDN刪除欄位。
    也就是說,如果你想要刪除”cn =John Junior Doe,ou =Users,dc =test,dc = com”,設定“baseDNdc =test,dc = com”, 你需要輸入“cn =John Junior Doe,ou =Users“在刪除欄位。
圖8 b.3.8。 刪除示例

8 b.3.9新增一個解放的要求

  1. 重新命名的元素:“9。 執行緒解開
  2. 選擇“執行緒解開”按鈕。 這將是足夠的,因為它只是關閉當前連線。 這需要的是已知的資訊系統
圖8 b.3.9。 解放的例子

8 b。 4一個偵聽器新增到檢視/儲存測試結果

最後一個元素需要新增到您的測試計劃是一個偵聽器。 這個元素是負責儲存所有LDAP的結果 請求一個檔案和呈現的視覺模型資料。 選擇執行緒組 元素,並新增一個樹檢視的結果(AddListenerView Results Tree)

圖8 b.4。 檢視結果樹偵聽器

在這個監聽器有三個選項卡檢視、取樣器的結果,請求和響應資料。

    1. 取樣器的結果只包含響應時間,returncode並返回訊息
    2. 請求給一個簡短的描述的要求,在實踐中沒有相關資訊 包含在這裡。
    3. 響應資料包含的全部細節傳送請求,以及收到的全部細節的答案, 這是在一個xml樣式(自定義)。可以在這裡找到完整的描述。

9。 建立一個網路服務的測試計劃

在本節中,您將學習如何建立一個測試計劃測試一個網路服務。 你會 建立5個使用者傳送請求到一頁。 同時,你會告訴使用者執行測試兩次。 的總數 請求使用者請求(5)x (1) x(重複2次)= 10 HTTP請求。 來 建立測試計劃,您將使用下列元素:執行緒組,HTTP請求,綜合圖

如果取樣器從webservice似乎得到一個錯誤,雙重檢查 SOAP訊息,並確保是正確的格式。 特別是,確保xmlns屬性完全相同的WSDL。 如果xml名稱空間 不同,網路服務可能會返回一個錯誤。

9.1建立網路服務的測試計劃

在我們的測試計劃中,我們將使用一個. net網路服務。 我們不會去寫的細節 網路服務。 如果你不知道如何編寫一個網路服務,谷歌 網路服務和熟悉編寫web服務 Java和。net。 應該注意的有顯著差異 之間如何。net和Java web服務實現。 這個話題太 廣泛覆蓋的使用者手冊。 請參考其他來源 得到一個更好的主意的差異。

JMeter傳送請求的順序出現在樹上。

首先使用選單FileTemplates…並選擇模板”Building a SOAP Webservice Test Plan”。 然後,點選“Create”按鈕。

圖9.1.0。 網路服務模板改變如下:
  1. 在“HTTP請求違約“改變”IP的伺服器名稱
  2. 在“Soap請求”,改變“路徑:圖9.1.1 Webservice路徑

接下來,選擇“HTTP Header Manager“和更新”SOAP Action“頭來匹配你的網路服務。 一些web服務可能不使用SOAPAction在這種情況下,刪除它。
目前,只有net使用SOAPAction,所以它是正常的空白SOAPAction對於所有其他web服務。 列表包括JWSDP, Weblogic, Axis, The Mind Electric Glue, and gSoap.

圖9.1.2 Webservice頭

最後一步是貼上的SOAP訊息”身體資料” 文字區域。

圖9.1.3 Webservice的身體

9.2新增使用者

執行緒組告訴 JMeter的使用者數量你想模擬,使用者應該傳送的次數 請求,他們應該傳送的請求的數量。

選擇執行緒組元素 在樹上,如果您還沒有選擇它。 您現在應該看到執行緒 JMeter的集團控制面板在正確的部分視窗(見圖9.2 下圖)

圖9.2。 執行緒組的預設值

首先提供一個更具描述性的名字我們的執行緒組。 的名字 欄位中,輸入JMeter的使用者。

接下來,增加使用者的數量(稱為執行緒)10。

下一個欄位的過渡時期,保留預設值0 秒。 這個屬性告訴JMeter多久開始每個之間的延遲 使用者。 例如,如果你輸入一個5秒的過渡時期,JMeter的意志 完成你所有的使用者開始在年底前5秒。 所以,如果我們有 5使用者和一個5秒過渡時期,然後開始使用者之間的延遲 將1秒(5使用者/ 5秒= 1使用者每秒)。 如果你設定 值為0,那麼JMeter將立即開始你所有的使用者。

最後,清除複選框標記為“永遠”,並輸入一個值2在 迴圈計數字段。 這個屬性告訴JMeter多少次重複你的 測試。 如果你進入一個迴圈計數的價值0,然後JMeter只執行您的測試 一次。 JMeter反覆執行您的測試計劃,選擇永遠複選框。

在大多數應用程式中,您必須手動接受 您所作的改變在一個控制面板。 然而,在JMeter,控制面板 你讓他們自動接受您的更改。 如果你改變 一個元素的名稱,這棵樹將被更新後用新的文字 把控制面板(例如,當選擇另一個樹元素)。

參見圖9.2完成JMeter使用者執行緒組。

圖9.3。 JMeter使用者執行緒組

9.3新增一個偵聽器來檢視儲存測試結果

最後一個元素是一個需要新增到您的測試計劃偵聽器。 這個元素是 負責將所有HTTP請求的結果儲存在一個檔案和展示 資料的視覺化模型。

選擇JMeter使用者並新增一個元素綜合圖偵聽器 (新增偵聽器綜合圖). 接下來,您需要指定一個目錄和檔名 輸出檔案。 你可以到檔名欄位型別,或選擇 瀏覽按鈕,瀏覽到一個目錄,然後輸入一個檔名。

圖9.4。 圖結果偵聽器

9.4其他網路服務

測試其他網路服務非常相似,你只需要修改在HTTP請求

  • 方法:選擇一個你想要測試
  • 身體資料:可JSON、XML或任何自定義文字
你可能還需要修改”HTTP Header Manager“選擇正確的”Content-type

10。 建立一個JMS點對點測試計劃

確保所需的jar檔案在JMeter的自由目錄中。 如果他們不是,關閉JMeter, 重啟JMeter複製jar檔案。 看到開始獲取詳細資訊。

在本節中,您將學習如何建立一個測試計劃測試一個JMS點到點訊息傳遞解決方案。 測試的設定是1與5執行緒傳送4 threadgroup每通過一個請求佇列的訊息。 固定應答佇列將用於監測應答訊息。 建立測試計劃,您將使用 以下元素:執行緒組,JMS點對點,圖結果

一般筆記JMS:目前有兩個JMS取樣。 一個使用JMS主題 和另一種使用佇列。 主題通常被稱為釋出/訂閱訊息傳遞的訊息。 主題訊息通常是用在這種情況下,訊息由生產者和出版 被多個訂閱者。 JMS取樣器需要JMS實現的jar檔案; 例如,從Apache ActiveMQ。 看到在這裡的列表 ActiveMQ提供的jar。

10.1新增一個執行緒組

第一步你想做的每一個JMeter測試計劃是新增一個執行緒組元素。 執行緒組告訴 JMeter的使用者數量你想模擬,使用者應該傳送的次數 請求,他們應該傳送的請求的數量。

繼續新增ThreadGroup元素首先選擇測試計劃, 點選你的滑鼠右鍵新增選單,然後選擇AddThreadGroup

您現在應該看到測試計劃下的執行緒組元素。 如果你不 看到的元素,那麼“擴大”點選測試計劃樹 測試計劃的元素。

接下來,您需要修改預設屬性。 選擇執行緒組元素 在樹上,如果您還沒有選擇它。 您現在應該看到執行緒 JMeter的控制面板在正確的部分視窗(見圖10.1 下圖)

圖10.1。 執行緒組的預設值

首先提供一個更具描述性的名字我們的執行緒組。 的名字 欄位中,輸入點對點

接下來,增加使用者的數量(稱為執行緒)5

下一個欄位的過渡時期,將值設定為0 秒。 這個屬性告訴JMeter多久開始每個之間的延遲 使用者。 例如,如果你輸入一個5秒的過渡時期,JMeter的意志 完成你所有的使用者開始在年底前5秒。 所以,如果我們有 5使用者和一個5秒過渡時期,然後開始使用者之間的延遲 將1秒(5使用者/ 5秒= 1使用者每秒)。 如果你設定 值為0,那麼JMeter將立即開始你所有的使用者。

清除複選框標記為“永遠”,並輸入一個值4在迴圈 計算欄位。 這個屬性告訴JMeter多少次重複測試。 如果你進入一個迴圈計數的價值0,然後JMeter只執行您的測試 一次。 JMeter反覆執行您的測試計劃,選擇永遠複選框。

在大多數應用程式中,您必須手動接受 您所作的改變在一個控制面板。 然而,在JMeter,控制面板 你讓他們自動接受您的更改。 如果你改變 一個元素的名稱,這棵樹將被更新後用新的文字 把控制面板(例如,當選擇另一個樹元素)。

10.2新增JMS點對點的取樣器

開始通過增加取樣器JMS點對點點對點的元素 (AddSamplerJMS Point-to-Point)。 然後,選擇JMS點對點取樣器元素樹。 在構建示例將提供一個配置,使用ActiveMQ 3.0。

名字價值描述
JMS資源
QueueConnectionFactory ConnectionFactory 這是預設的連線工廠的JNDI條目在ActiveMQ。
JNDI Name Request
Q.REQ 這等於在JNDI屬性定義的JNDI名稱。
JNDI Name Reply Queue
Q.RPL 這等於在JNDI屬性定義的JNDI名稱。
訊息屬性
Communication Style
請求響應 這意味著您需要至少一個服務執行JMeter之外,將響應請求。 該服務必須聽請求佇列,將訊息傳送到佇列的引用message.getJMSReplyTo ()
Content 測試 這是訊息的內容。
JMS Properties
ActiveMQ所需。
JNDI屬性
InitialContextFactory org.apache.activemq.jndi.ActiveMQInitialContextFactory 的標準InitialContextFactory ActiveMQ
屬性
queue.Q.REQ example.A 這定義了一個JNDI名稱Q.REQ為請求佇列指向佇列
queue.Q.RPL example.B 這定義了一個JNDI名稱Q.RPL點到佇列的應答佇列example.B
提供者URL
Provider URL tcp: / / localhost: 61616 這個定義的URL ActiveMQ訊息傳遞系統。

10.3新增一個偵聽器來檢視儲存測試結果

最後一個元素是一個需要新增到您的測試計劃偵聽器。 這個元素是 負責將所有JMS請求的結果儲存在一個檔案和展示 資料的視覺化模型。

選擇並新增一個執行緒組的元素圖結果偵聽器 (AddListenerGraph Results). 接下來,您需要指定一個目錄和檔名 輸出檔案。 你可以到檔名欄位型別,或選擇 瀏覽按鈕,瀏覽到一個目錄,然後輸入一個檔名。

圖10.2。 圖結果偵聽器

11。 建立一個JMS主題測試計劃

JMS需要下載一些可選的罐子。 請參考開始全部細節。

在本節中,您將學習如何建立一個測試計劃測試JMS提供者。 你會 建立五個使用者和出版商。 您將建立兩個執行緒組和組 每一個到10迭代。 總訊息執行緒(6)x(1訊息) (重複10次)= 60訊息。 建立測試計劃,您將使用 以下元素:執行緒組,JMS的出版商,JMS使用者,圖結果

一般筆記JMS:目前有兩個JMS取樣。 一個使用JMS主題 和另一種使用佇列。 主題通常被稱為釋出/訂閱訊息傳遞的訊息。 主題訊息通常是用在這種情況下,訊息由生產者和出版 被多個訂閱者。 佇列訊息通常是用於交易 傳送方期待響應。 訊息傳遞系統有很大的不同 正常的HTTP請求。 在HTTP中,單個使用者傳送一個請求並獲得響應。 資訊系統可以在同步和非同步模式下工作。 JMS取樣器的需求 JMS實現的jar檔案; 例如,從Apache ActiveMQ。 看到在這裡列表的ActiveMQ提供的jar。

11.1新增使用者

第一步是新增一個執行緒組元素。 執行緒組告訴JMeter的使用者數量你想模擬, 多長時間使用者應該傳送請求,請求他們應該多少 傳送。

繼續新增ThreadGroup元素首先選擇測試計劃, 點選你的滑鼠右鍵新增選單,然後選擇AddThreadGroup

您現在應該看到測試計劃下的執行緒組元素。 如果你不 看到的元素,那麼“擴大”點選測試計劃樹 測試計劃的元素。

接下來,您需要修改預設屬性。 選擇執行緒組元素 在樹上,如果您還沒有選擇它。 您現在應該看到執行緒 JMeter的控制面板在正確的部分視窗(見圖11.1 下圖)

圖11.1。 執行緒組的預設值

首先提供一個更具描述性的名字我們的執行緒組。 的名字 欄位中,輸入使用者

接下來,增加使用者的數量(稱為執行緒)5

下一個欄位,過渡時期,將值設定為0秒。 這個屬性告訴JMeter多久開始每個之間的延遲 使用者。 例如,如果你輸入一個5秒的過渡時期,JMeter的意志 完成你所有的使用者開始在年底前5秒。 所以,如果我們有 5使用者和一個5秒過渡時期,然後開始使用者之間的延遲 將1秒(5使用者/ 5秒= 1使用者每秒)。 如果你設定 值為0,JMeter將立即開始所有使用者。

清除複選框標記為“永遠”,並輸入一個值10在迴圈 計算欄位。 這個屬性告訴JMeter多少次重複測試。 如果你進入一個迴圈計數的價值0,然後JMeter只執行您的測試 一次。 JMeter反覆執行您的測試計劃,選擇永遠複選框。

重複這個過程,新增另一個執行緒組。 第二個執行緒 組,輸入“出版商在name欄位,設定執行緒的數量1, 並設定迭代10

在大多數應用程式中,您必須手動接受 您所作的改變在一個控制面板。 然而,在JMeter,控制面板 你讓他們自動接受您的更改。 如果你改變 一個元素的名稱,這棵樹將被更新後用新的文字 把控制面板(例如,當選擇另一個樹元素)。

11.2新增JMS使用者和出版商

確保所需的jar檔案在JMeter的自由目錄中。 如果他們是 JMeter關閉,重啟JMeter複製jar檔案。

開始通過增加取樣器JMS使用者使用者元素 (AddSamplerJMS Subscriber)。 然後,選擇JMS使用者樹中的元素和編輯以下屬性:

  1. Name欄位更改為“Sample Subscriber
  2. 如果JMS提供者使用jndi.properties檔案,選中複選框
  3. 輸入InitialContextFactory類的名稱。 例如,使用ActiveMQ 5.4,值是“org.apache.activemq.jndi.ActiveMQInitialContextFactory
  4. 輸入提供者URL。 這是JNDI伺服器的URL,如果有的話。 例如,使用ActiveMQ 5.4在本地機器上使用預設埠,價值是“tcp: / / localhost: 61616
  5. 輸入連線工廠的名稱。 請參考文件 JMS提供者的資訊。 ActiveMQ,預設是“ConnectionFactory
  6. 輸入訊息的主題的名稱。 ActiveMQ動態主題(動態地建立主題),值是“dynamicTopics / MyStaticTopic1 注意:設定在啟動意味著JMeter開始監聽目標沒有名稱的改變可能在開始測試。 設定在每個樣本均值JMeter(重新)開始執行每個JMS使用者示例之前,聽 最後一個選項允許有目的地名稱有些JMeter變數
  7. 如果JMS提供者需要身份驗證,檢查”request”,進入 使用者名稱和密碼。 例如,獵戶座JMS需要身份驗證,而ActiveMQ 和MQSeries不
  8. 輸入10在“Number of samples to aggregate”。 由於效能原因,取樣器 將聚合資訊,因為小訊息將很快到達。 如果取樣器 沒有聚合的訊息,JMeter無法跟上。
  9. 如果你想閱讀響應,複選框
  10. 有兩個客戶端實現使用者。 如果JMS提供展品殭屍執行緒和一個客戶端,試試另一個。
圖11.2。 JMS使用者

接下來新增取樣器JMS的出版商出版商元素 (AddSamplerJMS Publisher)。 然後,選擇JMS出版商元素在樹上和編輯以下屬性:

  1. Name欄位更改為“Sample Subscriber”。
  2. 如果JMS提供者使用jndi.properties檔案,選中複選框
  3. 輸入InitialContextFactory類的名稱。 例如,使用ActiveMQ 5.4,值是“org.apache.activemq.jndi.ActiveMQInitialContextFactory
  4. 輸入提供者URL。 這是JNDI伺服器的URL,如果有的話。 例如,使用ActiveMQ 5.4在本地機器上使用預設埠,價值是“tcp: / / localhost: 61616
  5. 輸入連線工廠的名稱。 請參考文件 JMS提供者的資訊。 ActiveMQ,預設是“ConnectionFactory
  6. 輸入訊息的主題的名稱。 ActiveMQ動態主題(動態地建立主題),值是“dynamicTopics / MyStaticTopic1”。 注意:設定在啟動意味著JMeter開始與目的地沒有名稱的改變可能在開始測試。 設定在每個樣本均值JMeter(重新)開始連線在執行每個JMS出版商示例之前, 最後一個選項允許有目的地名稱有些JMeter變數
  7. 如果JMS提供者需要身份驗證,檢查”request”,進入 使用者名稱和密碼。 例如,獵戶座JMS需要身份驗證,而ActiveMQ 和MQSeries不
  8. 輸入10在“Number of samples to aggregate”。 由於效能原因,取樣器 將聚合資訊,因為小訊息將很快到達。 如果取樣器 沒有聚合的訊息,JMeter無法跟上。
  9. 選擇適當的配置訊息釋出。 如果你 希望取樣器隨機選擇訊息,將訊息放到一個目錄中 使用瀏覽並選擇目錄。
  10. 選擇訊息型別。 如果訊息在物件格式或地圖資訊,確保 訊息是正確地生成的。
圖11.3。 JMS的出版商

11.3新增一個偵聽器來檢視儲存測試結果

最後一個元素是一個需要新增到您的測試計劃偵聽器。 這個元素是 負責將所有HTTP請求的結果儲存在一個檔案和展示 資料的視覺化模型。

選擇測試計劃並新增一個元素圖結果偵聽器 (AddListenerGraph Results). 接下來,您需要指定一個目錄和檔名 輸出檔案。 你可以到檔名欄位型別,或選擇 瀏覽按鈕,瀏覽到一個目錄,然後輸入一個檔名。

圖11.4。 圖結果偵聽器

12。 介紹偵聽器

一個偵聽器是一個元件,顯示的結果 樣本。 結果可以顯示在一個樹,表格,圖表或簡單地寫入到日誌中 檔案。 檢視的內容反應任何給定的取樣器,新增的監聽器”檢視 結果樹”或“檢視的結果表一個測試計劃。 檢視圖形的響應時間,新增 圖的結果。偵聽器部分元件的頁面完整描述所有的偵聽器。

不同的偵聽器以不同的方式顯示的響應資訊。 然而,他們都寫相同的原始資料到指定的輸出檔案——如果一個。

配置”按鈕可以用來指定哪些欄位寫入檔案,以及是否 把它寫成CSV或XML。 比XML檔案CSV檔案要小得多,所以使用CSV如果你生成了大量的樣品。

檔名可以指定使用一個相對或絕對路徑名。 相對路徑解析相對於當前工作目錄(預設bin /目錄)。 JMeter還支援路徑相對於包含當前目錄測試計劃(JMX檔案)。 如果路徑名始於“~/”(或任何jmeter.save.saveservice.base_prefixJMeter屬性), 那麼路徑被認為是相對於JMX檔案位置。

如果你只希望記錄某些樣本,取樣器的新增偵聽器作為一個孩子。 或者你可以使用一個簡單的控制器組一組取樣,並將偵聽器新增到。 可以使用相同的檔名由多個取樣,但確保他們都使用相同的配置!

12.1預設配置

預設的專案可以定義在得救jmeter.properties(或user.properties)檔案。 屬性被用作初始設定監聽器配置彈出,和也 用於指定的日誌檔案- l命令列標誌(通常用於CLI模式測試執行)。

改變預設格式,發現下面的線jmeter.properties:

jmeter.save.saveservice.output_format =

資訊儲存的是可配置的。 最大的資訊,選擇“xml“格式和指定”功能測試模式在測試計劃的元素。 如果不檢查這個盒子,預設儲存 資料包含一個時間戳(午夜以來的毫秒數, 1970年1月1日UTC),資料型別,執行緒名稱,標籤, 響應時間、訊息和程式碼,一個成功的指標。 如果勾選此項,所有的資訊,包括完整的響應資料將被記錄。

下面的例子顯示如何設定 屬性來得到一個豎線(“|會”)分隔的格式 輸出結果:。

相應的jmeter.properties需要設定如下所示。 一個奇怪的地方 在這個例子中是,output_format被設定為csv,這 通常 表明逗號分隔值。 然而,default_delimiter是 將一個豎線,而不是一個逗號,因此csv標籤 在這種情況下用詞不當。 (認為CSV意義字元分隔值)

屬性,影響結果的全套檔案輸出如下所示。


日期格式用於timestamp_format描述的是SimpleDateFormat。 時間戳的格式用於寫作和閱讀檔案。 如果格式設定為“女士”,並作為一個長整數列不解析, JMeter(2.9 +)將下列格式:

  • yyyy / MM / dd HH: MM: ss.SSS
  • yyyy / MM / dd HH: MM: ss
  • yyyy-MM-dd HH: mm: ss.SSS
  • yyyy-MM-dd HH: mm: ss
  • MM / dd / yy HH: MM: ss(這是為了相容以前的版本; 不建議作為一種格式)
匹配(non-lenient)現在也嚴格。 2.8和更早的JMeter寬鬆模式導致使用時間戳與不正確的日期 通常是正確的(倍)。

12.1.1樣本變數

JMeter支援sample_variables屬性定義一個額外的JMeter變數列表的得救 韓國樂團中的每個樣本檔案。 的值將被寫入到CSV檔案作為額外的列, 和附加屬性的XML檔案。 在上面看到了一個例子。

12.1.2樣本結果儲存配置

偵聽器可以配置為不同的專案儲存到日誌檔案(韓國樂團)結果通過使用配置彈出如下所示。 預設值被定義為描述的偵聽器預設配置上面的部分。 專案名稱後(CSV)只適用於CSV格式; 專案(XML)只適用於XML格式。 CSV格式目前不能用於儲存任何物品,包括換行符。


配置對話

注意,餅乾,方法和查詢字串儲存的一部分”取樣器資料”選項。

12.2 CLI模式(批)測試執行

在CLI模式下執行時,- l國旗可以用來建立一個頂級偵聽器的測試執行。 這是除了任何偵聽器在測試計劃中定義。 此偵聽器的配置控制檔案中的條目jmeter.properties如前一節所述。

此功能可用於指定不同的資料和日誌檔案對於每個測試執行,例如:

注意,JMeter日誌訊息寫入到檔案中jmeter.log預設情況下。 每次重新建立這個檔案,所以如果你想保持每個執行的日誌檔案, 您將需要使用的重新命名它- j選擇如上所述。

JMeter支援日誌檔案中的變數名稱。 如果檔名包含成對的單引號,那麼名字是處理 作為一個SimpleDateFormat格式應用於當前日期,例如:log_file = ' jmeter_ ' yyyyMMddHHmmss .tmp”。 這可以用於生成一個唯一的名稱為每個測試執行。

12.3資源使用情況

偵聽器可以使用大量記憶體,如果有很多樣品。

目前大多數的偵聽器保持一份每個樣本顯示,除了:

  • 簡單的資料記錄
  • BeanShell / JSR223偵聽器
  • 梅勒視覺化工具
  • 監測結果
  • 摘要報告

下面的偵聽器不再需要保持每一個樣本的副本。 相反,和樣品相同的執行時間是聚合。 現在需要更少的記憶體,尤其是大多數樣品只需要一兩秒。

  • 總報告
  • 綜合圖

儘量減少所需的記憶體,使用簡單的資料的作家,並使用CSV格式。

12.4 CSV日誌格式

CSV日誌格式取決於哪些資料項中選擇配置。 只有指定的資料項記錄在檔案中。 外觀的列的順序是固定的,如下:

  • timeStamp-1/1/1970以來,以毫秒為單位
  • elapsed-以毫秒為單位
  • label-取樣器標籤
  • responseCode-如:200,404
  • responseMessage-如:好吧
  • threadName
  • dataType-如:文字
  • success-
  • failureMessage-如果任何
  • bytes-在樣例的位元組數
  • sentBytes-樣品傳送的位元組數
  • grpThreads-該執行緒組的活動執行緒數
  • allThreads-在所有組活動執行緒的總數
  • URL
  • Filename-如果儲存對檔案使用
  • latency-時間的第一反應
  • connect-時間建立連線
  • encoding
  • SampleCount-數量的樣品(1,除非聚合多個樣本)
  • ErrorCount-錯誤數量(0或1,除非聚合多個樣本)
  • hostname-生成的示例
  • IdleTime-“空閒”時間的毫秒數(通常0)
  • variables-如果指定

12.5 XML日誌格式2.1

更新XML(2.1)的格式如下(換行符將會不同):

注意,示例節點名稱可以是“樣本”或“httpSample”。

12.6 XML日誌格式2.2

JTL檔案的格式是一樣的2.2和2.1。 2.2僅影響JMX檔案格式。

12.7樣本的屬性

樣本的屬性有以下意義:

屬性內容
by 位元組
sby 傳送位元組
de 資料編碼
dt 資料型別
ec 錯誤數(0或1,除非聚合多個樣本)
hn 主機名示例生成的地方
it 空閒時間=時間不花在抽樣(毫秒)一般(0)
lb 標籤
lt 延遲=初始響應時間(毫秒)——並不是所有的取樣器支援這個
ct 連線時間=建立連線的時間(毫秒)——並不是所有的取樣器支援這個
na 所有執行緒組的活動執行緒的數量
ng 這組活動執行緒的數量
rc 響應程式碼(如:200)
rm 響應訊息(如:好吧)
s 成功的標誌(/)
sc 樣本計數(1,除非聚合多個樣本)
t 執行時間(毫秒)
tn 執行緒的名字
ts 自1970年1月1日午夜時間戳(毫秒UTC)
varname 指定變數的值
JMeter允許額外的變數儲存的測試計劃。 目前,該變數是儲存為額外的屬性。 使用testplan變數名稱作為屬性名稱。 看到樣本變數更多資訊(上圖)。

12.8儲存響應資料

如上所示,可以儲存在XML響應資料日誌檔案如果需要。 然而,這可以使檔案很大,和文字必須編碼 它仍然是有效的XML。 另外,圖片不能包括在內。 只有樣品反應型別文字可以儲存。
另一個解決方案是使用後處理器Save_Responses_to_a_file。 這對每個樣本生成一個新檔案,並儲存檔名與樣品。 檔名可以包含在示例日誌輸出。 檢索的資料將從檔案示例日誌檔案重新載入時如果有必要。

12.9載入(閱讀)響應資料

檢視現有的結果檔案,您可以使用檔案”瀏覽…”按鈕選擇一個檔案。 如果有必要,就建立一個虛擬測試規劃適當的監聽器。

結果可以讀取XML或CSV格式的檔案。 當閱讀從CSV檔案,結果頭(如果存在)是用來確定哪些欄位儲存。為了解釋header-less CSV檔案正確,適當的JMeter屬性必須設定。

JMeter之前不清楚任何當前資料載入新檔案從而使檔案合併。 如果你想要清除當前資料,使用選單項:RunClear(Ctrl+E)執行清除所有(Ctrl+E)載入檔案前的內容

12.10偵聽器GUI資料儲存

JMeter的任何偵聽器儲存為PNG檔案。 為此,選擇 偵聽器在左邊的面板。 點選EditSave Node as Image。 一個檔案對話方塊 出現。 輸入所需的名稱並儲存偵聽器。

的偵聽器產生輸出表也可以使用複製/貼上儲存。 表中選擇所需的細胞,並使用作業系統複製捷徑(正常Ctrl+C)。 資料將被儲存到剪貼簿,從那裡可以貼上到另一個應用程式, 如一個電子表格或文字編輯器。

圖1 -編輯將節點儲存為圖片

13。 遠端測試

如果你的JMeter客戶機不能進行屬性,來模擬 足夠的使用者強調您的伺服器或在網路水平是有限的,存在一個選項來控制多個遠端JMeter 引擎從一個JMeter客戶機。 通過執行JMeter遠端,你可以複製 一個測試在許多低端電腦,從而模擬伺服器上的負載更大。 一個 JMeter的例項客戶端可以控制任意數量的遠端JMeter例項,並收集 所有的資料。 這提供了以下功能:

  • 測試樣品的儲存到本地計算機
  • 管理多個JMeterEngines從一個機器
  • 不需要複製測試計劃每個伺服器-客戶端傳送到伺服器
注:相同的測試計劃是由所有的伺服器。 JMeter不分發伺服器之間的負載,每一個執行完整的測試計劃。 如果你設定1000個執行緒,有6個JMeter伺服器,你最終注入6000個執行緒。

然而,遠端模式並使用更多的資源比獨立執行相同數量的CLI模式測試。 如果使用了許多伺服器例項,客戶機JMeter可以成為過載,因為客戶端網路連線。 這是提高了切換到剝奪模式(見下文),但你應該經常檢查你的客戶不是超載。

注意,雖然您可以執行JMeterEngine在您的應用程式 伺服器,您需要注意這一事實,這將是增加處理 開銷在應用伺服器上,因此您的測試結果 有些汙染。 推薦的方法是有一個或多個機器上 相同的乙太網段配置執行您的應用程式伺服器 JMeter引擎。 這將最小化網路測試的影響 結果而不影響應用程式伺服器的效能 本身。

步驟0:配置節點

確保所有節點(客戶機和伺服器):

  • 執行JMeter的完全相同的版本。
  • 所有系統上使用相同的Java版本。 使用不同版本的Java可能工作但不鼓勵。
  • 有一個有效的為RMI / SSL金鑰儲存庫,或者你有困難使用SSL。

如果測試使用任何資料檔案,請注意,這些都不是跨由客戶機發送 確保這些在每個伺服器上相應的目錄。 如果有必要你可以定義不同的值通過編輯屬性user.propertiessystem.properties在每個伺服器上的檔案。 這些屬性將會撿起當伺服器啟動和可能 測試計劃中使用影響其行為(例如,連線到一個不同的遠端伺服器)。 或者使用不同的內容所使用的任何資料檔案來完成測試 (例如,如果每個伺服器必須使用獨特的id,把這些資料檔案)之間的

步驟1:啟動伺服器

執行JMeter遠端節點,在所有機器上啟動JMeter伺服器元件你希望通過執行上執行 的JMETER_HOME / bin / jmeter-server(unix)或JMETER_HOME / bin / jmeter-server.bat(windows)指令碼。

注意,在每個節點上只能有一個JMeter伺服器不同,除非使用RMI埠。

JMeter伺服器應用程式啟動RMI註冊中心本身; 沒有必要開始單獨RMI登錄檔。

預設情況下,RMI使用動態埠為JMeter伺服器引擎。 這可能會導致問題防火牆、 所以你可以定義JMeter屬性server.rmi.localport控制這個埠號。 它將被用作本地埠號伺服器引擎。

步驟2:新增伺服器IP客戶的屬性檔案

編輯屬性檔案在控制JMeter的機器。 在JMETER_HOME / bin / jmeter.properties, 找到屬性命名為“remote_hosts”, 新增的值執行JMeter伺服器的IP地址。 可以新增多個這樣的伺服器,以逗號分隔。

請注意,您可以使用-R命令列選項而不是指定遠端主機(s)使用。 這有同樣的效果-r-Jremote_hosts ={serverlist} 如。

如果您定義JMeter屬性server.exitaftertest = true後退出,那麼伺服器將執行一個測試。 看到也- x標誌(下面描述)

步驟3:從GUI客戶機啟動JMeter客戶端檢查配置

現在您已經準備好開始控制JMeter客戶機。 微軟視窗系統,啟動客戶端指令碼”bin / jmeter.bat". . 對於UNIX, 使用指令碼”bin / jmeter". . 你會注意到Run選單包含兩個子選單:“遙控起動”和“遠端停止” (見圖1)。這些選單包含您在屬性檔案中設定客戶端。 使用遠端啟動和停止的 正常的JMeter啟動和停止的選單項。

圖1 -執行選單

步驟3 b: JMeter的CLI模式啟動客戶端

GUI模式只能用於除錯,作為一個更好的選擇,你應該在遠端伺服器上啟動測試(s)從一個CLI模式(命令列)客戶端。 命令就是:

其他標誌可能有用:

-Gproperty =value
定義一個屬性在所有伺服器(可能出現不止一次)
- x
退出遠端伺服器的測試。

第一個例子將開始測試在任何伺服器上定義在JMeter屬性remote_hosts;
第二個例子將定義remote_hosts從伺服器列表中,然後開始測試在遠端伺服器上。
命令列客戶端將退出當所有的遠端伺服器已停止。

13.1建立SSL

因為JMeter 4.0預設的RMI傳輸機制將使用SSL。 SSL金鑰和證書需要工作。 你必須自己建立的金鑰。

最簡單的設定是對所有JMeter使用一對金鑰/證書伺服器和客戶端連線。 JMeter附帶了一個指令碼生成一個金鑰儲存庫 包含一個關鍵(及其相應的證書)rmi。 指令碼位於目錄,並可用於Windows系統(稱為bin / create-rmi-keystore.bat)和Unix系統(稱為bin / create-rmi-keystore.sh)。 這將生成一個金鑰對,有效期為7天,預設密碼的價值”changeit'. 這是建議在呼叫它目錄中。

當您執行這個指令碼時,它會問你一些問題將嵌入證書名稱。 你可以輸入任何你想要的,只要金鑰儲存庫工具接受它。 該值必須匹配的屬性server.rmi.ssl.keystore.alias,預設為rmi。 一個樣本會話建立金鑰儲存庫如下所示。

RMI預設設定應該使用此設定。 複製檔案bin / rmi_keystore.jks每一個您希望使用JMeter伺服器和客戶端分散式測試設定。

13.2人為操作

在某些情況下,jmeter-server指令碼可能不會為你工作(如果您正在使用一個作業系統平臺沒有預期到的JMeter開發人員)。 下面是如何開始JMeter伺服器(步驟1),更多的手動過程:

步驟1:啟動RMI登錄檔

JMeter 2.3.1以來,JMeter的RMI登錄檔啟動伺服器,所以本節不適用在正常的情況下。 回到之前的行為,定義JMeter的財產server.rmi.create = false在伺服器主機系統 遵循下面的說明。

JMeter使用遠端方法呼叫(RMI)作為遠端通訊機制。 因此,您需要 執行RMI註冊應用程式(被命名為“rmiregistry”)與JDK和位於”” 目錄中。 在執行之前rmiregistry,確保以下jar檔案在你的系統類路徑:

  • JMETER_HOME / lib / ext / ApacheJMeter_core.jar
  • JMETER_HOME / lib / jorphan.jar
  • JMETER_HOME / lib / logkit-2.0.jar
的 rmiregistry某些JMeter應用程式需要訪問類。 執行rmiregistry不帶引數。 預設情況下, 應用程式聽埠1099年

步驟1 b:啟動JMeter伺服器

RMI註冊應用程式執行後,啟動JMeter伺服器。 使用“- s“jmeter啟動指令碼選項(“jmeter - s”)。

步驟2和3是相同的。

13.3建議

JMeter / RMI需要從客戶端到伺服器的連線。 這將使用你選擇埠,預設1099
JMeter / RMI還需要反向連線,以便從伺服器返回的樣本結果給客戶端。
這些將使用編號港口。
這些埠可以由jmeter控制財產client.rmi.localportjmeter.properties
如果這是零,它將被用作基礎為客戶端引擎本地埠號。 此時將開啟JMeter 開頭的三個港口中定義的埠client.rmi.localport。 如果有防火牆或其他網路過濾器JMeter客戶機和伺服器之間, 您將需要確保他們通過設定允許連線。 如果有必要,使用監控軟體展示交通生成。

如果你執行Suse Linux,這些建議可能會有幫助。 預設的安裝可能會啟用防火牆。 在這種情況下, 遠端測試將不會正常工作。 下面的建議來自謝爾蓋十。

如果你看到連線拒絕,開啟除錯通過以下選項。

JMeter 2.3.1以來,RMI登錄檔啟動的伺服器; 然而JMeter的選項仍然可以通過命令列。 例如:“jmeter - s -Dsun.rmi.loader.logLevel =verbose”(即省略了- j字首)。 或者可以定義的屬性system.properties檔案。

解決問題是消除迴路127.0.0.1127.0.0.2設定。 發生了什麼是jmeter-server不能連線到rmiregistry如果127.0.0.2回送是不可用的。 使用以下設定來解決這個問題。

取代

還建立一個政策檔案和新增[computer_name] [computer_domain]設定

為了更好地支援使用RMI通訊通道的ssh隧道 遠端測試,因為JMeter 2.6:

  • 一個新的屬性”client.rmi.localport“可以設定為控制RemoteSampleListenerImpl使用RMI埠
  • 支援SSH隧道的隧道RMI通訊遠端端點在本地機器上使用一個埠, 環回介面現在可以使用如果已指定直接使用Java系統屬性 ”java.rmi.server.hostname”引數。

13.4使用不同的埠

預設情況下,JMeter使用標準RMI埠1099。 可以改變這種情況。 對於這個工作成功, 所有需要同意如下:

  • 在伺服器上,開始rmiregistry使用新的埠號
  • 在伺服器上,開始JMeter的財產server_port定義
  • 在客戶端更新remote_hosts財產包括新的遠端主持人:港口設定

JMeter 2.1.1以來,jmeter-server指令碼改變埠提供支援。 例如,假設您想要使用的埠1664年(也許1099年已經使用)。

在Windows上(在一個DOS框)
在Unix:
(注意: 使用大寫的環境變數)

在這兩種情況下,指令碼開始rmiregistry指定埠, 然後開始JMeter在伺服器模式,定義了”server_port”屬性。

選擇埠將登入伺服器jmeter.log檔案(rmiregistry不建立一個日誌檔案)。

13.5使用不同的樣本傳送者

聽眾在測試計劃將結果傳送回客戶端JMeter將結果寫入指定的檔案 預設情況下,樣品返回同步生成。 這可能會影響伺服器的最大吞吐量測試; 樣本的結果必須線上程可以發回 繼續下去。 有一些JMeter屬性可以設定為改變這種行為。

mode
樣品傳送模式違約StrippedBatch因為2.9。 這應該是在客戶機上設定節點。
Standard
儘快傳送樣品同步生成
Hold
陣列中儲存樣品,直到執行結束。 這可能在伺服器上使用了大量的記憶體,氣餒。
DiskStore
(在樣本儲存在磁碟檔案java.io.temp),直到執行結束。 JVM退出的序列化資料檔案被刪除。
StrippedDiskStore
刪除responseData成功的樣本中,並使用DiskStore傳送者傳送它們。
Batch
時傳送儲存樣本計數(num_sample_threshold)和時間(time_threshold)超過一個閾值, 此時樣品傳送同步。 可以在伺服器上配置的閾值使用以下屬性:
num_sample_threshold
樣品的數量積累,違約One hundred.
time_threshold
時間閾值,預設60000毫秒= 60秒
看到也中模式,下面描述。
Statistical
傳送一個總結樣本當數或時間超過一個閾值。 樣品是由執行緒組名稱和總結樣品標籤。 以下欄位是積累:
  • 執行時間
  • 延遲
  • 位元組
  • 樣品數
  • 錯誤數
其他欄位,不同樣品丟失。
Stripped
刪除responseData從成功中樣本
StrippedBatch
刪除responseData成功的樣本中,並使用批量傳送方傳送它們。
Asynch
樣品暫時儲存在一個本地佇列。 一個單獨的工作執行緒傳送樣品。 這允許測試執行緒繼續沒有等待結果傳送回客戶端。 然而,如果樣品正在形成的速度比他們可以傳送,佇列最終將填滿, 和取樣器執行緒將阻塞,直到一些樣品可以從佇列中排水。 這種模式有助於消除峰值在樣本的一代。 佇列的大小可以調節通過設定JMeter的財產asynch.batch.queue.size(預設One hundred.在伺服器節點)。
StrippedAsynch
刪除responseData成功的樣本中,並使用非同步傳送方傳送它們。
Custom implemetation
模式引數設定為您的自定義樣本傳送方類名。 必須實現這個介面SampleSender建構函式帶有一個單 型別的引數RemoteSampleListener
Stripped模式的家庭條responseData所以這意味著一些元素的依賴 在前面的responseData可以不工作。
這並不是一個問題,總有一個更有效的方法來實現這個功能。

適用於以下屬性批處理統計模式:

num_sample_threshold
一批的樣品數量(預設100.)
time_threshold
等待的毫秒數(預設60秒)

13.6處理節點失敗的開始

為大規模的測試有可能將部分遠端伺服器不可用。 例如,當您使用自動化指令碼分配許多雲機器和使用它們作為發電機, 要求機器可能會失敗的一些引導因為雲的問題。 因為JMeter 2.13有新的屬性來控制這種行為。

首先你可能希望重試失敗節點的初始化嘗試希望稍微推遲他們的引導。 要啟用重試,你應該設定client.tries房地產總數量的連線嘗試。 預設情況下它只有一個嘗試。 控制重試延遲,設定client.retries_delay財產 之間的毫秒數睡覺嘗試。

最後,您可能還想要執行的測試與發電機成功初始化和跳過失敗節點。 啟用,設定client.continue_on_fail = true財產。

13.7使用安全管理器

在分散式環境中執行JMeter時你必須意識到,JMeter基本上是一個遠端執行代理伺服器和客戶端上。 這可能是使用的惡意方獲得進一步訪問,一旦妥協JMeter客戶機或伺服器之一。 為了減輕這個Java安全管理器的概念,被JVM之前問潛在危險的操作執行。 這些操作可以解決主機名,建立或閱讀檔案或執行命令的作業系統。

安全管理器可以通過設定啟用Java系統屬性java.security.managerjava.security.policy。 一定要看一下快速訪問控制的應用程式

使用新的mechansismsetenv.sh(或setenv.batWindows下)您可以啟用安全性管理器通過新增下面的程式碼片段$ {JMETER_HOME} / bin / setenv.sh:

JVM將新增中定義的政策檔案$ {JMETER_HOME} / bin / java.policy可能在全球範圍內定義的策略。 如果你想讓你的定義是唯一來源政策,設定時使用兩個等號,而不是一個性質java.security.policy

政策將依賴於你的用例,可能需要一段時間才能找到正確的限制,允許操作。 Java可幫助您找到所需的政策與財產java.security.debug。 將其設定為訪問它會記錄所有許可權,它被要求允許。 新增以下行setenv.sh:

這看上去可能有點奇怪,我們定義一個Java系統屬性jmeter.home的值$ {JMETER_HOME}。 這個變數將使用的例子java.policy限制檔案系統訪問,讓它只讀取jmeter配置和庫和寫訪問限制到特定的位置,。

以下策略定義檔案已被用於一個簡單的遠端測試。 你可能要調整政策,當您執行更復雜的場景。 測試計劃的地方放置在使用者的主目錄下的一個目錄jmeter-testplans。 樣例java.policy看起來像:

使用java.security.AllPermission是一種簡單的方法來讓你的測試計劃的工作,但這可能是一個危險的方式。

14。 生成報告指示板

JMeter支援儀表板圖表和報告生成 資料從一個測試計劃。
這一章描述瞭如何配置和使用生成器。

14.1概述

JMeter的儀表板生成器是一個模組化的擴充套件。 它的預設行為是讀取和處理樣本 CSV檔案生成HTML檔案包含圖表檢視。 它可以生成報告的負載測試或需求。

這份報告提供了以下指標:

  • APDEX(應用程式效能指標)表,計算每筆交易APDEX的容忍和滿足閾值基於可配置的值
  • 請求總結圖顯示了成功和失敗的請求(事務控制器樣品結果不考慮)百分比:
  • 資料表中提供一個表總結每個事務的所有指標包括3可配置的百分位數:
  • 錯誤表提供一個彙總所有錯誤及其比例的總要求:
  • 取樣器的五大錯誤表提供每一個取樣器(不含事務預設控制器)的五大錯誤:
  • 縮放的圖表,您可以檢查/取消顯示/隱藏它的每一筆交易:
    • 隨時間的響應時間(包括事務控制器樣品結果):
    • 響應時間百分位數隨時間(僅成功反應):
    • 活動執行緒結束時間:
    • 位元組吞吐量隨著時間的推移(忽略事務控制器樣品結果):
    • 隨著時間延遲(包括事務控制器樣品結果):
    • 連線時間隨時間變化(包括事務控制器樣品結果):
    • 達到每秒(忽略事務控制器樣品結果):
    • 每秒響應程式碼(忽略事務控制器樣品結果):
    • 每秒事務數(包括事務控制器樣品結果):
    • 響應時間和每秒請求(忽略事務控制器樣品結果):
    • 延遲和請求/秒(忽略事務控制器樣品結果):
    • 事務響應時間(不包括概述控制器樣品結果):
    • 響應時間百分位數(包括事務控制器樣品結果):
    • 次與執行緒(包括事務控制器樣品結果): 在分散式模式中,這張圖顯示了一個水平軸1伺服器的執行緒的數量。 這是一個當前的限制
    • 響應時間分佈(包括事務控制器樣品結果):

14.2配置儀表板的一代

儀表板代使用JMeter屬性來定製 報告。 一些屬性是用於一般設定等 用於一個特定的配置圖配置或出口國。

所有報告生成器屬性可以在檔案中找到reportgenerator.properties。 自定義這些屬性,你應該複製它們user.properties檔案,並修改它們。

14.2.1需求

14.2.1.1過濾配置

確保你設定屬性jmeter.reportgenerator.exporter.html.series_filter只保留交易 你想要在報告中如果你不想一切。
在下面的例子中您必須修改搜尋|秩序保持休息:

14.2.1.2儲存服務配置

使發電機執行,JMeter的CSV檔案生成的 必須包含某些必需的資料嗎預設是正確的在過去住版本嗎JMeter。
如果你修改這些設定,檢查您的JMeter配置遵循這些設定(這是預設值):

14.2.1.3事務控制器配置

如果你使用事務控制器年代,以確保最準確的結果:

  • 取消選中對應的複選框(這是預設配置):生成父樣本
  • 如果事務控制器被用作一個容器來代表一個HTML頁面的請求,將觸發Ajax呼叫,你呢 只希望你的報告事務控制器,然後右鍵單擊節點並應用命名的政策您將獲得:

14.2.2一般設定

必須字首的所有屬性
jmeter.reportgenerator。

百分位數用匯總表和百分點陣圖可以調整不同的值通過使用三個屬性:
  • aggregate_rpt_pct1:預設為90
  • aggregate_rpt_pct2:預設為95
  • aggregate_rpt_pct3:預設為99
JMeter的相對路徑是建立工作目錄 (預設值:)。

您可以定義一些整體屬性使用的 發電機的配置。 這些屬性是自由命名 但是你應該使用字首

jmeter.reportgenerator。
為了避免屬性重疊。

例如:

屬性定義:
jmeter.reportgenerator.overall_granularity = 60000
屬性引用:
$ {jmeter.reportgenerator.overall_granularity}

14.2.3圖設定

每個屬性描述圖配置必須字首 與

jmeter.reportgenerator.graph。
其次是圖形識別符號。

14.2.3.1一般性質

所有的圖表都支援這些屬性:

14.2.3.2特定屬性

具體的圖形屬性必須使用字首:

jmeter.reportgenerator.graph。<graph_id>.property
屬性的名稱將使用駝峰式大小寫對映 轉換和匹配方法的類 被稱為屬性值作為引數。

例如:

jmeter.reportgenerator.graph。<graph_id>.property.set_granularity = 150
歸納方法的呼叫setGranularity (150)在 圖的例項。

14.2.4出口設定

每個屬性配置必須描述一個出口字首與

jmeter.reportgenerator.exporter
其次是出口國識別符號。

14.2.4.1一般性質

所有出口商都支援這些屬性:

14.2.4.2特定屬性

特定出口國屬性必須使用字首

14.2.4.3圖形屬性

圖形屬性允許出口商覆蓋一些圖表資料。
他們必須使用字首:

14.2.4.4過濾機制

不同的過濾部分一般性質丟棄資料計算之前,這裡的嗎 過濾後進行計算和服務 簡化最終報告。

房地產series_filter允許過濾這一系列的圖表(分別地。 行 使用正則表示式匹配彙總表) 系列的名稱(分別地。 行)。 然而,即使的名稱 系列(分別地。 行)匹配濾波器、設定 其他的可以導致其濾波特性 丟棄。 相反如果沒有匹配的, 其他屬性可以保持它。

下表顯示的設定過濾 屬性的作品。

例模式匹配時丟棄
filter_only_sample_series圖/總結支援控制器的歧視當前系列是一個控制器系列show_controllers_only被丟棄的
- - - - - -
真正的
- - - - - -
真正的
真正的
真正的
真正的
真正的
真正的 - - - - - -
真正的
- - - - - -
真正的
真正的
真正的 真正的
真正的
真正的
保留在沒有模式匹配的病例
filter_only_sample_series圖/總結支援控制器的歧視保持
真正的
真正的 真正的
真正的
不正確的過濾器配置會導致生成空 圖/彙總表:
  • 如果你設定的屬性show_controllers_only和圖配置為排除 控制器。
  • 如果屬性series_filter比賽沒有一個系列。

14.2.5示例配置

你可以複製以下配置user.properties 檔案為了測試報告生成器。

調整引數output_dir於您的環境。

這種配置允許生成報告地點:

  • 隨著時間的推移圖有一個時間粒度等於1分鐘。
  • ADPEX滿足閾值的計算是1秒半。
  • ADPEX耐受閾值計算是3秒。
  • 在目錄中生成的HTML檔案/ tmp /測試報告
  • 只有系列始於”這個名字s0”或“s1”所示。
  • 前面的過濾器只適用於圖表(分別地。 彙總表)系列(分別地。 行)匹配樣本

14.3生成報告

報告生成可以作為一個獨立的過程 示例日誌檔案或後自動執行負載測試。

14.3.1生成日誌檔案從現有的樣例CSV

使用下面的命令:

jmeter -g <日誌檔案>-o <輸出資料夾路徑>

14.3.2負載測試後一代

使用下面的命令:

jmeter -n -t <測試JMX檔案>-l <測試日誌檔案>-e -o <輸出資料夾路徑>

14.3.3代使用GUI工具選單

你可以使用選單項生成HTML報告工具→生成HTML報告:

圖14.1。 HTML報告對話方塊選單

對於每個引數見下表:

如果沒有定義輸出目錄,控制器將使用$ {JMETER_HOME} / bin /報告輸出

你只需要點選生成報告按鈕,等待一個資訊對話框出現

如果報告生成時間超過兩分鐘,調整房地產generate_report_ui.generation_timeout

14.4預設圖

由於早期版本的限制,每個預設的圖 必須宣告在JMeter屬性。 否則,圖 檢視將是空的。

本報告提供的所有圖形引擎位於 包org.apache.jmeter.report.processor.graph.impl

儀表板發生器提供了以下圖表類:

描述支援控制器的歧視
ActiveThreadsGraphConsumer 這張圖代表活動執行緒的數量。
BytesThroughputGraphConsumer 這張圖代表了接收和傳送資料的吞吐量 隨著時間的推移。
CodesPerSecondGraphConsumer 這張圖代表的速度響應程式碼。
HitsPerSecondGraphConsumer 這張圖代表完成請求的速度 時間。
LatencyOverTimeGraphConsumer 這張圖代表的平均延遲時間。 真正的
ConnectTimeOverTimeGraphConsumer 這張圖代表了連線時間。 真正的
LatencyVSRequestGraphConsumer 這張圖代表了中值和平均等待時間 根據當前請求的數量。
ResponseTimeDistributionGraphConsumer 這張圖代表樣本的分佈 根據他們的時間和名稱。 真正的
ResponseTimeOverTimeGraphConsumer 這張圖代表了平均響應時間。 真正的
ResponseTimePercentilesGraphConsumer 這張圖代表了時間的百分位數 隨著時間的推移。 真正的
ResponseTimePercentilesOverTimeGraphConsumer 這個圖表顯示了最小/最大響應時間和3百分位數。 真正的
ResponseTimeVSRequestGraphConsumer 這張圖代表了中值和平均響應時間 根據當前請求的數量。
TimeVSThreadGraphConsumer 這張圖代表了平均響應時間 根據當前活動執行緒的數量。

*聚合系列代表平均水平 響應時間的數量無關 當前活動執行緒。 這些系列 由一個唯一的點,因為數量的表示 當前活動執行緒是聚合 平均。 所以對於這些點:

  • 橫座標是平均水平 當前活動的數量 當樣品的執行緒 系列完成。
  • 縱座標的平均值 響應時間的樣本 系列無論當前的數量 活動執行緒。
真正的
TransactionsPerSecondGraphConsumer 這張圖代表了交易的速度 樣品名稱。 真正的

14.5產生海關圖形隨著時間的推移

你可以任何sample_variable CSV隨著時間的推移圖,您可以定製您的圖表 使用者通過設定它們的屬性。 屬性檔案。
他們必須使用id字首custom_:

jmeter.reportgenerator.graph.custom_<your_graph_name_id>.property.<your_option_name>
指定,這個圖是一個定製的:
jmeter.reportgenerator.graph.custom_<your_graph_name_id>.classname=org.apache.jmeter.report.processor.graph.impl.CustomGraphConsumer

這是一個自定義的一個例子圖配置圖變數ts-hit:

14.6儀表板想改善報告嗎?

如果你想貢獻新的圖表或改善當前的你 可以閱讀這開發人員文件
讀到這文件在做貢獻。

15。 實時搜尋結果

因為JMeter 2.13你可以得到實時搜尋結果傳送到後端通過後端偵聽器使用潛在的任何後端(JDBC、JMS、網路服務、…) 通過提供一個實現類AbstractBackendListenerClient
JMeter附帶:

  • GraphiteBackendListenerClient它允許您傳送規格石墨後端。
    這個特性提供了:
    • 生活的結果
    • 漂亮的圖表為指標
    • 比較2個或更多的負載測試的能力
    • 監控資料儲存在同一後端只要JMeter結果
  • JMeter 3.2中引入一個InfluxDBBackendListenerClient你可以傳送指標InfluxDB端使用UDP或HTTP協議 這個特性提供了:
    • 生活的結果
    • 漂亮的圖表為指標
    • 比較2個或更多的負載測試的能力
    • 能力將註釋新增到圖表
    • 監控資料儲存在同一後端只要JMeter結果
在本文件中,我們將配置設定圖和historize資料在不同的後端:
  • InfluxDB設定InfluxDBBackendListenerClient
  • InfluxDB設定GraphiteBackendListenerClient
  • Grafana
  • 石墨

15.1指標暴露

供執行緒/虛擬使用者指標

執行緒指標如下:

<rootMetricsPrefix>test.minAT
分鐘活動執行緒
<rootMetricsPrefix>test.maxAT
馬克斯活動執行緒
<rootMetricsPrefix>test.meanAT
活動執行緒的意思
<rootMetricsPrefix>test.startedT
啟動執行緒
<rootMetricsPrefix>test.endedT
完成執行緒

15.1.2響應時間指標

響應相關指標如下:

<rootMetricsPrefix><samplerName>.ok.count
許多成功的響應取樣器的名字
<rootMetricsPrefix><samplerName>.h.count
伺服器每秒鐘,這個指標堆積樣本結果和子結果(如果使用事務控制器,應該無節制的“生成父取樣器”)
<rootMetricsPrefix><samplerName>.ok.min
最小響應時間成功響應取樣器的名字
<rootMetricsPrefix><samplerName>.ok.max
最大響應時間成功響應取樣器的名字
<rootMetricsPrefix><samplerName>.ok.avg
平均響應時間成功響應取樣器的名字。
<rootMetricsPrefix><samplerName>.ok.pct <percentileValue>
百分比計算成功響應取樣器的名字。 將有一個為每個計算值指標。
<rootMetricsPrefix><samplerName>.ko.count
失敗的反應數量取樣器的名字
<rootMetricsPrefix><samplerName>.ko.min
最小響應時間沒有響應的取樣器的名字
<rootMetricsPrefix><samplerName>.ko.max
最大響應時間沒有響應的取樣器的名字
<rootMetricsPrefix><samplerName>.ko.avg
平均響應時間沒有響應的取樣器的名字。
<rootMetricsPrefix><samplerName>.ko.pct <percentileValue>
百分比計算失敗的響應的取樣器的名字。 將有一個為每個計算值指標。
<rootMetricsPrefix><samplerName>.a.count
取樣器的反應數量名稱(好吧。 計數和ko.count)
<rootMetricsPrefix><samplerName>.sb.bytes
傳送位元組
<rootMetricsPrefix><samplerName>.rb.bytes
收到的位元組
<rootMetricsPrefix><samplerName>.a.min
最小響應時間響應取樣器的名字
<rootMetricsPrefix><samplerName>.a.max
最大響應時間取樣器名稱
<rootMetricsPrefix><samplerName>.a.avg
平均響應時間取樣器名稱
<rootMetricsPrefix><samplerName>.a.pct <percentileValue>
百分比計算響應的取樣器的名字。 將有一個為每個計算值指標

預設的百分位數設定在後端偵聽器是“90;95;99”, 即3百分位數90%、95%和99%。

石墨命名層次結構使用點(“。”)單獨的元素。 這可能與十進位制百分位值混淆。 JMeter轉換任何這樣的價值觀,用下劃線代替點(“。”)(“-”)。 例如,“99.9“變成了”99_9

預設JMeter傳送取樣指標累計samplerName”all”。 如果後端偵聽器samplersList配置,然後JMeter也傳送指標嗎 除非匹配樣本的名字summaryOnly = true

15.2 JMeter配置

JMeter指標傳送給後端新增一個BackendListener使用InfluxDBBackendListenerClient。

InfluxDB配置

15.3 InfluxDB資料庫配置

連線到InfluxDB使用InfluxDB的命令列介面(CLI)。建立JMeter資料庫:

  • jmeter: InfluxDB用來儲存後端偵聽器傳送的資料
也可以通過使用HTTP API。

15.3.1 InfluxDB InfluxDBBackendListenerClient設定

InfluxDB是一個開源的、分散式的、允許時間序列資料庫 很容易儲存度量。 安裝和配置很簡單,讀了更多的細節InfluxDB文件
InfluxDB資料可以很容易地在瀏覽器中檢視Grafana

15.3.2 InfluxDB InfluxDBBackendListenerClient 2設定

應該指定的配置influxdbToken引數並指定org作為查詢引數influxdbUrl。 看到InfluxDB v2 API為更多的細節。

如何檢索所需的資訊在InfluxDB介面:

InfluxDB 2配置

15.4 Grafana配置

安裝grafana
文件為更多的細節。 新增資料來源

這裡的儀表板,您可以獲得:Grafana儀表板

15.5石墨

幫助歡迎這一節中,看到的提供文件

16。 最佳實踐

16.1總是使用最新版本的JMeter

JMeter的效能正在不斷完善,所以使用者高度鼓勵使用最新版本。
確保你總是讀修改列表需要注意的新的改進和元件。 你絕對應該避免使用超過3的版本之前最後一個版本。

16.2使用正確的數量的執行緒

你的硬體功能以及測試計劃設計將兩個執行緒的數量可以有效地影響 使用JMeter執行。 數量還將取決於你的伺服器(速度更快的伺服器 使JMeter努力工作因為它返回一個響應更快)。 與任何負載測試工具,如果你不正確的大小 執行緒的數量,你將面臨的“協調遺漏”的問題可以給你錯誤的或不準確的結果。 如果你需要大規模的負載測試,考慮到多臺機器上執行多個CLI JMeter例項 使用分散式模式(或沒有)。 當使用分散式模式結果檔案結合在控制器節點上,如果 使用多個自主的情況下,示例結果檔案可以用於後續分析相結合。 用於測試JMeter如何執行一個給定的平臺上,可以使用JavaTest取樣器。 它不需要任何網路訪問所以可以給一些想法的最大吞吐量可以實現的。

JMeter有選擇推遲執行緒建立的執行緒開始取樣,即在任何執行緒組延遲和執行緒的加速時間本身。 這允許一個非常大的總數量的執行緒,如果沒有太多的併發活動。

16.3安置Cookie Manager

看到建立一個網路測試獲取資訊。

16.4安置授權管理器

看到建立一個先進的 網路測試獲取資訊。

16.5使用HTTP (S)測試指令碼錄音機

HTTP (S)測試指令碼錄音機細節設定 錄音機。 最重要的事情是過濾掉所有請求你不是 感興趣的。 例如,沒有點請求(JMeter可以記錄影象 被要求下載頁面上的所有圖片,請參閱HTTP請求)。 這些只會混亂你的測試計劃。 最有可能的是,有一個擴充套件您的所有檔案 分享,如. jsp,asp,. php,. html或類似的。 這些你應該”包括“進入”* \ . jsp。“作為”包括模式”。

另外,您可以通過輸入“排除影象* \ gif。“作為一個“排除模式”。 取決於您的應用程式,這可能是也可能不是一個更好的路要走。 你可能 也排除了樣式表,包括javascript檔案和其他檔案。 測試 你的設定來驗證你記錄你想要什麼,然後擦除和開始 新鮮。

HTTP (S)測試指令碼記錄器希望找到ThreadGroup元素記錄控制器 這下它會記錄HTTP請求。 這所有的樣品在一個方便包 控制器,它可以被賦予一個名稱,描述測試用例。

現在,經過一個測試用例的步驟。 如果你沒有預定義的測試用例,使用 JMeter來記錄你的行動來定義你的測試用例。 一旦你已經完成了一個 明確的一系列步驟,儲存整個測試用例在一個適當命名的檔案。 然後,擦 乾淨,開始一個新的測試用例。 通過這樣做,您可以快速大量的記錄 測試用例“草稿”。

最有用的功能之一的HTTP (S)測試指令碼錄音機是你可以抽象出來 某些常見元素的記錄的樣本。 通過定義一些使用者定義的變數在測試計劃或水平使用者定義的變數元素,可以自動JMeter 替換值記錄樣本。 例如,如果您正在測試的應用程式 伺服器”xxx.example.com”,那麼您可以定義一個變數被稱為“伺服器”的值 ”xxx.example.com”,價值發現的任何地方在您的記錄樣本將被替換 以“${伺服器}”。

請注意,匹配是區分大小寫的。

如果JMeter不記錄任何樣本,檢查瀏覽器是使用代理。 如果瀏覽器工作好即使JMeter沒有執行,那麼瀏覽器不能使用代理。 一些瀏覽器忽略代理設定本地主機127.0.0.1; 嘗試使用本地主機名或IP。

錯誤”unknown_ca“可能意味著你正試圖記錄HTTPS,和瀏覽器沒有接受 JMeter代理伺服器證書。

16.6使用者變數

一些測試計劃需要為不同的使用者使用不同的值/執行緒。 例如,您可能想要測試序列,需要為每個使用者一個獨特的登入。 這很容易實現與JMeter提供的設施。

例如:

  • 建立一個包含使用者名稱和密碼的文字檔案,之間用逗號分隔。 把這個在同一個目錄作為您的測試計劃。
  • CSV資料集配置元素新增到測試計劃。 變數的名字使用者通過
  • 取代的登入名$ {USER}和密碼通過$ {}在適當的 取樣器

CSV資料集元素為每個執行緒將讀取一個新行。

16.7減少資源需求

一些建議減少資源的使用。

  • 使用CLI模式:jmeter - n - test。 jmx - l test.jtl
  • 使用盡可能少的聽眾; 如果使用- l國旗上面他們都可以被刪除或禁用。
  • 樹不使用“檢視結果”或“檢視結果在表“聽眾在負載測試期間,使用它們只在指令碼階段除錯指令碼。
  • 而不是使用大量的類似的取樣, 在一個迴圈中使用相同的取樣器,使用變數(CSV資料集)來改變樣本。 (包括控制器並沒有幫助,因為它將所有檔案中的測試元素新增到測試計劃。)
  • 不要使用功能模式
  • 使用CSV輸出而不是XML
  • 只有你需要儲存資料
  • 使用盡可能少的斷言
  • 使用最執行指令碼語言(參見JSR223部分)

如果您的測試需要大量的資料,特別是如果它需要隨機——在一個檔案中建立測試資料 可以閱讀和CSV資料集。 這可以避免浪費資源在執行時。

16.8 BeanShell伺服器

BeanShell直譯器有一個非常有用的功能,它可以作為一個伺服器, 這是通過telnet或http訪問。

沒有安全。 誰可以連線到埠可以發行任何BeanShell命令。 這些可以提供無限制的訪問JMeter應用程式和主機。不要使伺服器,除非對訪問埠保護,例如防火牆。

如果你希望使用伺服器,定義以下jmeter.properties:

在上面的示例中,伺服器將啟動,並將監聽埠9000年9001年。 港口9000年將用於http訪問。 港口9001年將用於遠端登入訪問。 的startup.bsh檔案將由伺服器處理,可用於定義不同的功能和設定變數。 啟動檔案定義設定和列印JMeter方法和系統屬性。 這是你應該看到在JMeter控制檯:

有一個示例指令碼(臨時演員/ remote.bsh),你可以使用它來測試伺服器。 (看一看,看看它是如何工作的。)
在JMeter bin目錄 (如果從其他地方執行必要的調整路徑) 輸出應該類似於:

作為一個實際的例子,假設您有一個長期執行JMeter測試在CLI模式下執行, 你想測試期間的吞吐量在不同時期不同。 測試計劃包括一個常數吞吐量計時器定義的屬性, 如。$ {__P(吞吐量)}。 以下BeanShell命令可以用來改變測試:

這個指令碼可以儲存在一個檔案(throughput.bsh說,),傳送到伺服器bshclient.jar。 例如:

16.9 BeanShell指令碼

JMeter 3.1以來,我們建議從BeanShell轉向JSR223測試元素(見JSR223章節更多細節),和交換__Beanshell函式 來__groovy函式。

16.9.1概述

每個BeanShell測試元素都有自己的翻譯的副本(每個執行緒)。 如果測試元素多次呼叫時,如在一個迴圈,則保留直譯器 呼叫之間,除非“重置bsh。 翻譯每個呼叫之前”選項被選中。

一些長時間執行的測試可能會導致翻譯使用大量記憶體; 如果是這樣的話試著使用重置選項。

可以通過使用外JMeter測試BeanShell指令碼命令列直譯器:


16.9.2共享變數

中定義的變數可以啟動指令碼(初始化)。 這些將被保留在呼叫的測試元素,除非使用重置選項。

指令碼還可以訪問使用JMeter變數get ()put ()”的方法var”變數, 例如:

get ()put ()方法只支援變數和字串值, 但也有getObject ()putObject ()方法可用於任意物件。 JMeter變數是當地一個執行緒,但是可以通過所有的測試元素(不僅僅是Beanshell)。

如果你需要線上程之間共享變數,那麼可以使用JMeter屬性:


樣例.bshrc檔案包含示例的定義getprop ()記者()方法。

共享變數的另一個可能的方法是使用“bsh.shared“共享名稱空間。 例如:

而不是建立物件的測試元素,它可以啟動檔案中建立 JMeter定義的財產”beanshell.init.file”。 這是隻處理一次。

16.10發展中在Groovy指令碼函式或Jexl3等等。

很難以編寫和測試指令碼的功能。 然而,JMeter JSR223取樣器,而不使用任何語言支援它。 我們建議使用Apache Groovy或者支援的任何語言CompilableJSR223介面。

建立一個簡單的測試計劃包含JSR223取樣器和樹檢視的偵聽器。 取樣器指令碼窗格中的指令碼程式碼,通過執行測試和測試它。 如果有任何錯誤,這些都將出現在樹檢視jmeter.log檔案。 執行指令碼的結果也會顯示為響應。

一旦指令碼正常工作,它可以儲存為一個變數在測試計劃。 指令碼變數可以用來建立函式呼叫。 例如,假設一個Groovy指令碼儲存在變數RANDOM_NAME。 函式呼叫可以編碼$ {__groovy ($ {RANDOM_NAME})}。 不需要逃避任何指令碼中逗號, 因為之前解析函式呼叫變數的值是插值。

16.11 Parameterising測試

通常是很有用的可以重新執行相同的測試有不同的設定。 例如,改變或迴圈的執行緒數量,或更改主機名。

要做到這一點的方法之一是測試計劃定義一組變數,然後使用這些變數在測試元素。 例如,可以定義一個變數迴圈= 10,指的是線上程組${迴圈}。 與20個迴圈執行測試,只是改變的價值迴圈變數的測試計劃。

這很快就會變得乏味,如果你想在CLI模式執行大量的測試。 解決方案之一是定義測試計劃變數的一個屬性, 例如迴圈= $ {__P(迴圈、10)}。 它使用財產”的價值迴圈”,違約10如果屬性沒有找到。 “迴圈”屬性可以被定義在JMeter命令列:


如果有很多屬性,需要更改, 然後實現這一點的方法之一是使用一組屬性檔案。 可以通過適當的屬性檔案JMeter使用q命令列選項。

16.12 JSR223元素

密集的負載測試,推薦的指令碼語言的ScriptingEngine實現了Compilable介面。 Groovy指令碼引擎實現Compilable。 然而無論是Beanshell還是Javascript 3.1 JMeter的釋出日期,這是 建議避免密集的負載測試。

注意:Beanshell實現了Compilable介面,但沒有編碼,該方法只是將丟擲一個異常。 JMeter顯式的繞過了這個bug。 當使用JSR 223的元素,它是建議檢查如果可用快取編譯指令碼屬性,以確保指令碼編譯快取如果底層語言支援。 在這種情況下,確保指令碼不會使用任何變數使用$ {varName}快取將只有第一個值$ {varName}。 而不是使用:

你也可以將它們作為引數傳遞給指令碼並使用它們。

16.13線上程和執行緒之間共享變數組

變數是當地一個執行緒; 一組變數在另一個執行緒不能讀。 這是通過設計。 為變數,可以確定一個測試開始前,看到的Parameterising Tests(見上圖)。 如果該值是未知的,直到測試開始,有多種選擇:

  • 儲存變數屬性-屬性是全球JMeter例項
  • 寫變數檔案和重讀。
  • 使用bsh.shared名稱空間,看到以上
  • 編寫您自己的Java類

16.14管理屬性

當您需要修改jmeter屬性,確保你不修改jmeter.properties檔案,而不是複製的財產jmeter.properties和修改它的值user.properties檔案
這樣做可以緩解你JMeter的遷移到下一個版本。
注意,在文件中jmeter.properties經常提到的但這應該被理解為 “複製從jmeter.propertiesuser.properties您想修改屬性,在後者的檔案”。

user.properties檔案中定義的屬性取代jmeter.properties

16.15棄用元素

我們建議不要使用棄用元素(標記為修改列表而在元件引用) 和遷移到新的建議元素如果可用的新方法做同樣的事情。
棄用元素從選單中刪除版本N但可以啟用遷移通過修改not_in_menu財產user.properties檔案和刪除完整的類名 元素的。

請注意,棄用元素在版本N肯定將被刪除在版本N + 1,所以確保你儘快停止使用它們。

17. 幫助!我的老闆要我載入測試我們的應用程式!

這是一個相當不限成員名額的主張。首先要提出若干問題,此外還需要一些資源。您將需要一些硬體來執行基準測試/負載測試。許多工具將被證明是有用的。有許多產品需要考慮。最後,為什麼Java是實現負載測試/基準測試產品的一個很好的選擇。

17.1 要問的問題

我們的預期平均使用者數(正常負載)是多少?

我們預計的峰值使用者數是多少?

什麼時候是載入測試我們的應用程式的好時候(即下班時間或工作周),同時記住,這很可能導致我們的一個或多個伺服器崩潰?

我們的應用程式有狀態嗎?如果是,我們的應用程式如何管理它(cookie、會話重寫或其他方法)?

測試的目的是實現什麼?

17.2 資源

以下資源將證明非常有用。請記住,如果您找不到這些資源,您將成為這些資源。由於你已經為你削減了工作,所以值得知道下面的人是誰,所以如果你需要,你可以向他們尋求幫助。

17.2.1 網路

誰知道我們的網路拓撲?如果遇到任何防火牆或代理問題,這將變得非常重要。此外,專用測試網路(因此網路延遲非常低)也是一件非常好的事情。知道誰可以為你設定一個(如果你覺得這是必要的)將是非常有用的。如果應用程式沒有像預期的那樣擴充套件,誰可以新增其他硬體?

17.2.2 應用

誰知道我們的應用程式是函式的?法線順序為

  • 測試(低容量 - 我們可以基準測試我們的應用程式嗎?
  • 基準(平均使用者數)
  • 負載測試(最大使用者數)
  • 破壞性測試 (我們的硬限制是什麼?
測試過程可能從黑盒測試到白盒測試(不同的是,第一個測試不需要對應用程式的瞭解[它被視為"黑匣子"),而第二個測試需要一些應用程式知識)。在這個過程中發現應用程式的問題並不罕見,所以要做好為工作辯護的準備。

17.3 我應該使用什麼平臺來執行基準測試/負載測試?

這應該是一個廣泛使用的硬體,具有標準(即香草)軟體安裝。請記住,如果您公佈結果,您的客戶要做的第一件事是聘請一名研究生來驗證它們。你不妨儘可能方便這個人。

對於 Windows,Windows XP 專業版應該是最低值(其他連線不超過 50-60 個連線,並且您預計使用者數可能超過此)。

良好的免費平臺包括 linuxes、BSD 和 Solaris Intel。如果你有多一點錢,有商業linux。如果您需要支援,這可能是值得的。

對於非 Windows 平臺,請調查"ulimit -n 無限",以便將它包括在您的使用者帳戶啟動指令碼(.bashrc或.cshrc指令碼中)。

另請注意,某些 Linux/Unix 版本供伺服器使用。這些通常具有最少的或沒有 GUI 支援。此類作業系統在 CLI 模式下執行 JMeter 應該沒問題,但 JMeter GUI 模式可能不起作用,除非您安裝最小的 GUI 環境。

隨著您向更大規模的基準測試/負載測試發展,此平臺將成為限制因素。因此,使用您現有的最佳硬體和軟體是值得的。請記住,在已釋出的基準中包括硬體/軟體配置。

當您需要大量計算機或想要測試網路延遲時,雲可以幫助您。JMeter 可以輕鬆地安裝在雲實例上,因為它幾乎在雲中可用的任何體系結構上執行。如果您不想自己管理,商業雲 PAAS 中也支援 JMeter。

不要忘記 JMeter 批處理 (CLI) 模式。此模式應在負載測試期間使用,原因有很多:

  • 如果您有支援 Java 的強大伺服器,但可能沒有快速的圖形實現,或者您需要遠端登入。
  • 與使用遠端顯示或客戶端伺服器模式相比,批處理 (CLI) 模式可以減少網路流量。
  • 用於 GUI 模式的 Java AWT 執行緒有時可以通過阻止來改變注入行為
然後,批處理日誌檔案可以載入到工作站上的 JMeter 中進行分析,也可以使用 CSV 輸出將資料匯入電子表格。

請記住,GUI 模式用於指令碼建立和除錯,而不是用於負載測試

17.4 工具

以下工具都將證明是有用的。熟悉他們絕對值得。這應包括嘗試它們,並閱讀相應的文件(人頁面、資訊檔案、應用程式 - 幫助訊息和任何提供的文件)。

17.4.1 ping

這可用於確定是否可以到達目標站點。可以指定選項,以便 "ping" 提供與 " 跟蹤路由 "相同的路由報告型別。

17.4.2 nslookup/挖掘

雖然使用者通常使用人工可讀的 Internet 地址,您可能希望在執行基準測試/負載測試時避免 DNS 查詢的開銷。這些可用於確定目標站點的唯一地址(點四)。

17.4.3 跟蹤路由

如果無法"ping"目標站點,則可用於確定問題(可能是防火牆或代理)。它還可用於估計總體網路延遲(在本地執行應提供儘可能低的網路延遲 - 請記住,您的使用者將在可能繁忙的 Internet 上執行)。一般來說,跳越少越好。

17.5 如何增強 JMeter?

有很多開源和商業供應商提供JMeter外掛或其他資源,用於JMeter。其中一些列在JMeter維基上。它們列在以下幾個類別下:

  • JMeterPlugins- 用於擴充套件 JMeter 的外掛
  • JMeterAddons- 用於 JMeter 的附加元件,例如瀏覽器、Maven 和 Jenkins 的外掛。
  • JMeter 服務-第3方服務,例如基於雲的 JMeter
請注意,這些在 Wiki 上的外觀並不意味著 Apache JMeter 專案的任何認可。任何支援請求都應向相關供應商提出。

17.6 為什麼是Java?

為什麼不是Perl或 C?

嗯, Perl 可能是一個很好的選擇, 除了基準包似乎給出相當模糊的結果。此外,使用 Perl 模擬多個使用者是一個棘手的命題(可以通過從 shell 指令碼分叉多個程序來模擬多個連線,但這些程序不會是執行緒,而是程序)。然而,Perl 社群非常大。如果你發現某人已經寫了一些似乎有用的東西,這可能是一個很好的解決方案。

C,當然,是一個很好的選擇(看看阿帕奇ab工具)。但要準備好編寫所有自定義網路、執行緒和狀態管理程式碼,這些程式碼需要對應用程式進行基準測試。

Java 為您提供了自定義網路、執行緒和狀態管理程式碼,您需要這些程式碼來基準測試應用程式。Java 知道 HTTP、FTP 和 HTTPS,以及 RMI、IIOP 和 JDBC(更不用說 Cookie、URL 編碼和 URL 重寫)。此外,Java 還為您提供了自動垃圾回收和位元組程式碼級別安全性。