第一時間獲取測試技術(shù)干貨! 往期性能專題: 閱讀全文需7分鐘,作為性能工具實戰(zhàn)開篇,請認真讀完。 1. 前言在上一篇性能專題的文章:性能專題:性能測試實施全過程指南,已提前劇透告知了,從本篇開始,將結(jié)合服務端性能測試的兩款常用工具進行實戰(zhàn)操作介紹:Jmeter和Locust。 就服務端性能測試而言,工具選擇性上面,Jmeter的選擇熱度和網(wǎng)上已有的學習資料明顯高于Locust,也正因如此,本篇計劃會以Locust工具系列的實戰(zhàn)介紹優(yōu)先,算是彌補目前市面上Locust學習資料較少的空缺。 整個Locust系列連載內(nèi)容目錄大綱如圖1所示,每篇具體的名稱和內(nèi)容后續(xù)可能會有所調(diào)整,最終以公眾號發(fā)表的為準: 圖1 內(nèi)容大綱 2. 開篇介紹在學習任何一款新工具之前,首先至少要先了解搞清楚這款工具的“哲學三問”:我是誰(是什么),我從哪里來(為了解決什么問題),我將去哪里(具體是如何實現(xiàn)的)。 關(guān)于第一問:是什么,Locust到底是什么呢?先來看一段官網(wǎng)的介紹,如圖2所示 官網(wǎng)傳送門:https://www./ 圖2 Locust官網(wǎng)主頁 在圖2 官網(wǎng)主頁介紹中,有兩句對Locust的描述: `An open source load testing tool.` 一個開源負載測試工具。 `Define user behaviour with Python code, and swarm your system with millions of simultaneous users.` 使用 Python 代碼來定義用戶行為。用它可以模擬百萬計的并發(fā)用戶訪問你的系統(tǒng)。 看到這里,相信讀者對Locust是什么,有了一個大致的印象,概括起來:Locust是一款開源的性能負載測試工具,且是使用Python代碼來定義用戶行為的。 3. 進一步認識Loucst當前在網(wǎng)絡上針對Locust的教程比較少,不管是中文還是英文,基本都是介紹安裝方法和簡單的測試案例演示,對于較復雜測試場景的案例演示卻基本沒有,因此很多工程師都感覺難以將Locust應用到實際的性能測試工作當中。有這類想法的人員,歸根結(jié)底還是在于沒有深入去學習了解Locust這款工具。 對于技術(shù)人而言,學習一款新工具,特別還是開源工具,最好的方式就是結(jié)合官網(wǎng)文檔和項目源碼來學習。
關(guān)于第二問:Locust為了解決什么問題?從前面我們可以得知,官網(wǎng)對Loucst定位是一款負載測試工具。 而Locust一詞英文翻譯過來的意思為蝗蟲, 原作者之所以選擇Locust這個蝗蟲名字,估計也是聽過這么一句俗語,“蝗蟲過境,寸草不生”。寓意為:Locust工具生成的并發(fā)請求就跟一大群蝗蟲一般,對我們的被測系統(tǒng)發(fā)起攻擊,并以此檢測系統(tǒng)在高并發(fā)壓力下是否能正常運轉(zhuǎn)。 在官方文檔中,關(guān)于Locust介紹有這樣一段描述: 通過上述官網(wǎng)對Locust的介紹,可以進一步加深認識Locust:它是一款開源的分布式負載測試工具,使用Python代碼定義用戶行為,完全基于事件驅(qū)動,在模擬并發(fā)時,Locust基于gevent協(xié)程、非阻塞IO來實現(xiàn)網(wǎng)絡層的并發(fā)請求,可以實現(xiàn)單機模擬生成較高的并發(fā)壓力。 4. Locust特點、實現(xiàn)Locust是使用Python語言編寫實現(xiàn)的開源性能測試工具,具有簡潔、輕量、高效的優(yōu)點,除此之外,還具備如下特點。
關(guān)于第三問:具體是如何實現(xiàn)的? 了解過性能測試的同學,應該都清楚,實現(xiàn)性能測試,其中有兩個關(guān)鍵:
關(guān)于第一點,盡可能模擬到真實用戶行為:我們從上述介紹中可以得知,在Locust中,測試場景皆是采用純Python腳本進行描述的。對于最常見的HTTP(S)協(xié)議的系統(tǒng),Locust采用的是Python的Requests庫作為客戶端,而對于其它協(xié)議類型的系統(tǒng),Locust也提供了接口,我們只需要采用Python編寫對應的請求客戶端。換而言之,只要你具備了Python編碼能力,并且熟悉業(yè)務流程,就能很容易的在Locust中通過Python腳本實現(xiàn)模擬到真實用戶行為。 對于第二點,如何實現(xiàn)有效的高并發(fā): LoadRunner 和 Jmeter 這類采用進程和線程的測試工具,都很難在單機上模擬出較高的并發(fā)壓力。而Locust 的并發(fā)機制摒棄了進程和線程,基于事件驅(qū)動,采用gevent提供的非阻塞IO和coroutines協(xié)程機制。而協(xié)程避免了系統(tǒng)級資源調(diào)度,由此可以大幅提高單機的并發(fā)能力。并且Locust支持分布式多機聯(lián)合測試,從而可以實現(xiàn)極高的并發(fā)數(shù)。 6. 小結(jié)介紹到這里,相信讀者們對Locust已經(jīng)有了一定的認識,總結(jié)歸納成兩點:
|
|
來自: 測試開發(fā)技術(shù) > 《待分類》