基于實踐總結(jié)的性能測試流程
下方查看歷史精選文章
大數(shù)據(jù)測試過程、策略及挑戰(zhàn)
在性能測試系列前面幾篇文章中我們比較詳細的介紹了相關(guān)的知識
所有性能相關(guān)的文章,均會同步發(fā)布至下面的公眾號,大家可以關(guān)注,以免錯過
在前面幾篇性能測試相關(guān)文章,我們積累的大量的各種相關(guān)知識,下面我們基于我的實踐和性能測試原理對性能測試流程進行一次整體的總結(jié)。
在開始完整的闡述性能測試流程之前,我們先大體梳理下性能測試的每個典型步驟大致需要多長的時間,做到心里有數(shù),將有助于我們理解性能測試流程。
雖然性能測試每個典型步驟,會因項目規(guī)模有很大的差異,使得我們很難給出一個很有意義的評估值,但我在這里依舊嘗試進行梳理,將有利于大家參考。
以下幾個方面是性能測試典型步驟中,耗時最多的:
性能測試范圍的界定和獲取非功能需求
準確的界定測試范圍對于性能測試來講至關(guān)重要,同時必須為非功能需求的獲取準備充足的時間,如果你們已經(jīng)有了一些信息(例如從生產(chǎn)環(huán)境獲得了瓶頸所在或是立項之初已經(jīng)大體確定了一些性能指標方向),那這個階段就不會耗費太多時間,通常不會超過幾天。
編寫和調(diào)試性能測試腳本
這個步驟通過跟人有關(guān),如果你是相關(guān)經(jīng)驗,則花費的時間相對較少,而如果你是新手,則可能需要耗費更長的時間。這里需要重點說明的是:一個好的和你熟悉的性能測試工具將會大大縮短你編寫和調(diào)試腳本的時間,也是讓這個步驟成功的關(guān)鍵。
創(chuàng)建和驗證性能測試場景
這個步驟通常是體力活,大部分時間都花在了場景的驗證上來了,用以保證測試能夠順利執(zhí)行,如果你已評估了準確的負載模型,那這個步驟所需時間不會太多,通常1-2天就夠了。
執(zhí)行性能測試
除非是簡單的性能測試項目,否則我建議你要為這個步驟至少準備一個禮拜的時間,因為我們在這個過程中,永遠都不會知道會出現(xiàn)什么未知的問題,也不知道我們需要重復(fù)執(zhí)行多少次測試。而且還需要考慮測試執(zhí)行時間,以及執(zhí)行過程中所需要的數(shù)據(jù)恢復(fù)時間等等
收集數(shù)據(jù)和清理環(huán)境
這個步驟,建議給一天就好了,尤其是公司內(nèi)部項目一般不會涉及太多環(huán)境需要清理,但如果你是對外提供性能測試服務(wù),你可能需要卸載、清理更多的工具、數(shù)據(jù)等等。但一般而言,一天是足夠的,不夠?出絕招 加一天。
測試結(jié)果分析和輸出報告
為了確保充足的時間來做分析,在這個步驟,建議預(yù)留2-3天,這樣可以充分的分析測試數(shù)據(jù)和輸出報告,如果這個階段做得不到位,可能意味著前期的工作大打折扣的。
有了上述幾個典型步驟時間預(yù)估做鋪墊,下面我們開始梳理性能測試的核心流程。
不過是你做公司內(nèi)部項目還是對外部客戶提供性能測試服務(wù),我們在設(shè)計性能測試流程時,一般不會強調(diào)具體性能測試工具的使用,因此你可以根據(jù)你習慣的工具來管理。
步驟一:獲取非功能需求
這個步驟通常稱為界定范圍,主要有以下相關(guān)工作需要確認:
完成性能測試的截止日期,包括應(yīng)用發(fā)布日期
開展性能測試的內(nèi)部和外部資源到位
測試環(huán)境的設(shè)計,盡量與生產(chǎn)環(huán)境一致
性能測試周期內(nèi)代碼凍結(jié),即鎖定待測版本
測試環(huán)境不可以被其他用戶操作影響
確定性能目標
關(guān)鍵用例確定,及相關(guān)檢查點確定
測試數(shù)據(jù)確定
明確負載模型
確定性能測試場景,即場景數(shù)量、類型、思考時間等等
確定并將應(yīng)用、服務(wù)器及網(wǎng)絡(luò)關(guān)鍵指標,及相應(yīng)基礎(chǔ)監(jiān)控工具
確定性能測試的交付物
確定性能過程中缺陷提交、修復(fù)流程
測試團隊人員及匯報機制
性能測試所需工具、資源、技能等
培訓
步驟二:構(gòu)建性能測試環(huán)境
到了這個步驟,我們應(yīng)該已經(jīng)明確了性能測試環(huán)境中對硬件、軟件和網(wǎng)絡(luò)設(shè)備的需求了,我們要盡可能的接近真實的生產(chǎn)環(huán)境,如有必要考慮直接在生產(chǎn)環(huán)境實施。一般這個步驟包含以下主要事項:
初始化和配置性能測試環(huán)境
考慮所需的部署模型
考慮外部系統(tǒng)(可能部分外部系統(tǒng)需要mock掉)
根據(jù)測試需要的規(guī)模,提供足夠的施壓能力
正確的部署應(yīng)用
部署和配置性能測試工具
部署和配置相關(guān)監(jiān)控工具
步驟三:編寫和調(diào)試性能測試腳本
根據(jù)我們的確定的每一個用例,需要做好以下事項:
確定會話數(shù)據(jù)需求
確認應(yīng)用輸入數(shù)據(jù)需求
針對每個用例設(shè)置檢查點,只做必要的檢查點,不要為了檢查而檢查
實施過程中針對腳本做必要的修改
確保每個測試腳本能夠正常回放
步驟四:構(gòu)建性能測試場景
在創(chuàng)建性能測試場景時,我們必須考慮以下幾點:
該場景屬于哪種測試類型:基準測試、負載測試?
確定每個用例中的思考時間,不可為了設(shè)置思考時間而設(shè)置
確定每個場景需要的壓力機,每個壓力機上需要啟動的虛擬用戶數(shù)
確定每天壓力機的施壓模式:是大爆炸方式還是分段遞增/遞減、或是延遲啟動等
確定測試如何結(jié)束:是運行一段時間還是用完測試數(shù)據(jù)后自動停止,還是運行足夠次數(shù)的循環(huán)?
確定是否需要IP欺騙機制
確定帶寬及是否需要模擬不同帶寬
根據(jù)需要確定要監(jiān)控哪些指標
確定是否需要模擬瀏覽器緩存,新用戶,活躍用戶等
考慮施壓工具不同技術(shù)實現(xiàn)對性能測試的影響
步驟五:執(zhí)行性能測試和分析
在正式執(zhí)行和監(jiān)控性能測試之前,我們需要對每個場景進行至少一次演練,并且要確保被測服務(wù)能夠正常訪問,因此為了確保我們的執(zhí)行和分析能夠有效的進行,我建議你按照如下事項進行:
執(zhí)行至少一次場景演練,并做基準測試,確保各環(huán)節(jié)有效
執(zhí)行負載測試時,在每次執(zhí)行之前重置數(shù)據(jù)庫到測試之前的基礎(chǔ)狀態(tài)
執(zhí)行測試時,排查和定位過程中發(fā)現(xiàn)的問題,要及時提交問題并與開發(fā)人員溝通交流
執(zhí)行測試時,要積極評估應(yīng)用的容量
執(zhí)行測試時,要積極關(guān)注諸如內(nèi)存泄漏、慢SQL等問題
步驟六:測試結(jié)果分析和輸出報告
在性能測試的最后一個步驟,就是收集所有的有效測試執(zhí)行結(jié)果,對其進行分析,撰寫性能測試報告和建立性能基線,為后續(xù)可能的重復(fù)測試準備,因此我建議你按以下事項進行:
收集最終的測試數(shù)據(jù)
根據(jù)項目需求,將性能目標與實際結(jié)果進行對比,以判斷結(jié)果是否通過
使用你習慣的模板來將結(jié)果文檔化,如有必要根據(jù)不同報告對象,對報告文檔進行定制輸出
上述即為我根據(jù)實踐和根據(jù)性能測試原理凝練而出的性能測試流程,不同的企業(yè)、業(yè)務(wù)、項目可能會因關(guān)注點不一樣,有所區(qū)別,但應(yīng)該有一定的參考價值。
在這里也強烈推薦大家,把這個系列之前的文章進行閱讀,不能停留在看的層面,要帶著自己的思考、見解進行,從而吸收成自己的知識。


