
測試中的可靠性分析
在軟件開發的過程中,利用測試的統計數據,估算軟件的可靠性,以控制軟件的質量是至關重要的。
(1) 推測錯誤的產生頻度
估算錯誤產生頻度的一種方法是估算平均失效等待時間MTTF(Mean Time To Failure)。MTTF估算公式(Shooman模型)是

其中,K 是一個經驗常數,美國一些統計數字表明,K的典型值是200;
ET 是測試之前程序中原有的故障總數;
IT 是程序長度(機器指令條數或簡單匯編語句條數);
t是測試(包括排錯)的時間;
EC (t) 是在0~t期間內檢出并排除的故障總數。
公式的基本假定是:
§ 單位(程序)長度中的故障數ET∕IT近似為常數,它不因測試與排錯而改變。 統計數字表明,通常ET∕IT 值的變化范圍在0.5×10-2~2×10-2之間;
§ 故障檢出率正比于程序中殘留故障數,而MTTF與程序中殘留故障數成正比;
§ 故障不可能完全檢出,但一經檢出立即得到改正。
下面對此問題做一分析:
設EC (τ) 是0~τ時間內檢出并排除的故障總數,τ是測試時間(月),則在同一段時間0~τ內的單條指令累積規范化排除故障數曲線εc (τ) 為:
εc (τ) = EC (τ)∕IT
這條曲線在開始呈遞增趨勢,然后逐漸和緩,最后趨近于一水平的漸近線ET∕IT。利用公式的基本假定:故障檢出率(排錯率)正比于程序中殘留故障數及殘留故障數必須大于零,經過推導得:

這就是故障累積的S型曲線模型,參看圖5.19。

圖5.19 故障累積曲線與故障檢出曲線
故障檢出曲線服從指數分布,亦在圖5.19中顯示。
(2) 估算軟件中故障總數ET的方法
①利用Shooman模型估算程序中原來錯誤總量ET —瞬間估算

所以, 
若設T是軟件總的運行時間,M是軟件在這段時間內的故障次數,則
T∕M = 1∕λ= MTTF
現在對程序進行兩次不同的互相獨立的功能測試,相應檢錯時間τ1 <τ2,檢出的錯誤數EC (τ1 ) < EC (τ2 ),則有

且 

解上述方程組,得到ET的估計值和K的估計值。
② 利用植入故障法估算程序中原有故障總數ET ─ 捕獲-再捕獲抽樣法
若設NS是在測試前人為地向程序中植入的故障數(稱播種故障),nS是經過一段時間測試后發現的播種故障的數目,nO是在測試中又發現的程序原有故障數。設測試用例發現植入故障和原有故障的能力相同,則程序中原有故障總數ET的估算值為
在此方法中要求對播種故障和原有故障同等對待,因此可以由對這些植入的已知故障一無所知的測試專業小組進行測試。
這種對播種故障的捕獲─再捕獲的抽樣方法顯然需要消耗許多時間在發現和修改播種故障上,這會影響工程的進度,而且要想使植入的故障有利于精確地推測原有的故障數,如何選擇和植入這些播種故障也是一件很困難的事情。為了回避這些難點,就有了下面不必埋設播種故障的方法。
③ Hyman分別測試法
這是對植入故障法的一種補充。由兩個測試員同時互相獨立地測試同一程序的兩個副本,用t表示測試時間(月),記t = 0時,程序中原有故障總數是B0;t = t1時,測試員甲發現的故障總數是B1;測試員乙發現的故障總數是B2;其中兩人發現的相同故障數目是bc;兩人發現的不同故障數目是bi。
在大程序測試時,頭幾個月所發現的錯誤在總的錯誤中具有代表性,兩個測試員測試的結果應當比較接近,bi不是很大。這時有
如果bi比較顯著,應當每隔一段時間,由兩個測試員再進行分別測試,分析測試結果,估算B0。如果bi減小,或幾次估算值的結果相差不多,則可用B0作為程序中原有錯誤總數ET的估算值。