1. 程式人生 > >JMeter效能測試-安裝與入門

JMeter效能測試-安裝與入門

Apache JMeter官網下載最新版本的JMeter Source壓縮包,解壓到指定目錄下即可。之後進入bin目錄,點選ApacheJMeter.jar檔案即可開啟Apache JMeter的圖形介面。

如果是在Mac系統下,可能會出現下圖所示錯誤,因為在最新的macOS Sierra系統下,系統偏好設定中的“安全與隱私”預設已經去除了允許“任何來源”App的選項,如果不開啟會直接影響到無法執行一些第三方應用。

打不開不明身份開發者的應用

解決方案是開啟終端,複製下面的程式碼並貼上到終端。

$ sudo spctl --master-disable

上面的程式碼執行完成後,系統偏好設定中的“安全與隱私”預設已經選擇允許“任何來源”了。現在再次點選bin目錄下的ApacheJMeter.jar檔案,就可以開啟Apache JMeter的圖形介面,如下圖所示,我們還可以選擇自己喜歡的外觀風格。

Apache JMeter 4.0 圖形介面

在上圖所示的JMeter圖形介面中,介面左側的區域叫工作臺。現在工作臺上只有一個測試計劃,測試計劃是用來描述一個性能測試,包含與本次效能測試所有相關的功能,也就說本次效能測試的所有內容是於基於一個測試計劃的。

執行緒與使用者

通過右鍵單擊測試計劃彈出選單,可以新增執行緒與使用者,即Threads(Users)。雖然Threads(Users)下有三個新增執行緒組的選項,但建立之後,圖形介面是一樣的。

在JMeter中新增執行緒組

Threads(Users)下有setUp theread Group、terDown Thread Group、執行緒組三個選項。

  • setUp theread Group:用於執行預測試操作,也就是測試開始前定期執行的執行緒組
  • 執行緒組:我們通常新增的執行緒組,可以當成是一個虛擬使用者組,執行緒組中的每個執行緒都可以理解成一個虛擬使用者
  • terDown Thread Group:用於執行測試後操作,也就是測試結束後定期執行的執行緒組

下面我們再詳細看看執行緒組的具體設定。

JMeter中執行緒組的設定

按上面的圖片,我們從上到下介紹每一個選項的作用。

  • 名稱:給執行緒組設定一個名稱
  • 註釋:給執行緒組新增備註資訊
  • 在取樣器錯誤後要執行的動作:線上程執行過程中,出現錯誤失敗後要如何處理
    • 繼續:請求不會停止,繼續執行
    • Start Next Thread Loop:忽略執行緒當前迴圈錯誤,執行下一個迴圈
    • 停止執行緒:停止當前錯誤執行緒,不影響其他執行緒執行
    • 停止測試:當前執行的執行緒全部執行完畢後結束
    • Stop Test Now:馬上停止全部執行緒
  • 執行緒數:虛擬使用者數,一個虛擬使用者佔用一個執行緒,需要多少使用者併發,就設定多少個執行緒數
  • Ramp-Up Period(in seconds):設定的執行緒數需要多長時間全部啟動,比如執行緒數為100,準備時長為10,那麼需要10秒啟動100個執行緒,也就是每秒啟動10個執行緒
  • 迴圈次數:每個執行緒傳送請求的次數,比如執行緒數為20,迴圈次數為100,那麼每個執行緒傳送100次請求,則總請求數為20*100=2000。如果勾選了永遠,那麼所有執行緒會一直髮送請求,一直到測試停止執行為止
  • Delay Thread creation until needed:勾選後,執行緒只會在合適的、需要用到的時候建立
  • 排程器:勾選後,可以設定本次測試的持續時間和啟動延遲時間

想要實現測試,除了設定執行緒組,還需要設定控制器,在JMeter中有兩種型別的控制器:取樣器和邏輯控制器,使用這些控制器可以驅動處理一個測試。

取樣器

通過右鍵單擊執行緒組彈出選單,可以新增取樣器,即Sampler。取樣器是效能測試中向伺服器傳送請求,記錄響應資訊,記錄響應時間的最小單元。JMeter支援多種不同的取樣器,如HTTP請求、FTP請求、TCP取樣器、JDBC Request、Java請求等,每一種不同型別的取樣器可以根據設定的引數向伺服器發出不同型別的請求。

