測試有效性評估的優化
缺陷檢測百分比DDP(Defect Detection Percentage)常常可以用來評判軟件測試生命周期內某個階段的測試有效性。但是,在實際評判測試有效性過程中,DDP也存在某些方面的欠缺。本文通過分析DDP的基本原理,筆者提出了更適合測試有效性評估的優化DDP(簡稱O-DDP)。
1)DDP
窮盡測試是不可能的,因此,不可避免有一些缺陷會遺漏到客戶的使用現場,從而觸發軟件產品產生令用戶不滿意的失效或者各種問題。通常來說,在測試過程中判斷測試人員的測試有效性是很困難的。但是通過用戶反饋的缺陷數目,卻可以直觀的說明測試人員是否遺漏了比較多的問題,從而反映測試人員的測試有效性。缺陷檢測百分比DDP(Defect Detection Percentage)就是基于這樣的目的進行定義的,它可以用來評判軟件測試生命周期內某個階段的測試有效性,它以百分比的形式進行計算[1]。其計算公式為:
DDP = [R1 / (R1 + R2)] * 100%
其中:
° R1指的是被評估階段發現所發現的缺陷數目;
° R2是被評估階段之后所發現的所有的缺陷數目;
DDP計算公式的分母并不是發現的總的缺陷數目,而是指該階段之后所有發現的缺陷數目(包括該階段的缺陷數目)。表1是計算DDP的一個例子(主要針對動態測試而言的):
表1 DDP計算的例子
測試階段 |
發現的缺陷數目 |
DDP |
集成測試 |
376 |
51.58% |
系統測試 |
251 |
71.10% |
驗收測試 |
65 |
63.73% |
產品發布(3個月之內) |
37 |
NA |
采用DDP作為測試有效性的評估指標,主要存在兩個問題:第一個是DDP無法在測試過程中對測試有效性進行評估,必須要等待產品發布一段時間之后才能進行,例如:產品發布之后3個月;另一個問題是DDP計算過程中只考慮了用戶反饋的缺陷的數目,而沒有考慮每個缺陷的嚴重程度;單純的缺陷的數目,并不能正確的反映遺漏到客戶的缺陷對用戶造成的影響程度。而測試的有效性,要求測試人員盡早發現盡量多的嚴重的問題,而不僅僅是盡量多的缺陷數目。
對于DDP的第一個問題,由于DDP本身的定義要求,無法提供好的建議來解決該指標對測試有效性評估的延后性。而對于第二個問題,本文將綜合考慮用戶反饋的缺陷數目和嚴重程度,對DDP計算實現優化,從而更好的評估測試有效性。
2)O-DDP
O-DDP的基本原理和DDP是一樣的,只是在計算過程中,同時考慮了缺陷的數目和缺陷的嚴重程度。根據筆者所在組織和項目的特點,其定義的缺陷嚴重程度如下[2]:
° 嚴重程度1(致命的):產品在正常的運行環境下無法給用戶提供服務,并且沒有其他的工作方式可以補救;或者軟件失效會造成人身傷害或危及人身安全;
° 嚴重程度2(嚴重的):極大地影響系統提供給用戶的服務,或者嚴重影響系統要求或者基本功能的實現;
° 嚴重程度3(一般的):系統功能需要增強或存在缺陷,但有相應的補救方法解決這個缺陷;
° 嚴重程度4(輕微的):細小的問題,不需要補救方法或對功能進行增強;或者操作不方便,容易使用戶誤操作;
不同的缺陷嚴重程度,其定義的權重分別為w1 = 10、w2 = 4、w3 = 2和w4 = 1,分別對應嚴重程度1(致命的)、嚴重程度2(嚴重的)、嚴重程度3(一般的)和嚴重程度4(輕微的)。
下面通過案例的闡述,說明DDP和O-DDP計算得到的不同結果,以及根據結果分析得到的不同結論。在該案例中,評估的目標是系統測試的有效性,因此采用的缺陷數目分別來自系統測試發現的缺陷和在產品發布3個月之內用戶反饋的缺陷。表1是根據DDP得到的結果:
表1 DDP
階段 |
缺陷數目 |
DDP |
系統測試 |
351 |
89.54% |
產品發布(3個月之內) |
41 |
NA |
我們從表1中得到的DDP = 89.54%結果來看,系統測試的有效性應該是非常不錯的,因為遺留到用戶現場的缺陷數目相對比較少。但是,在我們進行具體詳細的分析用戶反饋的缺陷的時候,發現用戶對該產品的質量嚴重不滿意。他們所反饋的缺陷,很多都是嚴重影響他們正常使用的問題。因此,上表中的DDP結果并不是讓人信服的。
而后我們引入O-DDP,重新進行測試有效性的評估,其計算公式和DDP的公式一樣,只是其中每個參數的計算進行了優化:
O-DDP = [R1 / (R1 + R2)] * 100%
其中:
° R1是系統測試階段發現的缺陷和它們不同嚴重程度權重乘積之和,具體計算公式是R1 = m1*w1 + m2*w2 + m3*w3 + m4*w4,其中m#指的是系統測試階段不同嚴重程度的缺陷的數目;
° R2是產品發布之后在用戶現場發現的缺陷和它們不同嚴重程度權重乘積之和,具體計算公式是R2 = n1*w1 + n2*w2 + n3*w3 + n4*w4,其中n#指的是系統測試階段不同嚴重程度的缺陷的數目
得到的詳細數據如表2所示:
階段 |
嚴重程度1 |
嚴重程度2 |
嚴重程度3 |
嚴重程度4 |
O-DDP |
權重 |
10 |
4 |
2 |
1 |
|
系統測試 |
21 |
57 |
211 |
62 |
80.31% |
產品發布(3個月之內) |
11 |
28 |
2 |
0 |
NA |
3)O-DDP和DDP比較
DDP的計算僅僅考慮了遺留到用戶現場的缺陷的數目,完全沒有考慮不同缺陷對用戶的不同影響程度。而O-DDP的計算兼顧了缺陷的數目和缺陷的嚴重程度,相對于DDP而言,在判斷測試人員的測試有效性方面O-DDP更加全面。
根據表1得到的DDP = 89.54%,而表2計算得到O-DDP = 80.31%,其中的差距差不多是10%。這里面說明了什么?我們可以對此進行簡單的分析:
° 第一個可能是測試人員在進行系統測試的時候,發現的嚴重程度為1和2的缺陷占的比重較低;
° 第二個可能是在用戶現場發現的缺陷嚴重程度為1和2的缺陷占比比較高;
° 不管是哪種情況,都應該引起測試人員的注意:測試人員在系統測試過程中遺漏了某些重要的缺陷,特別是用戶特別關注的受到影響的缺陷。