接到一個有關MQTT的性能測試任務,把查找資料到解決問題的過程都記錄、分享下
首先先科普下性能測試中相關術語的解釋及
說到性能測試、負載測試、壓力測試、並發測試,很多人都是混合使用,或者一會叫壓力測試,一會叫並發測試。這些概念除了非測試人員分不清楚,甚至許多專業測試人員也對這些名詞也很模糊
基准性能測試 ,少量用戶進行性能測試,查看相應結果,以此作為一個基准去測試
壓力測試,分為輕、中、高三級壓力,查看測試過程中,在一定飽和狀態下,例如cpu、內存在接近飽和使用情況下,系統能夠處理的會話能力,以及系統是否會出現嚴重問題(如崩潰,死鎖,占用資源無法釋放,錯誤率超過預期的指標),
主要是作為查看系統在一定時間端經歷較高壓力后,再一定時間端內是否能恢復正常
負載測試,通過對被測系統由小到大不斷加壓,直到性能指標(如:平均響應時間、錯誤率、CPU/Mem系統資源占用)達到不滿足預期的情況。
並發測試,並發測試方法通過模擬用戶並發訪問,測試多用戶並發訪問同一個應用、同一個模塊或者數據記錄時是否存在死鎖或其者他性能問題。
穩定性測試,在給系統加載一定業務壓力的情況下,使系統運行一段時間(如7x24小時),以此檢測系統是否穩定。至於給多大的壓力,可以參考負載測試的極限壓力再乘以80%。
測試過程中分為下面幾大點
一、性能測試需求
二、工具插件選型
三、MQTT協議了解
四、性能用例設計
五、性能執行過程監控(nmon)
六、測試結果分析
一、性能測試需求
不管做任何性能測試,首先一定要有一個大概的需求,比如這次我測試的需求就是從MQTT發布消息到服務器處理,最后存入數據庫花費時間不能超過3s
需求一般是產品/客戶/cto 這類人會提出的要求,總之誰讓你測性能,需求來源就從誰那里問
可以參考這位大佬寫的,寫得蠻詳細的,鏈接附上:https://blog.csdn.net/weixin_40906439/article/details/79124028
一般性能需求點的選取
性能測試點的選取
1.發生頻率非常高的(例如:某郵箱核心業務系統中的登錄、收發郵件等業務,它們在每天的業務總量中占到90%以上)
2.關鍵程度非常高的(產品經理認為絕對不能出現問題的,如登錄等)
2.資源占用非常嚴重的(導致磁盤I/O非常大的,例如某個業務進行結果提交時需要向數十個表存取數據,或者一個查詢提交請求時會檢索出大量的數據記錄)
一般的性能需求點:
1、響應速度-比如:API請求的平均響應時間應低於1s, WEB首頁打開速度5s以下,web登陸速度 15s以下。
2、服務支持50萬個在線用戶
3、某接口支持200個用戶同時調用(平均3秒調用一次)
3、計費請求成功率達到99.999%以上。
4、在100個並發用戶的高峰期,郵箱的基本功能,處理能力至少達到10TPS
5、系統能在高於實際系統運行壓力1倍的情況下,穩定的運行12小時
6、這個系統能否支撐200萬的vu(每天登錄系統的人次)
性能的水很深,今天記錄的東西是測試過程中的一個總結,也是查找資料的參考一些大佬寫的博客,有不對的地方,歡迎指正