在JMeter中新增取樣器

在那麼多取樣器中,我們就以較為常見的HTTP請求為例。

JMeter中HTTP請求的設定

還是按上面的圖片,從上到下介紹每一個選項的作用。

  • 名稱:標識當前取樣器,使用一個有意義的名稱
  • 註釋:給當前取樣器新增備註資訊
  • 協議:向目標伺服器傳送HTTP請求時的協議,填寫http或https,預設為http
  • 伺服器名稱或IP:目標伺服器的域名或IP地址
  • 埠號:目標伺服器的埠號,預設為80
  • 方法:傳送HTTP請求的方法,可選擇GET、POST、HEAD等方法
  • 路徑:目標URL路徑,不包括伺服器地址和埠
  • Content encoding:內容的編碼方式,預設為iso8859
  • 自動重定向:勾選後,當傳送HTTP請求後得到的響應是302/301時,自動重定向到新的頁面
  • 跟隨重定向:勾選後,與自動重定向不同的是,會記錄重定向過程中的所有請求響應,在檢視結果樹時可以看到伺服器返回的內容,並對響應的內容做關聯
  • Use KeepAlive:勾選後,和目標伺服器之間使用Keep-Alive方式進行HTTP通訊
  • Browser-compatible headers:勾選後,當使用multipart/form-data時,會只發送Content-Disposition標頭
  • 同請求一起傳送引數:在請求中傳送URL引數,可以將URL中所有引數設定在本表中,表中的每一行是一個引數值對

以上就是HTTP請求取樣器的大部分內容。

邏輯控制器

邏輯控制器可以控制取樣器的執行順序,因此,邏輯控制器需要與取樣器配合使用,否則邏輯控制器就沒有什麼意義。放在邏輯控制器下面的所有的取樣器都會當做一個整體,執行時也會一起被執行。

在JMeter中新增邏輯控制器

我們以登入場景下經常會使用到的僅一次控制器為例。

JMeter中僅一次控制器的設定

如上圖,在測試計劃執行期間,該控制器下的取樣器對每個執行緒只執行一次,登入場景經常會使用到這個控制器。

配置元件

JMeter中的配置元件可以用來初始化預設值和變數,以便後續取樣器使用,將在其作用域的初始化階段處理。

在JMeter中新增配置元件

我們以計數器為例,計數器允許使用者建立一個計數器,可以線上程組中任何地方被引用。

JMeter中計數器的設定

如上圖所示,計數器介面有以下設定項。

  • Starting value:計數器的起始值,第一次迭代時會把該值賦給計數器
  • 遞增:每次迭代後,給計數器增加的值
  • Maximum value:計數器的最大值,如果超過最大值,重新設定為起始值,如果持續測試,建議不要設定最大值
  • Number format:可選格式,比如000,格式化為001、002
  • 引用名稱:用於控制在其它元素中引用該值,形式為$(reference_name}
  • 與每使用者獨立的跟蹤計數器:不勾選時,即全域性的的計數器,比如使用者#1獲取值為1,使用者#2獲取值還是為1。勾選後,即獨立的計數器,每個使用者有自己的值,比如使用者#1獲取值為1,#2獲取值為2
  • Reset counter on each Thread Group Iteration:勾選與每使用者獨立的跟蹤計數器後,才可以選擇。勾選後,則每次執行緒組迭代,都會重置計數器的值,當執行緒組是在一個迴圈控制器內時比較有用

以上就是計數器配置元件的大部分內容。

定時器

預設情況下,Jmeter的執行緒在傳送請求時沒有間歇,我們可以使用定時器來設定延遲與同步,以便設定請求之間應該隔多長時間。

在JMeter中新增定時器

同樣的,我們以Constant Throughput Timer這個固定吞吐量定時器為例子。Constant Throughput Timer可以讓JMeter以指定數字的吞吐量執行,即指定TPS,只是這裡要求指定每分鐘的執行數,而不是每秒。

