1. 程式人生 > >Locust效能測試學習總結

Locust效能測試學習總結

Locust學習總結分享

簡介:  

 Locust是一個用於可擴充套件的,分散式的,效能測試的,開源的,用Python編寫框架/工具,它非常容易使用,也非常好學。它的主要思想就是模擬一群使用者將訪問你的網站。每個使用者的行為由你編寫的python程式碼定義,同時可以從Web介面中實時觀察到使用者的行為。

Locust完全是事件驅動的,因此在單臺機器上能夠支援幾千併發使用者訪問。與其它許多基於事件的應用相比,Locust並不使用回撥,而是使用gevent,而gevent是基於協程的,可以用同步的方式來編寫非同步執行的程式碼。每個使用者實際上執行在自己的greenlet中。

特點:

①用簡單python

語言編寫測試指令碼,非常簡單輕便。不需要笨重的UI和臃腫的xml程式碼,基於協同而非回撥。

②分散式的,可擴充套件性的,可模擬上百萬使用者。Locust支援多機器的效能測試,每臺機器可以模擬上千使用者,當然這可以控制的,

Locust有一個整潔的HTML+JS的使用者介面,實時顯示相關測試細節。由於使用者介面是基於網路的,它是跨平臺的和容易擴充套件。

④可以測試任何系統,儘管Locust是基於網站的,但它幾乎可以測試任何系統,只要你寫一個客戶端。

安裝:

Locust可以通過pip或者easy_install安裝:

pip install locustio

或者

easy_install locustio

安裝完Locust後,shell命令locust就可以使用了,可以檢視locust命令有哪些選項:

(注意,要確保你安裝好了python,版本必須是2.6以上的,但不能是3.0版以上的,3.0以上的改動好大,還沒法相容)

locust --help

如果打算以分散式模式執行Locust,建議同時安裝pyzmq(一種通訊佇列)

pip install pyzmq

或者

easy_install pyzmq

windows上安裝:

下載二進位制安裝包,然後按照提示安裝

需要注意的是,當需要大規模的測試時,安裝在Linux上的效能比windows上的好。

在蘋果電腦上安裝:

先安裝Homebrew

安裝libevent

brew install libevent                                                      

參照在linux上的安裝過程。

增加開啟檔案限制的最大數量:

在每一個HTTP連線的機器上開啟一個新檔案(技術檔案描述符)。作業系統可以設定一個可以開啟的檔案的最大數量的下限。如果限制小於模擬使用者的數量,在測試時,會發生故障。增加作業系統的預設最大數量的檔案限制到一個數字高於模擬使用者數的數量,才能達到你想要的測試,具體操作參考本機的作業系統。

快速啟動:

下面是一個簡單的列子,保持為python檔案,檔名隨意

fromlocustimportHttpLocustTaskSet

deflogin(l):

l.client.post("/login", {"username":"ellen_key""password":"education"})

defindex(l):

l.client.get("/")

defprofile(l):

l.client.get("/profile")

classUserBehavior(TaskSet):

tasks= {index:2profile:1}

defon_start(self):

login(self)

classWebsiteUser(HttpLocust):

task_set=UserBehavior

min_wait=5000

max_wait=9000

這個幾行短短的程式碼就是一個完成的測試指令碼。定義了兩個類,一個User Behavior類,繼承了TaskSet類,用於定義測試任務的,給屬性tasks增加了兩個任務,index函式和profile函式,這些人物被執行,然後返回執行時間,正常情況下,是在下面的最小時間和最大時間之間,從on_start 開始,就像javamain函式一樣,是任務開口,然後隨機的挑選任務,通過client(相當於一個Httpsession)的方法執行http請求,但是會按照設定的比率來執行。Tasks屬性把上面定義的函式變成任務,它是一個dict型別。相當於javamap型別。

一個WebsiteUser類,繼承了HttpLocust類,這個類用於代表使用者,生成一個例項,為每個每個模擬使用者,傳送http請求和設定測試引數,Task_set屬性,它是唯一必須要有的,它指向Task Set類,定義使用者的行為,請求等待最小時間min_wait和請求等待最大時間max_wait屬性,單位是毫秒。,weight屬性指定使用者的執行的比率,host屬性是測試的應用的網址。

