Python實現效能自動化測試竟然如此簡單

可優發表於2019-07-30

一、思考❓❔

1.什麼是效能自動化測試?

Python實現效能自動化測試竟然如此簡單

  • 效能
    • 系統負載能力
    • 超負荷執行下的穩定性
    • 系統瓶頸
  • 自動化測試
    • 使用程式代替手工
    • 提升測試效率
  • 效能自動化
    • 使用程式碼模擬大批量使用者
    • 讓使用者併發請求
    • 多頁面多使用者併發請求
    • 採集引數,統計系統負載能力
    • 生成報告


2.Python中的效能自動化測試庫?

Python實現效能自動化測試竟然如此簡單

locust庫

  • 使用Python
    • 使用程式碼來建立批量使用者
  • 分散式
    • 可以在多臺伺服器上,進行分散式效能測試
    • 可伸縮性強
  • 穩定、應用廣泛
    • 經得住各種場景下的考驗
    • 基於web ui介面展示測試詳情
    • 能測任何系統



二、基礎操作??

Python實現效能自動化測試竟然如此簡單

1.安裝locust

  • 使用官方pypi源來安裝
    • pip install locustio
  • 使用豆瓣pypi源來安裝(推薦)
    • pip install -i https://pypi.douban.com/simple locustio

安裝成功之後,在cmd控制檯將會新增一條命令,可輸入如下命令檢視:

locust --help


2.基本用法

  • 在專案根目錄下建立locustfile.py檔案

    from locust import Locust, TaskSet, task
    
    
    class MyTasks(TaskSet):
        """
        建立測試任務類,需要繼承TaskSet
        可以新增多個測試任務
        """
        # 每個測試任務,往往會以例項方法的形式來呈現
        # 同時需要使用task裝飾器來裝飾測試任務
        @task
        def one_task(self):
            print("執行一個偉大的測試任務!")
    
    
    class RunTasks(Locust):
        """
        建立執行測試類,需要繼承Locust父類
        """
        task_set = MyTasks   # 指定測試任務類,使用task_set覆蓋父類的類屬性
        min_wait = 2000      # 指定啟動任務間隔的時間範圍(單位毫秒):2~5秒之間
        max_wait = 5000        # 使用min_wait、max_wait覆蓋父類的類屬性
    
  • 執行效能測試

    # 開啟Pycharm Terminal控制檯
    # 執行如下命令:
    locust

    執行之後,控制檯會在本地監聽一個埠

Python實現效能自動化測試竟然如此簡單

a. 程式檔案要命名為 locustfile.py才行

b. 假如命名為one_example.py,則需要這樣執行

locust -f one_example.py

  • 在瀏覽器開啟UI設定介面

    • 預設使用localhost:8089開啟

Python實現效能自動化測試竟然如此簡單

Python實現效能自動化測試竟然如此簡單



三、綜合案例演練??

Python實現效能自動化測試竟然如此簡單

1.編寫自動化測試指令碼

  • 在專案根目錄下建立test_load.py檔案
from locust import HttpLocust, TaskSet, task


class AdminLoadTest(TaskSet):
    """
    建立後臺管理站點壓測類,需要繼承TaskSet
    可以新增多個測試任務
    """
    def login(self):
        """
        登入例項方法
        :return: 
        """
        self.client.post("http://localhost:8088/users/login/",
                         {"user_account": "admin", "password": "123456"})

    def logout(self):
        """
        登出例項方法
        :return:
        """
        self.client.get("http://localhost:8088/users/logout/")

    def on_start(self):
        """
        當任何一個task排程執行之前,
        on_start例項方法會被呼叫
        先登入
        :return:
        """
        self.login()

    def on_stop(self):
        """
        當任何一個task排程執行之後,
        on_stop例項方法會被呼叫
        後登出
        :return:
        """
        self.logout()

    @task
    def admin_index(self):
        """
        對後臺主頁進行壓測
        :return:
        """
        self.client.get("http://localhost:8088/admin/")


class RunLoadTests(HttpLocust):
    """
    建立執行壓測類
    """
    task_set = AdminLoadTest

2.使用命令列執行

  • 開啟Pycharm Terminal控制檯,執行如下命令:

注意:--host引數指定http主機地址,-f引數指定壓測程式檔名

Python實現效能自動化測試竟然如此簡單

3.開啟web ui介面進行配置

設定併發使用者數為10,每5秒建立一個使用者

Python實現效能自動化測試竟然如此簡單

壓測過程截圖

Python實現效能自動化測試竟然如此簡單

美輪美奐的壓測報告

Python實現效能自動化測試竟然如此簡單

壓測失敗詳情

Python實現效能自動化測試竟然如此簡單

下載壓測統計資料

Python實現效能自動化測試竟然如此簡單

下載的壓測統計資料csv檔案

Python實現效能自動化測試竟然如此簡單



六、總結??

Python實現效能自動化測試竟然如此簡單

  • locust做壓測功能極其強大
  • 支援分散式部署
  • 提供的介面簡單
  • 壓測程式碼非常容易編寫
  • 提供UI介面來配置
  • 美觀、詳細的圖表統計

Python實現效能自動化測試竟然如此簡單

相關文章