1、Jmeter 是什么?
Jmeter 是一個開源的測試工具,由 Apache 軟件基金會開發(fā),它是一個純 Java 應用程序,用于負載測試、功能測試和性能測試,它是由 Apache 軟件基金會開發(fā)的一個開源軟件。它可以模擬許多不同類型的負載,并且可以用于測試不同類型的應用程序,包括 Web 應用程序、數(shù)據(jù)庫服務器、FTP 服務器、郵件服務器等。JMeter 可以幫助測試人員和開發(fā)人員在測試過程中識別應用程序的瓶頸和性能問題,以及分析應用程序的性能。
2、如何下載?
點擊下載 Jmeter 5.5 版本,也可以自行訪問官網(wǎng)下載頁選擇合適的 Jmeter 版本:https://jmeter.apache.org/download_jmeter.cgi
3、Jmeter 語言切換為中文簡體
3.1、下載完成后解壓壓縮包
在 bin 目錄下雙擊 jmeter.sh 可執(zhí)行文件,Windows 系統(tǒng)的同學雙擊 jmeter.bat 文件啟動。
3.2、切換語言
在菜單欄 Options 中選擇 Choose Language 然后選中 Chinese (Simplified) 即可完成切換。
4、測試 HTTP 請求
4.1、添加線程組
線程組相當于一組測試請求的集合,當啟動時,可以將組下面定義的所有請求并行進行測試。
4.2、配置線程組
實際上就是配置測試的請求次數(shù),像如下的設置代表 10 秒內(nèi)將會準備 100 個線程發(fā)起請求,只循環(huán) 1 次,如果循環(huán)次數(shù)勾選了永遠,將會已 100 個請求 /10 秒一直循環(huán)下去。
4.3、添加 HTTP 請求取樣器
4.4、GET 請求配置
4.5、POST 請求配置
同樣也是先添加 HTTP 請求取樣器再設置請求接口和請求參數(shù)。
4.6、添加監(jiān)聽器
監(jiān)聽器的作用就是獲取測試結果,可以添加不同類型的監(jiān)聽器從多個維度分析請求結果。
4.6.1 添加查看結果樹監(jiān)聽器
作用是可以單獨查看每次請求的測試結果
4.6.2 添加聚合報告監(jiān)聽器
4.7、開始測試
點擊啟動后會彈出一個是否需要保存這個測試計劃,點擊 Yes 的話需要指定保存的磁盤位置,下次測試可以直接讀取保存的文件家在測試計劃,如果不需要保存點擊 No 即可。
4.8、查看測試結果
可以看到我啟動時線程組定義的是 10 個線程數(shù),執(zhí)行 1 秒。所以兩個請求取樣器每個發(fā)起 10 個請求,一共是 20 個請求結果。
查看結果樹的報告中可以單獨點擊某一個請求查看請求結果,是根據(jù)發(fā)起請求的時間來升序排列的,點擊單個請求后在右側(cè)可以查看取樣器結果、請求內(nèi)容、響應內(nèi)容。
為什么 Post 請求全部失敗了呢?因為只要響應狀態(tài)碼不是 2xx 代表操作被成功接收,Jmeter 則認為此次請求是失敗的。我們可以看一下響應內(nèi)容報的是什么原因。
可以看到響應體提示不支持的 Media Type (媒體類型 用于聲明隨之而來的數(shù)據(jù)的格式。又稱:MIME 類型、MIME Type、Content Type。 是一種用于在異構系統(tǒng)、網(wǎng)絡之間傳遞信息時時聲明其格式的方法。),所以有開發(fā)經(jīng)驗的同學會注意到,我們的請求體內(nèi)容沒有設置 content-type,默認是 application/x-www-form-urlencoded ,這是瀏覽器原生的 form 表單類型,或者說是表單默認的類型。我們的請求體是 JSON 字符串格式,需要設置一下 content-type 為 application/json。而設置 content-type 是一個屬性,而且我們要指定的請求內(nèi)容的類型,所以需要添加一個 HTTP 信息頭管理器。
添加后就可以將 content-type 設置好,順便說一句,如果接口設置了身份校驗,需要請求頭中攜帶 token 信息,也可以在這一并設置。
添加后,啟動測試,發(fā)現(xiàn)接口響應成功。
查看聚合報告,聚合報告中對測試的請求進行了區(qū)分統(tǒng)計,可以查看到平均的響應時間 (單位均為毫秒)、TP99 的時間,請求異常比例,吞吐量等。
- Label:請求的名稱,就是我們在進行測試的 TCP sampler 的名稱
- Samples:總共發(fā)給服務器的請求數(shù)量
- Average:單個請求的平均響應時間,單位是毫秒
- Median:50% 的請求的響應時間
- 90%Line:90% 的請求的響應時間
- 95%Line:95% 的請求的響應時間
- 99%Line:99% 的請求的響應時間
- Min:最小的響應時間
- Max:最大的響應時間
- Error%:錯誤率 = 錯誤的請求的數(shù)量 / 請求的總數(shù)
- Throughput:吞吐量即表示每秒完成的請求數(shù)
- Received KB/sec:每秒從服務器端接收到的數(shù)據(jù)量
- Sent KB/Sec:每秒從發(fā)送到服務器端的數(shù)據(jù)量
5、測試 TCP 請求
5.1、添加 TCP 請求取樣器
5.2、TCP 取樣器配置說明
TCPClient classname:
- TCPClientImpl:以文本編輯器中所編輯的純文本為內(nèi)容進行發(fā)送,默認為這種
- BinaryTCPClientImpl:以文本編輯器中所編輯的 16 進制字符(hex)內(nèi)容為基礎轉(zhuǎn)換為二進制的 字節(jié)內(nèi)容進行發(fā)送。
- LengthPrefixedBinaryTCPClientImpl:在 BinaryTCPClientImpl 基礎上默認以發(fā)送內(nèi)容的長度為字節(jié)前綴進行填充, 數(shù)據(jù)包中前 2 個字節(jié)為數(shù)據(jù)長度??稍?bin/jmeter.properties 配置文件中 tcp.binarylength.prefix.length 設置。
Target Server:TCP 采樣器中填寫服務器地址、端口。
Connect:設置連接超時時間。
Response: 設置響應超時時間。
Re-use connection: 表示重復使用該連接發(fā)送請求。
Close connection: 表示每次發(fā)送完該條數(shù)據(jù)后,關閉連接。
End of line(EOL) byte value: 終止符。
比如項目中返回值轉(zhuǎn)為 16 進制的時候如下: 7e800100050100019040011000000003010201447e 那么最后一個字節(jié)(8 位)應該是 7e 換算為 10 進制后為 126,那么在 eol 處設置為 126。
注意:終止符為一個字節(jié),16 進制數(shù)大于 7F(127) 后,該 EOL 值為負數(shù)。
比如:如果服務器返回最后一個字節(jié)為 80,按單字節(jié)換成十進制為 -128,EOL 處的值要填寫 -128。
如果響應內(nèi)容不是 16 進制內(nèi)容,是普通文本的話,就是最后一個字節(jié)對應的 ASCII 碼。
5.3、開始測試并查看結果
可以看到響應狀態(tài)碼都是 500,代表響應發(fā)生錯誤,并且異常消息為:Response message:org.apache.jmeter.protocol.tcp.sampler.ReadException: Error reading from server, bytes read: 32,
但是查看響應數(shù)據(jù)發(fā)現(xiàn)實際上是響應成功了的,返回了正確的響應數(shù)據(jù)結果,其實原因是這個異常是 jmeter 自身拋出來的,我們都知道 TCP 請求不像 HTTP 定義了 1xx、2xx 這類的響應狀態(tài)碼,那是什么原因?qū)е鲁霈F(xiàn)了異常呢?
答案是我們沒有配置 End of line(EOL) byte value: 終止符,導致 jmeter 認為響應內(nèi)容不完整從而拋出 ReadException。 我們的響應數(shù)據(jù)最后一位字節(jié)是 1 ,對應的 ASCII 碼 是 49。所以我們?nèi)ピO置一下再啟動測試。
最終測試結果:文章來源:http://www.zghlxwxcb.cn/news/detail-483528.html
文章來源地址http://www.zghlxwxcb.cn/news/detail-483528.html
到了這里,關于使用Jmeter壓測HTTP、TCP請求的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!