第29回 軟體質量度量

2021-04-12 16:03:30 字數 4573 閱讀 8089

軟體產品質量度量是軟體質量度量重要組成之一,其度量的物件是軟體產品,測量其

軟體平均失效時間、

缺陷密度、適用性、可靠性等產品的質量屬性,用於對軟體產品進行評價,並在此基礎之上不斷優化產品設計、產品製造和產品服務。

軟體產品質量度量包括軟體複雜度、客戶滿意度的度量,由於篇幅所限,在此略去。

軟體產品質量度量,則主要集中在軟體缺陷的度量,而且這和軟體測試有直接的關係。

質量是反映軟體與需求相符程度的指標,而缺陷被認為是軟體與需求不一致的某種表現,所以通過對測試過程中所有已發現的缺陷進行評估,可以了解軟體的質量狀況。也就是說,軟體缺陷評估是評估軟體質量的重要途徑之一,軟體缺陷評估指標可以看作是量度軟體產品質量的重要指標,而且缺陷分析也可以用來評估當前軟體的可靠性或**軟體產品的可靠性變化。

軟體評估首先是建立基線,為軟體產品的質量、軟體測試評估設定起點,這個基準線上再設定測試的目標,作為對系統評估是否通過的標準。缺陷評測的基線是對某一類或某一組織的結果的一種度量,這種結果可能是常見的或典型的,如10000行源程式(loc)是程式規模的乙個基準,每一千行**有3個錯誤是測試中錯誤發現率的基準。基準對期望值的管理有很大幫助,目標就是相對基準而存在,也就是定義可接受行為的基準,如表1所示。

表1

某個軟體專案質量的基準和目標

條目

目標

低水平

缺陷清除效率

>95%

<70%

缺陷密度

每個功能點 <4

每個功能點 >7

超出風險之外的成本

0%>=10%

全部需求功能點

<1%

每個月平均值

>=50%

全部程式文件

每個功能點頁數 <3

每個功能點頁數 >6

軟體缺陷評估的方法相對比較多,從簡單的缺陷計數到嚴格的統計建模,基於缺陷分析的產品質量評估方法有以下幾種:

1.缺陷密度

myers

有乙個關於軟體測試的著名的反直覺原則:在測試中發現缺陷多的地方,還有更多的缺陷將會被發現。這個原則背後的原因在於:如果缺陷發現缺陷多的地方、漏掉的缺陷可能性也會越大,或者告訴我們測試效率沒有被顯著改善之前,那麼在糾正缺陷時將引入較多的錯誤。這條原理的數學表達就是缺陷密度的度量——每

kloc

或每個功能點(或類似功能點的度量——物件點、資料點、特徵點等)的缺陷數,缺陷密度越低意味著產品質量越高。

2.缺陷率

缺陷率的通用概念是一定時間範圍內的缺陷數與錯誤機率(

ofe,

opportunities for error

)的比值。前面我們已經討論過軟體缺陷和失敗的定義,失敗是缺陷的例項化,可以用觀測到的失敗的不同原因數目來近似估算軟體中的缺陷數目。

軟體產品缺陷率,即使對乙個特定的產品,在其發布後不同時段也是不同的。例如,對應用軟體的角度來說,

90%以上的缺陷是在發布後兩年內被發現出來,而對作業系統,

90%以上的缺陷通常在產品發布後需要四年的時間才能被發現出來。

3整體缺陷清除率

讓我們先引入幾個變數,f為描述軟體規模用的功能點;d1為在軟體開發過程中發現的所有缺陷數;d2為軟體發布後發現的缺陷數;d為發現的總缺陷數。因此,d=d1+d2。

對於乙個應用軟體專案,則有如下計算方程式(從不同的角度估算軟體的質量):

假如有100個功能點,即f=100,而在開發過程中發現了20個錯誤,提交後又發現了3個錯誤,則:d1 =20,d2 =3, d= d1+d2 =23

有資料統計,美國的平均整體缺陷清除率目前只達到大約85%,而對一些具有良好的管理和流程等著名的軟體公司,其主流軟體產品的缺陷清除率可以超過98%。

眾所周知,清除軟體缺陷的難易程度在各個階段也是不同。需求錯誤、規格說明、設計問題及錯誤修改是最難清除的,如表2所示。

表2

不同缺陷源的清除效率

缺陷源

潛在缺陷

清除效率(%)

被交付的缺陷

需求報告

