對於測試工程師而言,隨着在這個行業的深耕,逐漸會接觸到一些項目層次的理念和方法論。web
風險分析以及風險管理就是其中重要的一項。安全
風險管理與質量控制實際存在着很是大的關聯關係,也是管理測試的有效理念。架構
在開發新的軟件系統過程當中,因爲存在許多不肯定因素,軟件開發失敗的風險是客觀存在的。所以,風險分析對於軟件項目管理是決定性的。風險管理是項目管理團隊的重要職責,也是促使項目成功的有效辦法,測試管理人員以及整個測試團隊在這個過程中要起到很是重要的做用。工具
風險分析實際上就是貫穿在軟件工程過程當中的一系列風險管理步驟,其中包括:風險識別、風險評估、風險策略、風險解決和風險監督等。web安全
對大多數軟件研發組織和項目而言,當談及風險的時候,通常分爲兩個方面:性能
咱們首先要將這兩個概念區分開來,由於測試團隊在這兩項風險管理過程當中的任務多是大相徑庭的。單元測試
項目風險或者叫「過程風險」是圍繞項目按目標交付的能力的一系列風險,好比來自組織方面,人員管理方面,流程方面和其餘方面的風險。開發工具
咱們只對測試工程中常見的風險作一個大體羅列,如:測試
以上都是可能影響到測試任務完成的常見項目風險,管理人員須要在計劃階段對風險進行預估,並給出規避方案和應急措施。優化
產品風險又稱爲「質量風險」,用通俗的話講即爲:「產品交付以後可能帶有的質量問題」。
爲何咱們研發的軟件產品會有風險存在呢?問這個問題實際就等同於問「爲何軟件產品可能會有缺陷呢」?
其實其本質在於「人都是會犯錯誤的」這樣一個論斷的成立。
基於這個論斷咱們又能夠推論出:「由於人都會犯錯誤,因此人開發出來的軟件也就可能帶有錯誤」。
這些在研發過程當中咱們犯的錯誤,遺留在產品中,就是缺陷;缺陷存在的可能性,就是產品風險。
產品風險產生的緣由,可能有如下這些:
在軟件研發領域,經過測試過程發現而且解決問題,實際就是產品風險的最重要和直接的規避手段。
換言之,軟件測試就是產品風險管理的重要手段,也即產品風險控制的有效辦法,甚至有些組織會將軟件測試從組織架構上歸入風險管控部門。
常見的軟件產品風險有以下類型:
等等。能夠看到,以上的軟件產品風險,咱們軟件測試的活動和任務都有可能對他們進行評估,而且經過信息收集和事件報告等手段實現規避和控制的目的。
風險管理通常經過下面四個階段來完成:
在進行風險管理的過程當中,要把握好四個原則:
咱們列舉一下測試過程當中可能存在的風險和對應的可行舉措:
對於測試過程風險:
對於人員風險:
上文提到,項目風險須要經過管理手段和策略來緩解規避。
那麼產品風險呢?長話短說:測試(質量控制)就是下降產品風險的行之有效的手段。
正由於如此,因此以風險爲基準來制定的策略是測試領域內很是重要也很是普及的一種方法。
這就是所謂的基於風險的測試(Risk Based Test - RBT)。
常見的測試策略可能有:
而基於風險的測試就是典型的分析性策略。
正如咱們前文中提到的項目風險和產品風險的區別,基於風險的測試是基於「產品」風險而非項目風險。經過對於產品不一樣區域和特性可能遺留缺陷,以及其影響程度的分析,肯定測試的資源分配等問題。
基於風險的測試策略之因此有很大的應用價值,是基於如下幾個基本論斷:
某稅務處理系統
①風險識別:識別出軟件研發過程當中,可能產生缺陷的區域,包括功能模塊和專項問題,羅列以下:
這個風險識別的過程,能夠依靠專家的分析,好比測試經理和開發組長、項目經理等的討論,可是更多的狀況下應該依靠集體智慧,條件容許的話項目全部利益相關方,都應該參與到風險分析的過程當中來。在風險識別這個動做上,頭腦風暴是一種可行的方法(即與會各方各抒己見,提出本身認爲產品可能有的風險項)。
除了頭腦風暴法之外,更爲嚴格的風險研討會議,經驗總結會議,第三方獨立評估,問卷調查法都是可使用的風險識別方法。不一樣的人員處在不一樣角度和專業背景下,對於風險的識別和分析等能夠提供更全面專業的思路。
②風險評估:在風險評估過程當中,咱們要對上個階段列出的風險項目作出評估,得出風險高低大小的一個排序。
風險評估中須要考慮的兩個維度:風險發生的可能性大小,以及風險若是發生,帶來的影響範圍和嚴重程度。兩個維度結合起來,才最終定義一個風險項目的級別高低。
所以,首先須要肯定咱們對於這兩個維度以及風險級別之間的判別關係,採用風險定義矩陣是一個比較好的作法,好比採用以下風險分析矩陣:
將識別階段得出的風險項目列表進行兩個維度的風險判斷,得出以下結果:每個風險項都從兩個維度給他’高、中、低‘的判斷,得出下表:
按照風險分析矩陣,進一步整理:
到此爲止咱們已經獲得了風險評估結果列表,可使用風險追蹤表格管理起來。
在這個評估過程當中,只是使用簡單的高中低三個級別的劃分對於風險進行評估。若是須要更爲精細的評估,也能夠採用更爲細緻的評分方式,而且對於風險的發生機率和影響度能夠分開進行更爲嚴格的評估,好比使用下表進行的發生機率分析:
同理對於另外的影響範圍和嚴重程度,也能夠作出相似的分析評估。
最後使用(可能性X影響)的公式得出風險項目的最終級別。
③風險緩解
基於產品風險分析,測試管理人員能夠在測試活動的安排上,實施緩解措施:
肯定測試優先級
根據測試風險的分析和評估獲得的風險分佈,肯定測試的優先級。如上例中,將風險級別最高的三個項目定位最高優先級,優先進行測試分析、設計和執行。其餘項以此類推。
肯定測試完備性
前面提到的一個假設條件:並非全部的測試對項目而言是同等重要的。一樣的道理,並不須要對測試對象的不一樣內容進行同等重要的測試,最重要或者風險最大的模塊或者對象須要測試得更加完全,更加完備。而對於風險比較小、優先級低的模塊或對象,能夠簡單測試。對於優先級最低的對象,在時間和成本等不容許的時候,甚至不進行測試。
爲達到更高的完備度,能夠採用更爲嚴格的測試分析、設計,更爲全面的執行和測試覆蓋。
測試資源優化分配
根據測試風險的分析和測試優先級的評估,將經驗豐富和技術能力豐富的測試人員(無論是設計人員、實現人員,仍是執行人員)放在最重要的模塊或測試對象中,能夠達到以下效果:
這種基於風險的測試策略能夠很是有效的幫助測試團隊快速實現重要模塊的測試覆蓋,而且能夠有效的快速提高產品質量,進而帶來利益相關方的信心提高。同時,對於測試監控而言也是很是有幫助的。
④風險追蹤
風險分析不是一個一次性的工做,須要持續追蹤。經過在項目實際研發過程當中獲得的信息和反饋,對風險等級進行調整,好比調高和調低風險等級。
一個實際的例子是:當項目開始時,將某一個風險項目定爲了高級,所以這個風險項頗有可能引發了團隊的重視。而正由於團隊對這個風險項目很重視,以致於在後續工做開展過程當中,團隊投入了更多的資源和力量,致使最終測試階段可能反而在這個模塊裏面沒有發現太多問題,也即他真正展現出來的風險等級並無預計的那麼高。當發現這樣的現象時,應該對風險跟蹤表作出及時更新。
風險級別的更新能夠是即時的,即發現現象則對應更改;也能夠是階段性的,好比每週一次,對於風險項目進行更新和調整。
風險級別一旦發生調整,測試活動的安排也應隨之相應調整。
風險的控制,在企業生產和管理中是被廣爲接受和採納的理念。
對於軟件產業而言,產品質量風險的緩解很大程度依賴於測試工做所提供的質量控制(QC)。
也許並非全部測試人員都會採用如本文所述的精益化的風險管理過程,但無論是對於測試管理人員仍是測試技術人員而言,風險的觀念都是不可或缺的。
不論採用怎樣的測試過程,都應採用風險管控理解來編排工做,抓住重心,這樣才能將有限的(有時很是有限!)測試時間合理投入到無限的任務中去。