性能測試流程與調(diào)優(yōu)
?
概述
分析性能需求
制定性能測試計劃
設計場景
編寫腳本和程序初始化配置
執(zhí)行性能測試
分析結(jié)果
性能調(diào)優(yōu)
回歸測試
測試報告
?
1.概述:
性能測試:測試軟件在系統(tǒng)中的運行性能晌端,評估是否能滿足需求
性能分析:對性能測試數(shù)據(jù)進行分析僵缺,定位性能的瓶頸問題
性能調(diào)優(yōu):對性能問題進行調(diào)優(yōu)
?
2.分析性能需求:
了解系統(tǒng)性能需求诞丽,把所有的需求點列出來,整理成一個文檔輸出
數(shù)據(jù)建模,根據(jù)分析出來的性能需求,確定具體的業(yè)務流的并發(fā)量等
確定合理的性能目標,預期性能的目標可以根據(jù)類似系統(tǒng)的日志分析辞色,或者參考以往數(shù)據(jù)記錄
?
3.指定性能測試計劃:
測試環(huán)境
測試軟件
測試人員
測試目標
測試日程
測試風險分析
?
4.設計場景:
在線用戶數(shù)
并發(fā)請求
峰值響應
持續(xù)壓力
空載測試、基準測試(一個用戶使用系統(tǒng)的各項指標)浮定、最大測試相满、并發(fā)測試、混合測試(各個場景壶唤、測試方法混合起來)雳灵、疲勞測試等
?
5.編寫腳本和程序初始化配置
腳本
例如loadrunner環(huán)境參數(shù)的設置等,以文檔形式記錄闸盔,供報告使用或以后參照悯辙。
?
6.執(zhí)行性能測試:
保持環(huán)境的一致性,即測試系統(tǒng)的環(huán)境和正式系統(tǒng)的環(huán)境一直迎吵,以免測試結(jié)果在正式環(huán)境中不起作用
?
7.分析結(jié)果:
性能問題分析的基本原則
把事實與推測分開躲撰,總是用實際的證據(jù)來證明你的推測
在沒有足夠證據(jù)之前,不對程序進行優(yōu)化
優(yōu)先驗證簡單的假設
日志文件中沒有錯誤不代表真的沒有錯誤
從系統(tǒng)到應用击费、從外到內(nèi)進行層層剝離拢蛋,縮小范圍
確認是系統(tǒng)級問題還是應用級的問題
確認是否外部系統(tǒng)問題(如密碼鑒權問題,EJB問題等)
確認是應用程序問題還是數(shù)據(jù)庫問題
范圍縮小后蔫巩,再分割成多個小單元谆棱,對每個小單元進行輪番壓力測試,來證明或者否定是哪個單元引起性能問題
8.性能調(diào)優(yōu):
在應用系統(tǒng)的設計圆仔、開發(fā)過程中垃瞧,應始終把性能放在考慮的范圍內(nèi)(任何時刻都要記住性能測試)
確定清晰明確的性能目標是關鍵
必須保證調(diào)優(yōu)后的程序運行正確
性能更大程度是取決于良好的設計,調(diào)優(yōu)技巧只是一個輔助手段
調(diào)優(yōu)過程是迭代漸進的過程坪郭,每次調(diào)優(yōu)的結(jié)果要反饋到后續(xù)的代碼開發(fā)中去
性能調(diào)優(yōu)不能以犧牲代碼的可讀性和維護性為代價
?
?
調(diào)優(yōu)步驟:
確定清晰的性能目標个从,并按優(yōu)先級排列
利用科學的測試工具對應用程序進行測試,并記錄測試結(jié)果
把分布式系統(tǒng)拆分成組價:web層、業(yè)務層嗦锐、集成層嫌松、以及網(wǎng)絡傳輸時間,分別進行調(diào)優(yōu)
有系統(tǒng)的科學調(diào)優(yōu)
遵循一定的程序:測試性能à找出瓶頸à假設造成瓶頸的因素à測試假設是否成立à修改應用à再次測試性能
確定影響性能的因素:CPU奕污、Memory還是IO
找出主要的瓶頸萎羔,首先解決最容易的,再重復測試
一次修改一個瓶頸菊值,不要對不需要的地方進行調(diào)優(yōu)
提高CPU性能:更快的代碼外驱、SQL,更好的算法腻窒,減少短期生存的對象
提高內(nèi)存性能:減少或減小長期生存的對象
提高IO性能:重新設計應用,減少IO的交互
優(yōu)化完成之后磅崭,進行測試
在代碼中記錄優(yōu)化的地方儿子,并對舊代碼進行注釋
9.回歸測試:
功能的回歸和性能的回歸
?
10.測試報告: