ISTQB AL-TA/TTA連載系列19:有效選擇測試優先順序
常規的風險評估通過計算可能性和嚴重程度來實現,它的缺點是沒有能夠更具體地體現各種不同因素對風險可能性和嚴重程度的影響。如果在評估風險時考慮風險可能性和嚴重程度的影響因素,我們就可以優化風險評估公式,從而更好構建測試優先順序
風險的可能性和嚴重程度都會受到各種因素的影響。例如,對於風險發生的可能性可以考慮的因素有測試物件的複雜性、時間壓力及地理分散程度(如開發和測試不在同一個國家進行)等;對於風險的嚴重程度可以從測試物件的使用頻率及失效發生的可視性等方面考慮。
基於優化的風險級別選擇測試重點的核心思想如下。
° 根據組織和軟體產品的特點識別影響風險發生可能性和嚴重程度的主要因素,並根據每個因素在風險分析中的重要性設定不同的權重。
° 針對軟體產品的每個功能模組,根據識別出的影響風險可能性和嚴重程度的主要因素評估風險發生的可能性和嚴重程度。
° 通過優化之後的風險級別計算公式得到每個功能模組的總的風險級別。
° 選擇合適的測試策略,並排列不同功能模組的測試重點。
下面是針對某個軟體產品的5個功能模組選擇測試重點的案例。為了簡單起見,將5個功能模組分別標識為功能模組A~E。
基於優化的風險級別選擇測試重點
在該軟體產品的測試過程中識別的影響風險發生可能性的主要因素分別為功能的複雜性、時間壓力和地理分散程度,而影響風險嚴重程度的主要因素為功能使用頻率和失效發生的可視性。
每個功能模組風險發生的可能性影響因素和嚴重程度影響因素分別以1~5代表從小到大的風險發生可能性和嚴重程度;同時將不同影響因素的權重分成3個等級並賦予1、3和10,分別代表權重最小、中等和最大。表1所示為基於優化的風險級別選擇測試重點的模板。
表1 基於優化的風險級別選擇測試重點的模板
嚴重程度的影響因素 |
發生可能性的影響因素 |
總的風險級別 |
|||
功能模組 |
使用頻率 |
失效的可視性 |
複雜性 |
時間壓力 |
地理分散程度 |
權重 |
3 |
10 |
3 |
10 |
1 |
以基於優化的風險級別選擇測試重點的模板為基礎,開發團隊和測試團隊通過頭腦風暴的方法針對每個功能模組風險發生嚴重程度和可能性的影響因素評估嚴重程度和可能性。如果出現較大的分歧,則需要採取其他一些措施,使得評估的結果達成一致。例如,採用團隊中建議的最高級別作為評估結果。表2所示為針對該軟體產品的5個功能模組最後獲得的嚴重程度和可能性的評估數值。
表2 嚴重程度和可能性的評估數值
嚴重程度的影響因素 |
發生可能性的影響因素 |
總的風險級別 |
|||
功能模組 |
使用頻率 |
失效的可視性 |
複雜性 |
時間壓力 |
地理分散程度 |
權重 |
3 |
10 |
3 |
10 |
1 |
功能模組A |
5 |
3 |
2 |
4 |
5 |
功能模組B |
5 |
3 |
5 |
4 |
5 |
功能模組C |
2 |
1 |
2 |
2 |
5 |
功能模組D |
4 |
4 |
3 |
2 |
1 |
功能模組E |
5 |
1 |
4 |
2 |
1 |
計算每個功能模組的總的風險級別,結果如下。
(1)嚴重程度 = (嚴重程度影響因素1的權重 × 評估的嚴重程度數值 + 嚴重程度影響因素2的權重 × 評估的嚴重程度數值)。
(2)可能性 = (可能性影響因素1的權重 × 評估的可能性數值 + 可能性影響因素2的權重 × 評估的可能性數值 + 可能性影響因素3的權重 × 評估的可能性數值)。
將評估得到的嚴重程度和可能性評估數值代入公式計算,分別得到每個功能模組的總的風險級別,如表9‑4所示。
表3 功能模組的總的風險級別
嚴重程度的影響因素 |
發生可能性的影響因素 |
總的風險級別 |
||||
功能模組 |
使用頻率 |
失效的可視性 |
複雜性 |
時間壓力 |
地理分散程度 |
|
權重 |
3 |
10 |
3 |
10 |
1 |
|
功能模組A |
5 |
3 |
2 |
4 |
5 |
2295 |
功能模組B |
5 |
3 |
5 |
4 |
5 |
2700 |
功能模組C |
2 |
1 |
2 |
2 |
5 |
496 |
功能模組D |
4 |
4 |
3 |
2 |
1 |
1560 |
功能模組E |
5 |
1 |
4 |
2 |
1 |
825 |
計算得到每個功能模組的總的風險級別之後,測試人員就可以根據該結果選擇測試策略。例如,對於總的風險級別較高的功能模組A和B,應該投入更多的測試工作量,以達到更高的測試覆蓋率;對於總的風險級別最低的功能模組C,在測試時間和資源受到限制時可以執行較少的測試,甚至可以放在下一輪測試中。
確定每個功能模組的總的風險級別也有助於選擇測試技術。例如,對於功能模組A和B,可能需要選擇覆蓋率較高的條件和條件組合覆蓋;對於功能模組C,可能只要選擇語句覆蓋即可。