jmeter目錄和主要組件介紹以及jmeter接口測試實例

測試店小二 發佈 2022-05-23T19:45:28.272935+00:00

Throughput:吞吐量——默認情況下表示每秒完成的請求數,當使用了 Transaction Controller 時,也可以表示類似 LoadRunner 的 Transaction per Second 數。

一、jmeter目錄介紹

(1)bin 目錄:可執行文件目錄

主要理解其下面的以下文件以及命令。

jmeter.bat:Windows 的啟動命令。

jmeter.log:日誌文件。

jmeter.sh:Linux 系統下的啟動文件。

jmeter.properties:系統配置文件,如配置編碼格式。

jmeter-server.bat:Windows 分布測試要用到的伺服器配置。

jmeter-server:Linux 分布式測試要用到的伺服器配置。

(2)docs:接口文檔目錄

對 JMeter 集成的接口進行說明。

(3)extras:擴展插件目錄

例如:進行持續集成時,會將用到的 Ant、Maven 的插件放在這個目錄下面。

(4)lib:JMeter 運行所依賴的插件目錄

該目錄下面全部都是 jar 包,JMeter 會自動在 JMETER_HOME/lib 和 ext 目錄下尋找需要的類。

這裡補充一下,如果在 Jmeter 中運行腳本時報java.lang.NOClassDefFoundError 的錯誤,都是因為缺少依賴的 jar 造成的。

(5)licenses:Jmeter 證書目錄

證書目錄

(6)printable_docs:用戶操作手冊目錄

用戶使用手冊

(7)backups:腳本備份目錄

這個目錄是在 3.3 版本後才加入的新功能,防止我們誤刪腳本,所有的腳本都會自動備份在裡面。

私信555 可以獲取全套Jmeter視頻教程和實戰及面試題Python自動化測試全套視頻資料免費領取

二、jmeter主要組件介紹

1.測試計劃是使用 JMeter 進行測試的起點,它是其它 JMeter 測試元件的容器。

測試計劃就是一個完整的場景

「獨立運行每個線程組」 :勾選以後所有的線程組都是順序執行的了。一般不勾選,讓所有 的線程組並發啟動。

「函數測試模式」 :勾選後會有詳細的請求記錄,消耗資源,影響客戶端性能。一般不勾選。

用戶定義的變量:全局變量,測試計劃上可以添加用戶定義的變量。一般添加一些系統常用的配置。如果測試過程中想切換環境,切換配置,一般不建議在測試計劃上添加變量

2.線程組:代表一定數量的並發用戶,它可以用來模擬並發用戶發送請求。實際的請求內容在Sampler中定義,它被線程組包含。可以在「測試計劃->添加->線程組」來建立它,然後在線程組面板里有幾個輸入欄:線程數、Ramp-Up Period(in seconds)、循環次數,其中Ramp-Up Period(in seconds)表示在這時間內創建完所有的線程。如有8個線程,Ramp-Up = 200秒,那麼線程的啟動時間間隔為200/8=25秒,這樣的好處是:一開始不會對伺服器有太大的負載。線程組是為模擬並發負載而設計。

(1)、thread group(線程組)

這個就是我們通常添加運行的線程。通俗的講一個線程組,可以看做一個虛擬用戶組,線程組中的每個線程都可以理解為一個虛擬用戶。

(2)、setup thread group

一種特殊類型的ThreadGroup的,可用於執行預測試操作。這些線程的行為完全像一個正常的線程組元件。不同的是,這些類型的線程執行測試前進行定期線程組的執行;類似LoadRunner的init,測試開始時進行初始化的工作。

(3)、teardown thread group

一種特殊類型的ThreadGroup的,可用於執行測試後動作。這些線程的行為完全像一個正常的線程組元件。不同的是,這些類型的線程執行測試結束後執行定期的線程組;類似LoadRunnner的end,測試結束時進行回收工作。

3、取樣器(Sampler):模擬各種請求。所有實際的測試任務都由取樣器承擔,存在很多種請求。如:HTTP 、ftp請求等等。

關於http請求的的屬性參數說明:

1)名稱:用於標識一個sample。建議使用一個有意義的名稱

2)注釋:對於測試沒任何影響,僅用來記錄用戶可讀的注釋信息

3)伺服器名稱或IP:http請求發送的目標伺服器名稱或者IP位址,比如http://www.baidu.com

