張 策 , 劉宏偉 , 白 睿 , 王瞰宇 , 王金勇 , 呂為工 , 孟凡超
1(哈爾濱工業(yè)大學(xué)(威海) 計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,山東 威海 264209)
2(哈爾濱工業(yè)大學(xué) 計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,黑龍江 哈爾濱 150001)
3(山西大學(xué) 軟件學(xué)院,山西 太原 030006)
軟件作為人工制品,是多類型軟件開發(fā)人員協(xié)同完成的系統(tǒng).由于軟件是對(duì)物理系統(tǒng)和過(guò)程的計(jì)算機(jī)編程語(yǔ)言描述,因此其實(shí)際功能與預(yù)期成效很可能存在不一致之處.例如,軟件自身隱藏的錯(cuò)誤(error)在特定情況下可能會(huì)導(dǎo)致故障(fault),而故障可能會(huì)導(dǎo)致失效(failure):軟件的缺陷(defect 可能是設(shè)計(jì)或編碼時(shí)引入)在運(yùn)行時(shí)會(huì)產(chǎn)生錯(cuò)誤,當(dāng)錯(cuò)誤或故障積累到一定數(shù)量,或者達(dá)到某種條件時(shí)都會(huì)造成軟件系統(tǒng)的失效.因此,軟件的質(zhì)量問(wèn)題至關(guān)重要,尤其是可靠性問(wèn)題,長(zhǎng)久以來(lái)一直得到研究人員的關(guān)注.
可靠性作為軟件的非功能質(zhì)量屬性,其可以通過(guò)軟件可靠性增長(zhǎng)測(cè)試這一重要途徑來(lái)不斷獲得提高.軟件測(cè)試過(guò)程中,基于故障不斷被檢測(cè)并修復(fù)進(jìn)而使得軟件可靠性持續(xù)獲得增長(zhǎng)的事實(shí),為可靠性研究提供了有效的切入點(diǎn).軟件可靠性增長(zhǎng)模型SRGM(software reliability growth model)[1,2]從軟件失效的角度進(jìn)行可靠性的建模,采用以微分方程(組)為主的數(shù)學(xué)手段建立軟件測(cè)試過(guò)程中的若干個(gè)隨機(jī)參量(例如測(cè)試時(shí)間、累積檢測(cè)的失效或修復(fù)故障個(gè)數(shù)、測(cè)試工作量TE(testing-effort)等參量)之間的定量函數(shù)模型.基于求解獲得的累積檢測(cè)故障數(shù)量函數(shù)表達(dá)式(通常以m(t)作為標(biāo)記),可以獲得測(cè)試階段的可靠性.因此,建立能夠準(zhǔn)確地描述真實(shí)隨機(jī)測(cè)試過(guò)程的累積檢測(cè)故障數(shù)量函數(shù)m(t)成為了SRGM 研究的關(guān)鍵.目前,SRGM 已成為度量、預(yù)測(cè)與管控成本支出下可靠性的重要技術(shù)[3,4],是管控可靠性與系統(tǒng)發(fā)布的常見(jiàn)工具.文獻(xiàn)[5]即闡述了一種基于當(dāng)前軟件調(diào)試工作流的特征進(jìn)行可靠性增長(zhǎng)分析的方法DWA-SRGM,其可指出影響產(chǎn)品評(píng)估的因素與瓶頸,從而支持流程改進(jìn)決策.
而在整個(gè)可靠性的研究中,故障檢測(cè)率FDR(fault detection rate)作為累積檢測(cè)故障數(shù)量的主要影響因素,是建立可靠性增長(zhǎng)模型的關(guān)鍵要素,因此,其是提高可靠性所需考察的重要問(wèn)題.經(jīng)過(guò)多年發(fā)展,FDR 以及其支持的可靠性研究取得了重要進(jìn)展.目前,國(guó)內(nèi)外尚沒(méi)有對(duì)FDR 進(jìn)行全面述評(píng)的綜合性分析文章.本文在作者前期大量工作[1,2,6,7]的基礎(chǔ)上,基于國(guó)內(nèi)外研究情況進(jìn)行悉心梳理,從問(wèn)題起源與功用、相關(guān)區(qū)別與聯(lián)系、綜合分類討論、不完美排錯(cuò)下模型性能差異性分析等視角對(duì)FDR 進(jìn)行了全面述評(píng),并進(jìn)行了大量的實(shí)驗(yàn)驗(yàn)證,進(jìn)而給出后續(xù)研究趨勢(shì)和需要解決的問(wèn)題,以期為研究人員提供有價(jià)值的參考與借鑒,促進(jìn)可靠性研究取得新進(jìn)展.
本文的貢獻(xiàn)著重體現(xiàn)在對(duì)如下4 個(gè)問(wèn)題進(jìn)行了深入回答.
(1) 對(duì)FDR 進(jìn)行了全面深入的研究性論述,對(duì)FDR 在可靠性研究中的功能、地位、作用和成效進(jìn)行了深刻闡述,這在當(dāng)前可靠性研究中尚屬首次;
(2) 厘清了FDR 與失效強(qiáng)度、風(fēng)險(xiǎn)率/冒險(xiǎn)率的區(qū)別與聯(lián)系,從數(shù)學(xué)角度提出并證明了FDR 與測(cè)試覆蓋函數(shù)關(guān)系的重要定理;
(3) 拓展了FDR 的研究?jī)?nèi)涵,提出了典型的不完美排錯(cuò)環(huán)境下FDR 相關(guān)的軟件可靠性框架模型;
(4) 通過(guò)在大量的真實(shí)應(yīng)用場(chǎng)景上的綜合實(shí)驗(yàn),深入分析了FDR 效用以及對(duì)可靠性模型的影響,為研究和選擇FDR 提供了有重要借鑒意義的參考.
本文第1 節(jié)對(duì)以SRGM 為核心的可靠性進(jìn)行概要介紹,引出故障檢測(cè)率FDR.第2 節(jié)從可靠性模型構(gòu)建視角給出FDR 的定義,從多個(gè)角度闡釋其功用.第3 節(jié)重點(diǎn)剖析FDR 與失效強(qiáng)度、風(fēng)險(xiǎn)率/冒險(xiǎn)率的區(qū)別與聯(lián)系.第4 節(jié)給出分類視角下的FDR 構(gòu)成.第5 節(jié)重點(diǎn)對(duì)FDR 性能及其對(duì)SRGM 的影響進(jìn)行分析,提出不完美排錯(cuò)框架模型,通過(guò)數(shù)值分析研究模型的差異性.最后指出后續(xù)研究的趨勢(shì)與需要解決的問(wèn)題,并給出結(jié)論.
軟件開發(fā)過(guò)程中具有大量復(fù)雜的隨機(jī)性與不確定性,隨著研究人員對(duì)測(cè)試過(guò)程的不斷深入認(rèn)識(shí),SRGM 的研究持續(xù)至今.SRGM 具備描述測(cè)試過(guò)程中失效發(fā)生、故障檢測(cè)和修復(fù)等動(dòng)態(tài)特征,其刻畫了軟件的一種故障行為.由于SRGM 建立了故障失效個(gè)數(shù)與可靠性間的數(shù)學(xué)關(guān)聯(lián)模型,因此,利用SRGM 就可以計(jì)算特定時(shí)刻與可靠性緊密相關(guān)的參數(shù)指標(biāo),包括失效個(gè)數(shù)、失效率、失效間隔以及可靠性等;進(jìn)而,可以對(duì)測(cè)試資源進(jìn)行動(dòng)態(tài)的調(diào)配,預(yù)測(cè)當(dāng)前測(cè)試環(huán)境下軟件達(dá)到預(yù)期目標(biāo)(例如可靠性)時(shí)所需要的時(shí)間(被稱為發(fā)布時(shí)間)、成本(被稱為發(fā)布成本)等重要信息.
在研究?jī)?nèi)容上,從突破早期完美排錯(cuò)的限制,到僅考慮到新故障引入的研究,以及考慮測(cè)試工作量或測(cè)試覆蓋率的NHPP 類軟件可靠性建??蚣艿难芯?再到涵蓋不完全排錯(cuò)與新故障引入等各類不完美排錯(cuò)的研究,進(jìn)一步拓展至變動(dòng)點(diǎn)問(wèn)題、測(cè)試資源分配問(wèn)題、最優(yōu)發(fā)布問(wèn)題等,越來(lái)越多的可靠性模型得以建立.在求解方法與技術(shù)上,從建立單一微分方程(組)的簡(jiǎn)單或復(fù)雜的解析式方法,擴(kuò)展到非解析式方法、排隊(duì)論技術(shù)和最優(yōu)化方法,進(jìn)而采用離散事件仿真與非參量求解方法等,這些正在推動(dòng)軟件可靠性研究不斷走向深入.圖1 對(duì)SRGM 的建模與功用進(jìn)行了展示.
若SRGM 將軟件測(cè)試過(guò)程視為若干個(gè)隨機(jī)過(guò)程的統(tǒng)一,失效發(fā)生后,測(cè)試工作量TE 被定量地消耗用以進(jìn)行故障的檢測(cè)、隔離、排除等.隨著測(cè)試的不斷進(jìn)行,軟件中的故障不斷減少,從而軟件可靠性得到不斷的增長(zhǎng).軟件可靠性能夠通過(guò)軟件可靠性增長(zhǎng)模型SRGM 進(jìn)行有效度量與預(yù)測(cè).目前,SRGM 得到了快速的發(fā)展,現(xiàn)已被廣泛應(yīng)用,成為定量評(píng)估軟件可靠性的數(shù)學(xué)工具.圖2 對(duì)SRGM 的建模流程進(jìn)行了歸納.
在代表NHPP(non-homogeneous Poisson process,即非齊次泊松過(guò)程)類SRGM 研究起源的經(jīng)典G-O 模型[8]中,Goel L 與Okumoto K 建立了類似于下面的微分方程:
該微分方程具有更一般性,其假設(shè)認(rèn)為,t時(shí)刻累積檢測(cè)的故障數(shù)量dm(t)/dt與此刻軟件中剩余的故障數(shù)量(a(t)-m(t))成正比例,比例系數(shù)b(t)為該時(shí)刻的故障檢測(cè)率FDR(fault detection rate).顯然,當(dāng)b(t)=b,a(t)=a時(shí),公式(1)轉(zhuǎn)化為G-O 模型,該模型雖忽視了故障修復(fù)與新故障引入情況,但卻成為日后研究連續(xù)性NHPP 類SRGM 中共同被遵守的事實(shí).這其中,FDR 的表現(xiàn)形式是b(t),從宏觀上對(duì)故障檢測(cè)能力進(jìn)行描述,但并未指出支撐故障檢測(cè)能力的構(gòu)成.并且,G-O 模型認(rèn)為FDR 為常量(在軟件測(cè)試的過(guò)程中保持不變),這顯然與真實(shí)的測(cè)試過(guò)程差異較大.此外:文獻(xiàn)[9]建立了一個(gè)非齊次泊松過(guò)程類軟件可靠性增長(zhǎng)模型——Bbell-SRGM;文獻(xiàn)[10,11]提出了結(jié)合軟件運(yùn)行環(huán)境中每單位時(shí)間故障檢測(cè)率的不確定性的軟件可靠性模型;文獻(xiàn)[12]提出了具有時(shí)間相關(guān)性噪音影響下的NHPP 類SRGM;文獻(xiàn)[13]提出了一種基于Weibull 分布引進(jìn)故障的SRGM,使軟件可靠性增長(zhǎng)模型更加符合實(shí)際的軟件故障檢測(cè)過(guò)程,具有重要的理論意義和實(shí)際價(jià)值;同時(shí),文獻(xiàn)[14]利用基于深度循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)編碼器-解碼器的深度學(xué)習(xí)模型來(lái)預(yù)測(cè)軟件中的故障數(shù)量并評(píng)估軟件的可靠性;文獻(xiàn)[15]推導(dǎo)了一種可以在軟件開發(fā)和運(yùn)行的各個(gè)階段提供良好的軟件可靠性預(yù)測(cè)的模型,提供了更好的預(yù)測(cè)性能;文獻(xiàn)[10,11,16]還提出了用于比較SRGM 擬合優(yōu)良性的諸多標(biāo)準(zhǔn),例如均方誤差MSE、預(yù)測(cè)率風(fēng)險(xiǎn)PRR、預(yù)測(cè)能力PP 以及赤池信息量準(zhǔn)則AIC,為SRGM 擬合度評(píng)估提供了有效方法.
特別指出,本文研究遵從SRGM 研究領(lǐng)域中的默認(rèn)規(guī)定.
(1) “error(錯(cuò)誤)”[17],“defect(缺陷)”[18],“fault(故障)”[19,20]以及“failure(失效)”[21]并沒(méi)有被嚴(yán)格區(qū)分,表示的含義是等價(jià)的,這與容錯(cuò)研究中對(duì)“defect→error→fault→failure”進(jìn)行嚴(yán)格區(qū)分是不同的.這是因?yàn)镾RGM 研究中隱含著由缺陷、錯(cuò)誤到失效的一一對(duì)應(yīng)關(guān)系,因而將其等同看待;
(2) 這里并不區(qū)分修正、改正、修復(fù)、排除,四者均表示故障被排除掉.
在當(dāng)前所建立的眾多SRGM 中,均包含“在t時(shí)刻這一當(dāng)前時(shí)間點(diǎn)上,累積檢測(cè)到的故障數(shù)量m(t)與當(dāng)前軟件中剩余的故障數(shù)量成正比例”這一基本假設(shè),此比例系數(shù)被稱為故障檢測(cè)率FDR(fault detection rate,習(xí)慣用b(t)來(lái)表示).因此,軟件中全部初始故障數(shù)量a(t=0)=a和故障檢測(cè)率函數(shù)FDRF(fault detection rate function,通常用b(t)加以表示)是影響SRGM 的重要因素[20],這已成為SRGM 研究中的共識(shí).圖3 展示了經(jīng)典的完美排錯(cuò)G-O模型的建模過(guò)程,其中的FDRF 為常量b.
在可查證的SRGM 研究文獻(xiàn)[17-20,22-29]中,FDR 是SRGM 建模中必不可少的參數(shù),其描述了故障被檢測(cè)出來(lái)的能力,同時(shí)也是對(duì)測(cè)試效能的一種描述.
定義(故障檢測(cè)率FDR).即故障檢測(cè)率函數(shù),表示當(dāng)前時(shí)刻單位時(shí)間內(nèi)單個(gè)故障被檢測(cè)到的平均概率[9],或每個(gè)故障的查出率[30],通常用b(t)來(lái)表示.
FDR 表征了測(cè)試環(huán)境下故障被查出的效率,具有描述綜合測(cè)試策略的能力,因而與包括測(cè)試人員、測(cè)試技術(shù)、測(cè)試工具等構(gòu)成的整體測(cè)試環(huán)境緊密相關(guān).
從早期提出將FDR 看作常數(shù)的軟件可靠性增長(zhǎng)模型,到提出整體呈現(xiàn)遞減趨勢(shì)的冪函數(shù)類型FDR,再到能夠基本刻畫測(cè)試環(huán)境平緩變化的S型FDR,以及(復(fù)雜)指數(shù)類型FDR 的研究,整體上,對(duì)FDR 的研究方向呈現(xiàn)出貼近工程實(shí)際化特點(diǎn),因而能夠更好地描述測(cè)試環(huán)境的改變,幫助提高可靠性模型的性能.
測(cè)試過(guò)程的目的是不斷發(fā)現(xiàn)與修復(fù)故障,提高可靠性,達(dá)到預(yù)期(發(fā)布)要求.客觀上,測(cè)試環(huán)境的不同,以及測(cè)試人員實(shí)施測(cè)試策略的差異,將使得不同系統(tǒng)工程在測(cè)試中表現(xiàn)出不同的外在特征.從建立數(shù)學(xué)模型的角度來(lái)看,公式(1)描述了測(cè)試過(guò)程中關(guān)于故障檢測(cè)的共性,但不同模型的區(qū)別與FDR:b(t)關(guān)聯(lián)緊密.可見(jiàn),FDR 能夠從整體上刻畫測(cè)試效果,這使其成為影響SRGM 性能的主要評(píng)測(cè)點(diǎn).
關(guān)于對(duì)FDR 影響因素的研究,Huang 在他的一系列文獻(xiàn)[31,32]中指出:測(cè)試初始階段,很多故障可以被檢測(cè)出來(lái),測(cè)試FDR 依賴于故障發(fā)現(xiàn)效率、故障密度、測(cè)試工作量、檢出率這些參數(shù);中期階段,FDR 通常還依賴于上述因素以外的其他因素,包括CPU 指令的執(zhí)行率、失效與故障間關(guān)聯(lián)、代碼膨脹系數(shù)、測(cè)試團(tuán)隊(duì)技能、程序規(guī)模、軟件可測(cè)試性,以及每日歷天預(yù)定的CPU 執(zhí)行小時(shí)等因素.因此,當(dāng)需求發(fā)生改變和新的特征被添加,或者修復(fù)期間有新故障引入時(shí),FDR 可能會(huì)發(fā)生改變.此外,考慮到故障檢測(cè)的隨機(jī)性和復(fù)雜性,即針對(duì)其是具有較強(qiáng)不確定性的概率事件這一方面,文獻(xiàn)[9]提出了一個(gè)響鈴形的故障檢測(cè)率函數(shù),文獻(xiàn)[33]考慮了受操作環(huán)境影響的系統(tǒng)故障檢測(cè)率,文獻(xiàn)[34]提出了一種隨時(shí)間不規(guī)則變化的故障檢測(cè)率,均體現(xiàn)了其突變性.
2.2.1 從FDR 角度研究CP
在關(guān)于移動(dòng)點(diǎn)/拐點(diǎn)CP(change-point)的研究上,也均將FDR 作為分段研究實(shí)施的對(duì)象.由于FDR 刻畫了整個(gè)測(cè)試環(huán)境下的綜合測(cè)試效果,因而當(dāng)測(cè)試環(huán)境發(fā)生變化與轉(zhuǎn)折時(shí),FDR 就會(huì)有所變動(dòng).這樣,將FDR 進(jìn)行數(shù)學(xué)上的CP 處理[35-38](即CP 前后FDR 函數(shù)形式發(fā)生變化)成為考慮CP 的SRGM 研究慣例.
由于FDR 與測(cè)試環(huán)境下的失效分布情況等多因素有關(guān)聯(lián),而失效分布又會(huì)受到例如運(yùn)行環(huán)境、測(cè)試策略和資源分配等[32]多種因素的影響.因此,當(dāng)測(cè)試策略和測(cè)試資源分配發(fā)生變化時(shí),CP 就會(huì)出現(xiàn).此外,增加對(duì)程序的認(rèn)識(shí)和自動(dòng)化測(cè)試工具的運(yùn)用也會(huì)引發(fā)CP.因此,FDR 在整個(gè)測(cè)試過(guò)程中會(huì)發(fā)生改變.
2.2.2 從FDR 角度研究測(cè)試環(huán)境與運(yùn)行環(huán)境差異
此外,在考慮測(cè)試與運(yùn)行環(huán)境的差異研究上[27,39],差異點(diǎn)也是從FDR 角度來(lái)進(jìn)行研究的,相關(guān)的研究還涉及故障減少因子[20,40-43]、學(xué)習(xí)效果[17]、測(cè)試壓縮因子[44]、測(cè)試覆蓋率[45,46]等.事實(shí)上,CP 具有描述測(cè)試環(huán)境與運(yùn)行環(huán)境差異性的能力.
FDR 的構(gòu)成上,存在著b(t)=b,b(t)=b2t/(1+bt)[26,47],[49]等多種函數(shù)形式,基本情況見(jiàn)表1.
Table 1 Fault detection rate function b(t)表1 故障檢測(cè)率函數(shù)b(t)
圖4 給出了表1 中5 類b(t)的基本形狀,其中設(shè)定b=0.35,α=0.25,β=0.15,t∈[0,20],僅用以展示曲線形狀.
FDR 是與時(shí)間相關(guān)的故障檢測(cè)率函數(shù),用以表示單位時(shí)間內(nèi)故障被發(fā)現(xiàn)的概率.為了深入研究,b(t)有時(shí)被研究人員設(shè)定為t的某種函數(shù).
失效強(qiáng)度通常用λ(t)表示,即在t時(shí)刻單位時(shí)間內(nèi)失效發(fā)生的次數(shù),在SRGM 的研究中用以表示累積故障檢測(cè)數(shù)量的導(dǎo)數(shù),即λ(t)=.可見(jiàn),λ(t)是跳躍強(qiáng)度函數(shù),即,在時(shí)刻t單位時(shí)間內(nèi)失效發(fā)生的次數(shù).如果故障出現(xiàn)導(dǎo)致失效發(fā)生而立即被發(fā)現(xiàn)的話,b(t)=z(t);否則二者并不相等.
風(fēng)險(xiǎn)率即風(fēng)險(xiǎn)函數(shù)(hazard function),通常用h(t)表示,即:程序正確地運(yùn)行到時(shí)刻t時(shí),發(fā)生故障的概率.h(t)是每個(gè)故障失效發(fā)生率或冒險(xiǎn)率[50],即“瞬時(shí)失效率”.事實(shí)上,h(t)作為“瞬時(shí)失效率”是一種冒險(xiǎn)率.失效率的定義是
對(duì)上式求Δt的極限,求得的就是冒險(xiǎn)率,即“瞬時(shí)失效率”.可見(jiàn),冒險(xiǎn)率或“瞬時(shí)失效率”是失效率的一種時(shí)間上的逼近.
“設(shè)T表示從0 開始運(yùn)行一個(gè)程序,到程序發(fā)生失效為止經(jīng)歷的時(shí)間”,T是失效時(shí)間的獨(dú)立隨機(jī)變量,其失效分布函數(shù)和失效密度函數(shù)分別為F(t)和f(t),則可得如下兩式:
則可以得到R(t+Δt)的表達(dá)式、R(t)的導(dǎo)數(shù)與h(t)和R(t)的關(guān)系如下:
因此,求解上式可得.顯然,R(0)=1;R(∞)=0.
綜上,我們可以得出:故障檢測(cè)率FDR、失效強(qiáng)度以及風(fēng)險(xiǎn)率/冒險(xiǎn)率均為可靠性相關(guān)指標(biāo),三者均與程序運(yùn)行環(huán)境中的多因素(例如程序規(guī)模、故障密度、故障測(cè)試效率、測(cè)試工作量、CPU 指令的執(zhí)行率、代碼膨脹系數(shù)等)相關(guān)聯(lián).故障檢測(cè)率b(t)與失效強(qiáng)度λ(t)和風(fēng)險(xiǎn)率/冒險(xiǎn)率h(t)均成正比例關(guān)系.具體討論如下。
(1) 故障檢測(cè)率b(t)描述了測(cè)試人員在測(cè)試策略的指導(dǎo)下采用合適的測(cè)試案例和測(cè)試方法檢測(cè)出故障的能力,其與t時(shí)刻點(diǎn)上的測(cè)試覆蓋率c′(t)成正比例,是測(cè)試覆蓋c(t)的函數(shù),可表示為b(t)=c′(t)/(1-c(t)),與可靠性R(t)直接相關(guān);
(2) 失效強(qiáng)度可用于描述t時(shí)刻累積檢測(cè)的故障數(shù)量m′(t),其與此刻軟件中剩余的故障數(shù)量(a(t)-m(t))成正比例,比例系數(shù)b(t)為該時(shí)刻的故障檢測(cè)率FDR.則根據(jù)G-O 模型的基本假設(shè),可得失效強(qiáng)度λ(t)與故障檢測(cè)率b(t)的關(guān)系如下式:
(3) 風(fēng)險(xiǎn)率/冒險(xiǎn)率描述了程序正確地運(yùn)行到時(shí)刻t時(shí)發(fā)生故障的概率,其側(cè)重于每個(gè)故障失效發(fā)生率或冒險(xiǎn)率[37],即“瞬時(shí)失效率”,為失效率的一種時(shí)間上的逼近.在SRGM 研究中,根據(jù)上述公式(7)的表示以及假設(shè)條件可知:風(fēng)險(xiǎn)函數(shù)h(t)與失效強(qiáng)度λ(t)相等,即h(t)=λ(t).從而根據(jù)G-O 模型的基本假設(shè),可進(jìn)一步得到風(fēng)險(xiǎn)函數(shù)h(t)與故障檢測(cè)率b(t)的關(guān)系如下式:
同時(shí),文獻(xiàn)[51]認(rèn)為測(cè)試覆蓋下的故障以常量概率k被檢測(cè)出來(lái),從而可推導(dǎo)出:
則h(t)為:
此時(shí),即可得到風(fēng)險(xiǎn)函數(shù)或每個(gè)故障的失效發(fā)生率h(t)與故障檢測(cè)率b(t)相等,即b(t)=h(t).
軟件測(cè)試過(guò)程中,隨著測(cè)試用例的不斷執(zhí)行,測(cè)試覆蓋的范圍不斷擴(kuò)大,故障被檢測(cè)出的可能性不斷提高.測(cè)試覆蓋范圍的擴(kuò)大,使得被檢測(cè)出的故障數(shù)量增多,因此,測(cè)試覆蓋函數(shù)與故障檢測(cè)率關(guān)系密切.測(cè)試覆蓋TC(testing coverage)指測(cè)試系統(tǒng)覆蓋被測(cè)試系統(tǒng)的程度,描述了測(cè)試與被測(cè)試對(duì)象之間的相關(guān)性[52],測(cè)試覆蓋率較高的程序在測(cè)試過(guò)程中執(zhí)行了更多的源代碼.這里,從代碼語(yǔ)句覆蓋的角度來(lái)看,可以定量表示為公式(11)所示:
其中,Sc是測(cè)試案例覆蓋的KLOC(kiloline of code),St是全部KLOCs.
當(dāng)考慮時(shí)間因素時(shí),TC就演變?yōu)殡S測(cè)試時(shí)間變化的測(cè)試覆蓋函數(shù)TCF(testing coverage function):c(t),可用以描述測(cè)試覆蓋率的變動(dòng)情況.顯然,c(t)是一個(gè)非負(fù)的且非降的函數(shù).
4.1.1 測(cè)試覆蓋函數(shù)起源——采用設(shè)定FDR 與測(cè)試覆蓋率成比例的間接視角
針對(duì)上述公式(11)的來(lái)源,文獻(xiàn)[51]最早給出了嚴(yán)謹(jǐn)?shù)姆治?其認(rèn)為測(cè)試覆蓋下的故障以常量概率k被檢測(cè)出來(lái),從而建立了下面的微分等式:
其中:a0表示初始時(shí)軟件中的故障總數(shù);cd(t)表示t時(shí)刻測(cè)試覆蓋下故障被檢測(cè)出的概率,按照假設(shè),得到cd(t)=k常量.這樣,令a0k=a,則得到m(t)=ac(t),進(jìn)而基于的事實(shí),可推導(dǎo)出:
則冒險(xiǎn)函數(shù)(the hazard function)或每個(gè)故障的失效發(fā)生率(the failure occurrence rate per fault)h(t)為
這樣,在通常情況下可認(rèn)為b(t)=h(t).通過(guò)上述得到的m(t)=ac(t),可以看出,這里就直接建立了m(t)與c(t)的關(guān)聯(lián).為此,將現(xiàn)有各種m(t)函數(shù)表達(dá)式改寫成m(t)=ac(t)形式,即可獲得相應(yīng)的c(t)函數(shù).
顯然,對(duì)于完美的測(cè)試覆蓋,c(t)是t的增函數(shù),且滿足c(0)=0,c(∞)=1.
4.1.2 測(cè)試覆蓋函數(shù)起源——采用與SRGM 和TEF 建模相同的直接視角
c(t)的建立是基于下面的假設(shè):任意t時(shí)刻的測(cè)試覆蓋率與當(dāng)前剩余的測(cè)試覆蓋值成比例.這樣,可以得到下面的微分方程:
其中,α是可獲得的測(cè)試覆蓋目標(biāo)值,考慮到測(cè)試后期軟件中未覆蓋代碼的難以測(cè)試性,其滿足0<α<1;β(t)為比例系數(shù),也被稱為測(cè)試覆蓋成熟率,滿足β(t)>0.β(t)與測(cè)試人員的技能緊密相關(guān),因而假定測(cè)試案例設(shè)計(jì)人員的測(cè)試技能隨著測(cè)試覆蓋率的增長(zhǎng)而增加.這樣,β(t)被定義為
其中,r=bini/bsta,bini和bsta分別是初始和穩(wěn)態(tài)時(shí)測(cè)試案例設(shè)計(jì)人員的測(cè)試技能因子.公式(16)式的初始條件為c(t)=0,這樣可求得:
其中,β=(1-r)/r.這樣,當(dāng)r=1 時(shí),c(t)呈現(xiàn)指數(shù)增長(zhǎng)趨勢(shì);當(dāng)r=0 時(shí),c(t)呈現(xiàn)S型增長(zhǎng)趨勢(shì);其他情況下,c(t)受制于多種因素,變化趨勢(shì)較為復(fù)雜.可以看出,這種建模方法和獲得測(cè)試覆蓋函數(shù)的思路與對(duì)SRGM 和TEF 的建模是完全一致的.在我們前期的研究[1,7]中已分別對(duì)SRGM 和TEF[6]的建模進(jìn)行了綜合研究,這里不再贅述.相應(yīng)地,另一種融入測(cè)試覆蓋的NHPP 可靠性增長(zhǎng)模型被建立如下:
其中,b是每個(gè)故障與每個(gè)可獲得測(cè)試覆蓋下的故障檢測(cè)率,在m(0)=0 的初始條件下,可求得:
易見(jiàn):當(dāng)c(t)=1 時(shí),模型演變?yōu)榻?jīng)典的G-O 模型.這也意味著,G-O 模型假定測(cè)試覆蓋滿足100%.
4.1.3 基于測(cè)試覆蓋函數(shù)的SRGM 建模
c(t)表示截止至t時(shí)刻,已被測(cè)試的代碼或案例所占的百分比(原表述不清晰);1-c(t)表示到t時(shí)刻,尚未被測(cè)試的代碼所占的比例.顯然,c(t)的導(dǎo)數(shù)c′(t)表示t時(shí)刻時(shí)的測(cè)試覆蓋率.易知,FDR 與c′(t)成正比例,且與1-c(t)成反比例.這樣,文獻(xiàn)[11,40]認(rèn)為c′(t)/(1-c(t))可被用來(lái)度量t時(shí)刻的故障檢測(cè)率b(t):
因?yàn)榛赾(t)的SRGM 研究通常以下面的公共假設(shè)[19,53,54]為基礎(chǔ),從而依據(jù)這些假設(shè)可建立公式(21)所示的微分方程,其可用以描述測(cè)試過(guò)程中故障檢測(cè)與測(cè)試覆蓋的基本關(guān)系:
相比于基于故障檢測(cè)率進(jìn)行SRGM 研究的事實(shí),易知很多研究中對(duì)b(t)的函數(shù)形式進(jìn)行直接設(shè)定會(huì)引發(fā)更多的隨機(jī)性.上式b(t)從測(cè)試覆蓋函數(shù)TCF:c(t)進(jìn)行定義,由于測(cè)試覆蓋可借助測(cè)試用例執(zhí)行經(jīng)過(guò)的結(jié)構(gòu)或數(shù)據(jù)流單元[55]來(lái)度量,這使得FDR 的函數(shù)形式依賴于從測(cè)試覆蓋角度進(jìn)行確定的結(jié)果,如公式(22)所示:
4.1.4 測(cè)試覆蓋函數(shù)與故障檢測(cè)率函數(shù)和可靠性的關(guān)聯(lián)
在提出Logistic TEF[56,57]用以描述TE 消耗的基礎(chǔ)上,有先增后減變化趨勢(shì)的S型函數(shù)又被用以刻畫測(cè)試覆蓋率函數(shù)[58-60],并與SRGM 結(jié)合來(lái)度量可靠性.由于TC表征了被測(cè)試代碼的比例,易知該比例的升高會(huì)使得更多的故障被檢測(cè)出來(lái),進(jìn)而隨著故障的修復(fù),可靠性將得到提高.可見(jiàn),c(t)與t時(shí)刻的可靠性R(t)具有一定的定量關(guān)系,而探討二者之間的關(guān)聯(lián)在可靠性研究中[53-55,61-63]已持續(xù)十余年.可以看出:故障檢測(cè)率b(t)直接描述了測(cè)試環(huán)境下故障被檢測(cè)出的一種概率,其是測(cè)試人員在測(cè)試策略的指導(dǎo)下,采用合適的測(cè)試案例或測(cè)試方法對(duì)故障進(jìn)行檢測(cè)的能力描述;測(cè)試覆蓋c(t)注重于測(cè)試過(guò)程中測(cè)試代碼對(duì)被測(cè)試軟件/源代碼的覆蓋程度.
這樣,易知故障檢測(cè)率是測(cè)試覆蓋的函數(shù),即b(t)=f(c(t)),例如b(t)=c′(t)/(1-c(t)).表2 即給出了典型的測(cè)試覆蓋函數(shù)與故障檢測(cè)率函數(shù),并對(duì)二者的關(guān)聯(lián)進(jìn)行了初步分析.
Table 2 Typical test coverage function and fault detection rate function表2 典型的測(cè)試覆蓋函數(shù)與故障檢測(cè)率函數(shù)
顯然,隨著測(cè)試的進(jìn)行,c(t)不斷增長(zhǎng),但由于b(t)與c(t)之間關(guān)系較為復(fù)雜,b(t)的變化形式難以直接預(yù)測(cè).從定量關(guān)系上來(lái)看,b(t)與c(t)都在[0,1]之間,這里以為例,提出如下定理.
定理.當(dāng)β與α的大小關(guān)系確定時(shí),b(t)與c(t)存在明確的大小關(guān)系.
證明:b(t)=c′(t)/(1-c(t)),c(t)=c(t)(1-c(t))/(1-c(t)),令z(t)=b(t)-c(t)=[c′(t)-c(t)-c2(t)]/(1-c(t)).對(duì)c(t)求導(dǎo)數(shù)可得:
令z(t)=0,e-bt=x,因上式分母恒大于0,且α≠0,上式可轉(zhuǎn)化為
化簡(jiǎn)得:Δ=(b2+1)(1+β)2+2b(1+β)(1-β+2α),
因?yàn)?<β<1,所以Δ>0,所以上式有兩個(gè)根.根據(jù)一元二次方程求根公式得:
易見(jiàn),兩個(gè)根的分子恒小于0.下面對(duì)β與α的關(guān)系進(jìn)行討論.
· 當(dāng)β>α?xí)r,x1<x2<0,函數(shù)圖像開口向上,此時(shí)圖像的大致曲線如圖5 所示.此時(shí)可得:
· 當(dāng)β<α?xí)r,0<x1<x2,函數(shù)圖像開口向下,此時(shí)圖像的大致曲線如圖6 所示.此時(shí)可得:
同理,當(dāng)c(t)為其他形式時(shí)可作同樣的分析處理,進(jìn)而得到有價(jià)值的結(jié)果.
由于FDR 構(gòu)成的不同,b(t)存在著多種函數(shù)形式.早期研究中認(rèn)為FDR 為常量,設(shè)定b(t)=b,顯然無(wú)法描述b(t)隨測(cè)試環(huán)境的變化情況.隨著研究的深入,FDR 已呈現(xiàn)出多種函數(shù)形式,例如b(t)=b2t/(1+bt),b(t)=bαβe-βt,b(t)=等.這些FDR 可分為兩類.
①常量類型:b(t)=b,認(rèn)為FDR 在整個(gè)測(cè)試過(guò)程中并不發(fā)生改變,這雖能帶來(lái)求解上的簡(jiǎn)易,但顯然偏離實(shí)際測(cè)試情形;
另一方面,鑒于FDR 是對(duì)測(cè)試環(huán)境的直接描述,測(cè)試環(huán)境的改變可借助FDR 進(jìn)行研究呈現(xiàn).因而,當(dāng)前對(duì)考慮變動(dòng)點(diǎn)CP(change-point)的SRGM 研究中,多從建立FDR 分段函數(shù)的形式來(lái)實(shí)施.文獻(xiàn)[64]即基于各種FDR,將其引入到SRGM 建模中進(jìn)行研究.
Li QY 在她的文獻(xiàn)[65]中指出,考慮TE 的可靠性建??梢赃M(jìn)一步改善SRGM 的擬合和預(yù)測(cè)效果.測(cè)試過(guò)程中,隨著故障檢測(cè)與修復(fù)等環(huán)節(jié)中TE 的不斷消耗,軟件可靠性不斷得到提高.在我們前期研究[6,7]的基礎(chǔ)上對(duì)TEF 進(jìn)行了梳理,并給出了考慮TEF 的SRGM 研究.例如,在如下的假設(shè)下:“[0,t]內(nèi)累計(jì)檢測(cè)到的故障數(shù)量與當(dāng)前剩余的故障數(shù)量下所花費(fèi)的測(cè)試工作量TE 時(shí)的故障檢測(cè)率b(t)成比例”,可以得到典型的考慮TE 的SRGM建模方法[31,32,36,64,66-73]:
其中,b(t)為故障檢測(cè)率函數(shù),m(t)表示[0,t]內(nèi)累計(jì)檢測(cè)到的故障數(shù)量,a表示軟件中的總故障個(gè)數(shù).在本質(zhì)上,公式(24)的故障檢測(cè)率函數(shù)為b(t)?w(t).實(shí)際上,FDR 表示“單位TE 花費(fèi)下平均檢測(cè)出的故障”[64].這樣,b(t)?w(t)實(shí)際上是一個(gè)復(fù)合函數(shù),其包含了測(cè)試工作量的因素.
在前述分析的基礎(chǔ)上,我們可以將多種描述故障檢測(cè)能力的函數(shù)稱為故障檢測(cè)因子k(t),k(t)存在如下5 種情況.
(1)k(t)=b(t)=b——常量;
(2)k(t)=b(t)——此時(shí)b(t)存在多種函數(shù)形式,如前所述;
(4)k(t)=b(t)?ω(t)——從測(cè)試工作量與故障檢測(cè)率的復(fù)合角度,也即在當(dāng)前測(cè)試資源消耗的情況下,提出了故障被檢測(cè)出來(lái)的能力;
(5)k(t)=b?c′(t)——從測(cè)試覆蓋與每個(gè)故障可獲得測(cè)試覆蓋下的故障檢測(cè)率角度.
綜上,針對(duì)故障檢測(cè)的描述,公式(23)建立了統(tǒng)一的故障檢測(cè)模型——t時(shí)刻檢測(cè)的故障與當(dāng)前軟件中剩余的故障數(shù)量成比例;同時(shí),該模型也指出了t時(shí)刻累積修復(fù)的故障數(shù)量函數(shù)形式,即c(t)=p(t)?m(t).
c(t)描述了測(cè)試用例的執(zhí)行情況,側(cè)重于測(cè)試覆蓋代碼的程度;w(t)描述了測(cè)試資源的消耗情況,側(cè)重于測(cè)試成本的花銷;b(t)描述了測(cè)試策略的效果,側(cè)重于測(cè)試人員的技能、工具與技術(shù).此三者從不同角度對(duì)測(cè)試環(huán)境效果進(jìn)行了建模描述,在當(dāng)前軟件可靠性建模中,用以描述故障被檢測(cè)出來(lái)的能力.
無(wú)論是故障檢測(cè)率FDR:b(t),還是故障檢測(cè)因子k(t),都是對(duì)測(cè)試過(guò)程中故障被檢測(cè)出的程度或效果的描述,刻畫了在測(cè)試環(huán)境下,消耗測(cè)試資源以執(zhí)行測(cè)試策略來(lái)對(duì)故障進(jìn)行檢測(cè)的能力.因此,其與測(cè)試環(huán)境下的多因素(失效分布情況、故障密度、程序大小、測(cè)試人員技能、測(cè)試案例與工具等)有關(guān)聯(lián).
迄今為止,國(guó)內(nèi)外尚未對(duì)FDR 影響下的可靠性模型進(jìn)行研究,也缺少對(duì)FDR 自身性能的分析.本節(jié)將通過(guò)在大量真實(shí)失效數(shù)據(jù)集上進(jìn)行實(shí)驗(yàn)驗(yàn)證,來(lái)分析這兩個(gè)方面.
在當(dāng)前可查證到的SRGM 研究中,所有模型的建立均是基于下面的假設(shè),即“t時(shí)刻累積檢測(cè)的故障數(shù)量與當(dāng)前軟件中剩余的故障數(shù)量成比例”,這個(gè)比例即是故障檢測(cè)因子.為此,我們提出統(tǒng)一的故障檢測(cè)過(guò)程建模:
這里認(rèn)為t時(shí)刻檢測(cè)的故障數(shù)量與當(dāng)前剩余的故障總數(shù)成比例,比例系數(shù)是故障檢測(cè)因子k(t)(實(shí)際上,這里的k(t)已經(jīng)超過(guò)了SRGM 研究中單純的故障檢測(cè)率b(t),其表示當(dāng)前測(cè)試環(huán)境下測(cè)試人員在消耗測(cè)試資源,執(zhí)行測(cè)試案例進(jìn)行測(cè)試時(shí)故障被檢測(cè)出來(lái)的概率(函數(shù)),是涵蓋多個(gè)測(cè)試因素的綜合性指標(biāo).但從保持延續(xù)性以及便于實(shí)驗(yàn)等因素考慮,這里依舊命名為b(t),后面不再專門用k(t)進(jìn)行表示).p(t)表示故障修復(fù)概率,表示t時(shí)刻被檢測(cè)出的故障被修復(fù)的比率.
在m(0)=0 和a(0)=a的初始條件下,求解可得到:
顯然,公式(26)中b(t),p(t)和a(t)的多種設(shè)置,可以得到多種m(t).因此,這里提出的是一種框架式模型,具有較強(qiáng)的柔韌性.
文獻(xiàn)[17,19,27,28]中提出了較為常用的FDR,以公式(26)為基礎(chǔ),通過(guò)設(shè)定不同形式的b(t),可以得到在相應(yīng)測(cè)試環(huán)境下的可靠性模型(即累積故障檢測(cè)數(shù)量),具體求解情況如下.
此時(shí),隨著測(cè)試的持續(xù)進(jìn)行,b(t→∞)→b.
(2) 若b(t)=b2t/(1+bt),則可以求得m(t)如下:
(3) 若b(t)=bαβe-βt,則可求得m(t)如下:
此時(shí),隨著測(cè)試的持續(xù)進(jìn)行,b(t→∞)=0.
此時(shí),隨著測(cè)試的持續(xù)進(jìn)行,b(t→∞)=0.
此時(shí),隨著測(cè)試的持續(xù)進(jìn)行,b(t→∞)→b(1+σ).
雖然已有眾多SRGMs 被提出,但多以指數(shù)型和S型模型[47,74]為主.同時(shí),為了觀測(cè)不同F(xiàn)DR 的差異,表3 列出了用于參與比較的可靠性模型和本文衍生的模型(不失一般性,這里所提出的框架模型中設(shè)定p(t)=p,a(t)=a)及FDR.
Table 3 Reliability models and FDRs involved in comparison表3 參與比較的可靠性模型及FDR
這11 個(gè)模型可以分為6 組,其中,前5 組均是在同一FDR 下采用不同的建模假設(shè)所得到的模型,可以用于比較不同模型對(duì)FDR 的影響,最后一組僅包含復(fù)雜彎曲S型函數(shù)M-10;同時(shí),M-1,M-2,M-4,M-8,M-10 是統(tǒng)一建??蚣芟虏煌現(xiàn)DR 衍生出的模型,可以觀測(cè)不同F(xiàn)DR 對(duì)模型的影響.
為了驗(yàn)證與比較模型的性能,我們遴選了12 個(gè)失效數(shù)據(jù)集DS1~DS12[18,19,24,48,76-83]開展實(shí)驗(yàn)工作.這些失效數(shù)據(jù)集由失效檢測(cè)時(shí)間ti(通常是以周為單位)和累積檢測(cè)的失效故障數(shù)量yi構(gòu)成,其均來(lái)自國(guó)際上著名的計(jì)算機(jī)公司公開發(fā)布的計(jì)算機(jī)(軟件)系統(tǒng)在測(cè)試過(guò)程中搜集的真實(shí)數(shù)據(jù),描述了不同的測(cè)試場(chǎng)景,從而作為可靠性模型驗(yàn)證的載體,得到了廣泛的認(rèn)可與應(yīng)用.表4 列出了來(lái)自于真實(shí)應(yīng)用場(chǎng)景下的12 個(gè)失效數(shù)據(jù)集,對(duì)其構(gòu)成與來(lái)源等進(jìn)行介紹.
Table 4 Failure data set in real application scenario表4 真實(shí)應(yīng)用場(chǎng)景下的失效數(shù)據(jù)集
5.3.1 擬合性能分析
為了獲得更為廣泛的實(shí)驗(yàn)結(jié)果以得到有價(jià)值的分析,這里在12 個(gè)公開發(fā)表的失效數(shù)據(jù)集上進(jìn)行實(shí)驗(yàn)驗(yàn)證(更多實(shí)驗(yàn)結(jié)果可聯(lián)系作者).基于模型在12 個(gè)數(shù)據(jù)集上的擬合結(jié)果,我們繪制了參與比較的模型與真實(shí)的失效數(shù)據(jù)數(shù)值之間的擬合曲線,如圖7 所示.
為更加清晰地觀測(cè)不同F(xiàn)DR 對(duì)模型帶來(lái)的影響,在圖7 的基礎(chǔ)上,我們特將不同F(xiàn)DR 融入統(tǒng)一框架模型而衍生出的M-1,M-2,M-4,M-6,M-8,M-10 繪制在一處,用以比較框架模型內(nèi)不同子模型之間的差異,如圖8 所示.
從圖7 以及圖8 展示的大量實(shí)驗(yàn)所呈現(xiàn)的系列曲線結(jié)果可以看出:
(1) 整體上,除了部分模型出現(xiàn)嚴(yán)重偏差以外(例如M-6 在DS1上,M-8 在DS2上,M-7 在DS4上,M-6 在DS8上等),大部分模型與真實(shí)的失效數(shù)據(jù)集的增長(zhǎng)形狀保持一致,這說(shuō)明軟件測(cè)試過(guò)程從累計(jì)故障檢測(cè)的角度具有凹或凸指數(shù)型增長(zhǎng)趨勢(shì),這也證明采用NHPP 指數(shù)類失效時(shí)間模型研究軟件可靠性增長(zhǎng)具有現(xiàn)實(shí)合理性.
可以發(fā)現(xiàn):彎曲S型FDR 函數(shù)(包括復(fù)雜彎曲S型函數(shù))對(duì)數(shù)據(jù)集的適應(yīng)性最好,這通過(guò)M-4,M-5 和M-10在眾多失效數(shù)據(jù)集上的性能得到驗(yàn)證,這也與我們前期研究[1,7]的結(jié)果保持一致,這是因?yàn)槌尸F(xiàn)S型的FDR 函數(shù)能夠適應(yīng)不同測(cè)試階段測(cè)試環(huán)境的變化,具有較強(qiáng)的柔韌性;M-6 和M-7 所包含的先增后減型FDR 也展現(xiàn)出了較好的性能,但并不具備S型FDR 的強(qiáng)勁適應(yīng)性;遞減型與常數(shù)型FDR 參與的模型性能表現(xiàn)一般,這主要是由于真實(shí)測(cè)試環(huán)境的變化并非穩(wěn)定或連續(xù)變化.這些不同的實(shí)驗(yàn)現(xiàn)象可以解釋為故障檢測(cè)過(guò)程取決于特定測(cè)試策略下的測(cè)試技術(shù)、人員技能等實(shí)際因素,這使得FDR 既不是常量,也不是持續(xù)遞減,而是具有S型等變化規(guī)律,特別是對(duì)于大型復(fù)雜軟件的長(zhǎng)期測(cè)試過(guò)程來(lái)說(shuō)更加滿足這一變化規(guī)律.
綜上,從具有相同F(xiàn)DR 的不同模型曲線進(jìn)行分析可以看出,本文所提出的模型優(yōu)于其他同組模型.
(2) 雖然S型FDR 性能較好,但將其融入某些建模假設(shè)較為合理的模型中,這些模型在有些失效數(shù)據(jù)集上不一定會(huì)表現(xiàn)出良好的性能.由軟件自身的特點(diǎn)與測(cè)試過(guò)程的特點(diǎn)所決定,不同公司發(fā)布的失效數(shù)據(jù)集差異性較大,這使得很難存在某個(gè)模型在所有失效數(shù)據(jù)集上均表現(xiàn)出良好性能.例如,M-5 在DS2上的性能并不理想,這與Sharma 等人[22]提出的模型具有局限性相一致.
(3) 另外,不完美排錯(cuò)模型考慮到了更多的實(shí)際情況(正如文獻(xiàn)[84]所述,不完美排錯(cuò)模型將故障排除效率以及軟件故障總數(shù)均看作隨時(shí)間變化的函數(shù),更具有實(shí)際應(yīng)用意義),因此其整體性能好于完美排錯(cuò)模型.因?yàn)檎鎸?shí)的測(cè)試與故障檢測(cè)和排錯(cuò)過(guò)程是被多種因素影響的復(fù)雜隨機(jī)過(guò)程,具有不完美特性,因此,考慮到實(shí)際不完美情況的模型能夠給建模帶來(lái)更多的精準(zhǔn)性.
5.3.2 預(yù)測(cè)性能分析
為了觀測(cè)模型的預(yù)測(cè)性能,我們繪制了參與比較模型的預(yù)測(cè)RE曲線,如圖9 所示.RE曲線越趨近于0,表明預(yù)測(cè)性能越好,位于0 以上是正向預(yù)測(cè),位于0 以下是負(fù)向預(yù)測(cè).
基于數(shù)據(jù)集的預(yù)測(cè)可以看作是模型對(duì)未來(lái)測(cè)試性能的描述能力,也反映出模型在后續(xù)時(shí)刻累積檢測(cè)出故障的能力.從圖9 所展示的曲線走勢(shì)以及相應(yīng)的數(shù)據(jù)分析可以看出:
(1) 整體上,除了個(gè)別模型在部分?jǐn)?shù)據(jù)集上出現(xiàn)預(yù)測(cè)偏差以外(例如,M-10 模型在DS5上和M-7 模型在DS8上發(fā)生預(yù)測(cè)失真現(xiàn)象),大部分模型的預(yù)測(cè)曲線隨著測(cè)試的進(jìn)行都逐漸趨向于0,表明效果較為理想;
(2) 模型本身的建模合理性對(duì)預(yù)測(cè)效果存在著較大影響,但預(yù)測(cè)依然會(huì)受到模型參數(shù)個(gè)數(shù)、數(shù)據(jù)集本身的數(shù)量大小等因素的影響,例如在測(cè)試前半程,預(yù)測(cè)曲線的劇烈起伏變化,表明模型正在進(jìn)行對(duì)數(shù)據(jù)的擬合適應(yīng);
(3) 具有(彎曲)S型FDR 函數(shù)的模型能夠較快地趨于0 水平線,表明其預(yù)測(cè)能力較好,這包括M-4,M-5.同時(shí),結(jié)合上述針對(duì)于圖7、圖8 的討論可得,具有優(yōu)秀適應(yīng)能力的S型FDR 能夠幫助模型呈現(xiàn)更為強(qiáng)大的擬合與預(yù)測(cè)能力;
(4) M-10 在DS5上的預(yù)測(cè)性能并不理想,這與其在DS5上的擬合曲線所顯示的擬合性能不理想相一致.從而可以得出,任何一個(gè)模型不能在所有的數(shù)據(jù)集上表現(xiàn)良好(包括擬合性能和預(yù)測(cè)性能),這種現(xiàn)象是數(shù)據(jù)集本身或模型參數(shù)數(shù)量過(guò)多等因素造成的;
(5) 呈現(xiàn)S型變化趨勢(shì)的b(t)=,在多個(gè)數(shù)據(jù)集的多個(gè)模型上保持良好的性能,表明實(shí)際測(cè)試環(huán)境存在移動(dòng)點(diǎn)/拐點(diǎn)CP,而并非平滑進(jìn)行,因此,包含CP 的模型能夠具有更好的性能.
基于前述11 個(gè)模型在12 個(gè)真實(shí)失效數(shù)據(jù)集上的大量實(shí)驗(yàn)結(jié)果分析,特作如下討論.
(1) 整體上,可靠性模型不能適應(yīng)于所有的數(shù)據(jù)集,且根據(jù)實(shí)驗(yàn)結(jié)果可觀察出,其擬合度量與預(yù)測(cè)具有相對(duì)的一致性.這兩點(diǎn)與FDR 的關(guān)聯(lián)并不大,從本文大量的實(shí)驗(yàn)結(jié)果中沒(méi)有得到明顯關(guān)聯(lián)支撐:①可靠性模型的有效性具有較大的局限性,模型在一部分?jǐn)?shù)據(jù)集上表現(xiàn)優(yōu)秀的同時(shí),在另外一些數(shù)據(jù)集上效果一般甚至較差,適用性受到較大限制;② 此外,模型的擬合性能與預(yù)測(cè)性能具有基本統(tǒng)一性;
(2) FDR 對(duì)模型的影響,特別是同一框架中不同的FDR 對(duì)性能的影響存在較大差異:①框架模型具有較強(qiáng)的柔韌性,如本文提出的一樣,不同的FDR 使得框架模型衍生為具體的模型,這為區(qū)分FDR 的性能差異帶來(lái)可能;② 同一FDR 在不同可靠性模型中的性能通過(guò)模型的整體性能來(lái)反映,由于不同模型是研究人員基于不同的假設(shè)建模得到,因而難以進(jìn)行有效衡量;
(3) FDR 建模具有客觀性與主觀性兩個(gè)方面:由于FDR 與整體測(cè)試過(guò)程緊密相關(guān),而測(cè)試過(guò)程是測(cè)試人員按照測(cè)試策略進(jìn)行測(cè)試工作不斷發(fā)現(xiàn)軟件故障的過(guò)程,是多個(gè)隨機(jī)因素疊加在一起的隨機(jī)過(guò)程,具有很強(qiáng)的隨機(jī)性.因此,測(cè)試過(guò)程的隨機(jī)性會(huì)直接為FDR 的建模帶來(lái)困難:①對(duì)于具有較強(qiáng)測(cè)試規(guī)劃,呈現(xiàn)一定規(guī)律的測(cè)試過(guò)程,FDR 往往具有明顯的變化規(guī)律,這為FDR 建模提供依據(jù);② 測(cè)試過(guò)程的復(fù)雜性解釋了本文給出的當(dāng)前研究中存在多種類型FDR 形式的主要原因,具有符合多種實(shí)際的真實(shí)性;
(4) 包含更多測(cè)試信息的發(fā)布將為FDR 的建模與研究帶來(lái)直接幫助,也為深入研究可靠性的增長(zhǎng)與變動(dòng)提供有效支持.
特別指出:FDR 受到多種因素影響,具有典型的隨機(jī)性,例如不同測(cè)試策略、測(cè)試工具與方法等都會(huì)對(duì)其帶來(lái)擾動(dòng)影響.因此,現(xiàn)有研究中提出了多種不同形式的FDR,且相互之間的差異性較大,但在特定的測(cè)試環(huán)境下還是具有合理性的.在實(shí)際測(cè)試過(guò)程中,由于測(cè)試都是在預(yù)定或已知的條件下主動(dòng)實(shí)施的,此時(shí)完全可以根據(jù)測(cè)試整體安排來(lái)選擇和確定FDR.
6.1.1 描述軟件測(cè)試過(guò)程長(zhǎng)期變化規(guī)律的FDR 函數(shù)
FDR 是SRGM 中最為重要的參變量,其描述了單位時(shí)間內(nèi)被檢測(cè)到的故障數(shù)量的變化情況,因而其在本質(zhì)上刻畫了整個(gè)測(cè)試過(guò)程中測(cè)試效率的演變,對(duì)于可靠性模型的演變尤其是增長(zhǎng)至關(guān)重要.
從本文前述介紹中可以看出:FDR 實(shí)際上涉及到SRGM 中的故障檢測(cè)率函數(shù)b(t),當(dāng)考慮測(cè)試工作量時(shí),就需要將w(t)包含進(jìn)來(lái);當(dāng)從測(cè)試覆蓋的視角分析時(shí),就需要將c(t)融入進(jìn)來(lái).可以看出:FDR 是對(duì)整體測(cè)試環(huán)境的綜合建模,其數(shù)學(xué)模型不僅反映了故障檢測(cè)的效率和能力,也描述了當(dāng)前測(cè)試環(huán)境下各種隨機(jī)因素的擾動(dòng)情況.因此,能否提出能夠涵蓋真實(shí)隨機(jī)因素的FDR(整體函數(shù)或分段函數(shù)),是當(dāng)前研究面臨的一個(gè)重要挑戰(zhàn).
6.1.2 發(fā)布多模式測(cè)試環(huán)境下的更多構(gòu)成要素的失效數(shù)據(jù)集
包括FDR 與可靠性在內(nèi)的各類模型,本質(zhì)上均需要依靠真實(shí)的失效數(shù)據(jù)集進(jìn)行驗(yàn)證.現(xiàn)有的失效數(shù)據(jù)集對(duì)FDR 驗(yàn)證的支持嚴(yán)重不足,這成為制約FDR 發(fā)展的首要障礙.因此,為FDR 建模提供更多有效信息,為可靠性研究特別是建模、度量、預(yù)測(cè)、發(fā)布、調(diào)整等帶來(lái)重大變革,呼吁公司直接發(fā)布FDR,這也是當(dāng)前研究中所面臨的一個(gè)挑戰(zhàn).
6.2.1 對(duì)考慮FDR 參與的可靠性模型進(jìn)行綜合評(píng)價(jià)
軟件開發(fā)自需求分析起始至發(fā)布的全過(guò)程,包含了多個(gè)測(cè)試階段.按照文獻(xiàn)[23]中給出的軟件開發(fā)流程,從圖10 可以看出,為了提高可靠性,4 個(gè)測(cè)試階段相互銜接直至進(jìn)入到發(fā)布后的運(yùn)行階段.
不同測(cè)試階段的目的、策略、技術(shù)、方法等差異,使得每個(gè)階段的FDR 發(fā)生變化,這種變化有時(shí)較為劇烈,對(duì)測(cè)試性能與效率影響較大.FDR 自身的不穩(wěn)定性對(duì)可靠性模型評(píng)價(jià)帶來(lái)重要影響,因此要把FDR 的變化融入到可靠性模型的綜合評(píng)價(jià)分析中,從而為可靠性模型評(píng)測(cè)帶來(lái)關(guān)鍵參數(shù)上的影響,提高精確度.
6.2.2 FDR 選擇成為一個(gè)挑戰(zhàn)
FDR 支持可靠性研究伴隨著其眾多模型的提出而發(fā)展,特別是在以SRGM 為核心的可靠性研究上成為關(guān)鍵因素.
易知,提出能夠適應(yīng)多種測(cè)試環(huán)境變化的FDR 是建立性能優(yōu)異的SRGM 的重要方面.相比之下,現(xiàn)有的FDS中卻沒(méi)有公布FDR 的變化趨勢(shì),這使得目前SRGM 的研究中,尚不能根據(jù)FDS 來(lái)直接驗(yàn)證所建立的b(t),只能間接通過(guò)m(t)的性能來(lái)體現(xiàn).
6.2.3 要為最優(yōu)發(fā)布提供有效支持
軟件發(fā)布受制于軟件開發(fā)技術(shù)、人員、成本等多種因素,通常,超過(guò)預(yù)期時(shí)間的發(fā)布因?yàn)槌杀镜膭×疑仙蚴フ碱I(lǐng)市場(chǎng)的機(jī)會(huì)等原因而直接導(dǎo)致軟件制品的失敗.合理管控軟件的開發(fā)過(guò)程,做到在預(yù)期之內(nèi)的發(fā)布,甚至是最優(yōu)發(fā)布,已成為軟件開發(fā)管理的重要內(nèi)容.
區(qū)別于傳統(tǒng)軟件測(cè)試的主要目的——單純地檢測(cè)與排除故障,當(dāng)前已開始考慮到持續(xù)進(jìn)行測(cè)試以提高可靠性,達(dá)到(軟件)系統(tǒng)發(fā)布的目的.因此,FDR 要能夠支撐與服務(wù)于軟件的及時(shí)發(fā)布,提高市場(chǎng)占有率.此外,對(duì)于新型態(tài)軟件,例如大規(guī)模分布式網(wǎng)絡(luò)軟件、復(fù)雜軟硬件綜合系統(tǒng)、復(fù)雜網(wǎng)絡(luò)軟件等,在可靠性研究上缺少失效數(shù)據(jù)集的外部支持.
6.2.4 基于現(xiàn)有FDR 選擇融入到可靠性模型中,發(fā)揮精準(zhǔn)組合作用
可靠性建模的一個(gè)分支趨勢(shì)是基于現(xiàn)有的模型框架融入不同的參數(shù),或者分階段融入不同的參數(shù),以得到更為具體的精準(zhǔn)模型.FDR 對(duì)于建模的重要性還可以通過(guò)其作為關(guān)鍵參數(shù)的屬性,融入到現(xiàn)有的可靠性建模的框架中,進(jìn)而建立更為靈活的可靠性模型.當(dāng)前,無(wú)論是框架模型還是FDR 模型均存在多個(gè),這為組合方式建立模型提供了有效選擇,也為可靠性模型在工程中的應(yīng)用帶來(lái)機(jī)遇.
6.2.5 根據(jù)FDR 對(duì)測(cè)試策略實(shí)施有效指導(dǎo)
FDR 對(duì)測(cè)試環(huán)境的描述能力直接反映在故障被檢測(cè)出來(lái)的故障數(shù)量與效率上,因此,有效的FDR 也應(yīng)該為實(shí)際測(cè)試過(guò)程給出建議,用以調(diào)整測(cè)試策略,更加合理地分配測(cè)試資源.當(dāng)前研究中,尚未有從FDR 的角度對(duì)測(cè)試工作量(TE)分配、測(cè)試過(guò)程管理等進(jìn)行具體的研究,這成為亟待突破的研究?jī)?nèi)容.
故障檢測(cè)率FDR 與可靠性的建模與度量緊密相關(guān),是軟件測(cè)試過(guò)程中測(cè)試技術(shù)綜合運(yùn)用取得的結(jié)果,既可以從測(cè)試覆蓋的角度進(jìn)行建模,也可以融合測(cè)試工作量TE 因素,還可以直接根據(jù)實(shí)際進(jìn)行設(shè)定.可以看出:FDR是可靠性建模、增長(zhǎng)、度量、系統(tǒng)發(fā)布的重要構(gòu)成要素,是用以支撐可靠性研究與增強(qiáng)可靠性增長(zhǎng)的重要內(nèi)容,推動(dòng)了以SRGM 為核心的可靠性研究的深入發(fā)展.
本文對(duì)可靠性模型中故障檢測(cè)率的研究進(jìn)行了全面述評(píng),包括可靠性建模的關(guān)鍵要素FDR 的功能、與失效強(qiáng)度和冒險(xiǎn)率的關(guān)聯(lián)、多視角下的分類、不完美排錯(cuò)下的性能分析以及未來(lái)研究趨勢(shì)等.期望我們的工作能為可靠性研究,特別是FDR 的研究提供有益的借鑒和參考,并為推動(dòng)可靠性相關(guān)的研究與應(yīng)用向前發(fā)展做出積極貢獻(xiàn).
致謝在此,我們向本文參考文獻(xiàn)中研究人員所做的大量基礎(chǔ)工作表示真誠(chéng)感謝!對(duì)本文在寫作與完善工作過(guò)程中給予無(wú)私支持和提供寶貴建議意見(jiàn)的同行致謝.特別感謝審稿人,他們提出的寶貴意見(jiàn)和建議對(duì)于本文整體水平的提高有很大幫助.