日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

性能專題:Locust工具實戰(zhàn)之開篇哲學三問

 測試開發(fā)技術(shù) 2022-06-18 發(fā)布于廣東

第一時間獲取測試技術(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)文檔和項目源碼來學習。

Locust官方文檔:https://docs./en/stable/Locust官方源碼:https://github.com/locustio/locust

關(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)點,除此之外,還具備如下特點。


主要特點如下:

  • 使用純Python來描述測試腳本、定義用戶行為。

  • 分布式和可擴展,可支持成千上萬的用戶。

  • 基于Web的用戶界面,用戶可以實時監(jiān)控測試腳本運行狀態(tài)。

  • 幾乎可以測試任何系統(tǒng),除了Web HTTP接口外,還可自定義Clients測試其他類型系統(tǒng)。

  • Hackable,可定制性較高。

關(guān)于第三問:具體是如何實現(xiàn)的?

了解過性能測試的同學,應該都清楚,實現(xiàn)性能測試,其中有兩個關(guān)鍵

  • 盡可能模擬到真實用戶行業(yè)。

  • 盡可能模擬更高的(有效)并發(fā)數(shù)。

關(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é)歸納成兩點:

  • Locust是開源,使用Python開發(fā),基于事件,支持分布式并且提供Web UI執(zhí)行測試執(zhí)行和結(jié)果顯示的性能測試工具。它之所以能夠在資源占用方面明顯優(yōu)于Jmeter,一個關(guān)鍵點在于兩者模擬虛擬用戶的方式不同,Jmeter是通過線程來作為虛擬用戶,而Locust借助gevent庫對協(xié)程的支持,相同配置下Locust能支持的并發(fā)用戶數(shù)相對Jmeter可以達到一個數(shù)量級的提升。(其中,gevent是Python下實現(xiàn)協(xié)程的一個第三方庫,通過greenlet來實現(xiàn)協(xié)程,而greenlet是Python的并行處理的一個庫,能夠使系統(tǒng)獲取極高的并發(fā)性能)

  •  Locust作為一款性能測試工具,可以說是它是由Python下的一些庫集成而來。Locust完全基于Python作為編程語言,采用Pure Python描述測試腳本,其中HTTP請求是基于Requests庫,除了HTTP/HTTPS協(xié)議,Locust也可以測其他協(xié)議的系統(tǒng),只需要采用Python調(diào)用對應的庫進行請求描述即可。

    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多