Python實現性能自動化測試居然如此簡單

1、思考❓❔

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

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


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

locust庫python

  • 使用Python
    • 使用代碼來建立批量用戶
  • 分佈式
    • 能夠在多臺服務器上,進行分佈式性能測試
    • 可伸縮性強
  • 穩定、應用普遍
    • 經得住各類場景下的考驗
    • 基於web ui界面展現測試詳情
    • 能測任何系統



2、基礎操做🔨🔨

1.安裝locust

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

安裝成功以後,在cmd控制檯將會新增一條命令,可輸入以下命令查看:linux

locust --help


2.基本用法

  • 在項目根目錄下建立locustfile.py文件web

    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

    運行以後,控制檯會在本地監聽一個端口服務器

a. 程序文件要命名爲 locustfile.py才行併發

b. 假如命名爲one_example.py,則須要這樣運行分佈式

locust -f one_example.pypost

  • 在瀏覽器打開UI設置界面性能

    • 默認使用localhost:8089打開



3、綜合案例演練🔨🔨

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參數指定壓測程序文件名測試

3.打開web ui界面進行配置

設置併發用戶數爲10,每5秒建立一個用戶

壓測過程截圖

美輪美奐的壓測報告

壓測失敗詳情

下載壓測統計數據

下載的壓測統計數據csv文件



6、總結💡💡

  • locust作壓測功能極其強大
  • 支持分佈式部署
  • 提供的接口簡單
  • 壓測代碼很是容易編寫
  • 提供UI界面來配置
  • 美觀、詳細的圖表統計

相關文章
相關標籤/搜索