本節書摘來自異步社群《全棧性能測試修煉寶典 jmeter實戰》一書中的第2章,第2.2節性能測試流程,作者road_testing軟體測試組 組稿 , 陳志勇 , 馬利偉 , 萬龍,更多章節内容可以通路雲栖社群“異步社群”公衆号檢視。
2.2 性能測試流程
做事情我們講究方法,注重效益,例如生産企業會有流水線。做性能測試也一樣,我們也有規範的流程,完全符合項目管理流程,圖2-3所示是性能測試正常流程。

(1)業務學習:通過檢視文檔,手工作業系統來了解系統功能。
(2)需求分析:分析系統非功能需求,圈定性能測試的範圍,了解系統性能名額。
(3)工作評估:工作量分解,評估工作量,計劃資源投入(即需要多少人力,多少工作日來完成性能測試工作)。
(4)設計模型:圈定性能測試範圍後,把業務模型映射成測試模型。
什麼是測試模型呢?比如一個支付系統需要與銀行的系統要進行互動(充值或者轉出),由于銀行不能夠提供支援,我們會開發程式去代替銀行系統功能(這就是擋闆程式,mock程式),保證此功能的性能測試能夠開展;這個過程就是設計測試模型。
再比如,後面要講到的執行個體項目jforum論壇,根據需求我們了解到一般大家發帖或回帖前都會先登入,那麼我們在開發腳本時就要把登入與發帖或回帖場景綁定在一起進行測試;這就是測試模型。通俗點說就是性能測試用例設計加性能測試實作方案,用例隻關注業務,模型還需關注如何實作,是否具有可操作性,可驗證性等問題最後我們還得根據不同的測試目的組合成不同的測試場景。
(5)計劃編寫:計劃測試工作,在文檔中明确列出測試範圍、人力投入、持續時間、工作内容、風險評估、風險應對政策等。
(6)腳本開發:錄制或者編寫性能測試腳本(現在很多被測系統都是無法錄制腳本的,我們需要手工開發腳本),開發測試擋闆程式,開發測試程式等。有時候如果沒有第三方工具可用,甚至需要開發測試程式或者工具。
(7)測試環境準備:性能測試環境準備包括伺服器與負載機兩部分,伺服器是被測系統的運作平台(包括硬體與軟體,比如應用伺服器需要8core,32g記憶體,中間件是jboss7等),負載機是我們用來産生負載的機器,用來安裝負載工具,運作測試腳本。
(8)測試資料準備:根據資料模型來準備被測系統的主資料與業務資料(主資料是保證業務能夠運作暢通的基礎,比如菜單、使用者等資料;業務資料是運作業務産生的資料,比如訂單;訂單出庫需要庫存資料,庫存資料也是業務資料。我們知道資料量變會引起性能的變化,在測試的時候往往要準備一些存量/曆史業務資料,這些資料需要考慮數量與分布)。
(9)測試執行:測試執行是性能測試成敗關鍵,同樣腳本不同執行人員得出的結果可能差異較大。這些差異主要展現在場景設計與測試執行上。
(10)缺陷管理:對性能測試過程中發現的缺陷進行管理。
(11)性能分析:對性能測試過程中暴露出來的問題進行分析,找出原因。
(12)性能調優:性能測試工程師與開發人員一起來解決性能問題。
(13)測試報告:測試工作的重要傳遞件,對測試結果進行報告,主要包括常見的性能名額說明(tps、rt、cpu using……),發現的問題等。
性能測試主要傳遞件:
測試計劃;
測試腳本;
測試程式;
測試報告或者階段性測試報告。
如果性能測試執行過程比較長,換句話說性能測試過程中性能問題比較多,經過了多輪的性能調優,需要執行多次回歸測試,那麼在這個過程中需要送出階段性測試報告。
(14)評審:對性能報告中的内容進行評審,确認問題、評估上線風險。有些系統雖然測試結果不理想,但基于成本及時間的考慮也會在評審會議中通過進而上線。