楊春暉
(工業和信息化部電子第五研究所 廣州 510610)
在將軟件產品提供給用戶使用時,可以通過軟件可靠性理論和方法對該軟件產品的可靠性和潛伏故障進行預測和估計[1-3].這種估計主要有2個原因:1)作為產品質量的客觀聲明;2)用于軟件維護階段的資源計劃.研究中的標準變量是在規定時間區間(如星期、月等)中的缺陷個數(或按代碼行數規格化了的缺陷率)或失效間隔時間.可靠性模型中的靜態模型[4-5]是指通過軟件系統或模塊的某些屬性來估算軟件中潛在的缺陷數量.可靠性模型中的動態模型[6-8]是指基于已知故障模式通過概率和統計分布的方法來估算軟件產品的可靠性.
靜態模型中的系數是通過以往軟件產品的數據估計得到.將感興趣的軟件產品或項目當作以往軟件產品或項目總體中的補充觀測.動態模型的參數是基于從感興趣產品至今所收集來的多重數據點估計出來的,是真正意義上的可靠性模型.所以,產生的模型專用于試圖對其可靠性作出預測的這個產品.
動態軟件可靠性模型用于開發過程和后期測試階段.其中Rayleigh模型是用于開發過程的典型模型.而指數模型和其他可靠性增長模型則用于后期測試階段.動態可靠性模型的相同之處在于它們都采用開發過程中的時間或其邏輯的函數來表示.
知識能夠為軟件測試過程提供指導.Xu[9]提出了基于知識的軟件測試方法,將導致軟件錯誤的原因歸結為軟件系統中所使用知識的錯誤以及對相關知識的使用方式錯誤,并基于實踐分析提出了基于知識的軟件測試方法,能夠有效彌補現有測試技術充分性和適度性方面的不足.Vijaykumar等人[10]提出了軟件測試參考本體(ROost)的概念,通過識別和重用軟件測試過程中的本體模式,能夠為大量的軟件測試信息賦予語義,從而更好地支持軟件測試過程中的知識管理.
然而,軟件知識對軟件可靠性影響的研究很少.如何描述軟件知識與軟件可靠性之間的關系,以實現高質量的軟件測試,提高軟件的質量和可靠性,科學和定量分析是必要的.因此,本文對軟件知識與軟件可靠性之間的關系進行了估計和研究.
Weibull分布[11-12]在各種工程領域中用于可靠性分析已經有十幾年,從深槽球型軸承的疲勞壽命到電子管失效和河流泛濫的發生.它是3個著名的極端值分布之一.Weibull分布的概率密度逐漸趨向于0,這是它的標志性特征.
圖1展示了形狀參數m取不同值的Weibull概率密度曲線:

圖1 Weibull函數的幾種典型分布
Weibull分布累計分布函數和概率密度函數表示如下.
CDF:
F(t)=1-e-(t c)m;
(1)
(2)
其中,m是形狀參數,c是尺寸參數,t是時間.
Rayleigh模型是Weibull分布家族的一個成員.Raileigh模型是Weibull分布m=2的特殊情況.其CDF和PDF表示如下.
CDF:
F(t)=1-e-(t c)2;
(3)
(4)
指數模型也是Weibull家族的另一個特例,它的形參m=1.它最適用于單調下降到漸進值的統計過程.它的累積分布函數(CDF)和概率密度函數(PDF)如下.
CDF:
F(t)=1-e-(t c)=1-e-λ t;
(5)
(6)
其中,c是尺度參數,t是時間.
在實際工程應用中,上述公式需要乘以總缺陷數量或總積累缺陷率概率K.K是從數據集合推導具體模型時用于估計的參數.
從工程實踐觀察到,測試團隊的經驗和知識水平可以影響測試效率和測試發現的問題數,一般經驗知識水平高的團隊能更快更多地發現問題.而測試發現問題的規律是服從一定的數學分布的.
Weibull函數在軟件可靠性領域的應用,經常用到2個特殊分布,m=2的Rayleigh分布常用于描述開發階段的缺陷分布,m=1的指數分布常用于描述系統測試或產品交付后使用階段的故障分布.因為從工程實踐能夠觀察到測試效率和測試發現問題數與測試團隊的經驗和知識水平顯著相關,所以,要探索從Weibull分布出發,分析測試者的知識水平與故障分布的定量關系.
假設1:有2個測試團隊A和B,團隊A的知識量為SA,團隊B的知識量為SB.
假設2:A和B分別對同一個軟件模塊進行系統測試,且最終2個團隊經過經驗積累和學習,均能找出軟件模塊的全部缺陷.
假設3:被測軟件系統的故障分布服從軟件可靠性領域應用的Weibull分布.
為計算簡便,以系統測試階段,Weibull函數的形狀參數m=1,即指數分布函數為分析案例.
設故障集合X為測試時間t發現各類故障模式失效數之和,即:
(7)
其中,K表示總缺陷數量,c表示尺度因子.
由于從工程實踐觀察到,測試團隊的經驗和知識水平可以影響測試效率和測試發現的問題數.因此,測試團隊的知識量與其能發現的缺陷總量正相關,即:
K=K(S)∝S.
(8)
將式(8)代入式(7)中,得到:
(9)
即,對于某時間t發現的缺陷個數X主要與知識量S和尺度因子c有關,即X可通過S和c表達:
X=X(S,c,t).
(10)
對于團隊A和團隊B,設團隊A的故障概率分布是f1(t),團隊B的故障概率分布是f2(t),則有:
(11)
(12)
將式(11)和式(12)分別取對數后相減,可得:

