Jmeter使用手冊

  • 2020 年 12 月 4 日
  • 筆記

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從模板創建測試計劃

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

所以你使用菜單文件模板…或模板圖標:

Templates icon item模板圖標項

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

Templates popup模板彈出

一些模板可能需要來自用戶的輸入參數。 對論文的,點擊創建按鈕後, 將出現一個新窗口如下圖:

Parameters window參數窗口

當你完成了參數,點擊驗證按鈕,將創建模板。

每個模板的文檔解釋了如何從模板創建測試計劃之後。

您可以創建自己的模板文檔在這裡

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模式下,錯誤的數量/致命的消息在右上的登錄日誌文件顯示。

Error/fatal counter錯誤/致命的計數器

命令行選項– 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」,因為我們把它在執行緒組(所有其他分支的「父」)。

Figure 1 -
    Test Plan Showing Accessibility of Configuration Elements圖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測試樹包含元素層次和命令。 一些元素在測試樹是嚴格的等級制度(偵聽器,配置元素,後處理器,預處理器,斷言,計時器),和一些主要是命令(控制器,取樣器)。 當您創建您的測試計劃,您將創建一個有序列表示例請求(通過取樣)代表一組要執行的步驟。 這些請求通常是組織內控制器還命令。 鑒於以下測試樹:

Example test tree示例測試樹

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

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

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

Hierarchy example層次結構的例子

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

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

complex example複雜的例子

在本例中,請求命名,以反映他們的順序將被執行。 計時器# 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 下圖)


Figure 4.1. Thread Group with Default Values圖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用戶執行緒組。


Figure 4.2. JMeter Users Thread Group圖4.2。 JMeter用戶執行緒組

4.2添加HTTP請求的默認屬性

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

首先選擇JMeter用戶(執行緒組)元素。 點擊你的滑鼠按鈕 添加菜單,然後選擇Add→→HTTP請求的配置元素 默認值。 然後選擇這個新元素以查看其控制面板(見圖4.3)。


Figure 4.3. HTTP Request Defaults圖4.3。 HTTP請求違約

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

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

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

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


Figure 4.4. HTTP Defaults for our Test Plan圖4.4。 HTTP違約為我們的測試計劃

4.3添加Cookie支援

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


Figure 4.5. HTTP Cookie Manager圖4.5。 HTTP Cookie經理

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

4.4添加HTTP請求

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

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

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

  1. Name欄位改為「主頁」。
  2. 將路徑欄位設置為「/」。 記住,你不需要設置伺服器 名稱欄位,因為你已經在HTTP請求中這個值指定默認值 元素。


Figure 4.6. HTTP Request for JMeter Home Page圖4.6。 HTTP請求JMeter主頁

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

  1. Name欄位更改為「Home page」。
  2. 將路徑欄位設置為「/ changes.html」。


Figure 4.7. HTTP Request for JMeter Changes Page圖4.7。 HTTP請求JMeter頁面變化

4.5添加一個偵聽器來查看存儲測試結果

最後一個元素是一個需要添加到您的測試計劃偵聽器。 這個元素是 負責將所有HTTP請求的結果存儲在一個文件和展示 數據的可視化模型。

選擇JMeter用戶並添加一個元素圖結果偵聽器(Add→Listener →Backend Listener)。

4.6登錄一個網站

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

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


Figure 4.8. Sample HTTP login request圖4.8。 樣本HTTP登錄請求

4.7選擇相同的用戶或不同的用戶

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


Figure 4.9. Choose the same user or different users圖4.9。 選擇相同的用戶或不同的用戶

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


Figure 4.10. Use Thread Group to control CookieManager圖4.10。 使用控制CookieManager執行緒組
Figure 4.11. Use Thread Group to control CacheManager圖4.11。 使用執行緒組來控制快取管理器
Figure 4.12. Use Thread Group to control Authorization Manager圖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。

Figure 1 - Test Tree圖1 -測試樹

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

Figure 2 - Request parameters圖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 下圖)


