當我們做性能測試的時候阻课,測試協(xié)議需要用到性能測試工具。市場上有很多可以做性能測試的工具艰匙。有些是收費的限煞,有些是開源免費的。選擇的時候它是否友好支持所有的協(xié)議呢员凝?現(xiàn)在帶大家來看看一些行業(yè)中常用的流行的性能測試工具署驻。
ApacheBench 是一個輕量級工具硕舆。主要用于 HTTP 協(xié)議的性能測試秽荞。非常簡單快捷骤公。不支持場景化測試。
ab是個小巧而簡便容易上手的工具扬跋,但是沒有圖形化的界面阶捆,提供的也是基本的性能參數(shù),不能監(jiān)控钦听,一般用于臨時測試某個接口的效率洒试。
ab -n 1 -c 1 https://testerhome.com/
- -n:總請求次數(shù)
- -c:并發(fā)次數(shù)(并發(fā)請求不能大于總請求次數(shù))
JMeter 是 Apache 開源基金會提供的完全開源的性能測試工具痪宰,旨在加載測試功能行為和衡量性能叼架。它最初是為測試Web應(yīng)用程序而設(shè)計的,但此后已擴展到其他測試功能衣撬。
Apache JMeter也可用于測試靜態(tài)和動態(tài)資源乖订,Web動態(tài)應(yīng)用程序的性能。用于模擬服務(wù)器具练,服務(wù)器組乍构,網(wǎng)絡(luò)或?qū)ο笊系姆敝刎撦d,以測試其強度或分析不同負載類型下的總體性能扛点。支持分布式運行哥遮,JMeter 使用 Java 語言開發(fā)的岂丘,使用前需要安裝 Java 運行環(huán)境。某些私有協(xié)議可以二次開發(fā)插件來支持相應(yīng)的協(xié)議昔善。
LoadRunner是一個性能測試工具,它最初是Mercury公司的產(chǎn)品返咱,2006年Mercury公司被HP收購钥庇。
LoadRunner 是一種預(yù)測系統(tǒng)行為和性能的負載測試工具。通過以模擬上千萬用戶實施并發(fā)負載及實時性能監(jiān)測的方式來確認和查找問題咖摹,LoadRunner 能夠?qū)φ麄€企業(yè)架構(gòu)進行測試评姨。通過使用LoadRunner 企業(yè)能最大限度地縮短測試時間優(yōu)化性能和加速應(yīng)用系統(tǒng)的發(fā)布。因為是閉源收費的軟件萤晴,且授權(quán)費用高昂吐句。使用也較為復(fù)雜,而且該工具體積比較大店读。
LR 強調(diào)的是對整個企業(yè)應(yīng)用架構(gòu)進行測試嗦枢,它通過模擬實際用戶的操作行為和實行實時性能監(jiān)控來幫助客戶更快的確認和查找問題。LR能支持廣泛的協(xié)議屯断,可以為客戶的特殊環(huán)境文虏,提供特殊的解決方案。
Locust 是易于使用的分布式用戶負載測試工具。它旨在對網(wǎng)站進行負載測試趴久,并確定系統(tǒng)可以處理多少個并發(fā)用戶丸相。非常易用。很方便地基于Python進行腳本擴展和業(yè)務(wù)請求實現(xiàn)彼棍。完全基于事件驅(qū)動灭忠,所以不受進程和線程的限制,可以支持發(fā)起更高的并發(fā)數(shù)請求滥酥「瑁可以分布式發(fā)起并發(fā)請求。
nGrinder 是一個用于在多臺機器上運行用 jython(在 JVM 上運行的 python)編寫的測試腳本的應(yīng)用程序刊头。它的內(nèi)部引擎是基于 Grinder黍瞧。nGrinder 分別用 controler 和 agent 將 Grinder 的 controler 和 agent 包裝起來,并擴展了支持多個并發(fā)測試的特性原杂。
nGrinder是一個壓力測試的平臺印颤,使您可以同時執(zhí)行腳本創(chuàng)建,測試執(zhí)行穿肄,監(jiān)視和結(jié)果報告生成器年局。提供了進行壓力測試的簡便方法。
看到這么多的工具僵朗,我在做一個性能測試任務(wù)的時候該怎么選擇呢?
1.根據(jù)壓測場景來選擇
根據(jù)壓測場景是什么來選擇屑彻。如果說是一次性單接口的場景就可以使用 AB验庙。如果說是復(fù)雜事物多接口需要業(yè)務(wù)場景的話,就會選擇 JMeter 這類工具可以構(gòu)造豐富的場景能滿足需求社牲。
2.我需要提供多大壓力
我要提供多大的壓力粪薛?是1000 QPS還是萬級以上的。壓力很大的話就要考慮壓力測試工具是否支持分布式膳沽,能否快速擴展 agent汗菜。對于 JMeter 來講就很好的支持了让禀。
3.周期性需求
業(yè)務(wù)可能頻繁上線挑社,服務(wù)隨時變動⊙沧幔可能會有一個周期性需求痛阻,按月巡檢。需要一個場景文件腮敌,我可以去做數(shù)據(jù)驅(qū)動阱当,實時跟進數(shù)據(jù)改變。最后希望結(jié)果落庫糜工。
4.二次開發(fā)的需求
JMeter 開源插件化思想弊添,支持 Thrift,Dubbo 等多種協(xié)議捌木∮桶樱可以快速平臺化。
最后是社區(qū)問題支持:JMeter 開放社區(qū),廣泛使用澈圈。有問題的時候能夠快速獲得答案彬檀。
基于我們這些需求點窍帝,就選擇使用 JMeter 作為壓測工具。
然后另外一個觀點是:我們不用在乎工具是什么語言寫的诽偷,市場情況如何坤学。我們用工具就是要實現(xiàn)對系統(tǒng)的壓力。如果工具能實現(xiàn)壓力报慕,它就實現(xiàn)了我們的性能測試工具想要的東西拥峦。并且在性能測試工具當中我們只要關(guān)注兩條曲線:一個是 TPS、一個是響應(yīng)時間卖子。
能看懂性能曲線才是我們性能測試工程師的能力略号。而不是我們用什么測試工具,有多熟練工具洋闽。因為熟練只是一個開始玄柠。不管你是用什么樣的性能測試工具,我們都會看到一些數(shù)據(jù)诫舅。這些數(shù)據(jù)我們要知道帶給我們什么樣的含義羽利?后續(xù)做什么樣的分析。所以這是性能測試工具可以給我們提供的東西刊懈。也是性能測試工具的意義这弧。
(文章來源于霍格沃茲測試學院)