小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

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

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

第一時(shí)間獲取測(cè)試技術(shù)干貨!

往期性能專題:

性能專題:一文搞懂性能測(cè)試常見指標(biāo)

性能專題:一文搞懂,性能測(cè)試指標(biāo)評(píng)估方法

性能專題:性能測(cè)試實(shí)施全過程指南

閱讀全文需7分鐘,作為性能工具實(shí)戰(zhàn)開篇,請(qǐng)認(rèn)真讀完。

1. 前言

在上一篇性能專題的文章:性能專題:性能測(cè)試實(shí)施全過程指南,已提前劇透告知了,從本篇開始,將結(jié)合服務(wù)端性能測(cè)試的兩款常用工具進(jìn)行實(shí)戰(zhàn)操作介紹:Jmeter和Locust。 

就服務(wù)端性能測(cè)試而言,工具選擇性上面,Jmeter的選擇熱度和網(wǎng)上已有的學(xué)習(xí)資料明顯高于Locust,也正因如此,本篇計(jì)劃會(huì)以Locust工具系列的實(shí)戰(zhàn)介紹優(yōu)先,算是彌補(bǔ)目前市面上Locust學(xué)習(xí)資料較少的空缺。

整個(gè)Locust系列連載內(nèi)容目錄大綱如圖1所示,每篇具體的名稱和內(nèi)容后續(xù)可能會(huì)有所調(diào)整,最終以公眾號(hào)發(fā)表的為準(zhǔn):

圖1 內(nèi)容大綱

2. 開篇介紹

在學(xué)習(xí)任何一款新工具之前,首先至少要先了解搞清楚這款工具的“哲學(xué)三問”:我是誰(是什么),我從哪里來(為了解決什么問題),我將去哪里(具體是如何實(shí)現(xiàn)的)。

關(guān)于第一問:是什么,Locust到底是什么呢?先來看一段官網(wǎng)的介紹,如圖2所示

官網(wǎng)傳送門:https://www./

圖2 Locust官網(wǎng)主頁

在圖2 官網(wǎng)主頁介紹中,有兩句對(duì)Locust的描述:

`An open source load testing tool.`

一個(gè)開源負(fù)載測(cè)試工具。

`Define user behaviour with Python code, and swarm your system with millions of simultaneous users.`

使用 Python 代碼來定義用戶行為。用它可以模擬百萬計(jì)的并發(fā)用戶訪問你的系統(tǒng)。

看到這里,相信讀者對(duì)Locust是什么,有了一個(gè)大致的印象,概括起來:Locust是一款開源的性能負(fù)載測(cè)試工具,且是使用Python代碼來定義用戶行為的。

3. 進(jìn)一步認(rèn)識(shí)Loucst

當(dāng)前在網(wǎng)絡(luò)上針對(duì)Locust的教程比較少,不管是中文還是英文,基本都是介紹安裝方法和簡單的測(cè)試案例演示,對(duì)于較復(fù)雜測(cè)試場景的案例演示卻基本沒有,因此很多工程師都感覺難以將Locust應(yīng)用到實(shí)際的性能測(cè)試工作當(dāng)中。有這類想法的人員,歸根結(jié)底還是在于沒有深入去學(xué)習(xí)了解Locust這款工具。

對(duì)于技術(shù)人而言,學(xué)習(xí)一款新工具,特別還是開源工具,最好的方式就是結(jié)合官網(wǎng)文檔和項(xiàng)目源碼來學(xué)習(xí)。

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

關(guān)于第二問:Locust為了解決什么問題?從前面我們可以得知,官網(wǎng)對(duì)Loucst定位是一款負(fù)載測(cè)試工具。

而Locust一詞英文翻譯過來的意思為蝗蟲,

原作者之所以選擇Locust這個(gè)蝗蟲名字,估計(jì)也是聽過這么一句俗語,“蝗蟲過境,寸草不生”。寓意為:Locust工具生成的并發(fā)請(qǐng)求就跟一大群蝗蟲一般,對(duì)我們的被測(cè)系統(tǒng)發(fā)起攻擊,并以此檢測(cè)系統(tǒng)在高并發(fā)壓力下是否能正常運(yùn)轉(zhuǎn)。

在官方文檔中,關(guān)于Locust介紹有這樣一段描述

通過上述官網(wǎng)對(duì)Locust的介紹,可以進(jìn)一步加深認(rèn)識(shí)Locust:它是一款開源的分布式負(fù)載測(cè)試工具,使用Python代碼定義用戶行為,完全基于事件驅(qū)動(dòng),在模擬并發(fā)時(shí),Locust基于gevent協(xié)程、非阻塞IO來實(shí)現(xiàn)網(wǎng)絡(luò)層的并發(fā)請(qǐng)求,可以實(shí)現(xiàn)單機(jī)模擬生成較高的并發(fā)壓力。

4. Locust特點(diǎn)、實(shí)現(xiàn)

Locust是使用Python語言編寫實(shí)現(xiàn)的開源性能測(cè)試工具,具有簡潔、輕量、高效的優(yōu)點(diǎn),除此之外,還具備如下特點(diǎn)。


主要特點(diǎn)如下:

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

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

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

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

  • Hackable,可定制性較高。

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

了解過性能測(cè)試的同學(xué),應(yīng)該都清楚,實(shí)現(xiàn)性能測(cè)試,其中有兩個(gè)關(guān)鍵

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

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

關(guān)于第一點(diǎn),盡可能模擬到真實(shí)用戶行為:我們從上述介紹中可以得知,在Locust中,測(cè)試場景皆是采用純Python腳本進(jìn)行描述的。對(duì)于最常見的HTTP(S)協(xié)議的系統(tǒng),Locust采用的是Python的Requests庫作為客戶端,而對(duì)于其它協(xié)議類型的系統(tǒng),Locust也提供了接口,我們只需要采用Python編寫對(duì)應(yīng)的請(qǐng)求客戶端。換而言之,只要你具備了Python編碼能力,并且熟悉業(yè)務(wù)流程,就能很容易的在Locust中通過Python腳本實(shí)現(xiàn)模擬到真實(shí)用戶行為。

對(duì)于第二點(diǎn),如何實(shí)現(xiàn)有效的高并發(fā):

LoadRunner 和 Jmeter 這類采用進(jìn)程和線程的測(cè)試工具,都很難在單機(jī)上模擬出較高的并發(fā)壓力。而Locust 的并發(fā)機(jī)制摒棄了進(jìn)程和線程,基于事件驅(qū)動(dòng),采用gevent提供的非阻塞IO和coroutines協(xié)程機(jī)制。而協(xié)程避免了系統(tǒng)級(jí)資源調(diào)度,由此可以大幅提高單機(jī)的并發(fā)能力。并且Locust支持分布式多機(jī)聯(lián)合測(cè)試,從而可以實(shí)現(xiàn)極高的并發(fā)數(shù)。

6. 小結(jié)

介紹到這里,相信讀者們對(duì)Locust已經(jīng)有了一定的認(rèn)識(shí),總結(jié)歸納成兩點(diǎn):

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

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

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

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多