使用Jmeter進行介面測試

Jmeter簡介

jmeter是啥?

Apache JMeter 是Apache組織的開放原始碼專案,是一個純Java桌面應用,用於壓力測試和效能測量。它最初被設計用於Web應用測試但後來擴充套件到其它測試領域。

jmeter有啥用?

Apache JMeter可以用於對靜態的和動態的資源(檔案,Servlet,Perl指令碼,Java物件,資料庫和查詢,FTP伺服器或是其它資源)的效能進行測試。JMeter可以用於分析不同壓力條件下的總體效能情況。也可以使用JMeter提供的圖形化介面,分析效能指標或者在高負載情況下測試你的伺服器,指令碼,物件。

jmeter和LR有s‘m區別?

使用Jmeter進行介面測試

Jmeter安裝配置

安裝配置號JDK

連結: https://pan。baidu。com/s/15v8zjGlERZvnwDgYHLd9Jg 提取碼: 9x59

Jmeter下載地址(以win10為例)

連結: https://pan。baidu。com/s/1gl7Y26Rjhj6N6NF214U96A 提取碼: rh4y

3。下載後直接點選安裝

4。Jmeter啟動:解壓,bin目錄下執行ApacheJMeter。jar進行啟動。

Jmeter檔案目錄介紹

bin:可執行檔案目錄

bin目錄檔案:

ljmeter。bat:windows的啟動檔案

l jmeter。log:日誌檔案

l jmeter。sh:linux的啟動檔案

l jmeter。properties:系統配置檔案

l jmeter-server。bat:windows分散式測試要用到的伺服器配置

l jmeter-serve:linux分散式測試要用到的伺服器配置

docs:介面文件目錄

extras:擴充套件外掛目錄

lib:所用到的外掛目錄,裡面全是jar包,jmeter會自動在JMETER_HOME/lib 和 ext 目錄下尋找需要的類

licenses:jmeter證書目錄

printable_docs:使用者使用手冊

jmeter工具組成部分:

資源生成器:用於生成測試過程中伺服器、負載機的資原始碼。(LR中的VuGen)

使用者執行器:通常是一個指令碼執行引擎,根據指令碼要求模擬指定的使用者行為。(LR中的Controller)

報表生成器:根據測試中實時地的資料生成報表,提供視覺化的資料顯示方式。(LR中的Analysis)

負載發生器:用於產生負載,通常以多執行緒或是多程序的方式模擬使用者行為。(LR中LoadGenerators)

Test Plan (測試計劃):用來描述一個性能測試,包含與本次效能測試所有相關的功能。也就說本的效能測試的所有內容是於基於一個計劃的。(相當於lr的一個測試場景)

Threads (Users)執行緒 使用者

A。 setup thread group

一種特殊型別的ThreadGroup的,可用於執行預測試操作。這些執行緒的行為完全像一個正常的執行緒組元件。不同的是,這些型別的執行緒執行測試前進行定期執行緒組的執行。類似LR的init( )

2) teardown thread group。

一種特殊型別的ThreadGroup的,可用於執行測試後動作。這些執行緒的行為完全像一個正常的執行緒組元件。不同的是,這些型別的執行緒執行測試結束後執行定期的執行緒組。類似於LR中的end( )

3)threadgroup(執行緒組)。

這個就是我們通常新增執行的執行緒。可以看做一個虛擬使用者組,執行緒組中的每個執行緒都可以理解為一個虛擬使用者。執行緒組中包含的執行緒數量在測試執行過程中是不會發生改變的。類似LR的action()

測試片段(Test Fragment)

測試片段元素是控制器上的一個種特殊的執行緒組,它在測試樹上與執行緒組處於一個層級。它與執行緒組有所不同,因為它不被執行,除非它是一個模組控制器或者是被控制器所引用時才會被執行。

以下是執行緒組的8類可執行元件

1。配置元件(Config Element)

配置元件(config element)用於提供對靜態資料配置的支援。如CSV Data Set config 可以將本地資料檔案形成資料池(Data Pool)。

2。定時器(Timer)

定時器(Timer)用於操作之間設定等待時間,等待時間是效能測試中常用的控制客戶端QPS的手端。類似於LoadRunner裡面的“思考時間”。JMeter 定義了Bean Shell Timer、Constant Throughput Timer、固定定時器等不同型別的Timer。

3。前置處理器(Per Processors)

用於在實際的請求發出之前對即將發出的請求進行特殊處理。例如,HTTP URL重寫修復符則可以實現URL重寫,當URL中有sessionID 一類的session資訊時,可以透過該處理器填充發出請求的實際的sessionID 。

4。後置處理器(PostProcessors)

用於對Sampler 發出請求後得到的伺服器響應進行處理。一般用來提取響應中的特定資料(類似LoadRunner測試工具中的關聯概念)。

斷言(Assertions)

斷言用於檢查測試中得到的相應資料等是否符合預期,斷言一般用來設定檢查點,用以保證效能測試過程中的資料互動是否與預期一致。

監聽器(Listener)

是用來對測試結果資料進行處理和視覺化展示的一系列元件。圖行結果、檢視結果樹、聚合報告。都是我們經常用到的元件。注意:這個監聽器可不是用來監聽系統資源的元件。

