一 創建線程組

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里文件打開剛剛保存的腳本