Figure 6.1. Thread Group with Default Values圖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用戶執行緒組。


Figure 6.2. JDBC Users Thread Group圖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請求可以引用同一池。


Figure 6.3. JDBC Configuration圖6.3。 JDBC配置

再次選擇JDBC用戶元素。 點擊你的滑鼠按鈕 得到添加菜單,然後選擇AddSamplerJDBC Request。 然後,選擇這個新元素以查看其控制面板(見圖6.4)。


Figure 6.4. JDBC Request圖6.4。 JDBC的請求

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

JMeter的順序發送請求,你將它們添加到樹中。

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

  • 改名為「VM Running」。
  • 輸入池名稱:「myDatabase「一樣(在配置元素)
  • 輸入SQL查詢字元串欄位。
  • 輸入參數值欄位的Running的價值。
  • 輸入的參數類型」VARCHAR」。


Figure 6.5. JDBC Request for the first SQL request圖6.5。 JDBC請求第一SQL請求

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

  • 改名為「VM Expunging」。
  • 改變Parameter values的值為『Expunging」。


Figure 6.6. JDBC Request for the second request圖6.6。 JDBC請求第二個請求

6.3將偵聽器添加到視圖/存儲測試結果

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

選擇JDBC的用戶元素,並添加一個摘要報告偵聽器(AddListenerSummary Report)。

保存測試計劃,並運行測試菜單RunStartCtrl+R

偵聽器顯示了結果。


Figure 6.7. Graph results Listener

圖6.7。 圖結果偵聽器
 
 
 

7。 構建一個FTP測試計劃

在本節中,您將學習如何創建一個基本的測試計劃測試一個FTP站點。 你會 創建四個用戶發送兩個文件在一個FTP站點的請求。 同時,你會告訴用戶運行測試兩次。 的總數 請求用戶請求(4)x (2) x(重複2次)= 16 FTP請求。

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

7.1添加用戶

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

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

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

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


Figure 7.1. Thread Group with Default Values圖7.1。 執行緒組的默認值

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

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

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

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

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

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


Figure 7.2. FTP Users Thread Group圖7.2。 FTP用戶執行緒組

7.2添加默認FTP請求屬性

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

首先選擇FTP用戶元素。 點擊你的滑鼠按鈕 添加菜單,然後選擇AddConfig ElementFTP Request Default。然後,選擇這個新元素以查看其控制面板(見圖7.3)。


Figure 7.3. FTP Request Defaults圖7.3。 FTP請求違約

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

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

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

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


Figure 7.4. FTP Defaults for our Test Plan圖7.4。 FTP違約為我們的測試計劃

7.3添加FTP請求

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

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

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

  1. 改變的名字「File1」。
  2. 改變遠程文件場/目錄中。
  3. 改變用戶名欄位「匿名」。
  4. 改變密碼欄位「[email protected]」。
你不需要設置伺服器名稱場,因為你已經指定 這個值的FTP請求違約元素。


Figure 7.5. FTP Request for file1圖7.5。 FTP請求file1

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

  1. 改變的名字「File2」。
  2. 改變遠程文件欄位「/目錄/ file2.txt」。
  3. 改變用戶名欄位「匿名」。
  4. 改變密碼欄位「[email protected]」。


Figure 7.6. FTP Request for file2圖7.6。 FTP請求file2

7.4將偵聽器添加到視圖/存儲測試結果

你需要添加最後一個元素測試計劃是一個偵聽器。 這個元素是 負責存儲所有的結果FTP請求在一個文件並呈現 數據的可視化模型。

選擇元素並添加一個FTP用戶視圖的結果表偵聽器(AddlistenerView Results In Table)。

運行您的測試和查看結果。


Figure 7.7. View Results in Table Listener

圖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。 您現在應該看到 執行緒組元素下的測試計劃。 如果您沒有看到的元素,然後測試計劃樹的「擴大」 點擊測試計劃元素。


Figure 8a.1. Thread Group and final test tree

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

8. 2添加登錄配置元素

