1. 程式人生 > >使用Jmeter測試快速入門

使用Jmeter測試快速入門

一 建立執行緒組

 

 

1.1.2.   執行緒組主要包含三個引數:執行緒數、準備時長(Ramp-Up Period(in seconds))、迴圈次數。 1.1.3.    執行緒數:虛擬使用者數。一個虛擬使用者佔用一個程序或執行緒。設定多少虛擬使用者數在這裡也就是設定多少個執行緒數。 1.1.4.    準備時長(秒):設定的虛擬使用者數需要多長時間全部啟動。如果執行緒數為20 ,準備時長為10 ,那麼需要10秒鐘啟動20個執行緒。也就是每秒鐘啟動2個執行緒。 1.1.5.  迴圈次數:每個執行緒傳送請求的次數。如果執行緒數為20 ,迴圈次數為100 ,那麼每個執行緒傳送100次請求。總請求數為20*100=2000 。如果勾選了“永遠”,那麼所有執行緒會一直髮送請求,一到選擇停止執行指令碼。 1.1.6.  . 排程器:設定執行緒組啟動的開始時間和結束時間(配置排程器時,需要勾選迴圈次數為永遠) 1.1.7.  持續時間(秒):測試持續時間,會覆蓋結束時間 1.1.8.  啟動延遲(秒):測試延遲啟動時間,會覆蓋啟動時間 1.1.9.  啟動時間:測試啟動時間,啟動延遲會覆蓋它。當啟動時間已過,手動只需測試時當前時間也會覆蓋它。 1.1.10.      結束時間:測試結束時間,持續時間會覆蓋它。

二.建立http請求

三.使用方法 3. 1指定請求域名,請求路徑

 

 

一個HTTP請求有著許多的配置引數,下面將詳細介紹:
名稱:本屬性用於標識一個取樣器,建議使用一個有意義的名稱。
註釋:對於測試沒有任何作用,僅使用者記錄使用者可讀的註釋資訊。
伺服器名稱或IP :HTTP請求傳送的目標伺服器名稱或IP地址。
埠號:目標伺服器的埠號。
方法:傳送HTTP請求的方法,可用方法包括GET、POST、HEAD、PUT、OPTIONS、TRACE、DELETE等。
Content encoding :內容的編碼方式,預設值為iso8859
路徑:目標URL路徑(不包括伺服器地址和埠)
3.2. 指定請求域名,請求路徑 3.3查看錶格資訊

Sample:每個請求的序號
Start Time:每個請求開始時間
Thread Name:每個執行緒的名稱
Label:Http請求名稱
Sample Time:每個請求所花時間,單位毫秒
Status:請求狀態,如果為勾則表示成功,如果為叉表示失敗。
Bytes:請求的位元組數
樣本數目:也就是上面所說的請求個數,成功的情況下等於你設定的併發數目乘以迴圈次數
平均:每個執行緒請求的平均時間
最新樣本:表示伺服器響應最後一個請求的時間
偏離:伺服器響應時間變化、離散程度測量值的大小,或者,換句話說,就是資料的分佈。
3.4. 檢視結果樹

  響應的資料展示(響應碼,響應資料),

 

通過察看結果樹,我們可以看到每個請求的結果,其中紅色的是出錯的請求,綠色的為通過。 Thread Name:執行緒組名稱 Sample Start: 啟動開始時間 Load time:載入時長 Latency:等待時長 Size in bytes:傳送的資料總大小 Headers size in bytes:傳送資料的其餘部分大小 Sample Count:傳送統計 Error Count:互動錯誤統計 Response code:返回碼 Response message:返回資訊 Response headers:返回的頭部資訊 3.5 聚合報告引數說明
lable:對應每一個http請求,顯示的是http請求的Name,如百度http請求name為baidu
#Samples:表示這一次的測試中一共發出了多少請求,如上圖所示,sougou和baidu的http請求每個都發出30個請求
Average:平均響應時間,指的是所有的請求的平均響應時間,如上圖的30個請求的總的響應時間除以30得出的平均響應時間,預設的情況下是單個請求的平均響應時間,但當使用了“事務控制器”時,則以事物為單位顯示平均響應時間
Median:中位數,也就是50%使用者的響應時間
90%Line:90%使用者的響應時間
Min:最小響應時間
Max:最大的響應時間
Error%:本次測試中出現錯誤的請求的數量/請求的總數,如上圖所示,本次的測試中,sougou的http請求66.6%的請求出錯,而baidu的請求則沒有出錯的請求
Throughput:吞吐量,預設情況下表示每秒完成的請求數,如上圖所示,每秒完成的請求數分別為6.6個每秒,6.2個每秒
Recived KB/Sec:每秒從伺服器端接收到的資料量,以kb為計算的單位

3.6 圖形結果

樣本數目:總共傳送到伺服器的請求數。 最新樣本:代表時間的數字,是伺服器響應最後一個請求的時間。 吞吐量:伺服器每分鐘處理的請求數。 平均值:總執行時間除以傳送到伺服器的請求數。 中間值:有一半的伺服器響應時間低於該值而另一半高於該值。 偏離:表示伺服器響應時間變化、離散程度測量值的大小。 四.Jmeter主要元件介紹 4.1 執行緒組 4.2 取樣器(Http請求)

 

 4.3 監聽器