JMeter中Constant Throughput Timer的設定

如上圖所示,下面我們認識一下Constant Throughput Timer的設定選項。

  • 名稱:定時器的描述性名稱
  • 註釋:定時器的註釋資訊
  • Target throughput(in samples per minute):每分鐘的吞吐量
  • Calculate Throughput based on:有以下選項可以選擇
    • This thread only:控制每個執行緒的吞吐量,總吞吐量=設定的吞吐量*執行緒的數量
    • All active threads:設定的吞吐量將分配在每個活躍執行緒上,每個活躍執行緒在上一次執行結束後等待合理的時間後再次執行,活躍執行緒是指同一時刻同時執行的執行緒
    • All avtive threads(shared):與All active threads基本相同,不同的是,每個活躍執行緒都會在所有活躍執行緒上一次執行結束後等待合理的時間後再次執行
    • All active threads in current thread group:設定的吞吐量將分配在當前執行緒組的每一個活躍執行緒上,當測試計劃中只有一個執行緒組時,該選項和All active threads選項的效果一樣
    • All active threads in current thread group(shared):與All active threads in current thread group基本一樣,不同的是,每個活躍執行緒都會在所有活躍執行緒的上一次執行結束後等待合理的時間後再次執行

以上就是Constant Throughput Timer定時器的大部分內容。

前置處理器

前置處理器用於在實際的請求發出之前對即將發出的請求進行特殊處理,即在取樣器執行之前用來修改取樣器的。

在JMeter中新增前置處理器

以使用者引數這個前置處理器為例,使用者引數列表中的引數取值可以在測試計劃執行過程中發生變化。

JMeter中使用者引數的設定

如上圖所示,引數username和password分別有兩組不同的取值,通過介面右下方的四個按鈕,可以向列表中增加引數、增加引數值、刪除引數和刪除引數值。勾選每次迭代更新一次後,則引數的值在每個迭代中保持不變,在新的迭代開始時取下一個值,如果不勾選,則引數值在每個在其作用域內的取樣器發出請求時取下一個可用值。

後置處理器

後置處理器用於對取樣器發出請求後得到的伺服器響應進行處理。

在JMeter中新增後置處理器

我們以正則表示式提取器為例,正則表示式提取器在請求完成後,會從響應資料中擷取一部分字串儲存到變數中,以便下一個請求使用。

JMeter中正則表示式提取器的設定

如上圖所示,下面是各個引數值的含義。

  • Apply to:應用的範圍
    • Main sample and sub-samples:作用於父節點的取樣器及對應子節點的取樣器
    • Main sample only:僅作用於父節點的取樣器
    • Sub-samples only:僅作用於子節點的取樣器
    • JMeter Variable:作用於jmeter變數,輸入框內可輸入jmeter的變數名稱
  • 要檢查的響應欄位:樣本資料來源
    • 主體:響應報文的主體
    • Body(unescaped):響應的主體內容,但是替換了所有的html轉義符
    • Body as a Document:從不同型別的檔案中提取文字,會影響效能
    • 資訊頭:響應報文的資訊頭
    • Request Headers:請求報文的資訊頭
    • URL:統一資源定位符,即網路上用來描述資訊資源的字串
    • 響應程式碼:響應狀態碼,比如200、404等
    • 響應資訊:就是響應資訊呀
  • 引用名稱:在HTTP等請求中,引用此資料,需要用到的名稱
  • 正則表示式:用於將需要的資料提取出來的正則表示式
  • 模板:表示使用提取到的第幾個值,1表示取所有值,0表示隨機取值,1表示取第1個,以此類推n表示取第n個
  • 匹配數字(0代表隨機):0代表隨機取值,1代表全部取值
  • 預設值:如果正則表示式沒有搜找到值,則使用此預設值

以上就是正則表示式提取器這個後置處理器的大部分內容。

斷言

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

在JMeter中新增斷言

我們以Compare Assertion這個比較斷言為例,Compare Assertion是一種比較特殊的斷言,針對斷言進行字串替換時使用。

JMeter中Compare Assertion的設定

