【測試設計】效能測試工具選擇:wrk?jmeter?locust?還是LR?
前言
當你想做效能測試的時候,你會選擇什麼樣的測試工具呢?是會選擇wrk?jmeter?locust?還是loadrunner呢?
今天,筆者將根據自己使用經驗,針對jmeter、locust、wrk和loadrunner常用的效能測試工具進行簡單介紹和對比。首先,四者基本對比圖:
. | loadrunner | jmeter | locust | wrk |
---|---|---|---|---|
分散式壓力 | 支援 | 支援 | 支援 | 不支援 |
單機併發能力 | 低 | 低 | 高 | 低 |
併發機制 | 程序/執行緒 | 執行緒 | 協程 | 執行緒 |
開發語言 | C/Java | Java | Python | C |
報告與分析 | 完善 | 簡單圖示 | 簡單圖表 | 簡單結果 |
授權方式 | 商業收費 | 開源免費 | 開源免費 | 開源免費 |
測試指令碼形式 | C/Java | GUI | Python | C |
資源監控 | 支援 | 不支援 | 不支援 | 不支援 |
由於loadrunner為商業收費模式,對於公司級測試使用而言涉及到授權問題,因此,本文暫不對loadrunner進行詳細討論。
wrk
wrk是輕量化的http效能測試工具,採用執行緒+網路非同步IO模型,網路非同步IO可以使得系統使用很少的執行緒模擬大量的網路連線以增大併發量、提高壓力。
優點
- 操作簡單、易於使用,
使用方式例如:
./wrk -c 1000 -t 8 -d 10s http://www.baidu.com
主要包括以下引數:
- -t(--thread) 需要模擬的執行緒數;
- -c(connection) 需要模擬的連線數;
- --timeout 超時的時間;-d(--duration) 測試的持續時間
缺點
①wrk只支援http協議型別請求(如get、post等),但若是需要執行get之外的http型別請求需要使用者自行編寫lua指令碼;
②只允許單機測試,不支援多機分散式壓力測試,因此wrk適合效能基準測試,對於模擬上萬的使用者併發測試顯得有點力不從心;
③測試結果簡單,無詳細圖表解析,舉例如下;
wrk測試結果輸出:
jmeter
jmeter同樣採用執行緒併發機制,但其主要依靠增加執行緒數提高併發量,當單機模擬數以千計的併發使用者時,對於CPU和記憶體的消耗比較大。與上述wrk相比,jmeter本身具有以下優點和缺點:
優點
①介面視覺化操作,可以使用錄製指令碼方式對較為複雜的使用者流建模,還可以建立斷言來驗證測試行為是否通過;
②表格、圖形、結果樹等多類視覺化資料分析和報告輸出,舉例如下;
jmeter聚合報告及表格檢視結果:
③支援http、ftp、tcp等多種協議型別測試;
④支援分散式壓力測試,但對於上萬的使用者併發測試需要多臺測試機支援,資源要求比較大;
⑤可以用於測試固定吞吐量下的系統性能,例如在100QPS(QPS:每秒查詢率)下系統的響應時間和資源消耗;
缺點
jmeter的GUI模式消耗資源較大,當需要測試高負載時,需要先使用GUI工具來生成XML測試計劃,然後在非GUI模式下匯入測試計劃執行測試,並且關閉不需要的偵聽器(收集資料與展示測量的元件),因為偵聽器也會消耗掉本用於生成負載的大量資源。測試結束後後,需要將原始結果資料匯入GUI以才能檢視結果。
locust
locust是一個的簡單易用的分散式負載測試工具,主要用來對網站進行負載壓力測試。locust使用python語言開發,測試資源消耗遠遠小於java語言開發的jmeter。且其支援分散式部署測試,能夠輕鬆模擬百萬級使用者併發測試。
與jmeter和wrk相比,locust具有以下優缺點:
優點
①不同與wrk和jmeter使用執行緒數提高併發量,locust藉助於協程實現對使用者的模擬,相同物理資源(機器cpu、記憶體等)配置下locust能支援的併發使用者數相比jmeter可以提升一個數量級;
②相比wrk對複雜場景測試的捉襟見肘和jmeter需要介面點選錄製複雜場景的麻煩,locust只需使用者使用python編寫使用者場景完成測試;
③不同與jmeter複雜的使用者使用介面,locust的介面乾淨整潔,可以實時顯示測試的相關細節(如傳送請求數、失敗數和當前傳送請求速度等);
④locust雖然是面向web應用測試的,但是它可以用來測試幾乎所有系統。給locust編寫一個客戶端,可以滿足你所有的測試要求;
缺點
同wrk一樣,locust測試結果輸出不如jmeter的測試結果展示型別多;
locust測試結果:
總結
本文簡單介紹和對比了wrk、jmeter及locust三種性能測試工具,希望能給大家帶來基礎的認識。此外讓我們最後一起來看看面臨以下測試需求,我們應該如何在三者中進行選擇:
我想使用介面操作的形式對我的系統做效能測試,並且希望我的測試資料有個良好的視覺化展示方式;
建議使用jmeter工具
我想要對我係統的http rest介面進行效能測試,但是我之前沒有進行過任何測試,我不知道我的系統QPS是個什麼樣的水平;
建議使用wrk工具
我想對我的系統模擬使用者操作進行復雜場景的效能測試;
建議使用locust工具
我想測試我的系統在一定QPS情況下,一段時間內的效能指標(cpu消耗、記憶體消耗等);
建議使用jmeter工具
我想使用勻速請求的方式,對我的系統進行效能測試;
建議使用jmeter或locust工具
我想體驗程式設計的樂趣,自己編寫指令碼進行效能測試;
http請求:wrk,使用lua語言編寫指令碼;
locust,使用python語言編寫指令碼;
或者,just do it by yourself,自己選擇程式語言編寫效能測試指令碼。
附錄
wrk 使用引數說明
①引數-c(connection,線連結數)與作業系統檔案控制代碼數相關,-c不能超過檔案控制代碼數設定,開始測試前應保證系統可用埠數大於-c設定;
②引數-t(--thread,執行緒數)與作業系統cpu核數有關,-t不宜設定過大,過大的執行緒數設定反而會因執行緒排程反而使效能降低。如下圖所示,作業系統為8核cpu:相同連線數和測試時長條件下,不同執行緒數對同一系統REST介面測試,從測試結果可以看出當thread=8(與cpu核數一致)時系統性能測試結果最佳,效能波動最小;
8核cpu:相同連線數和測試時長條件下,不同執行緒數對同一系統REST介面測試結果對比圖
相關推薦
【測試設計】效能測試工具選擇:wrk?jmeter?locust?還是LR?
前言 當你想做效能測試的時候,你會選擇什麼樣的測試工具呢?是會選擇wrk?jmeter?locust?還是loadrunner呢? 今天,筆者將根據自己使用經驗,針對jmeter、locust、wrk和loadrunner常用的效能測試工具進行簡單介紹和對比。首先,四者基本對比圖: . loadrun
【測試報告】效能測試報告模版1
目錄 一、文件目錄 二、模版下載 三、文件內容 四、測試環境軟硬體配置資料獲取 一、文件目錄 二、模版下載 我的資源下載地址:【測試報告】效能測試報告模版1 三、文件內容 四
【蟲師--系列08】效能測試知多少---效能測試工具原理與架構
來自:http://www.cnblogs.com/fnng/archive/2012/07/31/2617546.html 作者:蟲師 在效能測試的學習過程中,堅持思想與工具(分開)並行,當前面世面上的效能測試書籍大多把理論與loadrunner融為一體講解
【測試工具】-效能測試-GT學習筆記
安卓/IOS手機端調測元件,用於安卓平臺的效能測試、競品測試及僅憑一臺手機進行App測試的場景。GT(隨身調)是APP的隨身調測平臺,它是直接執行在手機上的“整合調測環境”(IDTE, Integrated Debug&Test Environment)。 利用GT,僅憑一部手機,無需連線電腦,您即可
【轉】效能測試指標
學習網站: http://www.51testing.com/html/35/128935-243090.html http://www.51testing.com/html/39/n-3711439-2.html 一、效能測試指標 效能測試是通過測試工具模擬多種正常、峰值及異常負載條件來對系統的各項
【專欄目錄】[ 介面測試工具篇 ] 目錄
一、介面抓包工具 (1)fiddler ①【fiddler】fiddler的下載和安裝 ②【fiddler】fiddler配置:HTTPS或手機APP介面資料的抓包配置步驟 ③【fiddler】fiddler設定:設定HTTPS勾選了Decrypt HTTPS traffic時出
【 分類 】- 效能測試
個人簡介 如果對測試比較感興趣的可以加QQ群:320542475! 如果你願意,我們可以聊聊測試的那點事,相互學習、互相成長,我相信只要不斷吸取自己所需營養,即使出生不那麼光彩,在未來依然會光芒萬丈,只是在前進的路上荊棘多了一點而已、、、
【備忘】軟體測試視訊+工具
├─1.軟體測試前置基礎知識 │ ├─day1 │ │ 01 計算機基本介紹.mp4 │ │ 02
【MongoDB】效能測試
背景 這兩天專案準備使用聚合管道,需要先預研下Aggregation Pipeline的效能怎麼樣,這裡最直觀的探測就是觀看它的查詢語句的執行時間的長短。但是在shell下,我們不能直觀的看到它的執行
【測試設計】如何提升測試用例設計水平?
定義 測試用例(Test Case)是測試設計的一個產出物,它直接體現測試設計的思想,一份漂亮的測試用例不僅僅是設計思路的優秀體現,更是便於流轉和執行,具有可讀性、傳遞性。它一般是為某個特殊目標而編制的一組測試輸入、執行條件及預期結果,用以核實程式是否滿足某個
【蟲師--系列09】效能測試知多少---效能測試流程
來自:http://www.cnblogs.com/fnng/archive/2012/08/09/2631002.html 作者:蟲師 看到好多新手,在效能需求模糊的情況下,隨便找一個性能測試工具,然後就開始進行效能測試了,在這種情況下得到的效能測試結果很難體
【蟲師--系列07】效能測試知多少---瞭解前端效能
轉自:http://www.cnblogs.com/fnng/archive/2012/07/11/2587196.html 作者:蟲師 我的上一篇博文中講到了響應時間,我們在做效能測試時,能過工具可以遮蔽客戶端呈現時間,通過區域網的高寬頻可以忽略資料傳輸速
【蟲師--系列20】效能測試知多少---效能分析與調優的原理
轉自: http://www.cnblogs.com/fnng/archive/2013/03/19/2970315.html 作者:蟲師 最近一直糾結效能分析與調優如何下手,先從硬體開始,還是先從程式碼或資料庫。從作業系統(CPU排程,記憶體管理,程序排程,磁碟I
【轉】效能測試中如何定位效能瓶頸
原文連結:未知 說明:該篇文章是在UML網站看到,也是那個作者轉載的,無法找到原文,敬請諒解。 軟體測試技術交流群 : 429183023 效能測試的概念是什麼,基本目的是什麼,我想大家都基本清楚,不作詳述,總之,效能測試只是測試過程中的一種方式,幫助我們的功能更好的執行
【蟲師--系列03】效能測試知多少----效能測試分類之我見
來自:http://www.cnblogs.com/fnng/archive/2012/06/09/2543274.html 作者:蟲師 從這一篇開始,蟲師向性能方面發力。翻看自己的部落格,最早的時候熱衷於jmeter,於是寫了幾篇圖文並茂的文章(其實,主要是操作截圖
【蟲師--系列06】效能測試知多少---響應時間
來自:http://www.cnblogs.com/fnng/archive/2012/07/01/2571990.html 作者:蟲師 在上一節中,我們講到吞吐量,做為一個使用者你可以對吞吐量毫不關心,但響應時間卻是使用者感受系統性能的主要體現。 從使用者
【測試設計】使用jenkins 插件Allure生成漂亮的自動化測試報告(轉)
cnblogs 代碼 文件中 odin 方便 感受 https 好用 fig 閱讀目錄 前言 Allure介紹 環境搭建 測試腳本準備 構建Jenkins任務 Allure Report 測試報告 歡迎轉載,也請在明顯位置註明出處 :htt
【親測】Appium測試Android混合應用時,第二次切換到WebView失敗
源碼 drivers asc 切換 ole setup client module already 要解決的問題:Appium測試Android混合應用時,第二次切換到WebView時失敗 原因分析:在用Appium測試Android混合應用時,當程序第一次切換到WebV
【軟體工程】軟體測試
前言 軟體測試,相當於建築立面的監工,監工要比干活的知識面要廣。 一、(一)軟體測試的內容 軟體測試不光是測試我們程式設計師所編寫的軟體,還有我們寫的文件,程式的介面,執行的環境等。 (二)軟體測試的目的 1、軟體測試是程式的執行過程,目的在於發現錯誤 2、好的測試用例是
【劉文彬】【原始碼解讀】EOS測試外掛:txn_test_gen_plugin.cpp
原文連結:醒者呆的部落格園,https://www.cnblogs.com/Evsward/p/txn_test_gen_plugin.html 本文內容本屬於《【精解】EOS TPS 多維實測》的內容,但由於在編寫時篇幅過長,所以我決定將這一部分單獨成文撰寫,以便於理解。