|
第一時(shí)間獲取測(cè)試技術(shù)干貨!
往期性能專題: 性能專題:一文搞懂,性能測(cè)試指標(biāo)評(píng)估方法 閱讀全文需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í)。
關(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)。
關(guān)于第三問:具體是如何實(shí)現(xiàn)的? 了解過性能測(cè)試的同學(xué),應(yīng)該都清楚,實(shí)現(xiàn)性能測(cè)試,其中有兩個(gè)關(guān)鍵:
關(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):
|
|
|