如上圖所示,我們看一下每一個設定的內容。

  • Compare Content:可以選擇比較的內容型別,True、False或自定義編輯
  • Compare Time:比較時間,可以設定比較的時間,單位為秒,預設為-1
  • Regex String:要替換的字串,可從斷言結果中選擇
  • Substitutions:替換的字串,即替換結果

以上就是Compare Assertion這個斷言的大部分內容。

監聽器

監聽器可不是用來監聽系統資源的,它是用來對測試結果資料進行處理和視覺化展示的,圖形結果、察看結果樹、聚合報告等都是我們經常用到的。

在JMeter中新增監聽器

我們以聚合報告為例,聚合報告會統計響應資訊並提供請求數、平均值、最大值、最小值、錯誤率、大約吞吐量和吞吐量等資料。

JMeter中聚合報告的設定

對於聚合報告,我們主要看一下它統計了那些資料。

  • Label:每個部分的Name值,例如HTTP請求的Name
  • Samples:發出請求數量
  • Average:平均響應時間,預設是單個請求的平均響應時間
  • Median:中位數,也就是50%使用者的響應時間
  • 90%Line:90%使用者的響應時間
  • 95%Line:95%使用者的響應時間
  • 99%Line:99%使用者的響應時間
  • Min:最小響應時間
  • Max:最大響應時間
  • Error%:本次測試中出現錯誤的請求的數量/請求的總數
  • Throughput:吞吐量,預設情況下表示每秒完成的請求數
  • KB/sec:每秒從伺服器端接收到的資料量

到此為止,我們已經簡單瞭解Jmeter的基本組成元件了,我們以後的效能測試工作也就是使用這些元件來完成的,如果我們能靈活的使用Jmeter的這些元件,Jmeter就能完成各種各樣的測試任務。

相關推薦

JMeter效能測試-安裝入門

到Apache JMeter官網下載最新版本的JMeter Source壓縮包,解壓到指定目錄下即可。之後進入bin目錄,點選ApacheJMeter.jar檔案即可開啟Apache JMeter的圖形介面。 如果是在Mac系統下,可能會出現下圖所示錯誤,因為

JMeter效能測試,完整入門篇(自己做測試了)

原文轉自:https://blog.csdn.net/lovesoo/article/details/78579547 Apache JMeter是一款純java編寫負載功能測試和效能測試開源工具軟體。相比Loadrunner而言,JMeter小巧輕便且免費,逐漸成為了主流的效能測試工具,是每個

JMeter效能測試,完整入門

1. Jmeter簡介 Apache JMeter是一款純java編寫負載功能測試和效能測試開源工具軟體。相比Loadrunner而言,JMeter小巧輕便且免費,逐漸成為了主流的效能測試工具,是每個測試人員都必須要掌握的工具之一。 本文為JMeter效能測

JMeter效能測試工具使用入門

[toc] JMeter是一款強大的效能測試工具,由Java編寫,小巧輕便,最關鍵的是開源免費,現在已經成了主流的效能測試工具。 下面介紹一下基本的功能使用,帶你們飛一下~ # 一、安裝 ## 下載安裝包 地址:https://jmeter.apache.org/download_jmeter.cgi

JMeter效能測試入門篇,超詳細

原文轉自:https://blog.csdn.net/lovesoo/article/details/78579547 1. Jmeter簡介 Apache JMeter是一款純java編寫負載功能測試和效能測試開源工具軟體。相比Loadrunner而言,JMeter小巧輕便且免費,逐漸成為了主流的效能測

JMeter效能測試入門-不同型別執行緒組的使用

在上一篇部落格中,我們簡單介紹了JMeter在介面自動化方面的應用,本文主要介紹JMeter效能測試。 在做效能測試之前,我們來了解一下JMeter多個不同執行緒組的應用。首先,JMeter提供了三個基本的執行緒組,分別為: Thread Group setUp Thr

【使用Postman測試web介面】Postman的安裝入門

最近在做Web API開發,開發完成後,需要對API進行自測,自測通過後才能checkin到程式碼庫。之前進行web介面測試的時候,使用過Chrome瀏覽器的一個外掛——Postman,覺得很好用,