4)埠號:目標伺服器的埠號,默認值為80,可不填

5)協議:向目標伺服器發送http請求時的協議,http/https,大小寫不敏感,默認http

6)方法:發送http請求的方法(連結:http://www.cnblogs.com/imyalost/p/5630940.html)

7)Content encoding:內容的編碼方式(Content-Type=application/json;charset=utf-8)

8)路徑:目標的URL路徑(不包括伺服器地址和埠)

9)自動重定向:如果選中該項,發出的http請求得到響應是301/302,jmeter會重定向到新的界面

10)Use keep Alive:jmeter 和目標伺服器之間使用 Keep-Alive方式進行HTTP通信(默認選中)

11)Use multipart/from-data for HTTP POST :當發送HTTP POST 請求時,使用

12)Parameters、Body Data以及Files Upload的區別:

parameter是指函數定義中參數,而argument指的是函數調用時的實際參數

簡略描述為:parameter=形參(formal parameter), argument=實參(actual parameter)

3.在不很嚴格的情況下,現在二者可以混用,一般用argument,而parameter則比較少用

While defining method, variables passed in the method are called parameters.

當定義方法時,傳遞到方法中的變量稱為參數.

While using those methods, values passed to those variables are called arguments.

當調用方法時,傳給變量的值稱為引數.(有時argument被翻譯為「引數「)

4、Body Data指的是實體數據,就是請求報文裡面主體實體的內容,一般我們向伺服器發送請求,攜帶的實體主體參數,可以寫入這裡

5、Files Upload指的是:從HTML文件獲取所有有內含的資源:被選中時,發出HTTP請求並獲得響應的HTML文件內容後還對該HTML

進行Parse 並獲取HTML中包含的所有資源(圖片、flash等):(默認不選中)

如果用戶只希望獲取特定資源,可以在下方的Embedded URLs must match 文本框中填入需要下載的特定資源表達式,只有能匹配指定正則表達式的URL指向資源會被下載

4、監聽器:負責收集測試結果,同時也被告知了結果顯示的方式。功能是對取樣器的請求結果顯示、統計一些數據(吞吐量、KB/S……)等。

5、邏輯控制器:允許自定義JMeter發送請求的行為邏輯,它與Sampler結合使用可以模擬複雜的請求序列。

6、循環控制器、事務控制器

6.2.事務控制器

作用: 事務控制器會生產一個額外的採樣器,用來統計該控制器子結點的所有時間。

在線程組下創建事務控制器

參數:

• Generate parent sample:(選中這個參數結果展示如下圖紅框,否則顯示為下圖藍框)

• Include duration of timer and pre-post processors in generated sample:選中這一項會統計定時器(timer)的時間,否則只統計採樣器(sample)的時間

創建sample 訪問首頁和註冊頁面

生成聚合報告

勾選

聚合報告中只有一項事務報告

7、斷言——檢查點

斷言(Assertions)可以用來判斷請求響應的結果是否如用戶所期望的。它可以用來隔離問題域,即在確保功能正確的前提下執行壓力測試。這個限制對於有效的測試是非常有用的。

8、前置處理器和後置處理器

Processors)和後置處理器(Post Processors)負責在生成請求之前和之後完成工作。前置處理器常常用來修改請求的設置,後置處理器則常常用來處理響應的數據。我們主要在動態關聯中用到後置處理器的正則表達式提取器。

Jmeter後端處理器之正則表達式

https://www.cnblogs.com/fengpingfan/p/4755411.html

9、定時器

定時器(Timer)負責定義請求之間的延遲間隔

三、Jmeter接口測試實例

1 添加線程組

線程組參數詳解:

  1. 線程數:虛擬用戶數。一個虛擬用戶占用一個進程或線程。設置多少虛擬用戶數在這裡也就是設置多少個線程數。
  2. Ramp-Up Period(in seconds)準備時長:設置的虛擬用戶數需要多長時間全部啟動。如果線程數為10,準備時長為2,那麼需要2秒鐘啟動10個線程,也就是每秒鐘啟動5個線程。
  3. 循環次數:每個線程發送請求的次數。如果線程數為10,循環次數為100,那麼每個線程發送100次請求。總請求數為10*100=1000 。如果勾選了「永遠」,那麼所有線程會一直發送請求,一到選擇停止運行腳本。
  4. Delay Thread creation until needed:直到需要時延遲線程的創建。
  5. 調度器:設置線程組啟動的開始時間和結束時間(配置調度器時,需要勾選循環次數為永遠)
    持續時間(秒):測試持續時間,會覆蓋結束時間啟動延遲(秒):測試延遲啟動時間,會覆蓋啟動時間啟動時間:測試啟動時間,啟動延遲會覆蓋它。當啟動時間已過,手動只需測試時當前時間也會覆蓋它。結束時間:測試結束時間,持續時間會覆蓋它。