注意最大時間和最小時間屬性可以在locust類中定義,也可以在task set類中定義,完全是一樣的

下面是一種更簡單的定義task的方法,用@task 構造器。下面的程式碼和上面的效果是一樣的:但這是順序執行任務的,第一種是隨機挑選任務

fromlocustimportHttpLocustTaskSettask

classUserBehavior(TaskSet):

defon_start(self):

""" on_start is called when a Locust start before any task is scheduled """

self.login()

deflogin(self):

self.client.post("/login", {"username":"ellen_key""password":"education"})

    @task(2)

defindex(self):

self.client.get("/")

    @task(1)

defprofile(self):

self.client.get("/profile")

classWebsiteUser(HttpLocust):

task_set=UserBehavior

min_wait=5000

max_wait=9000

TaskSet還可以巢狀:參考下面的程式碼

第一種:

classForumPage(TaskSet):

    @task(20)

defread_thread(self):

pass

    @task(1)

defnew_thread(self):

pass

    @task(5)

defstop(self):

self.interrupt()

classUserBehaviour(TaskSet):

tasks= {ForumPage:10}

    @task

defindex(self):

pass

第一種需要注意的是interrupt這個函式,如果沒有這個函式locust就會一直執行formpage這個任務,只有通過這個函式,才能跳出來。執行formpage之外的函式。

第二種:

classMyTaskSet(TaskSet):

    @task

classSubTaskSet(TaskSet):

        @task

defmy_task(self):

pass

執行Locust

locust -f ../locust_files/上面的檔名.py --host=http://example.com

              程式碼存放地址                           主機的名字和應用

分散式多處理器的Locust執行:

主處理器,負責分發任務的

locust -f ../locust_files/上面的檔名.py --master --host=http://example.com

--master-port=8888(預設的是8080)

從處理器,負責執行程式碼指令碼的

llocust -f ../locust_files/上面的檔名.py --slave --master-host=192.168.0.100 --host=http://example.com --master-bind-host=8888

開啟Locust web 介面

由於example是在本地的,所以ip也是本地的

需要輸入模擬多少個使用者數和每秒啟動多少個使用者,就是併發數。

相關推薦

Locust效能測試學習總結

Locust學習總結分享 簡介:    Locust是一個用於可擴充套件的,分散式的,效能測試的,開源的,用Python編寫框架/工具,它非常容易使用,也非常好學。它的主要思想就是模擬一群使用者將訪問你的網站。每個使用者的行為由你編寫的python程式碼定義,同時可以從We

python學習筆記(locust效能測試模組)

  locust是基於python的效能測試工具、支援python2.7及其以上的版本、相對於主流的LR與Jmeter工具使用的方式不一樣、locust是通過編寫python程式碼來完成效能測試的。 通過LR與Jmeter都是一個特定平臺、我們只能在這個平臺上使用、侷限

接口測試學習總結

ast ews water pos 技術分享 text 轉載 jsb dsm 以下為博主學習接口測試時所做的總結 使用工具以及編程語言根據個人擅長選擇,工具與編程語言只是達到目的的輔助,主要是測試的思想以及對業務的熟悉程度,其中或有遺漏持續豐富填補中,歡迎指正.

效能測試學習(一)--基礎知識點

      最近在學習效能測試,整理了下一些知識點。   首先從ISO9216質量模型切入,這個模型展示了去完整測評一個軟體的時候,需要從哪些維度去考慮。如下圖所示,一般需要從功能性、可靠性、易用性、效率、維護性、可移植性這6個維度去測評。軟體的效能測試就是從效率這一維度去測評

效能測試學習路線

1.效能測試技能樹 (1)測試工具: loadrunner jmeter:工具+手工程式自動化指令碼 功能自動化迴歸,API 。 ui測試 難點:使用者和業務模型分析搭建,根據使用者和業務模型開發合適的指令碼,合適的需求分析轉化為場景設計,大容量系統的資料生成和使用,大型系統的效能壓力負載和

伺服器效能測試實戰總結

Table of Contents 伺服器背景介紹 效能測試方法 測試結果和分析 第一個問題:service crash重啟的問題 第二個問題:Tomcat JDBC Connection not enough的問題 第三個問題: Postgresql too many

學習總結——JMeter做http介面功能測試 學習總結——JMeter做http介面功能測試