(13)
(14)
經驗知識水平高的團隊能更快更多地發現問題,假設SA>SB,則由圖2給出的指數分布函數以c為參數曲線簇可知,c1 圖2 缺陷數X與尺度因子c關系圖 從圖2可以看出,ΔlnX與|Δlnc|成正比關系,由于c1 因此,在Weibull分布模型中,軟件知識主要影響尺度參數c的變化,知識與尺度因子c存在關聯關系,c越小,表明開發或測試人員已有知識越豐富,需要獲取的知識越少;c越大,表明開發或測試人員已有知識越缺乏,需要獲取的知識越多.c可以表示為需要獲取知識量的一種量化表達,如式(15)所示: c=λg(D,AD,R,AR,H,I), (15) 其中,D表示軟件知識的概念集,AD表示軟件知識概念的屬性集,R表示知識之間的關系和規則,AR表示知識之間關系的屬性集,H表示軟件知識概念的層次,I為實例集,λ為系數.函數g()表示軟件開發或測試人員進行軟件開發與測試工作所需要從知識庫中獲取的知識量的度量,其數值正比于尺度參數c. 下面分別從開發階段和測試階段分析知識對于Weibull分布中尺度因子c變化的影響. 在軟件開發階段,假設軟件開發活動和測試活動持續進行,知識量對軟件開發階段的測試影響如圖3所示.軟件測試人員所需的知識量對測試有著直接影響.若測試人員對于軟件系統的理解越全面和深刻,所需要引進的知識量就越少,尺度參數c越小,使得軟件故障發現得越及時和快速,軟件故障排除率上升,有效地提高了軟件可靠性.反之,若軟件測試人員基礎和經驗較薄弱,所需要引進的知識量就大,尺度參數c相應變大,故障發現的速率會變慢,時間變長,不利于軟件的開發. 圖3 軟件知識對軟件開發階段的影響 圖4 軟件知識對系統測試階段的影響 同理,如圖4所示.對于系統測試階段的測試活動,也遵循測試人員需要引進的知識量越少,尺度參數c越小,軟件故障發現得更加及時和快速,有效地提高了軟件測試效率.反之,若軟件測試人員基礎和經驗較薄弱,所需要引進的知識量就大,尺度參數c相應變大,軟件故障排除率降低,不利于軟件測試工作的開展. 針對Linux-S操作系統,連續開展10輪系統測試工作,來驗證本文提出的結論. 10輪次測試的測試用例數、測試問題數、更新的故障模式數統計分析如表1所示.分析結果如圖5所示. 表1 測試結果統計表 圖5 測試結果統計分析 本文測試調整策略主要包括: 1) 每輪測試都是獨立的; 2) 每輪測試結束后,總結發現問題數,提煉故障模式,形成知識; 3) 每輪測試根據上一輪新增故障模式,新增測試用例; 4) 每輪測試根據已有故障模式分布情況,調整原有測試用例比例. 由圖5可知,隨著測試過程的深入,對產品特性的理解會越來越深,即經驗積累,發現的軟件故障越來越多,在對缺陷進行分析之后,不斷發現新的故障模式,豐富原有知識.根據每一輪測試,測試問題數和故障模式隨著測試輪數的增加,增加速度逐步減少,故障模式最終趨于35,本次實驗所需要的知識逐步完善. 依據缺陷分布函數式(7),利用前5輪測試的缺陷模式數(20,23,26,28,29)來估算Weibull累計缺陷分布F(t)的系數K和尺度因子c. (16) 采用Matlab工具進行仿真和擬合,計算得到K=27.943,c=0.911.擬合結果如圖6所示: 圖6 前5輪測試缺陷累計分布曲線擬合示意圖 圖7 后5輪測試缺陷累計分布曲線擬合示意圖 利用后5輪測試的缺陷模式數(32,34,35,35,35)來估算隨著知識積累之后,Weibull累計缺陷分布F(t)的系數K和尺度因子c,采用Matlab工具進行仿真和擬合,計算得到K=34.841,c=0.404.擬合結果如圖7所示: 將以上2個不同的c值代入式(7)中的缺陷概率密度函數中,得到如圖8所示2組概率密度曲線: 圖8 不同c值的概率密度函數示意圖 隨著知識的積累,發現的缺陷模式越來越多,測試者已有的知識量越來越多,系數K越來越大,說明測試人員已有知識量越多,需要獲取的知識越少,尺度因子c越小. 本文通過對缺陷密度的Weibull分布分析得出,知識與Weibull分布的形態緊密相關.從工程實踐觀察到,測試團隊的經驗和知識水平可以影響測試效率和測試發現的問題數,一般經驗知識水平高的團隊能更快更多地發現問題,在Weibull分布模型中,軟件知識主要影響尺度參數c的變化,知識與尺度因子c存在關聯關系,c越小,表明開發或測試人員已有知識越豐富,需要獲取的知識越少;c越大,表明開發或測試人員已有知識越缺乏,需要獲取的知識越多.尺度參數c與知識量成反比關系,可以表示為知識量的一種量化表達,據此可以依據知識量與缺陷發現的分布曲線預測測試發現問題的趨勢及軟件的可靠性,從而確定測試結束時機.
2.2 關系分析


3 實 驗





4 結 論