性能測試及系統(tǒng)優(yōu)化類型的用戶故事
在梳理用戶故事時,一個常見問題是:我們應(yīng)不應(yīng)該有獨立的性能測試相關(guān)的用戶故事?
這個問題并不能簡單地回答是或否,在系統(tǒng)的復(fù)雜度不同以及團隊職責(zé)分布不同的情況下,情形會有所不同。
對一般小的產(chǎn)品,測試比較簡單,可以將性能指標(biāo)作為一個用戶故事驗收條款的一部分,這時就不需要獨立的用戶故事條目。
對于復(fù)雜大系統(tǒng),性能測試的環(huán)境搭建就可能不是易事,這時可以將性能測試及其優(yōu)化相關(guān)的用戶故事獨立出來,此時有可能分成兩類用戶故事:
一類是得到各項性能指標(biāo)和分析結(jié)果,用戶為內(nèi)部干系人或者系統(tǒng)購買方,目標(biāo)是幫助分析系統(tǒng)瓶頸和為下一步的系統(tǒng)性能優(yōu)化提供依據(jù),而系統(tǒng)購買方的目標(biāo)可能是便于規(guī)劃系統(tǒng)容量、選擇布署方案以及管理最終用戶期望等。此時用戶故事的描述可能是這樣的:
作為一個系統(tǒng)架構(gòu)師,我想得到X系統(tǒng)當(dāng)前的各項性能指標(biāo),以便于分析系統(tǒng)瓶頸和制定恰當(dāng)?shù)膬?yōu)化行動
作為系統(tǒng)規(guī)劃師,我想得到X系統(tǒng)當(dāng)前的各項性能指標(biāo),以便于制定系統(tǒng)布署方案
另一類則是故事本身不僅包含得到系統(tǒng)的各項性能數(shù)據(jù),而且必須滿足設(shè)定的性能指標(biāo)(質(zhì)量屬性,系統(tǒng)好到什么程度,可以按程度分成若干用戶故事),此時描述用戶故事時,最需要注意的是此時的用戶故事并不是性能測試本身,而是系統(tǒng)性能應(yīng)該滿足的性能指標(biāo)。比如對于高可用性(high availability)的用戶故事,要描述的是系統(tǒng)局部出現(xiàn)故障后對用戶的影響,在具體的驗收條款里,可以使用given, when, then格式描述在某些具體場景下系統(tǒng)應(yīng)該如何反應(yīng),對哪些用戶產(chǎn)生影響及其程度,如果要求工作正常,需要回歸測試最主要的功能(smoke testing)或者全面回歸測試全部功能,視風(fēng)險程度和測試自動化水平而定。例如:
作為X系統(tǒng)的用戶,我想要在系統(tǒng)運行的多個數(shù)據(jù)中心的一個完全損毀的情況下繼續(xù)使用該系統(tǒng),以便于不影響我的工作。
通常的性能優(yōu)化可分為三步:
第一步:
明晰不同的系統(tǒng)配置(包括硬件和軟件運行環(huán)境)和不同測試場景的質(zhì)量屬性的需求 (質(zhì)量屬性可能包括延遲,容量,響應(yīng)時間,流量,穩(wěn)定性,峰值等等)
明晰測量質(zhì)量屬性時要監(jiān)控的系統(tǒng)狀況指標(biāo) (CPU利用率,內(nèi)存占用率,disk IO吞吐率,網(wǎng)絡(luò)接口流量,內(nèi)部各種buffer的使用情況等等)
各種場景下的測試方法和測試工具 (是否需要自己編寫測試程序或腳本等)
第二步:
各種場景要考慮和定義用戶或系統(tǒng)的典型行為,以及極端行為 (特別是容量和性能測試時),模擬或觸發(fā)這些行為做測試。
展開測試,得到各項數(shù)據(jù),編寫當(dāng)前系統(tǒng)的性能測試報告,分析與需求之間的GAP,識別瓶頸
在端到端測試即便得到數(shù)據(jù),也無法判斷瓶頸所在的情況下,分析可能的瓶頸所在,在風(fēng)險最大的地方分段分component測試
第三步:
根據(jù)瓶頸分步優(yōu)化,注重系統(tǒng)整體性能,切忌過度局部優(yōu)化
第一步是基本的環(huán)境,為后面作準(zhǔn)備,通常并不作為獨立的用戶故事。不過當(dāng)需要開發(fā)相關(guān)的測試工具時,也可以作為獨立的用戶故事。第二步和第三步可以分成多個用戶故事來做。
最后,特別需要注意,對于每一次交付的軟件,我們要清晰地知道并告知客戶和用戶具體的性能指標(biāo)和其它質(zhì)量屬性。一些公共的質(zhì)量屬性可以放入DoD,要求所有的用戶故事必須滿足,否則不能算Done。同時應(yīng)該盡量避免出現(xiàn)質(zhì)量屬性下降的情況,即便不能達到新的更高要求,原有的質(zhì)量屬性至少需要保持。這就需要有強大的持續(xù)集成、自動化測試、自動化布署和系統(tǒng)級自動化性能測試系統(tǒng),以及以特性團隊方式工作,這樣才能使得有可能在同一迭代之內(nèi)完成對系統(tǒng)的質(zhì)量屬性的多次測試以及必要的優(yōu)化。如果做不到在同一迭代期內(nèi)獲得所有質(zhì)量屬性數(shù)據(jù),也要盡量縮短間隔時間,并根據(jù)實際的數(shù)據(jù)和優(yōu)先級排定優(yōu)化次序。
posted on 2013-07-31 10:19 順其自然EVO 閱讀(255) 評論(0) 編輯 收藏 所屬分類: 性能測試