redis安裝入門

修復 追加 多個 ray 關系 數據庫概念 enter 所有 rpo redis 了解Nosql數據庫 NoSql全稱是Not Only Sql(不僅僅是sql) 非關系型數據庫概念: Nosql是非關系型數據庫的集合 redis、mongoDB、HBase 關系型數據庫概

Robot Framework+Selenium2Library自動化測試安裝使用指南

RF一.安裝Python2.7(因RIDE不支持python 3.x)1.https://www.python.org/download/releases/2.7.8/2.安裝 (e.g. D:\Python27)環境變量:計算機-屬性-高級系統設置-環境變量PYTHON_HOME D:\Python27

「Python」python-nmap安裝入門

n-n python win namp sca details 分享 mes com 1、安裝namp https://nmap.org/download.html 下載鏈接 PS:windows安裝似乎麻煩一些,需要多下載npcap,官網有鏈接 2、python安裝 註意

轉:EMQTT測試--安裝測試 (windows)

pen bsp option util sage block exc sta clientid 官網 我下載的是windows版 安裝 參考 http://emqtt.com/docs/install.html 將下載的壓縮包解壓,我解壓到了D盤 命令行窗口,cd到程

Jmeter效能測試之進階BeanShell的使用

BeanShell 最常用的用法 寫好Java程式碼打成jar, 放到目錄\lib\ext下面 1 package com.test; 2 3 import java.io.File; 4 import java.io.UnsupportedEncodingException; 5

Jmeter效能測試之進階Java request的使用

在IDE中引用Jmeter的安裝目錄lib/ext中兩個檔案ApacheJMeter_core.jar和ApacheJMeter_java.jar Java request的類需要繼承AbstractJavaSamplerClient類,在繼承AbstractJavaSamplerClient類的時候,需要

jmeter效能測試標準

使用者數* 使用者活躍數/ 伺服器數量/  打壓時間/60秒=承受壓力的TPS 80%是活躍使用者數,這個也是行業統計,一般這麼認為。業務分散在幾臺伺服器上,用使用者數➗伺服器數量 得到單臺伺服器承受的使用者數,然後根據打壓時間 20分鐘,算出每秒的支援量。如果算出的數字

Jmeter效能測試工具學習(Jmeter中的函式和BeanShell)

函式 loadrunner中的函式   Jmeter中的函式 1)函式格式 ${__functionName(var1,var2,var3)} 2)如果函式沒有引數,那可以沒有括號 例如 ${__threadNum} 例子: BeanShell

Jmeter效能測試工具學習(8.關聯)

關聯 從動態的響應中的請求拿取字串 伺服器返回的動態變化且對業務有影響的是 需要做關聯的   Jmeter中的關聯 強大的後置處理器: Regular Expression Extractor   正則表示式    

Jmeter效能測試工具學習(7.引數化)

引數化 — 對於動態變化的值引入引數化會變得更加便捷   現實考慮 哪些地方需要引數化?   引數化需要變數 變數新增方式 1、在Test Plan中新增 變數 2、在UDV中新增變數 3、在foreach中新增隨機變數 &

Jmeter效能測試工具學習(6.取樣器詳細解析)

取樣器(Sampler)   主要工作的元件   每個取樣器都有自己的“個性”和特點   個性? 1、每種取樣器對應相應的協議     2、在取樣器背後都是網路協議的包裝 3、學好取樣器關鍵的點要了解相應的協議&nbs

Jmeter效能測試工具學習(5.jmeter邏輯控制器)

Logic Controller 1、首先必須宣告的是: Jmeter中的Controller 和 LoadRunner中的Controller的區別。 2、回到執行順序。檢視Controller的執行順序。   Simple Controller 1、 The S

Jmeter效能測試工具學習(4.指令碼組成和元件搭配)

Jmter指令碼開發原則 簡單:不要無用、無關的元件,同時能複用的儘量複用。比如:HTTP Request Ddfauits公共元件 正確:對指令碼或者業務正確性進行必要的判斷,不能少也不能多。(返回200) 高效:部分 元件僅僅使用在指令碼開發模式下,在真正生產環境下不要使用 。