這篇教程討論的是JMeter,它是一款基於Java的、集合了幾個應用程序、具備特定用途的負載和性能測試工具。shell
本篇主要涉及的內容:數據庫
- 解釋一下JMeter的用途
- JMeter的實現方式以及採用的技術
- 安裝與配置
- 介紹用戶界面的基本特徵
- 詳細介紹不一樣的測試計劃的配置方法
- 如何分析結果數據
- 涉及幾個重要的最佳實踐
全部的例子都是基於Java 8 update 0.20,Eclipse Luna 4.4, JMeter 2.11, MySQL Community Server 5.6.21的開發環境。那咱們就開始吧!
目錄
引言
採用的技術
教程內容簡介
安裝
用戶界面
可用的請求
測試計劃和測試組件
執行順序
啓動與中止
HTTP請求的測試計劃
MySQL測試計劃
JUnit Request測試計劃
記錄測試
插件
最佳實踐
總結
下載
資源
引言
JMeter使用了不一樣技術和協議,是一款能夠進行配置和執行負載測試、性能測試和壓力測試的工具。
它可以模擬不一樣類型的請求,例如各類類型的數據庫,FTP, HTTP, HTTPS 或者其餘的服務端應用。
最好先來了解一下以下概念:
- 負載測試: 這類測試使系統或者應用程序在預先設計好的極端場景下測試運行。這類測試用來評估系統或者程序在極端條件下的行爲。
- 性能測試: 這種測試被用來檢測系統的性能表現,包括特定狀況下,系統的響應能力和穩定性。
- 壓力測試: 這類測試經過載入更多的外部資源,並使系統組件超越其所設定的能力範圍,試圖使系統掛掉。
JMeter最初的用途是用來測試web應用的,可是它的功能已獲得擴展,現在已經能夠針對絕大部分的程序進行測試,同時能夠在你的程序中進行功能測試。
採用的技術
JMeter是一款Java桌面應用程序,它的用戶界面採用Swing Java API實現。基於這兩點,JMeter是一個跨平臺工具,可以運行在任何安裝了Java虛擬機的操做系統(Windows, Linux, Mac)的設備上。
它的框架支持併發和多線程或者線程組的執行。這對於配置負載測試和壓力測試很是有用。
它是可擴展的,提供了大量的可用插件。
JMeter是Apache軟件基金會下的一個子項目,是徹底免費和開源的(http://www.apache.org/licenses/)。
教程內容簡介
這篇文章是針對那些沒有JMeter使用經驗的開發人員和軟件設計人員,介紹如何使用JMeter的教程。
同時針對可能不一樣的配置和測試計劃,提供了一些例子和使用說明。在下一個章節中,咱們將會看到如何安裝JMeter,並配置、運行它,如何保存和分析不一樣測試計劃的結果。
安裝
爲了JMeter在你的電腦上安裝並運行,你須要按照以下步驟進行操做:
- 首先必須安裝java環境。須要在你的電腦上安裝JRE 1.6或者更高版本。只要到Oracle官網下載並安裝適合您的系統的安裝包: http://www.oracle.com/technetwork/java/javase/downloads/index.html。
- 設置JAVA_HOME環境變量,使其指向jre的安裝目錄。Windows用戶而言:
1
|
JAVA_HOME=C:\Program Files\Java\jdk1.8.0_20
|
注意設置正確你的Java版本。
- 將java編譯路徑添加到系統路徑下。Windows用戶而言,將C:\Program Files\Java\jdk1.7.0_25\bin添加到系統變量Path尾部。
而後測試java環境在你的設備上是否安裝成功,使用以下命令行:
1
|
java -version
|
應該輸出相似以下信息:
1
2
3
|
java version"1.8.0_20"
Java(TM) SE Runtime Environment (build1.8.0_20-b26)
Java HotSpot(TM)64-Bit Server VM (build25.20-b23, mixed mode)
|
- 從http://jmeter.apache.org/download_jmeter.cgi下載最新版本的JMeter,
- 將它解壓到例如C:\JMeter下(Windows)。
- 文件夾的結構應該這樣:
1
2
3
4
5
6
7
8
|
apache-jmeter-2.9
apache-jmeter-2.9bin
apache-jmeter-2.9docs
apache-jmeter-2.9extras
apache-jmeter-2.9lib
apache-jmeter-2.9libext
apache-jmeter-2.9libjunit
apache-jmeter-2.9printable_docs
|
- 而後你就能夠進入到C:\jmeter\apache-jmeter-2.11\bin(對於Windows用戶),執行jmeter.bat
- 能夠看到JMeter GUI的啓動界面:
![](http://static.javashuo.com/static/loading.gif)
GUI概述
JMeter的GUI很是直觀易用。有文件處理的通用菜單,例如:新建,打開,保存,另存爲等。還有啓動和中止測試計劃,配置的可用的菜單項。每個測試計劃,線程組,測試計劃節點(咱們將會在下一章看到更多這方面的內容)均可以經過點擊鼠標右鍵,提供不一樣的上下文菜單選項。
也能夠改變用戶界面的語言,有許多語言可供選擇。
正如咱們所說的,圖形用戶界面是很是直觀和易用的,爲每一個菜單和動做提供了易用理解的工具提示。除此以外,暫且不談它的質量,那爲何JMeter是如此普遍使用?由於它很容易理解,而且易學。
可用的請求
JMeter幾乎提供任何一種系統的測試配置。總的來講,下列協議被包含在內:
- Web: HTTP, HTTPS網站 ‘web 1.0′ web 2.0 (ajax, flex 和 flex-ws-amf): 咱們之後會看到如何測試一個潛在的網頁及其行爲
- Web 服務: SOAP / XML-RPC.
- 經過JDBC驅動的數據庫。幾乎支持任何一種數據庫,你須要的就是一個合適的驅動程序包,並放到在JMeter安裝目錄的正確位置。咱們後續將作一個MySQL數據庫測試。
- 路徑: LDAP.
- 基於JMS的面向消息的服務
- 使用POP3, IMAP, SMTP協議的郵件服務.
- FTP服務
- 使用JUnit和Java應用程序的進行的功能測試
測試計劃與組件
基本上,使用JMeter能夠進行以下操做:建立,配置,執行測試計劃及結果分析。測試計劃是對已配置的本地或遠程服務器(或客戶端)的請求集執行的具體說明。
在一個測試計劃的配置中,你能夠指定多個輸入和輸出參數,能夠配置使測試計劃成功執行或失敗的基本條件。
JMeter測試計劃是由不一樣的組件組成。這裏有一個最重要組件的列表,指導你如何使用JMeter的用戶界面添加它們以及這些插件的做用:
線程組(ThreadGroup)
一個線程組基本上是不一樣的測試計劃元素的組合,它是一個測試計劃的核心,它控制着基本核心參數。
爲了建立一個測試計劃,首先你不得不去建立一個線程組,配置以下參數:線程數量,過渡時期,循環次數和正常狀況或者錯誤狀況下的行爲:
- 線程數:執行測試計劃的線程數,這個參數對於配置負載和壓力測試很是重要。
- 過渡期:JMeter開始啓動全部線程所需時間。
- 循環次數:即迭代次數,也就是測試計劃被執行的次數
- 錯誤行爲:錯誤場景下的行爲模式:阻止當前線程,中止整個測試,繼續執行…
一個線程組也有配置選項的開始和結束時間。經過單擊複選框「Scheduler」,彈出帶有調度參數的面板,能夠爲你的測試配置開始和結束時間。
一旦配置完成,你就能夠開始添加其餘測試計劃元素到線程組,例如採樣器,偵聽器和定時器。咱們將在下一章解釋這一切。
採樣器(Samplers)
採樣器用於發送請求到不一樣類型的服務器。它們是每個測試計劃的基本要素,一切都圍繞這些採樣器而工做:採樣器執行請求(基於配置的請求),這些請求產生一個或多個響應,後續將被分析。
這裏有一個在JMeter可用的採樣器列表(在本教程咱們將看到其中一些):
- 訪問日誌採樣器
- AJP採樣器
- Bean shell取樣器
- BSF採樣器
- 調試採樣器
- FTP採樣器
- HTTP採樣器
- Java採樣器
- JDBC採樣器
- JMS(幾個)採樣器
- JSR223採樣器
- JUnit採樣器
- LDAP(幾個)採樣器
- 郵件閱讀器
- MongoDB採樣器
- 操做系統進程取樣器
- SMTP採樣器
- SOAP
- TCP採樣器
- 測試行動
在上面的列表中咱們能夠看到,有不少不一樣類型的採樣器。這個清單是不完整的,由於存在多種其餘不一樣於JMeter插件的實現技術。每一個採樣器的配置取決於它所執行的請求;這意味着一些採樣器有一些共性的配置,而另一些採樣器因爲它們各自請求的不一樣而徹底不一樣。
邏輯控制器(Logic Controllers)
邏輯控制器容許你配置一個線程組內不一樣採樣器的執行順序。該列表包含了在JMeter全部可用的邏輯控制器:
- 簡單控制器
- 循環控制器
- 一次性控制器
- 交錯控制器
- 隨機控制器
- 隨機順序控制器
- 流量控制器
- 運行時控制器
- I控制器
- While控制器
- Switch控制器
- ForEach控制器
- 模塊控制器
- include控制器
- 事務控制器
- 記錄控制器
監聽器(Listeners)
監聽器提供不一樣的方式查看由採樣器請求產生的結果。監聽器以報表、樹型結構、或簡明的日誌文件的形式分析結果。
還能夠在測試計劃中的任何地方添加監聽器,但他們只會在各自的應用範圍內解析和收集來自採樣器的數據。
這些都是JMeter可用的監聽器:
- 樣品結果配置保存
- 全圖景結果集
- 圖表結果集
- 樣條線可視化工具
- 斷言結果集
- 樹形結果集
- 整合報告
- 表格結果集
- 簡單數據輸出
- 監測結果集
- 分佈圖(alpha)
- 整合圖
- Mailer可視化工具
- Beanshell監聽器
- 總結報告
定時器(Timers)
可使用定時器來定義請求之間的等待時間。若是不指定,JMeter會一個請求完成後當即執行下一個請求,沒有任何等待時間。
可在JMeter使用的計時器以下:
- 恆定的定時器
- 高斯隨機定時器
- 均勻隨機定時器
- 恆定吞吐量定時器
- 同步定時器
- jsr223定時器
- Beanshell定時器
- BSF定時器
- 泊松隨機定時器
斷言(Assertions)
斷言經過驗證採樣器請求產生的響應,來驗證測試計劃的有效性。它基本上相似於單元測試斷言,用來檢測被測試應用程序的響應質量。你能夠爲每一個測試計劃配置任何生效的斷言。
這裏是一個在JMeter可使用的斷言列表:
- Bean shell斷言
- BSF斷言
- 比較斷言
- jsr223斷言
- 響應斷言
- Duration斷言
- XML Assertion
- BeanShell Assertion
- MD5Hex Assertion
- HTML Assertion
- XPath Assertion
- XML Schema Assertion
配置節點(Configuration nodes)
經過使用配置元素你能夠將不一樣的參數傳遞給取樣器請求。他們提供了建立變量(不一樣的和動態的)的一種方式,這些參數以後被採樣器所使用。在採樣器被執行前,參數所屬節點啓動時,這些參數被執行;這就是爲何採樣器能夠依賴這些變量。
這裏是一個在JMeter使用的全部配置節點列表:
- 計數器
- CSV數據集配置
- FTP請求缺省值
- HTTP受權管理
- HTTP緩存管理
- HTTP cookie管理
- HTTP代理服務器
- HTTP請求缺省值
- HTTP頭部管理
- Java請求缺省值
- 密鑰庫配置
- JDBC鏈接值
- 登陸配置元素
- LDAP請求缺省值
- LDAP擴展請求缺省值
- TCP採樣器配置
- 用戶自定義變量
- 簡單配置元素
- 隨機變量
前置處理器(Pre processors)
在採樣器執行前,前置處理器被觸發。他們可用於從響應中提取變量,這些變量後續將經過配置元素被採樣器所使用。
下面都是能夠用來做爲前置處理器的元素:
- HTML連接解析器
- HTTP URL重寫修改器
- HTTP用戶參數修改器
- 用戶參數
- JDBC前置處理器
- jsr223前置處理器
- 正則表達式的用戶參數
- Beanshell前置處理器
- BSF的前置處理器
後置處理器(Post processors)
後置處理器是取樣器被執行後被觸發執行的元素。他可用於解析響應數據,提取變量,以便後續使用
下列元素可用於後置處理器:
- 正則表達式提取器
- XPath提取器
- Result status動做處理器
- jsr223 後置處理器
- JDBC 後置處理器
- BSF後置處理器
- jQuery/CSS 提取器
- Beanshell 後置處理器
- Debug後置處理器
測試計劃元素執行順序
測試計劃的元素是有序的,經過如下方式執行:
1–配置節點
2–前置處理器
3–定時器
4–取樣器
5–後置處理器(只在有結果可用狀況下執行)
6–斷言(只在有結果可用狀況下執行)
7–監聽器(只在有結果可用狀況下執行)
一個測試計劃能夠包含一個或多個測試計劃。經過功能性或者技術邏輯將測試組織在一塊兒是一種常見的作法。
運行/中止測試計劃
運行一個測試計劃,你只須要點擊「play」按鈕:
![](http://static.javashuo.com/static/loading.gif)
點擊按鈕「Play no pauses」,開始一個測試並忽略全部暫停:
![](http://static.javashuo.com/static/loading.gif)
經過點擊「中止」按鈕,能夠中止測試:
![](http://static.javashuo.com/static/loading.gif)
也能夠禁用執行測試計劃。你只須要「切換」的測試計劃的狀態:
![](http://static.javashuo.com/static/loading.gif)
你能夠看到在上面的截圖中看到,不可執行的計劃呈現灰色,但能夠修改他們或從新配置。
Web(HTTP)測試計劃
在這一章中,咱們將看到如何建立一個經過HTTP測試一個特定的網頁的測試計劃。爲此目的,我將用http://www.wikipedia.org網站。
有了足夠理論知識,如今咱們將看到如何配置一個HTTP請求的測試計劃。
- 重命名「測試計劃」,起一個你喜歡的名字
在這一步中,配置測試計劃可能會影響線程的行爲,您能夠添加可能使用到的外部類庫。不過咱們不打算在這個例子中那樣作。
![](http://static.javashuo.com/static/loading.gif)
- 添加線程組
在這一步,你須要建立一個負責執行全部測試組件的線程組,並配置主要屬性:線程數,秒級的過渡時期,迭代次數。
在菜單中這樣操做
Test Plan -> Add -> Thread ->ThreadGroup
![](http://static.javashuo.com/static/loading.gif)
你也能夠指定錯誤狀況下行爲模式(繼續,中止,中止當前線程……)
- HTTP請求添加取樣器
在這一步,給要測試HTTP請求添加採樣器:
Add Sampler->HTTP Request
咱們須要爲這種類請求設置不一樣的屬性:
在這個例子中,爲要測試的服務器設置名稱:www.wikipedia.org(不用指明HTTP或HTTPS協議)。若是須要的話,你應該修改端口,協議,執行方法等。在咱們的案例中這是沒必要要的。這有幾個關於配置代理,超時和不一樣的頭信息的參數,但在咱們的例子中,使用默認值。
![](http://static.javashuo.com/static/loading.gif)
- 添加結果監聽器
爲了後續可以看到結果,這是有必要的;就如咱們以前在本教程中看到那樣,對於咱們的http請求的測試計劃,有幾種可選配置,咱們使用結果樹:
Add Listener -> View Results Tree
在咱們的示例中,咱們沒有改變任何東西,保留全部配置屬性的默認值。
![](http://static.javashuo.com/static/loading.gif)
- 保存並運行測試計劃
File->Save(或單擊「Control + s」)
Run->Start(或單擊「play」)
- 在監聽器中查看結果
![](http://static.javashuo.com/static/loading.gif)
咱們能夠看到,全部的請求已經完成,如預期那樣,他們都提供有意義的響應,如此看來,咱們測試的網頁工做正常(若是這是咱們的預期行爲)。咱們能夠玩的轉這些結果,檢查全部返回的數據。
咱們已經配置了一個測試計劃,它發送大量請求到指定的服務器並解析響應。接下來咱們將看到如何使用其餘類型的測試組件,如定時器和斷言。
- 添加定時器
爲了增長一個定時器,咱們只要右擊測試計劃並添加一個定時器:
Add Timer->Constant Timer
咱們配置500毫秒。每個請求都將在上一個請求執行完成後等待500毫秒。
![](http://static.javashuo.com/static/loading.gif)
- 添加斷言持續時間
在測試計劃中,單擊右鍵並添加一個斷言持續時間,若是響應時間超過100毫秒,配置錯誤斷言。針對the main sample only選項的配置以下:
Add assertion->Duration assertion
![](http://static.javashuo.com/static/loading.gif)
- 添加size assertion
Add assertion->Size Assertion
咱們需確保響應信息的尺寸大於5000字節:
![](http://static.javashuo.com/static/loading.gif)
若是咱們運行測試計劃,咱們將會看到響應信息老是大於設定的值,若是響應信息尺寸小於設定值,斷言也會失敗。
數據庫測試計劃指南
咱們將看到如何配置,運行一個針對MySQL數據庫的測試,並對結果進行分析。這個例子是關於MySQL的,也可使用任何其餘類型的數據庫如Oracle,MongoDB或別的。
- 安裝MySQL
若是你沒有在你的電腦安裝MySQL,你能夠從http://dev.mysql.com/downloads/ 下載安裝MySQL服務器,這是很容易的。
- 下載MySQL驅動程序
下載MySQL鏈接器(mysql-connector-java-5.1.6),將它複製到JMeter安裝目錄下的lib目錄下,本例中是C:\jmeter\apache-jmeter-2.11\lib
- 啓動MySQL
啓動數據庫服務器,你能夠對它進行查詢。
- 建立數據庫
你能夠建立一個你想要的數據庫,咱們這裏只是一個很是簡單的例子:
1
2
3
4
5
6
7
8
9
10
11
|
createdatabasejmeter;
use jmeter;
createtablejmeter_stuff(idint,namevarchar(50), descriptionvarchar(50));
insertintojmeter_stuff(id,name, description)VALUES(1,"dani","the boss");
insertintojmeter_stuff(id,name, description)VALUES(2,"topo","the worker");
insertintojmeter_stuff(id,name, description)VALUES(3,"tupac","the other");
|
- 建立一個測試計劃
跟上一章節同樣,進行以下操做建立測試計劃:一個新的線程組,一個JDBC類型的配置元素和一個新的JDBC類型請求,以一樣的方式添加一個監聽器來解析和查看結果。
惟一的區別是採樣器的類型,在這種狀況下使用JDBC採樣器。
1
|
select*fromjmeter_stuff;
|
![](http://static.javashuo.com/static/loading.gif)
- JDBC鏈接配置
添加一個新的JDBC鏈接配置到採樣器:
點擊右鍵 JDBC採樣器->添加鏈接配置
改變參數以下:
1
2
3
4
5
|
Variable BoundtoPool= samenameasinthe sampler
DatabaseURl=jdbc:mysql://localhost:3306/jmeter
JDBC Driver.mysql.jdbc.Driver
username=
password=
|
設置用戶名密碼
![](http://static.javashuo.com/static/loading.gif)
- 保存並執行。
- 利用以前配置的監聽器查看結果。
您能夠以相似在HTTP請求的測試計劃相同的方式驗證和檢查輸出結果。只要你須要,你也能夠添加前置處理器,後置處理器,斷言或其餘任何一種元素。
在這種狀況下,輸出的是SELECT語句的結果。
你能夠用這種取樣器用於更新數據,以及修改採樣器配置的SQL語句。
在下面的屏幕捕獲的是請求響應結果的基本信息:
![](http://static.javashuo.com/static/loading.gif)
JUnit測試計劃
在這一章中,咱們將解釋如何結合JUnit使用JMeter。從負載和性能的角度來看,JMeter爲執行功能測試,提供了很是強大的機制。
首先,須要建立一個像下面的JUnit測試:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
|
publicclassJMeterTest
{
publicJMeterTest()
{
// just for testing purposes
System.out.println("calling the constructor");
}
@Before
publicvoidsetUp()throwsException
{
// just for testing purposes
System.out.println("calling setup");
}
@After
publicvoidtearDown()throwsException
{
// just for testing purposes
System.out.println("calling tearDown");
}
@Test
publicvoidtestMe()
{
for(inti =0; i <30; i++ )
{
// just asserting randomly in order to check what happens in each case
intrandomNumber = (int)( Math.random() *100);
System.out.println( randomNumber );
assertEquals(0, randomNumber %2);
}
}
}
|
1
|
|
爲了查看JMeter如何使用他們,本試驗主要包含兩個斷言,固然這本教程的目的不是詳細解釋單元測試或JUnit測試。
- 添加JUnit測試路徑
將單元測試打成一個JAR包,把它複製到JMeter的安裝目錄下的/lib/JUnit下。確保JAR文件包含你想讓JMeter執行的測試類的.class文件。在文章的最後,你能夠找到一個帶有pom.xml文件的Java項目,你能夠直接使用他去生成的JAR文件。如今你只須要編譯代碼:
1
|
mvn compile
|
或者直接在Eclipse或你喜歡的其餘IDE中導出你的項目,生成包括字節碼JAR文件。
- 添加JUnit採樣器請求
![](http://static.javashuo.com/static/loading.gif)
入前所述,建立一個測試計劃,添加一個JUnit類型採樣器:Add Sampler->Junit Request ,配置並執行你想要測試的方法。
在咱們的例子中,咱們將運行基於JUnit 4的方法,但你也能夠勾選框使用JUnit 3。
![](http://static.javashuo.com/static/loading.gif)
- 就像咱們在前幾章同樣,添加一個監聽器,以查看結果
- 運行測試計劃
- 查看結果
在這裏,能夠看到咱們剛剛建立的JUnit測試結果:
![](http://static.javashuo.com/static/loading.gif)
如上述截圖所示,咱們全部的測試(一個測試,10次循環)都失敗了。這是預期的行爲,由於咱們但願咱們的測試失敗。其實咱們只是寫了個單元測試,沒有功能上的意義,是無用的。它的目的是要說明如何配置JMeter去執行這些類的單元測試。
在這一章所解釋的內容 有助於你使用JMeter提供的便利性的功能進行應用程序的功能測試和業務邏輯的測試.它也頗有趣,由於它能夠將Java語言的全部優點與JMeter的多線程能力相結合。
HTTP測試記錄
如今咱們將說明如何配置JMeter記錄HTTP請求。爲此咱們須要Firefox安裝在咱們的機器,我是用版本32。
- 讓Firefox使用JMeter代理
進入Firefox網絡設置,選擇手動代理選項和設置爲本地主機服務器和端口8080(實際上,這加深了對你的JMeter配置)。以後選中「爲全部協議使用代理服務器」。
![](http://static.javashuo.com/static/loading.gif)
- 跟之前同樣,首先咱們建立一個測試計劃。
咱們添加了一個新的線程組,給它起名。配置線程組線程數量爲50,過渡時期爲10秒,循環次數等於1。
![](http://static.javashuo.com/static/loading.gif)
- 添加HTTP請求默認值
在剛剛建立的線程組中添加一個新的配置元素,選擇「HTTP Request Defaults」。
![](http://static.javashuo.com/static/loading.gif)
在這裏你應該填寫你想測試服務器名稱。
- 添加記錄控制器
如今咱們添加一個記錄控制器到工做臺。
選擇工做臺,不是測試計劃,並添加一個非測試元件的」Test Script Recorder」。
![](http://static.javashuo.com/static/loading.gif)
你如今應該讓工做臺保存起來,而且與你的測試計劃無關。保存測試計劃不意味着保存了工做臺。
配置記錄以下:
![](http://static.javashuo.com/static/loading.gif)
- 添加定時器
若是你想爲你的記錄器添加一個定時器(常量類型),那麼該定時器將由每一個被記錄的HTTP請求所使用。
- 開始記錄
經過點擊記錄器啓動按鈕,你將啓動JMeter代理服務器。
![](http://static.javashuo.com/static/loading.gif)
- 記錄顯示
若是你爲了生成一個HTTP請求而訪問一個網頁,例如使用Firefox(配置爲在本章的第一步解釋以後)訪問http://www.oviedin.com,那麼你會看到不一樣的請求入口出如今你的測試計劃記錄控制器中。
![](http://static.javashuo.com/static/loading.gif)
這些記錄其實是以前訪問的web頁面的HTTP請求。那些包含在過濾器配置測試腳本配置過的記錄將被保存。能夠在你的後續測試計劃中從新配置使用。
JMeter插件
不一樣的插件應用的場景和用戶不一樣,其中的一些須要安裝,有些不須要安裝。
一些很是有用的插件,它們經過一些高級選項來解析結果,並利用圖表分析結果 例如http://jmeter-plugins.org/wiki/GraphsGeneratorListener/。
也有一些可用插件,可以將JMeter與你的持續集成工具鏈接,直接從CI軟件運行JMeter,執行測試計劃,例如」https://wiki.jenkins-ci.org/display/JENKINS/Performance+Plugin「。
正如我所說的,隨着插件數量的上升,不可能列出全部的插件。因此你在實現本身的插件功能時,儘量的去互聯網上查找一下是否有可用的插件,這對本身是很是有價值的。
你也能夠建立你本身的JMeter插件,但這超出了本文的範圍。
JMeter最佳實踐
在文章末尾,咱們要寫下兩個頗有用的技巧和最佳實踐:
- 雖然JMeter UI是一個用於配置和建立不一樣測試計劃很是有用和直觀的工具,可是有經驗的用戶更想使用非GUI模式執行測試計劃,存儲他們的結果。
你能夠經過命令行:
1
|
jmeter -n -t test.jmx -l test.jtl.
|
- 假設該測試就是你想要執行的測試計劃。你必須提供該測試計劃的完整存儲路徑。
- 監聽器對解析結果是很是棒的,但他們也都是資源密集型,須要消耗大量內存,在你的配置使用盡量少的監聽器是有好處的。標記 -l 表示刪除全部監視器,若是還沒添加監視器,那麼這個選項是不須要的。
- 若是你對測試期間發生了的錯誤感興趣,能夠在結果樹視圖中查看」View only errors「標記。
- 使用變量和循環在相同的採樣代替配置幾個相似的樣品中的變量和參數,他們使用的是惟一的區別。
- 使用同一個採樣器的變量和循環變量,而不是建立好幾個這樣的採樣器,他們間只是變量值不一樣而已。
- 當建立的JUnit測試計劃時,建議提供有意義的錯誤和斷言信息,以便JMeter輸出儘量被人理解的內容。當進行單元測試時,一般狀況下都會給出這樣建議,並且徹底適用這種狀況。
- 使用Stop(Control + ‘.’)。這將盡量的當即中止線程。
- 使用Shutdown(Control + ‘,’)。這就要求在當前任何工做結束後的中止線程。其餘工具提示在https://wiki.apache.org/jmeter/jmetershortcuts均可以找到。
總結
下載
資源
- http://jmeter.apache.org/
- http://jmeter-plugins.org/
- href=」http://en.wikipedia.org/wiki/Software_performance_testing
- http://www.tutorialspoint.com/jmeter/
- http://jmeter.apache.org/usermanual/get-started.html (section 2.4.3 Non-Guide Mode)
- https://wiki.apache.org/jmeter/FrontPage