目錄
一、Jmeter 簡介
Jmeter是Apache組織開發的基於Java的壓力測試工具。Jmeter被廣泛應用到測試領域,可做接口測試、壓力測試、性能測試等。本文介紹Jmeter性能測試
二、Jmeter 安裝
2.1、JDK安裝
安裝後配置系統環境變量,參考這一篇DOS窗口下運行HelloWorld顯示錯誤:找不到或無法加載主類文章配置
2.2、Jmeter 安裝
Jmeter 安裝參考這一篇Jmeter 中文版安裝指南(零基礎)文章配置
三、Jmeter 性能測試
用常見的百度接口作爲例子
3.1、接口地址
http://www.baidu.com/s?ie=utf-8&wd=jmeter性能測試
複製地址去瀏覽器試一下,OK。
3.2、請求參數
ie:編碼方式,默認爲utf-8,wd: 搜索詞
3.3、返回結果
搜索結果,我們可以通過校驗結果中是否含有搜索詞wd來判斷本次請求成功或失敗
四、Jmeter 腳本編寫
步驟在上兩篇博文已有介紹,學會的同學可以快速過
4.1、添加線程組
測試計劃,右鍵添加->線程(用戶)->線程組
這裏可以配置線程組名稱,線程數,準備時長(Ramp-Up Period(in seconds))循環次數,調度器等參數:
線程組參數解釋:
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、調度器:設置線程組啓動的開始時間和結束時間(配置調度器時,需要勾選循環次數爲永遠)
持續時間(秒):測試持續時間,會覆蓋結束時間
啓動延遲(秒):測試延遲啓動時間,會覆蓋啓動時間
先使用默認配置,進行接口調試。執行性能測試的時候再進行配置
接口測試前面的博文已寫
4.2、添加HTTP請求
線程組,右鍵添加->取樣器->HTTP請求
對於我們的接口http://www.baidu.com/s?ie=utf-8&wd=jmeter性能測試,可以參考下圖填寫:
Http請求主要參數解釋:
1、Web服務器
協議:向目標服務器發送HTTP請求協議,可以是HTTP或HTTPS,默認爲HTTP
服務器名稱或IP :HTTP請求發送的目標服務器名稱或IP
端口號:目標服務器的端口號,默認值爲80
2、Http請求
方法:發送HTTP請求的方法,可用方法包括GET、POST、HEAD、PUT、OPTIONS、TRACE、DELETE等。
路徑:目標URL路徑(URL中去掉服務器地址、端口及參數後剩餘部分)
Content encoding :編碼方式,默認爲ISO-8859-1編碼,這裏配置爲utf-8
同請求一起發送參數
在請求中發送的URL參數,用戶可以將URL中所有參數設置在本表中,表中每行爲一個參數(對應URL中的 name=value),注意參數傳入中文時需要勾選“編碼”
4.3、添加查看結果樹
線程組,右鍵添加->監聽器->查看結果樹
點擊啓動
這時,我們運行Http請求,修改響應數據格式爲“HTML Source Formatted”,可以看到本次搜索返回結果頁面標題爲”百度安全驗證“。
咦,不應該是返回結果頁面標題爲”jmeter性能測試_百度搜索“嗎?這是因爲百度現在不允許做壓測了,可以添加一個參數tn ,值爲monline_4_dg(模擬http請求)
再次點擊運行就有返回值了
4.4、添加用戶自定義變量
線程組,右鍵添加->配置元件->用戶定義的變量
新增一個變量wd,存放搜索詞
並在Http請求中使用該參數,語法爲:${wd}
4.5、添加斷言
前面的博文已有詳細的記錄,不會的再看着做一遍。HTTP請求,右鍵添加->斷言->響應斷言
我們校驗返回的文本中是否包含搜索詞,添加參數${wd}到要測試模式中
4.6、添加斷言結果
HTTP請求,右鍵添加->監聽器->斷言結果
這時,再點擊運行一次就可以看到斷言結果成功或失敗了
斷言成功
斷言失敗 (注意這裏可以把匹配模式改一下就會失敗,如下)
結果失敗了
4.7、添加聚合報告
線程組,右鍵添加->監聽器->聚合報告,用來存放性能測試報告
於是,第一次編寫的第一個的完整http接口的jmeter性能測試腳本完成
五、Jmeter 性能測試執行
5.1、配置線程組
點擊線程組,配置本次性能測試相關參數:線程數,循環次數,持續時間等,這裏我們配置併發用戶數爲10,持續時間爲60s
5.2、執行測試
匹配模式改回去
執行測試前點擊掃把,清除之前的結果,再點擊運行
六、測試報告分析
等待一會,打開聚合報告
聚合報告參數解釋
1、Label:每個 JMeter 的 element(例如 HTTP Request)都有一個 Name 屬性,這裏顯示的就是 Name 屬性的值
2、#樣本(Samples):請求數——表示這次測試中一共發出了多少個請求,如果模擬10個用戶,每個用戶迭代10次,那麼這裏顯示100
3、平均值(Average):平均響應時間——默認情況下是單個 Request 的平均響應時間,當使用了 Transaction Controller 時,以Transaction 爲單位顯示平均響應時間
4、中位數(Median):中位數,也就是 50% 用戶的響應時間
5、90% 百分位(90% Line):90% 用戶的響應時間
6、最小值(Min):最小響應時間
7、最大值(Max):最大響應時間
8、異常%(Error%):錯誤率——錯誤請求數/請求總數
9、吞吐量(Throughput):吞吐量——默認情況下表示每秒完成的請求數(Request per Second),當使用了 Transaction Controller 時,也可以表示類似 LoadRunner 的 Transaction per Second 數
10、KB每秒(KB/Sec):每秒從服務器端接收到的數據量,相當於LoadRunner中的Throughput/Sec
一般而言,性能測試中我們需要重點關注的數據有: #Samples 請求數,Average 平均響應時間,Min 最小響應時間,Max 最大響應時間,Error% 錯誤率及Throughput 吞吐量
七、總結
性能測試是軟件測試工程師必知必會的內容,在面試中面試官經常會提問你會不會性能測試,性能測試怎麼測,用的什麼性能測試工具,性能測試常用指標有哪些等等。通過本節課的練習,發現性能測試入門也是很簡單的,只不過在不瞭解的人眼裏,覺得性能測試很高大上,特別是對於剛轉行的人來說。希望大家能好好學習,做一個優秀的軟件測試工程師
2020年4月23日