JMeter對各種型別介面的測試 預設做介面測試前,已經給出明確的介面文件(如,http://test.nnzhp.cn/wiki/index.php?doc-view-59);本地配好了JMeter 3.x的執行環境; 開啟JMeter,新增一個執行緒組和該執行緒組的檢視結果樹。以下的幾種介面請求我們都

Locust壓力測試使用總結

上次做介面壓力測試前一直研究使用jmeter,本以為可以拿來使用了,但是真正進行併發介面時,發現jmeter在單機下併發1000個時,臺式電腦單機資源早就被使用完,整個jmeter卡得死死的,結果那晚使用jmeter併發失敗,幸好之前也準備了另外一個壓測小公舉Apache

locust效能測試安裝

Locust簡介 Locust是一款易於使用的分散式使用者負載測試工具。它用於對網站(或其他系統)進行負載測試,並確定系統可以處理多少併發使用者。這個想法是,在測試期間,一群蝗蟲(Locust)會攻擊你的網站。您定義了每個蝗蟲Locust(或測試使用者)的行為,並且實時地從Web UI監視群集過程。這將有助

locust效能測試(無 web ui 模式)

前言 前面是在web頁面操作,需要手動的點start啟動,結束的時候也需要手工去點stop,沒法自定義執行時間,這就不太方便。locust提供了命令列執行的方法,不啟動web頁面也能執行,這就是no-web模式啟動 無web-UI模式 在沒有Web UI的情況下執行locust - 可以開啟cmd 通過

locust效能測試使用方法

1 from locust import HttpLocust, task, TaskSet 2 import os 3 4 5 ''' 6 -f 指定效能測試指令碼檔案 7 --host 指定被測試應用的URL的地址 8 --port 埠設定,預設8089 9 --no-web

python locust 效能測試:HttpSession

  官網解釋:用於在請求之間執行Web請求和保留(會話)cookie的類(以便能夠登入和退出網站);記錄每個請求,以便locust可以顯示統計資訊; from locust import TaskSet, task, HttpLocust, Locust from locust.clients imp

python locust 效能測試:巢狀

  TaskSet類和TaskSequence類可用於巢狀<可以在TaskSequences中巢狀TaskSets,反之亦然>; from locust import TaskSet, task, HttpLocust, TaskSequence, seq_task im

python locust 效能測試:HOOKS<鉤子方法>

為locust中不同型別的事件,提供的鉤子方法; from locust import TaskSet, task, events, Locust from locust.clients import HttpSession import subprocess import random, trace

效能測試學習效能瓶頸分析路線

做效能測試已經有一兩年時間了,一直都在胡亂碰撞,東學西學,都是一些表面的東西,很少想過把它們連貫起來。今天根據自己的理解寫一下效能測試到一定階段需要站到一個什麼樣子的高度去看待效能這個問題。 很多企業招聘都只寫效能測試,會使用LR,jmeter工具。其

jmeter-效能測試學習筆記1—結果分析

轉載地址:https://blog.csdn.net/x83853684/article/details/80403190在網上收集了很多jmeter工具做效能測試,但還是不怎麼了解去分析效能測試的結果,然後自己用現在做的專案做了一個簡單的的壓力測試,就是同一時間多個使用者進

Locust 效能測試之(一)環境搭建

前言:眾所周知,效能測試工具眾多,譬如:loadrunner和Jemeter工具,都是非常強大的效能測試工具,並且在行業內有很好的使用者口碑,作者為什麼要講解Locust 呢?其實原因源於一個那就是:好奇心。官網:https://locust.io/An open sourc

jmeter工具效能測試學習筆記-2-多使用者同時訪問多個網頁

接著上一篇的效能測試學習筆記1,發現自己當初做的辦法很蠢,於是在部落格上觀看了很多博主寫的相關資料,發現了更加簡單的方法。測試場景:1、100個使用者在5秒內同時訪問14個頁面2、新增固定計時器:每個網頁之間間隔500毫秒,即上一個網頁訪問結束後,休息500毫秒在訪問下一個網

Locust效能測試

:背景:最近EN5專案中web簽到抽獎,在大併發的情況下,出現問題,之前同事也分享了這個,試下介面併發 1、編寫效能測試指令碼 #coding=utf-8 from locust import HttpLocust,TaskSet,task cla