1.00

77

0.23

設計 1.25

85

0.19

編碼 1.75

95

0.09

文件 0.60

80

0.12

錯誤修改

0.40

70

0.12

合計 5.00

85

0.75

表3反映的是cmm五個等級是如何影響軟體質量的,其資料**於美國空軍2023年委託spr(美國一家著名的調查公司)進行的一項研究。從表中可以看出,cmm級別越高,缺陷清除率也越高。

表3 sei cmm級別潛在缺陷與清除率

sei cmm級別

潛在缺陷

清除效率(%)

被交付的缺陷

1

5.00

85

0.75

2

4.00

89

0.44

3

3.00

91

0.27

4

2.00

93

0.14

5

1.00

95

0.05

4.階段性缺陷清除率

階段性缺陷清除率是測試缺陷密度度量的擴充套件。除測試外,它要求跟蹤開發周期所有階段中的缺陷,包括需求評審、設計評審、**審查。因為程式設計缺陷中的很大百分比是同設計問題有關的,進行正式評審或功能驗證以增強前期過程的缺陷清除率有助於減少出錯的注入。基於階段的缺陷清除模型反映開發工程總的缺陷清除能力。

進一步分析缺陷清除有效性

(dre

,defect remove efficiency)

,dre

可以定義為:

開發階段清除的缺陷數/產品潛伏的缺陷總數 x 100%

因為潛伏缺陷的總數是不知道的,必須通過一些方法獲得其近似值,如經典的種子公式方法。當用於前期的和特定階段的時候,此時

dre相應地被稱為早期缺陷清除有效性和階段有效性,對給定階段的潛伏缺陷數,可以估計為:

當前階段的潛伏缺陷數

= 當前階段排除的缺陷數+以後發現的缺陷數

給定階段的

dre度量值越高,遺漏到下乙個階段的缺陷就越少。

缺陷是在各個階段注入到階段性產品或者成果中去,通過表

4 描述的與缺陷注入和清除相關聯的活動分析,可以更好地理解缺陷清除有效性。

回歸缺陷是由於修正當前缺陷時而引起相關的、新的缺陷,所以即使在測試階段,也會產生新的缺陷。

4與缺陷注入和清除相關聯的活動

開發階段

缺陷注入

缺陷清除

需求系統

/概要設計詳細/

程式設計

編碼和單元測試

整合測試

系統測試

驗收測試

需求收集過程和功能規格說明書

設計工作

設計工作

編碼整合過程、回歸缺陷

回歸缺陷

回歸缺陷

需求分析和評審

設計評審

設計評審

**審查、測試

構建驗證、測試

測試、評審

測試、評審

清除的缺陷數等於檢測到的缺陷數減去不正確修正的缺陷數。如果不正確修正的缺陷數所佔的比例很低(經驗資料表明,測試階段大概為

2%),清除的缺陷數就近似於檢測到的缺陷數。

預知後事如何,請讀下回分解:

第30回 總結

®

——系列討論的目錄,見:

軟體測試演義——中高階系列(序)

第29回 軟體質量度量

軟體產品質量度量是軟體質量度量重要組成之一,其度量的物件是軟體產品,測量其 軟體平均失效時間 缺陷密度 適用性 可靠性等產品的質量屬性,用於對軟體產品進行評價,並在此基礎之上不斷優化產品設計 產品製造和產品服務。軟體產品質量度量包括軟體複雜度 客戶滿意度的度量,由於篇幅所限,在此略去。軟體產品質量度...

第29回 軟體質量度量

軟體產品質量度量是軟體質量度量重要組成之一,其度量的物件是軟體產品,測量其軟體平均失效時間 缺陷密度 適用性 可靠性等產品的質量屬性,用於對軟體產品進行評價,並在此基礎之上不斷優化產品設計 產品製造和產品服務。軟體產品質量度量包括軟體複雜度 客戶滿意度的度量,由於篇幅所限,在此略去。軟體產品質量度量...

第29回 軟體質量度量

軟體產品質量度量是軟體質量度量重要組成之一,其度量的物件是軟體產品,測量其軟體平均失效時間 缺陷密度 適用性 可靠性等產品的質量屬性,用於對軟體產品進行評價,並在此基礎之上不斷優化產品設計 產品製造和產品服務。軟體產品質量度量包括軟體複雜度 客戶滿意度的度量,由於篇幅所限,在此略去。軟體產品質量度量...