性能測試:什么是Locust

什么是Locust

Locust是一個容易使用、分布式的壓力測試工具。它是用于網(wǎng)站壓力測試(或其它系統(tǒng))并找出多少用戶一個系統(tǒng)可以承載。

在測試過程中,策略就是一個Locust的蠕蟲將會攻擊你的網(wǎng)站。每一個locust的行為(或你使用的測試用戶)是你自己定義的,并且蠕蟲進程從一個網(wǎng)頁視圖中被實時監(jiān)測。這樣會幫助你來實現(xiàn)測試,在真實用戶使用前定義系統(tǒng)的瓶頸。

Locust是完全基于事件的,因此可以在單臺機器中支持數(shù)以千計的用戶在線。和其它基于事件的程序相比較,它是不需要使用回調的。相反,它通過gevent使用輕量級的進程。每一個locust測試你的網(wǎng)站時,實際上是真實的在內部運行它自己的進程(或greenlet,準確的說)。這樣就允許你不使用復雜的回調方法,而是使用Python編寫復雜的場景。

特性

  • 使用純Python腳本編寫測試場景

    不需要笨重的UI或臃腫的XML,只需要你平時編寫的代碼即可。使用協(xié)和來代替回調,你的代碼看起來更像正常的Python代碼塊。

  • 分布式 & 大量級 - 支持數(shù)以千計的用戶

    Locust支持跨多臺機器來運行壓力測試。當然由于基于事件,一個Locust節(jié)點也可以在單進程下支持好幾千用戶。這背后的原因是即使你模擬了這么多用戶,但并不是所有的用戶都是活躍在攻擊你的系統(tǒng)。通常,用戶是空閑的,在等待下一次的動作。每秒的請求 != 在線用戶數(shù)。

  • 基于Web的UI

    Locust有一個整潔的 HTML + JS 用戶交互界面,用于實時展示對應的測試明細。并且,由于UI是基于Web的,所以它是跨平臺并容易擴展的。

  • 可測試任何系統(tǒng)

    即使Locust是面向Web的,但它可用于測試大部分系統(tǒng)。只需要針對你要測試的系統(tǒng)寫一個client,再使用Locust來壓測它。真的很容易!

  • 可改造的

    Locust是一個非常小巧并可改造的,并且我們計劃一直保持這樣。所有重量級的事件I/O和協(xié)程都被委托給gevent。容易改造的測試工具是我們創(chuàng)建Locust的初衷。

背景

Locust被創(chuàng)建是因為我們要解決已經(jīng)存在的問題。沒有一個對于來說可以解決正確的問題,它們沒找到核心點。我們嘗試了JMeterTsung。這兩個工具使用起來都很不錯;在工作中,我們多次使用了前者來測試基準。JMeter。JMeter自帶了UI交互,這一秒你可能認識這是一件好事。但你很快就會認識到,這是一個PITA,通過一些點擊界面箅編碼測試場景。第二,JMeter是基于線程的。這就是所有你想模擬的用戶,你需要一個獨立的線程。不用說,在一臺機器實現(xiàn)幾千用戶是相當產(chǎn)靈活的。

另一方面,由于是使用Erlang編寫的,Tsung沒有線程問題。它通過使用BEAM自身來實現(xiàn)輕量級線程,并很容易將量級提升。但,當定義測試場景時,Tsung和JMeter一樣被限制了。它提供一個基于XML的動態(tài)描述語言來定義,在測試時的用戶行為。我猜,你可以想像編碼實現(xiàn)它的榮耀。當完成你的post請求并從測試日志中生成日志,展示任何圖形排序或報告。接下來你就可以理解測試是怎么運行的。

無論如何,在創(chuàng)建Locust時,我們已經(jīng)嘗試羅列這些問題。希望上面的痛點都不存在。

我猜,你會說我們真的只是羅列了我們的好處。我們希望盡可能的實現(xiàn)一些有用的。

作者

許可證

在MIT許可證下的開源許可(查看許可證明細)

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

相關閱讀更多精彩內容

友情鏈接更多精彩內容