性能測試:什麼是 Locust

什麼是Locust

Locust是一個容易使用、分佈式的壓力測試工具。它是用於網站壓力測試(或其它系統)並找出多少用戶一個系統能夠承載。html

在測試過程當中,策略就是一個Locust的蠕蟲將會攻擊你的網站。每個locust的行爲(或你使用的測試用戶)是你本身定義的,而且蠕蟲進程從一個網頁視圖中被實時監測。這樣會幫助你來實現測試,在真實用戶使用前定義系統的瓶頸。apache

Locust是徹底基於事件的,所以能夠在單臺機器中支持數以千計的用戶在線。和其它基於事件的程序相比較,它是不須要使用回調的。相反,它經過gevent使用輕量級的進程。每個locust測試你的網站時,其實是真實的在內部運行它本身的進程(或greenlet,準確的說)。這樣就容許你不使用複雜的回調方法,而是使用Python編寫複雜的場景。分佈式

特性

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

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

  • 分佈式 & 大量級 - 支持數以千計的用戶測試

    Locust支持跨多臺機器來運行壓力測試。固然因爲基於事件,一個Locust節點也能夠在單進程下支持好幾千用戶。這背後的緣由是即便你模擬了這麼多用戶,但並非全部的用戶都是活躍在攻擊你的系統。一般,用戶是空閒的,在等待下一次的動做。每秒的請求 != 在線用戶數網站

  • 基於Web的UI編碼

    Locust有一個整潔的 HTML + JS 用戶交互界面,用於實時展現對應的測試明細。而且,因爲UI是基於Web的,因此它是跨平臺並容易擴展的。線程

  • 可測試任何系統日誌

    即便Locust是面向Web的,但它可用於測試大部分系統。只須要針對你要測試的系統寫一個client,再使用Locust來壓測它。真的很容易!

  • 可改造的

    Locust是一個很是小巧並可改造的,而且咱們計劃一直保持這樣。全部重量級的事件I/O和協程都被委託給gevent。容易改造的測試工具是咱們建立Locust的初衷。

背景

Locust被建立是由於咱們要解決已經存在的問題。沒有一個對於來講能夠解決正確的問題,它們沒找到核心點。咱們嘗試了JMeterTsung。這兩個工具使用起來都很不錯;在工做中,咱們屢次使用了前者來測試基準。JMeter。JMeter自帶了UI交互,這一秒你可能認識這是一件好事。但你很快就會認識到,這是一個PITA,經過一些點擊界面箅編碼測試場景。第二,JMeter是基於線程的。這就是全部你想模擬的用戶,你須要一個獨立的線程。不用說,在一臺機器實現幾千用戶是至關產靈活的。

另外一方面,因爲是使用Erlang編寫的,Tsung沒有線程問題。它經過使用BEAM自身來實現輕量級線程,並很容易將量級提高。但,當定義測試場景時,Tsung和JMeter同樣被限制了。它提供一個基於XML的動態描述語言來定義,在測試時的用戶行爲。我猜,你能夠想像編碼實現它的榮耀。當完成你的post請求並從測試日誌中生成日誌,展現任何圖形排序或報告。接下來你就能夠理解測試是怎麼運行的。

不管如何,在建立Locust時,咱們已經嘗試羅列這些問題。但願上面的痛點都不存在。

我猜,你會說咱們真的只是羅列了咱們的好處。咱們但願儘量的實現一些有用的。

做者

許可證

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

相關文章
相關標籤/搜索