qileilove

          blog已經(jīng)轉(zhuǎn)移至github,大家請訪問 http://qaseven.github.io/

          性能測試及系統(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)  編輯  收藏 所屬分類: 性能測試

          <2013年7月>
          30123456
          78910111213
          14151617181920
          21222324252627
          28293031123
          45678910

          導(dǎo)航

          統(tǒng)計

          常用鏈接

          留言簿(55)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 阜新| 玛纳斯县| 海丰县| 滕州市| 哈尔滨市| 迭部县| 平舆县| 象州县| 胶南市| 古浪县| 济源市| 阳山县| 广元市| 泾源县| 疏附县| 新兴县| 屏山县| 保康县| 额济纳旗| 南开区| 临高县| 闵行区| 山东| 柳江县| 微山县| 南投市| 曲靖市| 岳池县| 沛县| 海原县| 安丘市| 高阳县| 新蔡县| 盐池县| 兰坪| 万宁市| 晴隆县| 阿城市| 长汀县| 垦利县| 江都市|