現在先試一個簡單的例子,後面再進行詳細的配置。

2 添加HTTP請求

這裡我用了聚合數據的新聞API:

接口文檔如上,在JMeter中填寫就是這個樣子:

Http請求主要參數詳解:

Web伺服器

協議:向目標伺服器發送HTTP請求協議,可以是HTTP或HTTPS,默認為HTTP

伺服器名稱或IP :HTTP請求發送的目標伺服器名稱或IP

埠號:目標伺服器的埠號,默認值為80,非必填項

Http請求

方法:發送HTTP請求的方法,可用方法包括GET、POST、HEAD、PUT、OPTIONS、TRACE、DELETE等。

路徑:目標URL路徑(URL中去掉伺服器地址、埠及參數後剩餘部分)

Content encoding :編碼方式,默認為ISO-8859-1編碼,也可配置為utf-8

下面的幾個多選框

自動重定向:如果選中該項,發出的http請求得到響應是301/302,jmeter會重定向到新的界面

Use keep Alive:jmeter 和目標伺服器之間使用 Keep-Alive方式進行HTTP通信(默認選中)

Use multipart/from-data for HTTP POST :當發送HTTP POST 請求時,使用

Parameters

parameter是指函數定義中參數

Body Data

實體數據,就是請求報文裡面主體實體的內容,一般我們向伺服器發送請求,攜帶的實體主體參數,可以寫入這裡

Files Upload

指的是:從HTML文件獲取所有有內含的資源:被選中時,發出HTTP請求並獲得響應的HTML文件內容後還對該HTML 進行Parse 並獲取HTML中包含的所有資源(圖片、flash等):(默認不選中)

如果用戶只希望獲取特定資源,可以在下方的Embedded URLs must match 文本框中填入需要下載的特定資源表達式,只有能匹配指定正則表達式的URL指向資源會被下載

3 添加查看結果樹

4 參數化

在這裡我們添加一個新的變量:

然後在之前的HTTP請求中調用,調用格式為${keji_type}:

啟動就會在結果樹中查看到相應的結果。

5 添加斷言

因為我們剛剛查找的是科技類的文章,所以我們來斷言,響應結果中是否有「科技」欄位。

6 添加斷言結果

7 添加聚合報告

存放性能測試報告,在每次測試之前需要點擊小掃把按鈕清除之前的調試結果。

聚合報告參數詳解:

  1. Label:每個 JMeter 的 element(例如 HTTP Request)都有一個 Name 屬性,這裡顯示的就是 Name 屬性的值
  2. #Samples:請求數——表示這次測試中一共發出了多少個請求,如果模擬10個用戶,每個用戶疊代10次,那麼這裡顯示100
  3. Average:平均響應時間——默認情況下是單個 Request 的平均響應時間,當使用了 Transaction Controller 時,以Transaction 為單位顯示平均響應時間
  4. Median:中位數,也就是 50% 用戶的響應時間
  5. 90% Line:90% 用戶的響應時間
  6. Min:最小響應時間
  7. Max:最大響應時間
  8. Error%:錯誤率——錯誤請求數/請求總數
  9. Throughput:吞吐量——默認情況下表示每秒完成的請求數(Request per Second),當使用了 Transaction Controller 時,也可以表示類似 LoadRunner 的 Transaction per Second 數

KB/Sec:每秒從伺服器端接收到的數據量,相當於LoadRunner中的Throughput/Sec

一般而言,性能測試中我們需要重點關注的數據有: #Samples 請求數,Average 平均響應時間,Min 最小響應時間,Max 最大響應時間,Error% 錯誤率及Throughput 吞吐量。

這樣,我們就完成了一個完整HTTP接口的JMeter性能測試腳本編寫。

私信555 可以獲取全套Jmeter視頻教程和實戰及面試題Python自動化測試全套視頻資料免費領取

關鍵字: