最近做了一次性能測試,雖然已經順利結束了,但是事先沒有做好各個步驟的規划,感覺中間過程稍微有點亂。趁周末時間稍微總結下步驟,提醒下自己~
一、需求分析
首先,為什么要做性能測試?我們要測試系統相關性能是否滿足業務需求?我們有沒有具體的指標?
比如某接口在200TPS下99.99%的接口響應時間小於50ms?
比如某系統上線后每天進來2000萬的數據,當前機器配置下是否能保證系統正常運行?
1、初步判斷這些需求是否有業務數據支撐,是否合理?
2、業務指標合理的情況下,資源指標是什么?
二、業務分析和系統分析
初步判斷性能測試需求后,下面我們要對被測系統的業務功能和系統架構進行分析。
首先我們要了解整體業務功能,了解業務功能各個環節占比和重要程度,關注重點功能。
其次,分析系統架構,搞清楚實現某個功能時接口的調用關系、數據流向;系統是否使用集群、是否使用負載均衡等;了解測試環境和生產環境部署差異。
這些方便我們進一步判斷需求是否合理,同時幫助我們設計性能測試的測試用例和測試方法。
三、編寫性能測試方案
為什么要編寫測試方案?我以前也認為文檔寫起來麻煩,直接測試好了。其實不然,編寫性能測試方案實際是對測試思路、測試方法的整理。
一是有了方案指導之后,測試過程當中相當於有了一份checklist,不慌不忙的執行每一步,減少遺漏和返工,提高效率。
二是對復雜的性能測試,我們編寫完性能測試方案之后邀請開發、架構師等一起對方案進行評審,減少口頭溝通理解上的誤差,方便各方查閱溝通,方便項目留檔。
性能測試方案上除了需要第一、第二步的分析過程和結論,還需要明確一下幾點:
- 第一步的明確測試需求
- 第二步的分析結果,寫清楚業務和架構關系,用於支撐后面的測試方法
- 測試環境,測試機器的CPU/GPU/內存/磁盤大小/磁盤類型/網絡等
- 軟件版本,應用版本、各中間件版本號
- 測試工具
- 測試數據准備,測試數據大小、格式是否合理?測試數據重復是否會對測試結果有影響,是否需要進行參數化處理以及如何參數化等
- 測試用例,通常是基於場景測試測試用例(單業務場景測試、多業務混合場景測試);明確各場景監控對象(比如tps,耗時,CPU,內存,I/O等);核實業務最后產生的業務數據是否准確(比如寫庫接口,壓測產生的數據與請求數是否一致,寫庫時間是否延時等等)
- 測試策略(測試方法),是否逐步加壓等
- 測試進度安排
四、性能測試環境搭建
很多公司都是可以提個需求,從運維那里要到合適的環境。目前我測試的大部分項目都是要自己搭建測試環境的,需要從安裝操作系統開始准備。自己安裝環境的話還是要注意下各應用、中間件的機器分配,機器的host和DNS設置等問題。
測試環境搭建之前我一般都會自己先確認下機器分配情況,然后找相關開發確認核對一遍,確保IO和網絡占用相對均衡些。
五、性能測試執行
環境安裝好之后,就可以按性能測試方案的中的測試用例執行起來了。注意在測試過程中一定要記錄相關測試數據,不僅僅客戶端請求數、響應時間、TPS等關鍵數據,還有機器cup占用、內存占用、網絡流量,應用程序JVM,數據庫等等。
測試執行的過程中可能遇到瓶頸,這時候一邊自己分析,一邊找開發排查調優,記錄下發現的問題和解決方案。
六、輸出性能測試報告
這就不用多說了,測試結束給出是否滿足需求的結論。其中測試執行的過程數據,包括機器資源監控等截圖全部都要寫進文檔中來支持我們的結論。
上面就是對性能測試步驟做了一個簡單的總結,具體每一步怎么做還是有很多注意點的,后續再總結~