JMeter有兩種型別的控制器:取樣器(sample)和邏輯控制器(Logic Controller),用這些原件來驅動處理一個測試。

取樣器(sample)

取樣器(Sample)是效能測試中向伺服器傳送請求,記錄響應資訊,記錄響應時間的最小單元,JMeter原生支援多種不同的sampler ,如 HTTPRequest Sampler 、 FTP Request Sample 、TCP Request Sample 、JDBCRequest Sampler 等,每一種不同型別的 sampler 可以根據設定的引數向伺服器發出不同型別的請求。

邏輯控制器

邏輯控制器,包括兩類無件,一類是用於控制test plan 中sampler 節點發送請求的邏輯順序的控制器,常用的有 如果(If)控制器 、switch Controller 、Runtime Controller、迴圈控制器等。另一類是用來組織可控制 sampler 來節點的,如 事務控制器、吞吐量控制器。

Jmeter指令碼錄製

1。Jmeter指令碼錄製

Http請求+檢視結果樹

代理伺服器操作步驟

建立一個執行緒組(右鍵點選“測試計劃”->“新增”->“執行緒組”)

建立一個http代理伺服器(右鍵點選“工作臺”->“新增”->“非測試元件”->“http代理伺服器”)

Tip HTTP伺服器代理設定——分組詳解

l 不對樣本分組:所有請求全部羅列

l 在組間新增分隔:加入一個虛擬的以分割線命名的動作。

l 每個組放入一個新的控制器:執行時按控制器給輸出結果

l 只儲存每個組的第一個樣本:儲存對於一次url請求。

設定完後要啟動代理伺服器,錄製完成後記得關閉,

IE->“internet屬性”->“連線”->“區域網設定”

在瀏覽器裡對指定的頁面進行訪問。錄製完成後,把瀏覽器的代理伺服器勾去掉。

2。Badboy 指令碼錄製

Badboy是一個強大的工具,旨在幫助測試和開發複雜的動態應用。Badboy包括一個簡單而全面的捕獲/回放介面,強大的負載測試的支援,詳細的報告圖表等等,從而使Web測試和開發變得更加容易。

關於錄製時的指令碼錯誤提示訪問者所使用的瀏覽器不能完全支援頁面裡的指令碼,形成“指令碼錯誤”。遇到“指令碼錯誤”時一般會彈出一個非常難看的指令碼執行錯誤警告視窗,而事實上,指令碼錯誤並不會影響網站瀏覽,因此這一警告可謂多此一舉。要關閉警告則可以在瀏覽器的工具選單選擇Internet選項,然後單擊高階屬性頁。進入到瀏覽標籤,並選中“禁止指令碼除錯”複選框,以後你就不會再收到這些警告了。

指令碼錄製完成後,匯出為 Export to Jmeter (見指令碼haosou。bx)

badboy檢查點與引數化

檢查點設定:選擇要檢查的文字,然後在Tools>step1裡新增斷言,再回放

引數化:在請求搜尋關鍵字的部分進行引數化,找到請求的欄位,然後對其值進行設定。引數化替換${引數名稱} 最後在step 1屬性裡進行設定回放次數和引數化的變數名稱。最後檢查點也要進行引數化,以及整個step 屬性的設定

Jmeter元件作用域和執行順序

1。元件作用域

8類可被執行的元件(測試計劃與執行緒組不屬於可執行元件),這些元件中,取樣器(sampler)是典型的不與其它元件發生互動作用的元件,邏輯控制器只對其子節點的取樣器有效,而其它元件(配置元件 、定時器、斷言、監聽器、)需要與取樣器(sampler)等元件互動。

在jmeter中,元件的作用域是靠測試計劃的的樹型結構中元件的父子關係來確定的,作用域的原則是:

• 取樣器(sampler)元件不和其它元件相互作用,因此不存在作用域的問題。

• 邏輯控制器(Logic Controller)元件只對其子節點中的取樣器和邏輯控制器作用。

• 除取樣器和邏輯控制器元件外,其他6類元件,如果是某個取樣器的子節點,則該元件對其父子節點起作用。如果其父節點不是取樣器 ,則其作用域是該元件父節點下的其他所有後代節點(包括子節點,子節點的子節點等)。

最後一個檢視結果樹的作用域為迴圈控制器下面所有取樣器的結果

2。元件執行順序

(1)配置元件(config elements )

(2)前置處理程式(Per-processors)

(3)定時器(timers )

(4)取樣器(Sampler)

(5)後置處理程式(Post-processors)

(6)斷言(Assertions)

(7)監聽器(Listeners)

關於執行順序,有兩點需要注意:

前置處理器、後置處理器和斷言等元件功能對取樣器作用,因此,如果在它們的作用域內沒有任何取樣器,則不會被執行。

如果在同一作用域範圍內有多個同一型別的元件,則這些元件按照它們在測試計劃中的上下順序依次執行。

下期講jmeter實戰,覺得有用的同學麻煩點一下在看收藏轉發,感謝!!

使用Jmeter進行介面測試