① Locust:可能是一款最被低估的壓測工具
Locust.io 是一款基於 Python 的開源性能測試工具,其核心在於真實模擬用戶操作並實現有效並發。用戶通過編寫 Python 代碼定義測試用戶的行為,進而模擬百萬級並發用戶訪問。測試過程中,用戶行為由您自定義,並可通過 Web UI 實時監控測試過程。
壓力發生器作為性能測試工具的關鍵組件,需重點關注真實模擬用戶操作和有效並發兩個方面。對比其他主流壓測工具,Locust.io 以其簡潔高效和易用性脫穎而出。
Locust.io 的基本原理涉及三個核心類:HttpLocust、TaskSet、task。HttpLocust 類代表一組模擬用戶,每個實例化用戶對應一個 HttpLocust 類的實例。TaskSet 類則代表用戶行為集合,即實際業務場景測試對應的任務集。每個 HttpLocust 類實例包含指向 TaskSet 的 task_set 屬性,測試開始後,每個模擬用戶會從 TaskSet 中隨機挑選任務執行,並隨機等待特定時間後執行下一個任務。
在 Locust.io 中,方法通過 @task() 裝飾,定義為一個事務。裝飾器的參數用於指定執行權重,權重值越大,虛擬用戶執行該任務的頻率越高。默認權重為1。例如,tasks = {classname:2} 表示每個用戶執行 classname 方法的頻率為2。
Locust.io 的執行原理遵循以下規律:測試啟動後,每個虛擬用戶遵循特定邏輯,依據預先定義的用戶行為集和權重值執行任務,同時在指定的時間間隔內執行下一個任務。
Locust.io 提供了一個易於上手的快速啟動示例。例如,QuickStartUser 繼承自 HttpUser,定義用戶行為集。通過 index() 和 search() 方法訪問特定頁面,使用 @task() 裝飾為任務,權重參數可調整任務執行頻率。
測試結果展示在 Web UI 上,直觀展示性能指標,如響應時間、吞吐量、錯誤率等。通過啟動性能測試,用戶可以訪問 127.0.0.1:8089 並查看結果。測試結束後,用戶可從 UI 中獲取性能數據和優化建議。
在軟體測試領域,Locust.io 提供了一個高效、靈活的性能測試解決方案。通過加入技術交流群,您可以獲取更多資源、與同行交流經驗,並免費參與直播講座和技術沙龍。群內不僅提供了豐富的學習資料,還匯集了自動化測試和性能測試方面的專家,共同推動技術進步。
② web測試中對客戶端和伺服器的性能測試都涉及到什麼
這種就類似於雲計算等後端基礎服務的測試,對於一些大的公司,會有一個專門的團隊來開發這種後端基礎服務,這種服務當然也需要測試人員來保證質量。
這類服務一般都是通過HTTP介面的方式提供給剛才講的WEB/APP的後端使用,所以,第一個要做的也就是介面測試,也就是用Postman等工具做手工測試、用TestNG+HttpClient或者Python的Nose框架做自動化測試。
不過,對於這類後端服務來說,介面只是暴露給外用的部分,內部邏輯通常是非常復雜的,所以,除了針對介面做測試之外,測試人員還需要細致地了解這些服務端產品的技術框架及技術實現,需要了解到模塊的級別,對於系統框架圖、時序圖等都有很好的理解。針對這些理解去設計用例,再跟開發一起討論如何實現用例。
如果這種基礎服務用了某一個開源軟體,那通常也需要測試人員能關注社區的進展,並把我們發現的Bug及解決方案等推到社區,為社區做貢獻。
除了介面測試之外,在我們公司,異常測試、穩定性測試、性能測試也是服務端測試必備的測試類型。
異常測試會模擬各種異常情況,比如硬體異常-機器掛掉的情況下能否啟動備機、硬碟掛掉的情況下是否會丟失數據;網路異常-網路忽然斷掉、或者網路流量變小的情況;系統異常-操作系統忽然掛掉的情況。這些極端的情況出現的時候,我們需要驗證數據有沒有丟、能不能盡快啟動備機對外提供服務、系統狀態有沒有異常等。我們會採用各種方式或者工具來模擬這些異常,比如用TrafficControl工具來控制網路流量。
穩定性測試,就是模擬系統在7*24的運行下會不會出問題,一般會用介面測試或者性能測試用例不斷地跑,在運行期間,我們會模擬各種情況,比如說負載的變化、系統的各種干擾等。可以用ChaosMonkey等工具來進行這類測試。
性能測試,其實細分起來會有各種類型,比如負載測試、壓力測試、配置測試、甚至還有線上壓測、容量規劃等。最常規的性能測試,一般是先規定一個系統需要承受的壓力,比如說,某一個系統,1個小時之內會有1W單的單子,那基於這個需求我們分析伺服器後端需要承受的壓力,分析出來以後,就寫性能測試腳本,然後逐漸增加壓測的力度,直到超過這個預定的壓力。通常在這個測試過程中會發現各種問題,比如資料庫索引沒有建、線程池太小、系統異常等。需要解決了之後再加大壓力測試。也是用Grinder/JMeter等工具來進行性能測試,不過難的不是這些工具的使用,而是發現問題以後的定位。
對於這種後端服務的測試人員來說,技術上的要求是挺高的,需要有較好的編程能力,需要對資料庫、操作系統等機制有很好的了解才行。