摘要:軟件測試是軟件開發(fā)生命周期中的一個關鍵步驟。從某種程度上說,軟件測試決定了該產(chǎn)品的最終成敗。一種有效的軟件測試方法可以偵測出軟件產(chǎn)品中的錯誤,并保證軟件產(chǎn)品可以準確無誤的發(fā)布。但如何保證軟件測試的有效性一直是人們探討和爭論的問題。通過提出了一種軟件測試的簡單模型,以幫助人們正確的評估軟件測試的有效性。
關鍵詞:軟件測試;貝葉斯定理;測試有效性
中圖分類號:TP393文獻標識碼:A文章編號:16723198(2007)11026801
1引言
長久以來,在軟件開發(fā)生命周期中,軟件測試一直扮演著舉足輕重的角色。它幫助人們在軟件產(chǎn)品正式發(fā)布以前,有效的偵測出軟件設計中的錯誤和缺陷,及時予以糾正。更重要的是,軟件測試除由專業(yè)技術人員進行外,通常有用戶的參與,可以在測試的過程中準確理解用戶的需求,對產(chǎn)品進行改進和完善,保證軟件產(chǎn)品基于用戶要求量身訂制,真正實現(xiàn)產(chǎn)品客制化(Customization)。從而保證產(chǎn)品的高質量和高效益。
與軟件測試的重要性隨之而來的一個根本問題就是其有效性,即軟件測試正確偵測出產(chǎn)品缺陷或錯誤的效率有多高。在軟件測試環(huán)節(jié)中通常遇到的問題是:產(chǎn)品中存在的問題并沒有被及時發(fā)現(xiàn),從而導致產(chǎn)品的最終失敗。或者產(chǎn)品中并沒有缺陷,而由于人為或測試系統(tǒng)的誤差,發(fā)出錯誤警報,迫使設計者不得不花費大量的時間和精力去尋找并不存在的產(chǎn)品缺陷,導致資源浪費和成本上升。那么如何避免上述兩種情況的發(fā)生呢?有效軟件測試的標準是什么呢?究竟什么樣的測試可以被定義為有效測試呢?本文針對這一問題,從貝葉斯原理出發(fā),提出了一種評估軟件測試的簡單模型。借助該模型,軟件開發(fā)人員可以有效的判斷軟件測試是否達到預期的標準。
2理論基礎——貝葉斯定理
如果兩個事件A和B不是互相獨立的,并且知道事件B中的一個事件已經(jīng)發(fā)生,就能得到關于P(A)的信息。這反映為A在B中的條件概率,記為P(A|B):
P(A|B)=P(AB)P(B)
或
P(AB)=P(A|B)P(B)=P(B|A)P(A)
假設樣本空間S被分成一個含有n個互斥事件的集合,每個事件稱為S的一個劃分:
S={A1,A2,A3,……,An}
AiAj=0i≠j
事件B可以寫成由n 個不相交(互斥)事件BA1,BA2,..., BAn 組成,全概率定理:
P(B)=P(B|A1)P(A1)+P(B|A2)P(A2)+…+P(B|An)P(An)
用全概率定理和條件概率的定義可以得到貝葉斯定理:
P(Ai|B)=P(B|Ai)P(Ai)P(B)
=
P(B|Ai)P(Ai)P(B|A1)P(A1)(B)+…P(B|An)P(An)
3軟件測試效果評估模型
正如大部分人所熟知的那樣,軟件測試是人們預測、分析、偵測和修正前期軟件設計中的錯誤和缺陷的過程。通過軟件測試,軟件產(chǎn)品設計中致命的錯誤可以被及時發(fā)現(xiàn),并予以補救,以確保產(chǎn)品失敗的概率被降到最低限度。性能良好的軟件產(chǎn)品可以極大的提高用戶對產(chǎn)品的信心,從而積極配合新產(chǎn)品的使用和維護,最終形成軟件開發(fā)與用戶使用間的良好互動。然而,軟件測試有其無法避免的局限性,比如:軟件測試環(huán)境與軟件實際運行環(huán)境之間的差異,使得人們因為無法模擬實際運行環(huán)境,而無從對系統(tǒng)中的關鍵部分或模塊的錯誤發(fā)生率進行準確的評估,導致測試人員對產(chǎn)品可靠性作出錯誤的判斷,最終可能使測試中運行良好的產(chǎn)品在實際運行中出現(xiàn)問題。
那么,如何科學評價軟件測試的有效性呢?或者,換句話說,什么是有效的軟件測試呢?本文將建立一個軟件測試有效性的評估模型,通過這種模型,軟件測試的有效性可以用概率的方式進行表示和計算,從而將軟件測試有效性的評價進行量化。該模型是基于貝葉斯定理建立的,以下將分兩部分進行介紹:第一部分是模型的邏輯關系原理,用邏輯關系圖表示;第二部分是在第一部分的基礎上建立的數(shù)學模型,也是該評估模型的核心部分。
(1)邏輯關系圖。
為便于闡述,我們將軟件測試的結果表示為 “Detected Defects”( 偵測出的缺陷),同時將影響測試結果的因素分為兩種類型:一種是“Wrong Caution”(錯誤警報),即產(chǎn)品本身并沒有缺陷,由于系統(tǒng)或人為的失誤導致測試結果錯誤的顯示產(chǎn)品中有缺陷存在;另一種是“Successful Detection”(成功偵測出產(chǎn)品缺陷),即產(chǎn)品本身存在缺陷,軟件測試成功將其發(fā)現(xiàn)。下圖表示三者之間的邏輯關系,即:測試結果表明產(chǎn)品存在缺陷可能是由于兩種原因之一導致的:錯誤警報或成果偵測。
(2)軟件測試有效性評估模型。
基于上述邏輯圖示,本文建立了以下軟件測試有效性的評估數(shù)學模型。
Figure 1The relationship among 3 terms
(1)定義以下事件:
D: 缺陷存在;
D′:缺陷不存在;
S: 缺陷被偵測出;
S′: 缺陷未被偵測出。
(2)測試人員可根據(jù)以往的經(jīng)驗作出如下假設:產(chǎn)品存在缺陷的概率為0.3;產(chǎn)品缺陷被成功發(fā)現(xiàn)的概率為0.9;測試中發(fā)出錯誤警報的概率為0.2 。則,幾種事件的概率分別表示為:
P( D ) = 0.3;
P(S|D) = 0.9;
P(S|D′)=0.2。
根據(jù)貝葉斯定理,可計算得到:
P(D|S) = P(S|D) * P(D) / [P(S|D)P(D) + P(S|D′)P(D′)]
= 0.9 * 0.3 / (0.9 *0.3+ 0.2*0.7 ) = 0.66.
也就是說,上例中能正確的測試出軟件產(chǎn)品中的缺陷(或有效測試)的概率為0.66。如果事先設定的有效測試的概率為0.8,則說明目前的軟件測試還無法達到有效測試的標準,應給予改進。
4結論
在實際的軟件測試中,盡管人們無法保證完美無缺的測試,但至少計算出達到有效測試標準的概率是多少,即評價軟件測試的效果如何。因此上述模型基于貝葉斯定理為軟件測試者提供了一個簡單的可量化評估測試效果的方法,幫助人們客觀的評價軟件測試的結果。如果與預期的概率仍有差距(如上例),則應進行測試環(huán)境的改進以達到理想的效果。
本文僅提出了一個測試效果評價的簡單模型,未來進一步的研究將集中在影響測試效果的各種因素上,如:測試者的經(jīng)驗,技能;測試環(huán)境的仿真程度等,將進一步研究各種影響因素的相互作用及其各自對測試效果的影響程度。
注:本文中所涉及到的圖表、注解、公式等內容請以PDF格式閱讀原文。