一、Jmeter簡介
- Apache JMeter是Apache組織開發(fā)的一款開源軟件,是典型的純Java開發(fā)的壓力測試工具。
- 最初用于測試Web應(yīng)用程序或FTP應(yīng)用程序。但后來擴展到其他測試領(lǐng)域。 它可以用于測試靜態(tài)和動態(tài)資源,例如靜態(tài)文件、Java 小服務(wù)程序、CGI 腳本、Java 對象、數(shù)據(jù)庫、FTP 服務(wù)器, 等等。
- JMeter 可以用于對服務(wù)器、網(wǎng)絡(luò)或?qū)ο竽M巨大的負(fù)載,來自不同壓力類別下測試它們的強度和分析整體性能。
- JMeter能夠?qū)?yīng)用程序做功能/回歸測試,通過創(chuàng)建帶有斷言的腳本來驗證程序返回了是否為期望的結(jié)果。為了最大限度的靈活性,JMeter允許使用正則表達(dá)式創(chuàng)建斷言
- 開源 :JMeter完全免費,允許開發(fā)人員使用源代碼進行開發(fā)
- 友好的GUI :JMeter非常易于使用,并且不需要時間來熟悉它
- 獨立于平臺 :JMeter是100%純Java桌面應(yīng)用程序。 所以它可以在多個平臺上運行
- 完整的多線程框架, 支持多線程組并發(fā)(如:多場景混合并發(fā))
- 可視化測試結(jié)果:測試結(jié)果可以以不同的格式顯示,如圖表,表格,樹和日志文件
- 易于安裝 : 您只需復(fù)制并運行* .bat文件即可運行JMeter。 無需安裝。 高度可擴展 :您可以編寫自己的測試。 JMeter還支持可視化插件,允許您擴展測試 多種測試策略 :JMeter支持許多測試策略,如負(fù)載測試 ,分布式測試和功能測試 。 模擬 :JMeter可以使用并發(fā)線程模擬多個用戶,對正在測試的Web應(yīng)用程序造成沉重負(fù)擔(dān) 支持多協(xié)議 :JMeter不僅支持Web應(yīng)用程序測試,還評估數(shù)據(jù)庫服務(wù)器性能。 JMeter支 持所有基本協(xié)議,如HTTP,JDBC,LDAP,SOAP,JMS和FTP 錄制和回放 : 在瀏覽器上記錄用戶活動,并使用JMeter在Web應(yīng)用程序中模擬它們 腳本測試 :Jmeter可以與groovy, Bean Shell和Selenium集成進行自動化測試。
- 創(chuàng)建對目標(biāo)服務(wù)器的請求—>服務(wù)器響應(yīng)—–>保存所有響應(yīng)–—>收集和計算統(tǒng)計信息
—–>生成不同格式的測試報告
- jmeter模擬多個用戶向目標(biāo)服務(wù)器發(fā)送請求,并返回性能結(jié)果
以WEB性能測試為例:jmeter可以作為web服務(wù)器與瀏覽器之間的代理網(wǎng)關(guān),以便捕獲瀏覽器的請求和web服務(wù)器的響應(yīng),如此就可以很容易地生成性能測試腳本。有了性能測試腳本,jmeter就可以通過線程來模擬真實用戶對web服務(wù)器的訪問壓力。這與LoadRunner的工作原理基本一致(向服務(wù)器提交請求;從服務(wù)器獲取請求返回的結(jié)果)
- 性能測試(性能測試):支持HTTP、FTP服務(wù)器和數(shù)據(jù)庫服務(wù)器(通過JDBC)
- 接口測試:支持HTTP服務(wù)端接口測試
- 功能測試:利用badboy錄制測試腳本,可以快速的形成測試腳本
- 回歸測試:利用插件架構(gòu)的優(yōu)勢,可以用于功能和接口的回歸測試
二、JMeter下載安裝
1、安裝環(huán)境要求
- Java版本:JMeter要求充分滿足JVM1.3或更高。
- 操作系統(tǒng):JMeter可以在當(dāng)前任何一個已經(jīng)部署了Java的操作系統(tǒng)上運行,如:
Unix(Solaris,Linux,etc) 、 Windows(98,NT,2000,XP,WIN8)
2、JDK下載、安裝
- 官網(wǎng)下載jdk,地址:http://www.oracle.com/technetwork/java/javase/downloads/index.html
- 安裝jdk,下載完成后,雙擊安裝即可
- JDK環(huán)境變量配置
右鍵計算機屬性->高級系統(tǒng)設(shè)置->系統(tǒng)屬性->高級->環(huán)境變量->添加如下的系統(tǒng)變量:
- 變量名:JAVA_HOME
變量值:D:Program FilesJavajdk1.8.0_92【jdk安裝路徑】
- 變量名:CLASSPATH
變量值: .;%JAVA_HOME%libdt.jar;%JAVA_HOME%libools.jar;
- 最后在系統(tǒng)變量“Path”的變量值加上%JAVA_HOME%/bin,記得在前面加上;號
- 驗證jdk
運行cmd->輸入java -version->顯示java版本就表示jdk安裝成功
3、JMeter下載安裝
- Jmeter官網(wǎng)地址:http://jmeter.apache.org/download_jmeter.cgi
- 下載解壓Jmeter安裝包,JMeter解壓之后即可使用,無需安裝。
4、JMeter環(huán)境配置
- 新增:變量名:JMETER_HOME
變量值:E:apache-jmeter-4.0 (就是jmeter保存的路徑,即jmeter解壓路徑)
如:JMETER_HOME=D:apache-jmetesapache-jmeter-4.0
- 修改:變量名: CLASSPATH
變量值:
;%JMETER_HOME%/lib/ext/ApacheJMeter_core.jar;%JMETER_HOME%/lib/jorphan.jar;%JMETER_HOME%/lib/logkit-2.0.jar
- 修改系統(tǒng)變量path,后面加上%JMETER_HOME%bin
- 驗證配置:
- 在cmd輸入jmeter 可以直接打開,即配置成功
5、Jmeter 的Bin目錄下的幾個重要文件
- jmeter.bat:windows下啟動文件jmeter.sh:Linux下啟動文件jmeter.log:Jmeter運行日志文件jmeter.properties:Jmeter配置文件jmeter-server.bat:windows下啟動負(fù)載生成器服務(wù)文件jmeter-server:Linux下啟動負(fù)載生成器文件
6、啟動Jmeter
- 第一種方法:直接在CMD輸入jmeter啟動第二種方法:雙擊Jmeter解壓路徑的bin目錄下面的【jmeter.bat】即可啟動
三、JMeter組件介紹 (JMeter常用組件)
1、測試計劃(Test Plan)
- JMeter中的”測試計劃”,是測試的起點,同時也是其他所有組件的容器,存儲所有元素以及運行和測試所需的相應(yīng)設(shè)置(實際上是一個或一組測試用例)。可以將”線程組”(Thread Group)理解為一個測試用例,在一個測試計劃中可以有多個測試線程組。最簡單的測試用例包括:測試計劃、線程組、取樣器、監(jiān)聽器。
- 頁面元素介紹:名稱:你可以為你的測試計劃取一個有意義的名字注釋:對測試計劃的注釋用戶定義的變量:可以設(shè)置針對一些全局的值,定義為變量,共所有線程使用,在用到此變量的時候直接用${變量名}引用即可,例如變量名=url,值=http://www.badu.com,在需要時,直接用${url}就可以
- (1、添加:可以添加一條記錄,名稱:定義變量的名稱,供后續(xù)調(diào)用時使用;值:定義變量的值,根據(jù)需要可直接修改變量的值;
- (2、Add from clipboard:添加來自于剪切板中的信息;
- (3、刪除:選擇不需要的變量,可以進行刪除;
- (4、Up和Down:移動變量的位置;
- (5、Detail:有記錄時,可以選擇點擊Detail查看詳情,并修改名稱和值
- 獨立運行每個線程組:
- 未勾選時:有多個線程組時,其隨機啟動執(zhí)行;
- 勾選后:多個線程組時,等待前一個線程組執(zhí)行完成后才開始下一個線程組 ;
- Run tearDown Thread Groups after shutdown of main threads:
- 在主線程因錯誤結(jié)束執(zhí)行時,如果勾選此選項,會執(zhí)行tearDown線程組;如果不勾選,就不會執(zhí)行tearDown線程組;
- 函數(shù)測試模式:只有當(dāng)你需要記錄每個請求從服務(wù)器取得的數(shù)據(jù)到文件時才需要選擇函數(shù)測試模式。選擇這個選項很影響性能。在調(diào)試腳本的時候,可以開啟,但是在壓測數(shù)量時建議關(guān)閉。添加目錄或jar包到ClassPath(add directory or jar to classpath):需要調(diào)用的外部jar包可以在這里進行添加設(shè)置。如:向類路徑即%JMETER-HOME%BIN中添加目錄及jar包
- (1、瀏覽可以點擊選擇;
- (2、選擇其中一條可以點擊刪除;
- (3、點擊清除時可以清除里面所有的記錄;
注:什么是元素?
JMeter的不同組件稱為Elements。 每個元素都是為特定目的而設(shè)計的。
2、線程組(Threads)
- “線程組”是線程的集合。 每個線程代表一個用戶(每個線程模擬一個到服務(wù)器的真實用戶請求)。
- 線程組控件:設(shè)置每個組的線程數(shù)
例如,如果將線程數(shù)設(shè)置為100; JMeter將創(chuàng)建并模擬100個用戶對被測服務(wù)器的請求
- 線程組是任何一個測試計劃的開始點。每個測試需求的必備組件,JMeter 的每個任務(wù)都是用線程來處理的,
所有的控制器和取樣器都是在某個線程組下;
- 但有些配置元件,如:監(jiān)聽器,可能會被直接放到測試計劃目錄下。
- 訪問路徑:【測試計劃】-【線程】-【線程組】
- 頁面元素介紹:名稱:為線程組起名字線程數(shù):請求并發(fā)的數(shù)量(一般我們用來表示多少個用戶,即我們測試時的用戶數(shù)量)Ramp-Up Period(in seconds):在多少秒內(nèi)創(chuàng)建“線程數(shù)”中定義的所有線程。設(shè)置的1000個用戶,如果設(shè)置為1000秒,那么系統(tǒng)將會在1000秒結(jié)束前啟動這1000個用戶, 如果設(shè)置為0秒,則表示立即啟動所有用戶。每秒并發(fā)數(shù) = 線程數(shù)/RUP, 設(shè)為0,則立即啟動所有線程循環(huán)次數(shù):當(dāng)前線程組中的測試腳本循環(huán)運行次數(shù)(如果選擇后面的“永久”,那么請求將一直繼續(xù),直到強制停止.如果不選擇“永久”,而在輸入框中輸入數(shù)字,那么請求將重復(fù)指定的次數(shù),如果是0,會出現(xiàn)問題)調(diào)度器配置-持續(xù)時間:測試計劃持續(xù)多長時間,表示腳本持續(xù)運行的時間,以秒為單位,比如如果你要讓用戶持續(xù)不斷登錄1個小時,你可以在文本框中填寫3600。調(diào)度器配置-啟動延遲:測試計劃延遲多長時間啟動 Action to be taken after a Sampler error:用于設(shè)置出現(xiàn)錯誤后程序如何運行,操作如下
- continue:忽略錯誤繼續(xù)進行
- Start Next Tread Loop:開始下一個線程
- Stop Thread:停止當(dāng)前線程
- Stop Test:當(dāng)前采樣結(jié)束后,停止整個測試
- Stop Test Now:立刻停止整個測試
3、邏輯控制器(Logic controller)
- 邏輯控制器確定執(zhí)行用戶請求的順序
邏輯控制器允許在線程中定義處理請求的順序。它允許控制“何時”將用戶請求發(fā)送到Web服務(wù)器。例如,可以使用隨機控制器隨機向服務(wù)器發(fā)送HTTP請求
- 邏輯控制器可以組織取樣器做出復(fù)雜的測試用的HTTP請求,以此滿足測試需要。
例如:我們在收郵件時,只需要登錄一次郵箱既可查看多封郵件。如果這個場景我們在Jmeter中實現(xiàn),我們需要控制登錄的次數(shù),如何實現(xiàn)呢?Jmeter邏輯控制器中的僅一次控制器就可以完成。當(dāng)然了,控制器不只是這一個,還有很多其他的控制器來完成我們的各種需求。
- 控制器的訪問路徑:【測試計劃】-【線程組】-【邏輯控制器】
- 循環(huán)控制器:循環(huán)控制器使用戶請求運行指定的次數(shù)或永久運行循環(huán)控制器示例:
除了為“線程組”指定的循環(huán)值之外,循環(huán)控制器使取樣器運行一定次數(shù)。例如,如果你
將一個HTTP請求添加到循環(huán)控制器,循環(huán)計數(shù)為50
將“線程組”循環(huán)計數(shù)配置為2
然后,JMeter將發(fā)送總共50 * 2 = 100個HTTP請求。
- 配置線程組
- 添加線程組:向網(wǎng)絡(luò)服務(wù)器baidu.com發(fā)出一個用戶請求并運行2次。
- 配置循環(huán)控制器
- 將值50添加到循環(huán)計數(shù)字段,如下圖所示。它將向web服務(wù)器baidu.com發(fā)出一個用戶請求,運行50 次,
除了循環(huán)值= 2,你為上面的線程組指定。所以JMeter將發(fā)送總共2 * 50 = 100個HTTP請求。
- JMeter將一個用戶請求(發(fā)送100次)模擬到Web服務(wù)器http://www.baidu.com/。在100次發(fā)送用戶
- 請求后停止測試。
又如:線程組中設(shè)置循環(huán)次數(shù)3,循環(huán)控制器中設(shè)置循環(huán)測試2,
即:線程組的循環(huán)與循環(huán)控制器為父子關(guān)系,且循環(huán)控制器只對子請求有效
注:錄制腳本的循環(huán)按循環(huán)控制器中的調(diào)協(xié)循環(huán)
- 僅一次控制器:
作為循環(huán)控制器的子節(jié)點,僅一次控制器在每循環(huán)的第一次迭代時均會被執(zhí)行
- 隨機控制器:隨機控制器使所有用戶請求在每個循環(huán)周期中以隨機順序運行。例如,您按以下順序向網(wǎng)站http://www.baidu.com提出了3個用戶請求:
HTTP請求、FTP請求、JDBC請求
這3個請求應(yīng)該運行5次; JMeter將向baidu服務(wù)器發(fā)送總共5個用戶請求。
按順序,按以下順序依次發(fā)送請求:HTTP請求 – > FTP請求 – > JDBC請求,對于每個循環(huán)按隨機順序,請求隨機發(fā)送,F(xiàn)TP請求 – > HTTP請求 – > JDBC請求 或 JDBC請求 – > FTP請求 – > HTTP請求等
4、配置元件(Config element)
- 配置元件,設(shè)置默認(rèn)值和變量供以后取樣器使用。同其名字一樣,只是配置一些默認(rèn)的屬性和信息,供取樣器獲取所需要的各種配置信息,它不向服務(wù)器發(fā)送任何的請求。
- 配置元件僅對其所在的測試樹分支有效。
- 例如,HTTP請求默認(rèn)值設(shè)置了服務(wù)器的名稱,那么它所在的測試分支內(nèi)的HTTP請求的服務(wù)器名稱都是這個服務(wù)器,HTTP請求僅設(shè)置路徑就可以訪問網(wǎng)頁了。
- 性能測試中為了模擬大量用戶操作我們往往需要做參數(shù)化,Jmeter的參數(shù)化可以通過配置元件來完成,
比如CVS Data Set Config,它可以幫助我們從文件中讀取測試數(shù)據(jù)。另外Jmeter也提供了眾多的函數(shù)來幫我們生成動態(tài)數(shù)據(jù)。
- 當(dāng)然配置元件的作用不僅于此,它還可以用來記錄服務(wù)器的返回數(shù)據(jù),比如HTTP Cache Manager(HTTP
緩存管理器),自動記錄服務(wù)器返回的Cache信息。簡單說就是它為取樣器提供預(yù)備數(shù)據(jù),然后由取樣器
發(fā)出請求。
- 常用的配置如下圖框中所示元件:
- CSV數(shù)據(jù)集配置:
- 假設(shè)要為使用不同憑據(jù)登錄的100個用戶測試網(wǎng)站。 您不需要記錄腳本100次! 您可以參數(shù)化腳本以輸
入不同的登錄憑據(jù)。 該登錄信息(例如,用戶名,密碼)可以存儲在文本文件中。 JMeter有一個元素,允許您從該文本文件中讀取不同的參數(shù)。 它是“CSV數(shù)據(jù)集配置”,用于從文件中讀取行,并將它們拆分為變量。
這是CSV數(shù)據(jù)的示例。 這是一個文本文件,其中包含用于登錄目標(biāo)網(wǎng)站的用戶和密碼
- HTTP Cookie管理器
- 例子:使用瀏覽器(Firefox,IE …等)瀏覽www.baidu.com,使用到的用戶名和密碼登錄,用戶名 和
密碼將作為cookie存儲在計算機中。下次訪問www.baidu.com時 ,無需再次登錄,因為在瀏覽器將使用您的Cookie作為用戶數(shù)據(jù)登錄。
- HTTP Cookie管理器也具有與Web瀏覽器相同的功能。 如果您有HTTP請求并且響應(yīng)包含cookie,則
Cookie管理器會自動存儲該cookie,并將其用于將來對該特定網(wǎng)站的所有請求。
- HTTP默認(rèn)請求
此元素允許您設(shè)置HTTP請求控制器使用的默認(rèn)值
- 例如:
- 您正在向服務(wù)器google.com發(fā)送100個HTTP請求,您必須為所有這100個請求手動輸入
server name = google.com
- 相反,您可以使用“服務(wù)器名稱或IP”字段= google.com添加單個HTTP請求默認(rèn)值無需鍵入100次!
PS:在執(zhí)行順序方面有個例外,配置元件”用戶定義的變量”無論它處于測試樹的哪個位置,總是在測試的初始階段執(zhí)行。所以個人建議把它放在線程組的開始部分。
5、定時器(Timer)(固定定時器:思考時間)
- 默認(rèn)情況下,JMeter發(fā)送請求而不會在每個請求之間暫停 。 在這種情況下,JMeter可能會在很短的時間內(nèi)發(fā)出太多請求,從而壓垮您的測試服務(wù)器。
- 在現(xiàn)實生活中,訪問者不會同時到達(dá)網(wǎng)站,而是以不同的時間間隔到達(dá)網(wǎng)站。 因此,Timer將有助于模擬實時行為,在線程發(fā)出的每個請求之間延遲 。從而解決服務(wù)器過載問題。
- 為了足夠真實地模擬用戶負(fù)載,我們有時會需要模擬這些請求在同一時刻發(fā)送,就好像把大家集合在一條起跑線上,然后一聲令下,同時起跑。那么我們此時需要一個集合的功能,Jmeter中可以通過定時器來完成這個需求。
- 當(dāng)然了,定時器不只有這個功能,定時器種類有很多。
- 訪問路徑:【測試計劃】-【線程組】-【定時器】
- 固定定時器:
- 固定定時器(Constant Timer):會在每個用戶請求延遲相同的時間。
- 例:,使用Constant Timer在用戶請求baidu.com之間設(shè)置固定延遲 :
JMeter向http://www.baidu.com創(chuàng)建一個用戶請求100次
每個用戶請求之間的延遲為5000毫秒
- 用View Results in Table看結(jié)果比較明了
- 同步定時器(Synchronizing Timer)
- 這個定時器和loadrunner當(dāng)中的集合點(rendezvous point)作用相似,其作用是:阻塞線程,直到指定的 線程數(shù)量到達(dá)后,再一起釋放,可以瞬間產(chǎn)生很大的壓力
- Number of Simulated Users to Group by:模擬用戶的數(shù)量,即指定同時釋放的線程數(shù)數(shù)量
- Timeout in milliseconds:超時時間,即超時多少毫秒后同時釋放指定的線程數(shù)
6、前置處理器(Per processors)
- 在測試腳本開發(fā)過程中,我們在請求發(fā)送前可能會做一些環(huán)境或者參數(shù)的準(zhǔn)備工作,那么我們可以在前置處理器中來完成這些工作。比如我們在對數(shù)據(jù)庫進行操作前需要先建立一個數(shù)據(jù)庫連接,那么前置處理器就可以完成這個功能。前置處理器訪問的路徑:【測試計劃】-【前置處理器】
7、取樣器(Samples)
- Sampler(取樣器)主要的執(zhí)行組件。線程組如何知道需要進行哪種類型的請求(HTTP,F(xiàn)TP等)呢?答案是取樣器。用戶請求可以是FTP請求,HTTP請求,JDBC請求……等取樣器用來模擬用戶操作,向服務(wù)器(被測系統(tǒng))發(fā)出http請求、webservice請求或者java請求等。我們可以把http請求元件看成是一個沒有界面的瀏覽器,它可以發(fā)送http請求,接收服務(wù)器響應(yīng)的數(shù)據(jù)(我們主要用HTTP請求)。每一個取樣器都可以被監(jiān)聽器監(jiān)聽,并生成測試結(jié)果。通常情況下,取樣器會按照其在測試樹中的順序去執(zhí)行,但是也會根據(jù)邏輯控制器來改變運行的次數(shù)和順序。
- 取樣器的訪問路徑:【測試計劃】-【線程組】-【Sampler】
- FTP request
- 假設(shè)您想要對FTP服務(wù)器進行性能測試。 您可以在JMeter中使用FTP請求采樣器來執(zhí)行此任務(wù)。 此控制器允許
您將FTP“下載文件”或“上載文件”請求發(fā)送到FTP服務(wù)器。
- 例如,如果要從測試的FTP服務(wù)器下載文件“Test.txt”,則需要在JMeter中配置一些參數(shù),如下圖所示
JMeter將FTP命令發(fā)送到FTP服務(wù)器ftp.example.com ,然后從該服務(wù)器下載文件Test.txt。
- HTTP request
- 此取樣器允許您將HTTP/HTTPS請求發(fā)送到Web服務(wù)器。
- JDBC請求:
- 此取樣器允許您執(zhí)行數(shù)據(jù)庫性能測試 。 它將JDBC請求(SQL查詢)發(fā)送到數(shù)據(jù)庫。
- 例如,數(shù)據(jù)庫服務(wù)器具有存儲在表名test_tbl中的字段test_result。 您想從數(shù)據(jù)庫服務(wù)器查詢此數(shù)據(jù);
您可以配置JMeter將SQL查詢發(fā)送到此服務(wù)器以檢索數(shù)據(jù)。
- SMTP 取樣器:
如果要測試郵件服務(wù)器,可以使用SMTP采樣器。 此采樣器用于使用SMTP協(xié)議發(fā)送電子郵件
8、后置處理器(post processors)
- 后置處理器一般放在取樣器之后,專門用來處理請求后服務(wù)器響應(yīng)的返回結(jié)果的元件。比如一個web應(yīng)用程序,我們登錄后會返回一個sessionID,這個sessinID在登錄之后的業(yè)務(wù)操作過程中會作為驗證條件,驗證用戶是否合法登錄了。我們利用取樣器模擬這個請求時就需要帶上這個屬性,那么如何獲取呢?首先我們要知道這個sessionID從哪來?它是由服務(wù)器返回的。接著我們要獲取它,用什么工具獲取呢?Jmeter幫我們提供了元件,比如正則表達(dá)式提取器,它支持正則表達(dá)式的方式提取數(shù)據(jù)。又比如,XPath Extractor:可以提取響應(yīng)數(shù)據(jù)中通過給定XPath 值獲得的數(shù)據(jù);正則表達(dá)式提取器:可以利用正則表達(dá)式方便的提取測試時所需的數(shù)據(jù),用以參數(shù)傳遞和斷言等。訪問路徑:【測試計劃】-【后置處理器】
9、斷言(Assertions)
- 斷言,用來判斷取樣器是否正常工作,判斷請求響應(yīng)是否正確,驗證結(jié)果是否正確。
用過LR的讀者應(yīng)該會知道檢查點這個功能,可以幫助我們來判斷請求是否成功返回且是否符合要求,在Jmeter中我們不叫檢查點,我們叫斷言,接觸過selenium的也會懂這個概念。就是用一個預(yù)設(shè)的結(jié)果(值、表達(dá)式、時間長短等條件)與實際結(jié)果匹配,匹配到則成功,反之失敗。
- 使用斷言的目的:在request的返回層面增加一層判斷機制;因為request成功了,并不代表結(jié)果一定正確使用斷言的方法:
- 在選擇的Sampler下添加對應(yīng)的斷言(因為不同類型的斷言檢查的內(nèi)容不同);配置好響應(yīng)的檢查內(nèi)容添加一個斷言結(jié)果的監(jiān)聽器(從監(jiān)聽器中添加),通過“斷言結(jié)果”可以看到是否通過斷言;對于一次請求,如果通過的話,斷言結(jié)果中只會打印一行請求的名稱; 如果失敗,則除了請求的名稱外,還會有一行失敗的原因(不同類型的斷言,結(jié)果不同)。
- PS:一個Sampler可以添加多個斷言,根據(jù)你的檢查需求來添加相應(yīng)的斷言,當(dāng)Sampler下所有的斷言都通過了,那么才算request成功斷言訪問路徑:【測試計劃】-【斷言】
- “響應(yīng)斷言“允許您添加模式字符串以與服務(wù)器響應(yīng)的各個字段進行比較。
- 例如,您向網(wǎng)站http://www.baidu.com發(fā)送用戶請求并獲取服務(wù)器響應(yīng)。 您可以使用Response Assertion來驗證服務(wù)器響應(yīng)是否包含預(yù)期的模式字符串(例如“OK”)。
APPly to:適用范圍
Main sample and sub-samples:作用于父節(jié)點取樣器及對應(yīng)子節(jié)點取樣器
Main sample only:僅作用于父節(jié)點取樣器
Sub-samples only:僅作用于子節(jié)點取樣器
JMeter Variable:作用于jmeter變量(輸入框內(nèi)可輸入jmeter的變量名稱)
要測試的響應(yīng)字段:要檢查的項
響應(yīng)報文
Documeng(text):測試文件
URL樣本
響應(yīng)代碼
響應(yīng)信息
Response Headers:響應(yīng)頭部
Ignore status:忽略返回的響應(yīng)報文狀態(tài)碼
模式匹配規(guī)則:
包括:返回結(jié)果包括你指定的內(nèi)容
匹配:(好像跟Equals查不多,弄不明白有什么區(qū)別)
Equals:返回結(jié)果與你指定結(jié)果一致
Substring:返回結(jié)果是指定結(jié)果的字串
否:不進行匹配
要測試的模式:即填寫你指定的結(jié)果(可填寫多個),按鈕【添加】、【刪除】是進行指定內(nèi)容的管理
10、監(jiān)聽器(Listener)
- Jmeter的測試結(jié)果需要添加監(jiān)聽器來搜集,監(jiān)聽器主要用于收集整理測試結(jié)果,并將測試結(jié)果數(shù)據(jù)進行處理并展示出來??梢灾付ǜ袷缴蒟ML、CSV等形式的文件。查看結(jié)果樹,用表格查看結(jié)果,圖形結(jié)果…聚合報告等,都是我們經(jīng)常會用到的元件。
- Jmeter的監(jiān)聽器有兩個任務(wù)。
- 添加結(jié)果監(jiān)聽,并且可以保存測試結(jié)果到文件,這些結(jié)果數(shù)據(jù)可以供再次分享使用。
- 展示結(jié)果,Jmeter可以以表格及圖形的形式展現(xiàn)結(jié)果,方便測試人員分析測試結(jié)果。
- 【取樣器】、【斷言】、【監(jiān)聽器】組合在一起就可以幫我們完成發(fā)送請求、驗證結(jié)果及記錄結(jié)果三項工作
- 監(jiān)聽器的訪問路徑是:【測試計劃】-【監(jiān)聽器】
- “圖形結(jié)果”偵聽器(Graph Results)
“圖形結(jié)果”偵聽器在圖形上顯示服務(wù)器響應(yīng)時間
- 查看結(jié)果樹
“查看結(jié)果樹”以基本HTML格式顯示用戶請求的結(jié)果(View Results Tree)
通過察看結(jié)果樹,我們可以看到每個請求的結(jié)果,其中紅色的是出錯的請求,綠色的為通過。
Thread Name:線程組名稱
Sample Start: 啟動開始時間
Load time:加載時長
Latency:等待時長
Size in bytes:發(fā)送的數(shù)據(jù)總大小
Headers size in bytes:發(fā)送數(shù)據(jù)的其余部分大小
Sample Count:發(fā)送統(tǒng)計
Error Count:交互錯誤統(tǒng)計
Response code:返回碼
Response message:返回信息
Response headers:返回的頭部信息
這里綠色的就說明請求是通過的,返回值是200,如果出現(xiàn)紅色的 就說明請求失敗,這時候可以通過右邊的取樣器結(jié)果和響應(yīng)數(shù)據(jù)來查看結(jié)果。
- 表格偵聽器
用表格可看結(jié)果(View Results in Table)
四、組件執(zhí)行順序
在同一作用域名范圍內(nèi)(不考慮邏輯控制器),測試計劃中的元件按照如下順序執(zhí)行。(1)配置元件(config elements )(2)前置處理程序(Per-processors)(3)定時器(timers )(4)取樣器(Sampler)(5)后置處理程序(Post-processors) (除非Sampler 得到的返回結(jié)果為空)(6)斷言(Assertions)(除非Sampler 得到的返回結(jié)果為空)(7)監(jiān)聽器(Listeners)(除非Sampler 得到的返回結(jié)果為空)
問題
1、為什么要使用jmeter?他可以幫我們解決那些事情?
jmeter主要是做接口測試和性能測試,它支持的協(xié)議也不少,用來測試http,數(shù)據(jù)庫并發(fā)都是很方便快捷的工具,相對于lr來說更靈活與實用,等等
2、我們在什么時候會使用jmeter?
· 在一個項目中我們可能前段還沒有開發(fā)完畢我們想看一下服務(wù)器的相應(yīng)數(shù)據(jù)。
· 比如我們校驗數(shù)據(jù)庫有沒有做校驗,我們可以繞過前端
· 我們想看一下這個接口或者多個接口的并發(fā)量是多少,性能怎么樣
3、.誰在使用?為什么是他在使用?
一般使用者為開發(fā)人員或者測試人員。
開源免費,基于Java編寫,可集成到其他系統(tǒng)可拓展各個功能插件
支持接口測試,壓力測試等多種功能,支持錄制回放,入門簡單
相較于自己編寫框架活其他開源工具,有較為完善的UI界面,便于接口調(diào)試
多平臺支持,可在Linux,Windows,Mac上運行
4、使用jmeter需要了解什么?接口與接口之間的聯(lián)系怎么處理?
· 我們必須了解接口的工作原理
· 需要掌握http中的get和post請求原理
· 需要掌握請求頭,響應(yīng)頭,請求體個個字段代表什么意思,并且字段的返回值的各代的含義是什么?
· 響應(yīng)的狀態(tài)碼各代表什么含義·
· json是什么?
· 接口測試用例的設(shè)計方法,以及測試時點
接口之間的聯(lián)系:
接口與接口之間存在聯(lián)系,比如上個接口的返回值是下一個接口的入?yún)?,那我們就要在上個接口返回值賦值變量,供下一個接口調(diào)用。
5、在使用jmeter中我想要的預(yù)期結(jié)果和實際結(jié)果是怎樣對比的?
· 我們做所有的測試無非就是預(yù)期結(jié)果和實際結(jié)果作對比,如果預(yù)期結(jié)果和實際結(jié)果作對比,那么這個接口就是可用的,不相等那么這個接口就是有問題的。
·在jmeter中我們的用斷言做實際結(jié)果和預(yù)期結(jié)果的對比,它提供了許多斷言方法,其中最常用的就是響應(yīng)斷言,在后面我會專門的寫一下響應(yīng)斷言以及一些常用斷言的用法。
· 我們還需要知道在jmeter中我們斷言的內(nèi)容是啥?這點是很重要的
7、使用jmeter的是的我們的有哪些方面的提升,jmeter的主流方向是什么?
· 對整個前端與后端的一個相互傳輸數(shù)據(jù)原理有了進一步了解
· 可以提高測試效率,可以提早的參與進來,較早的發(fā)現(xiàn)問題,減少開發(fā)成本,縮短整個產(chǎn)品的上線周期,可以給測試流出充裕的時間,保證產(chǎn)品質(zhì)量。
·掌握了接口測試的測試點,已及用例的設(shè)計方法。
jmeter測試的主流方向:
· 用于性能測試,壓力測試
· 接口測試