一款hackable的壓測工具Locust(一)

本文章轉(zhuǎn)載于搜狗測試

一.介紹

Locust是一個(gè)用于可擴(kuò)展的,分布式的,性能測試的,開源的,用Python編寫框架/工具,它非常容易使用,也非常好學(xué)。它的主要思想就是模擬一群用戶將訪問你的網(wǎng)站。每個(gè)用戶的行為由你編寫的python代碼定義,同時(shí)可以從Web界面中實(shí)時(shí)觀察到用戶的行為。

官網(wǎng)地址:http://locust.io/

二.安裝

1.確保你的python環(huán)境,ok。

2.確保有pipy 或者easy_install

3.pipinstalllocustio ? ? ?或者 ? ??easy_installlocustio

如果出現(xiàn)以下的錯(cuò)誤,恭喜你 pip版本低。(不小心暴露華安真名?)

升級:python -m pip install -U pip

4.使用locust --help 沒出錯(cuò)就恭喜你好了,但是實(shí)際上是會出錯(cuò)的。。。。。。。

會出現(xiàn),這個(gè): ???locust failed to create process

好吧,這個(gè)時(shí)候網(wǎng)上找到文檔是這樣的:https://segmentfault.com/q/1010000005615543

是pip的bug,去python的安裝目錄里面的script里面的 ?locust-script.py 文件中的第一行 ?用引號擴(kuò)起來就行了。具體圖文看連接吧。

5.然后繼續(xù)locustio --help 然后出現(xiàn)

ImportError: No module named 'core'

解決辦法:

pip uninstall locustio

pip install git+git://github.com/locustio/locust.git@master#egg=locustio

6.locust --help 成功

以上是window的安裝,Linux有坑我也搞定了,如果有人遇到,希望華安伸出愛的小手,私聊我或者加群在群中@我,群號:459645679

三、使用篇

先上代碼:壓測123.sogou.com ? //噓,大家不要聲張,我會被開的

from locust import HttpLocust, TaskSet, task

class WebsiteTasks(TaskSet):

def on_start(self):

self.client.post("/login", { ? //隨便寫的,其實(shí)沒有登錄

"username": "test",

"password": "123456"

})

@task(2)

def index(self):

self.client.get("/yx/")

@task(1)

def about(self):

self.client.get("/yx/yeyou")

class WebsiteUser(HttpLocust):

task_set = WebsiteTasks

host = "http://123.sogou.com"

min_wait = 1000

max_wait = 5000

解釋:

在這個(gè)示例中,定義了針對http://123.sogou.com網(wǎng)站的測試場景:先模擬用戶登錄系統(tǒng)(假的,實(shí)際沒有登錄),然后隨機(jī)地訪問首頁(/yx/yeyou)和關(guān)于頁面(/yx/),請求比例為1:2;并且,在測試過程中,兩次請求的間隔時(shí)間為1~5秒間的隨機(jī)值。

那么,如上Python腳本是如何表達(dá)出以上測試場景的呢?

從腳本中可以看出,腳本主要包含兩個(gè)類,一個(gè)是WebsiteUser(繼承自HttpLocust,而HttpLocust繼承自Locust),另一個(gè)是WebsiteTasks(繼承自TaskSet)。事實(shí)上,在Locust的測試腳本中,所有業(yè)務(wù)測試場景都是在Locust和TaskSet兩個(gè)類的繼承子類中進(jìn)行描述的。

那如何理解Locust和TaskSet這兩個(gè)類呢?

簡單地說,Locust類就好比是一群蝗蟲,而每一只蝗蟲就是一個(gè)類的實(shí)例。相應(yīng)的,TaskSet類就好比是蝗蟲的大腦,控制著蝗蟲的具體行為,即實(shí)際業(yè)務(wù)場景測試對應(yīng)的任務(wù)集。

這個(gè)比喻可能不是很準(zhǔn)確,下次的分享我會分別對Locust和TaskSet兩個(gè)類進(jìn)行詳細(xì)介紹。

這里先介紹簡單的使用。

運(yùn)行:

locust -f demo.py ?//進(jìn)入到文件的目錄下面,-f參數(shù)下面緊跟腳本的名字

[2017-08-01 21:31:26,334] Leos-MacBook-Air.local/INFO/locust.main: Starting web monitor at *:8089

[2017-08-01 21:31:26,334] Leos-MacBook-Air.local/INFO/locust.main: Starting Locust 0.8a2

登錄瀏覽器:localhost:8089

點(diǎn)擊圖形可以看到運(yùn)行的情況: ?//噓,不要聲張,為了給你舉個(gè)例子,我這是在作死,要壓去壓hao123.com,他耐壓(c)。

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

相關(guān)閱讀更多精彩內(nèi)容

  • Locust文件就是一般的Python文件。唯一的需求就是它至少需要一個(gè)繼承于Locust的類. Locust類 ...
    Yuan_Jie閱讀 4,175評論 0 7
  • 本文章轉(zhuǎn)載于搜狗測試 上一篇我們講了性能測試的測試工具,當(dāng)時(shí)對大家推薦了性能測試工具Locust,上期評論時(shí)候大家...
    夜境閱讀 1,619評論 0 0
  • 簡介 Locust是一個(gè)使用Python編寫的可擴(kuò)展、分布式的開源性能測試工具。 優(yōu)點(diǎn) 相比于Jmeter、Loa...
    憶江南_1569閱讀 2,879評論 1 6
  • Locust是什么? Locust 是一個(gè)開源負(fù)載測試工具。使用 Python 代碼定義用戶行為,也可以仿真百萬個(gè)...
    zychen143閱讀 7,407評論 1 2
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,094評論 25 709

友情鏈接更多精彩內(nèi)容