首先選擇LDAP用戶元素。 點擊你的滑鼠 按鈕添加菜單,然後選擇AddConfig ElementLoginConfig Element。 然後,選擇這個新元素以查看其控制面板。

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


  Figure 8a.2 Login Config Element for our Test Plan

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

輸入用戶名欄位「LDAP User」,
密碼欄位「LDAP Password」

這些值將使用LDAP請求。

8個。 3添加LDAP請求違約

首先選擇LDAP用戶元素。 點擊你的滑鼠按鈕 得到添加菜單,然後選擇AddConfig ElementLDAP Request Defaults。 然後, 選擇這個新元素以查看其控制面板。

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


  Figure 8a.3 LDAP Defaults for our Test Plan

圖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. 選擇添加測試單選按鈕的測試配置集團


                  Figure 8a.4.1 LDAP Request for Inbuilt Add test圖8 a.4.1 LDAP請求內置添加測試

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

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

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

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


                  Figure 8a.4.2 LDAP Request for Inbuilt Search test圖8 a.4.2 LDAP請求內置搜索測試

  1. 重命名為「修改「這個元素
  2. 選擇修改測試單選按鈕的測試配置集團

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


                  Figure 8a.4.3 LDAP Request for Inbuilt Modify test圖8 a.4.3 LDAP請求內置修改測試

  1. 重命名為「刪除「這個元素
  2. 選擇刪除測試單選按鈕的測試配置集團


                  Figure 8a.4.4 LDAP Request for Inbuilt Delete test圖8 a.4.4 LDAP請求內置刪除測試

8個。 5添加響應斷言

您可以添加一個響應斷言元素。 這個元素將檢查接收到的響應數據通過驗證如果響應文本」成功的」。 (AddAssertionRequest Assertion)。

注意:這個樹中的位置, 斷言將為每個LDAP執行請求的響應。
  1. 選擇文本響應單選按鈕的應對現場測試集團
  2. 選擇子字元串單選按鈕的模式匹配規則集團
  3. 點擊添加按鈕和添加字元串」成功的「在模式測試


  Figure 8a.5 LDAP Response Assertion

圖8。 5 LDAP響應斷言

8. 6一個偵聽器添加到視圖/存儲測試結果

最後一個元素需要添加到您的測試計劃是一個偵聽器。 這個元素是負責存儲所有LDAP的結果 請求一個文件和呈現的視覺模型數據。 選擇LDAP 用戶在表元素,並添加一個視圖的結果 (AddListenerView Results in Table)


  Figure 8a.6 View Results in Table Listener

圖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。 您現在應該看到執行緒組元素在測試計劃。 如果您沒有看到的元素,然後測試計劃樹的「擴大」 點擊測試計劃元素。


Figure 8b.1. Thread Group with Default Values圖8責任。 執行緒組的默認值

8 b。 2添加LDAP請求違約

用戶首先選擇LDAP Ext元素。 點擊你的滑鼠按鈕 得到添加菜單,然後選擇AddConfig ElementLDAP Extended Request Defaults。 然後, 選擇這個新元素以查看其控制面板。

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


  Figure 8b.2 LDAP Defaults for our Test Plan
圖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如果你想讓客戶信任所有證書


Figure 8b.3.1. Thread Bind example圖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. (可選)解析搜索結果。 檢查將意味著它會導致響應數據,不不會說。


Figure 8b.3.2. search request example圖8 b.3.2。 搜索請求的例子

8 b.3.3添加一個比較請求

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


Figure 8b.3.3. Compare example圖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實際上是兩個獨立的操作但不容易分裂!
Figure 8b.3.4. Single bind/unbind example圖8 b.3.4。 單一的bind / unbind例子

8 b.3.5添加一個添加請求

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


Figure 8b.3.5. Add request example圖8 b.3.5。 添加請求示例

8 b.3.6添加一個修改的請求

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


Figure 8b.3.6. Modify example圖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, 這將完整的子樹,加上子樹中所有退休人員的新地方的樹。


Figure 8b.3.7. Rename example

圖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「在刪除欄位。


