web性能測(cè)試工具

由于項(xiàng)目需要,最近對(duì)產(chǎn)品的性能做了簡(jiǎn)單的性能測(cè)試,調(diào)研了常用的幾款性能測(cè)試工具。

- LoadRunner Jmeter Locust
授權(quán)方式 商業(yè)收費(fèi) 開(kāi)源免費(fèi) 開(kāi)源免費(fèi)
開(kāi)發(fā)語(yǔ)言 C/Java Java Python
測(cè)試腳本形式 C/Java GUI Python
并發(fā)機(jī)制 進(jìn)程/線程 線程 協(xié)程
單機(jī)并發(fā)能力
資源監(jiān)控 支持 不支持 不支持
報(bào)告與分析 完善 簡(jiǎn)單圖表 簡(jiǎn)單圖表
支持二次開(kāi)發(fā) 不支持 支持 支持
分布式壓力 支持 支持 支持
測(cè)試平臺(tái) 控制端只能是window,壓測(cè)端可以是window/linx window/linux window/linux

本地測(cè)試環(huán)境

部署環(huán)境 MacBook Pro
內(nèi)存 8 GB
處理器 2.7 GHz Intel Core i5

Jmeter

Jmeter是Apache提供的一款功能比較齊全的性能測(cè)試工具。用例既可以通過(guò)GUI進(jìn)行編寫,也可以通過(guò)錄制腳本的方式創(chuàng)建。另外,Jmeter也可以作為應(yīng)用的功能/回歸測(cè)試,通過(guò)設(shè)定結(jié)果斷言,腳本會(huì)自動(dòng)判斷請(qǐng)求是否返回了正確結(jié)果。

Jmeter GUI是Jmeter的圖形模式,提供可視化的編輯方式,多樣的監(jiān)聽(tīng)器,適合于創(chuàng)建測(cè)試計(jì)劃以及腳本調(diào)試。
下圖是以Jmeter GUI方式配置壓力


然而,GUI方式需要耗費(fèi)較多的系統(tǒng)資源(尤其是腳本中的監(jiān)聽(tīng)器),從而影響里Jmeter單機(jī)性能。因此在大壓力場(chǎng)景下CLI方式較為合適,此外,CLI方式可以生成HTML測(cè)試報(bào)告。
參考命令

jmeter -n -t [jmx file] -l [results file] -e -o [Path to web report folder]
  • jmx file:測(cè)試計(jì)劃的文件名稱

  • result file:輸出文件路徑,可以是結(jié)果日志名稱

  • Path to output folder:要保存的report文件路徑

  • -n:非GUI模式執(zhí)行JMeter

  • -t:執(zhí)行測(cè)試文件所在的位置

  • -l:保存測(cè)試結(jié)果的文件,jtl文件格式

  • -e:測(cè)試結(jié)束后,生成測(cè)試報(bào)告

  • -o:指定測(cè)試報(bào)告的存放位置

  • -H:幫助

使用方式:

  1. 直接生成HTML報(bào)告
jmeter -n -t /Users/zhang/Desktop/worksapce/***/***.jmx -e -l test.txt -o  test.html
  1. 根據(jù)已有的jtl類型文件生成HTML
jmeter -g test.txt -o  test1.html

ref:
線程組內(nèi)并發(fā)參數(shù)設(shè)置(JMeter之Ramp-up Period(in seconds)說(shuō)明

LoadRunner

成熟的商業(yè)軟件,價(jià)格極其昂貴,功能最為豐富和全面,網(wǎng)上的學(xué)習(xí)資料較多。目前只支持windows平臺(tái),單機(jī)難以產(chǎn)生較高的并發(fā)壓力,linux&docker可以作物負(fù)載發(fā)生器

Locust

采用多線程/多進(jìn)程來(lái)模擬多用戶時(shí),線程數(shù)會(huì)隨著并發(fā)數(shù)的增加而增加,而線程之間上下文的的切換損耗資源的,IO的阻塞和線程的sleep會(huì)不可避免的導(dǎo)致并發(fā)效率下降;正因如此,LoadRunner和Jmeter這類采用進(jìn)程和線程的測(cè)試工具,都很難在單機(jī)上模擬出較高的并發(fā)壓力。
Locust采用python腳本編寫,使用了協(xié)程(gevent)機(jī)制并發(fā)。由于協(xié)程自身特點(diǎn),避免了并發(fā)場(chǎng)景下由于多線程/多進(jìn)程切換造成的資源開(kāi)銷,極大提高了系統(tǒng)資源利用率,大大提高了單機(jī)并發(fā)效率。

此外Locust的代碼結(jié)構(gòu)清晰,核心代碼量也只有幾百行,可擴(kuò)展性也非常不錯(cuò)。

性能指標(biāo)監(jiān)控和測(cè)試報(bào)告圖表方面比較缺失,數(shù)據(jù)統(tǒng)計(jì)不如LoadRunner及Jmeter完備。
統(tǒng)計(jì)報(bào)表頁(yè)面


  • Type: 請(qǐng)求的類型,例如GET/POST。
  • Name:請(qǐng)求的路徑。
  • request:當(dāng)前請(qǐng)求的數(shù)量。
  • fails:當(dāng)前請(qǐng)求失敗的數(shù)量。
  • Median:中間值,單位毫秒,一半的服務(wù)器響應(yīng)時(shí)間低于該值,而另一半高于該值。
  • Average:平均值,單位毫秒,所有請(qǐng)求的平均響應(yīng)時(shí)間。
  • Min:請(qǐng)求的最小服務(wù)器響應(yīng)時(shí)間,單位毫秒。
  • Max:請(qǐng)求的最大服務(wù)器響應(yīng)時(shí)間,單位毫秒。
  • Content Size:?jiǎn)蝹€(gè)請(qǐng)求的大小,單位字節(jié)。
  • reqs/sec:是每秒鐘請(qǐng)求的個(gè)數(shù)。

同樣的Locust也有no-web方式,以減少客戶端資源消耗

locust -f load_test.py --host=https://www.baidu.com --no-web -c 10 -r 2 -t 1m

啟動(dòng)參數(shù):
--no-web 表示不使用Web界面運(yùn)行測(cè)試。
-c 設(shè)置虛擬用戶數(shù)。
-r 設(shè)置每秒啟動(dòng)虛擬用戶數(shù)。
-t 設(shè)置設(shè)置運(yùn)行時(shí)間。

ab

ab 測(cè)試工具是 Apache 提供的一款測(cè)試工具,具有簡(jiǎn)單易上手的特點(diǎn),適合于單接口測(cè)試,實(shí)際項(xiàng)目中比較雞肋。
具有基本性能統(tǒng)計(jì)數(shù)據(jù),無(wú)統(tǒng)計(jì)報(bào)表


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容