1. 程式人生 > >【測試設計】效能測試工具選擇:wrk?jmeter?locust?還是LR?

【測試設計】效能測試工具選擇: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測試結果輸出:
image

jmeter

jmeter同樣採用執行緒併發機制,但其主要依靠增加執行緒數提高併發量,當單機模擬數以千計的併發使用者時,對於CPU和記憶體的消耗比較大。與上述wrk相比,jmeter本身具有以下優點和缺點:

優點

①介面視覺化操作,可以使用錄製指令碼方式對較為複雜的使用者流建模,還可以建立斷言來驗證測試行為是否通過;

②表格、圖形、結果樹等多類視覺化資料分析和報告輸出,舉例如下;
jmeter聚合報告及表格檢視結果:
image

③支援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測試結果:
image

總結

本文簡單介紹和對比了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核數一致)時系統性能測試結果最佳,效能波動最小;
image

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 多維實測》的內容,但由於在編寫時篇幅過長,所以我決定將這一部分單獨成文撰寫,以便於理解。