Figure 8b.3.8. Delete example圖8 b.3.8。 刪除示例

8 b.3.9添加一個解放的要求

  1. 重命名的元素:「9。 執行緒解開
  2. 選擇「執行緒解開」按鈕。 這將是足夠的,因為它只是關閉當前連接。 這需要的是已知的資訊系統


Figure 8b.3.9. Unbind example圖8 b.3.9。 解放的例子

8 b。 4一個偵聽器添加到視圖/存儲測試結果

最後一個元素需要添加到您的測試計劃是一個偵聽器。 這個元素是負責存儲所有LDAP的結果 請求一個文件和呈現的視覺模型數據。 選擇執行緒組 元素,並添加一個樹視圖的結果(AddListenerView Results Tree)


Figure 8b.4. View Result Tree Listener圖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網路服務。 我們不會去寫的細節 網路服務。 如果你不知道如何編寫一個網路服務,Google 網路服務和熟悉編寫web服務 Java和。net。 應該注意的有顯著差異 之間如何。net和Java web服務實現。 這個話題太 廣泛覆蓋的用戶手冊。 請參考其他來源 得到一個更好的主意的差異。

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

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


Figure 9.1.0. Webservice Template

圖9.1.0。 網路服務模板改變如下:

  1. 在「HTTP請求違約「改變」IP的伺服器名稱
  2. 在「Soap請求」,改變「路徑:Figure 9.1.1 Webservice Path圖9.1.1 Webservice路徑

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

Figure 9.1.2 Webservice Headers圖9.1.2 Webservice頭

最後一步是粘貼的SOAP消息」身體數據」 文本區域。

Figure 9.1.3 Webservice Body圖9.1.3 Webservice的身體

9.2添加用戶

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

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


Figure 9.2. Thread Group with Default Values圖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用戶執行緒組。


Figure 9.3. JMeter Users Thread Group圖9.3。 JMeter用戶執行緒組

9.3添加一個偵聽器來查看存儲測試結果

最後一個元素是一個需要添加到您的測試計劃偵聽器。 這個元素是 負責將所有HTTP請求的結果存儲在一個文件和展示 數據的可視化模型。

選擇JMeter用戶並添加一個元素綜合圖偵聽器 (添加偵聽器綜合圖). 接下來,您需要指定一個目錄和文件名 輸出文件。 你可以到文件名欄位類型,或選擇 瀏覽按鈕,瀏覽到一個目錄,然後輸入一個文件名。


Figure 9.4. Graph Results Listener圖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 下圖)


Figure 10.1. Thread Group with Default Values圖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). 接下來,您需要指定一個目錄和文件名 輸出文件。 你可以到文件名欄位類型,或選擇 瀏覽按鈕,瀏覽到一個目錄,然後輸入一個文件名。


Figure 10.2. Graph Results Listener圖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 下圖)


Figure 11.1. Thread Group with Default Values圖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提供展品殭屍執行緒和一個客戶端,試試另一個。


Figure 11.2. JMS Subscriber圖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. 選擇消息類型。 如果消息在對象格式或地圖資訊,確保 消息是正確地生成的。


Figure 11.3. JMS Publisher圖11.3。 JMS的出版商

11.3添加一個偵聽器來查看存儲測試結果

最後一個元素是一個需要添加到您的測試計劃偵聽器。 這個元素是 負責將所有HTTP請求的結果存儲在一個文件和展示 數據的可視化模型。

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


Figure 11.4. Graph Results Listener

圖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)。 數據將被保存到剪貼板,從那裡可以粘貼到另一個應用程式, 如一個電子表格或文本編輯器。

Figure 1 -

圖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啟動和停止的菜單項。

Figure 1 - Run Menu

圖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報告:

Figure 14.1. HTML Report Dialog Menu圖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 configurationInfluxDB配置

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 configuration

InfluxDB 2配置

15.4 Grafana配置

安裝grafana
文檔為更多的細節。 添加數據源 

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

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 還為您提供了自動垃圾回收和位元組程式碼級別安全性。