監聽器(Listener)負責收集測試結果,同時也被告知了結果顯示的方式。我們常用的包括:聚合報告、檢視結果樹、用表格檢視結果,都支援將結果資料寫入檔案。其他的新增上去看看就行。聚合報告前面我們介紹過,後面是檢視結果樹和用表格檢視結果的截圖

 

 4.4.檢視本地資料庫裡面的資料

4.4.1開啟JDBC Connection Configuration

 

 然後一次填入一下資料

Database URL:資料鏈接url,格式:jdbc:mysql://localhost:3306/host   註釋:資料庫的ip地址+埠/資料庫名(查詢資料庫埠號show global variables like 'port') jdbc:mysql://127.0.0.1:3306/mydb2?serverTimezone=UTC& allowMultiQueries=true   JDBC Driver Class:驅動器名稱。固定:com.mysql.jdbc.Driver   Username:使用者名稱   Passowrd:密碼 新增一個JDBC Request。

 4.4.2 然後在新增一個JDBC Request

 

 輸入sql語句

最後的結果是 

 

 4.5 斷言---檢查點

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

填寫響應段言

新增JSON Assertion

 

 效果如下

 

4.6. 前置處理器和後置處理器

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

4.7.定時器

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

 

 4.8事務控制器

作用: 事務控制器會生產一個額外的取樣器,用來統計該控制器子結點的所有時間。 線上程組下建立事務控制器 引數: ·         Generate parent sample:(選中這個引數結果展示如下圖紅框,否則顯示為下圖藍框) ·         Include duration of timer and pre-post processors in generated sample:選中這一項會統計定時器(timer)的時間,否則只統計取樣器(sample)的時間 先新增一個事務控制器

 

 

勾選化框的地方

檢視結果

 

 

 

 迴圈控制器

建立迴圈控制器

 

 新增要迴圈的次數

結果如下

 

 

五 Jmeter元件引數化 5.1引數化是什麼 動態的獲取並設定資料 5.2. 為什麼使用引數化 執行批量操作,批量新增批量刪除,人工效率太低 運用程式代替人工獲取並設定資料,安全高效 比如:對被測系統的使用者名稱和密碼進行引數化,來模擬多個使用者同時登入系統 5.3. 引數化實現之CSV Data Set Config   通過這個元件可以動態獲取並設定資料,實現批量新增操作

 

 

 

 

 

 

5.4建立一個http請求

 

 

 


 效果如下

 

 

 

 

5.5使用Jmeter 函式助手 1、點選 選項-->函式助手 調出函式助手對話方塊     2、選擇 _CSVRead 函式(下圖第一個框)     3、函式引數:       1)第一個引數:填寫檔案路徑。       2)第二個引數:檔案列號是從0開始的,第一列0、第二列1、第三列2、依次類推,然後點選【生成】按鈕,則會自動生成我們需要的引數化函式。   3) 複製生成的引數化函式, copy過程需要使用的地方即可。 4) _Random函式是從某資料段隨機讀取資料替換引數,當需要新增多條資料記錄且某些欄位需要唯一性時使用。

 

 

 

 

 

 

 

 執行及執行結果

 

 

 

 

 

 5.6 正則引數化

 先新增兩個http請求

 

 一個是成語詞典一個是新華字典

 

 

 

 

 

 

 

 然後在成語詞典裡新增一個正則表示式提取器

 

 在正則表示式提取器中新增資料

 

 

說明: (1)引用名稱:下一個請求要引用的引數名稱,如填寫title,則可用${title}引用它。 (2)正則表示式: ():括起來的部分就是要提取的。 .:匹配任何字串。 +:一次或多次。 ?:不要太貪婪,在找到第一個匹配項後停止。 (3)模板:用$$引用起來,如果在正則表示式中有多個正則表示式,則可以是$2$$3$等等,表示解析到的第幾個值給title。如:$1$表示解析到的第1個值 (4)匹配數字:0代表隨機取值,1代表全部取值,通常情況下填0 (5)預設值:如果引數沒有取得到值,那預設給一個值讓它取。

修改新華字典裡的引數

 

 然後執行及效果圖展示

 

 

 

 

 

六  Jmeter指令碼錄製 6.1. 什麼是指令碼錄製 在進行測試的時候,可能有好多指令碼或者介面需要操作測試,並且有些測試連結需要重複多執行緒高併發進行測試,我們一般會針對這一些操作,進行一個指令碼錄製,錄製好之後,之後測試就可以在這個基礎上進行測試。 6.2. Jemeter指令碼錄製方式 BadBoy指令碼錄製 使用Jmeter自帶的代理伺服器進行指令碼錄製 安裝badbay

 開啟badbay

 

 最後完畢之後點選小紅點

 

 

 然後點選檔案Export to Jmeter

 

 然後在jmeter裡檔案開啟剛剛儲存的指令碼