張策,呂為工,邱忠銀,高天翼,江文倩,孟凡超
(哈爾濱工業(yè)大學(威海)計算機科學與技術(shù)學院,山東威海 264209)
軟件測試是軟件可靠性不斷增長的過程,是提高可靠性必不可少的關(guān)鍵環(huán)節(jié).軟件測試過程是軟件測試人員在某種測試環(huán)境下,按照預(yù)定的測試策略或計劃,執(zhí)行測試案例,發(fā)現(xiàn)與檢測軟件運行過程中的失效,定位、收集和記錄故障,并進行故障修復(fù)的過程.整個過程大致由三個部分組成,即故障檢測過程FDP(Fault Detection Process)、故障分析過程FAP(Fault Analysis Process)和故障修復(fù)過程FCP(Fault Correction Process)[1].圖1 描述了軟件測試與排錯過程,可以看出,隨著故障被不斷的檢測和修復(fù),軟件的可靠性得到持續(xù)提高.
圖1 真實軟件測試過程中存在不完全排錯與引入新故障情況Fig.1 Incomplete troubleshooting and introduction of new faults during real software testing
由于軟件測試與排錯的復(fù)雜性、隨機性和不確定性[2-5],檢測到的故障在修復(fù)階段可能沒有成功排除,出現(xiàn)排錯的不完全現(xiàn)象,如圖1 中上面的反饋線;另外,在故障的修復(fù)過程中,由于程序的內(nèi)在結(jié)構(gòu)邏輯可能被破壞,從而存在引入新故障的可能[6-7],如圖1 中下面的反饋線.包括這兩種情況等實際測試情況在內(nèi)的復(fù)合現(xiàn)象通常被稱為不完美排錯現(xiàn)象.因此,不完美排錯[5,8-12]是更加靠近真實軟件測試過程的研究,能夠描述更多的實際情形,得到了科研人員的重視.軟件可靠性增長模型SRGM(Software Reliability and Growth Model)[13-15]可用來對軟件測試過程進行建模,通過數(shù)學手段來定量描述故障檢測、修復(fù)等關(guān)系,是對軟件可靠性進行有效度量與預(yù)測的重要工具.在現(xiàn)有SRGM 研究看來,不完美排錯是對實際軟件測試過程的一種近似抽象,包括排錯的不徹底現(xiàn)象[16]、引入新故障現(xiàn)象[9-10]或者是軟件中總故障數(shù)量a(t)的不斷增長現(xiàn)象[17].這些研究從不同角度和內(nèi)容對測試過程進行了不完美排錯建模,有力地推動了SRGM 的發(fā)展,但對不完美排錯的全面準確描述還不夠深入.例如,很多大型軟件的測試過程中,故障排錯的不完全與引入新故障通常是同時存在的,二者相互交織在一起.從測試覆蓋角度來看,包括經(jīng)典的G-O(Goel L -Okumoto K)模型[18-19]在內(nèi)的很多完美排錯和不完美排錯模型,均默認或假定測試覆蓋滿足100%,但顯然這是不切合實際的.測試覆蓋針對程序結(jié)構(gòu)進行測試策略下的測試,涵蓋語句覆蓋、分支覆蓋、條件覆蓋、路徑覆蓋、數(shù)據(jù)流覆蓋、函數(shù)覆蓋、調(diào)用覆蓋,因此從測試覆蓋的角度研究可靠性可以更加細膩地剖析可靠性的變動.事實上,軟件測試過程是較為復(fù)雜的隨機過程.為了得到更加有效的可靠性模型,就需要對測試過程中的隨機因素加以考慮.
本文在現(xiàn)有研究的基礎(chǔ)上提出一種全面考慮不完美排錯的軟件可靠性過程分析方法,明確考慮到了測試覆蓋,所提出的模型能夠更加準確地描述軟件測試過程.
文章結(jié)構(gòu)安排如下:第1 節(jié)對考慮真實測試過程的不完美排錯進行建模,提出了一種不完美排錯下測試覆蓋相關(guān)的軟件可靠性增長框架模型,進而給出了具體的測試覆蓋函數(shù)相關(guān)的可靠性模型;第2節(jié)通過公開發(fā)表的失效數(shù)據(jù)集驗證了所提出模型的有效性與合理性.最后總結(jié)了全文,并指出后續(xù)研究方向.
基于對測試環(huán)境的認知,遵循SRGM 研究所作假設(shè)的常規(guī)共識,考慮測試覆蓋下的不完美排錯模型假設(shè)如下[18,20-24]:
1)軟件失效隨機發(fā)生,故障檢測與修復(fù)過程服從非齊次泊松過程NHPP(Non-Homogeneous Poisson Process)[12,18,25],即到t 時刻累積檢測出的故障數(shù)N(t)服從期望函數(shù)為m(t)的NHPP 分布,滿足m(t=0)=0,則利用NHPP 基本性質(zhì),能夠得到t 時刻檢測到k個故障的概率以及m(t)與故障檢測率λ(t)的基本關(guān)系:
2)軟件失效由軟件中剩余的故障引發(fā);
3)在時間區(qū)間(t,t+Δt)內(nèi),最多發(fā)生一個故障,且所檢測到的故障數(shù)量與當前剩余的故障總數(shù)成比例;
4)在時間區(qū)間(t,t+Δt)內(nèi),被修復(fù)的故障數(shù)量與被檢測的故障數(shù)量成比例;
5)故障修復(fù)的過程中,存在引入新故障的現(xiàn)象,引入的故障數(shù)量與累積修復(fù)的故障數(shù)量成比例.
令m(t)和r(t)分別表示截止至t 時刻累積檢測到和修復(fù)的故障數(shù)量,a(t)表示t 時刻軟件中總的故障數(shù)量.則基于上述假設(shè),建立了下面的基于故障檢測率函數(shù)b(t)、故障修復(fù)函數(shù)p(t)和新故障引入函數(shù)γ(t)的故障檢測、修復(fù)與引入模型,如式(3)所示.
式(3)中第一個方程基于第三條假設(shè),描述了t時刻檢測的故障數(shù)量與剩余故障數(shù)量的關(guān)系;第二個方程基于第五條假設(shè),從t 時刻新增加的故障角度建立了總故障個數(shù)a(t)的表達式;第三個方程基于第四條假設(shè),對Δt 時間內(nèi)檢測的故障數(shù)量與修復(fù)的故障數(shù)量進行建模.
b(t)是故障檢測率,表示測試人員在測試環(huán)境下運用測試技術(shù)檢測出故障的概率,其可以從多種角度來進行設(shè)定.當考慮測試覆蓋時,故障檢測率b(t)可表示如下:
c(t)表示截止至t 時刻已經(jīng)被(測試案例)測試的代碼所占的百分比;1-c(t)表示到t 時刻尚未被測試的代碼所覆蓋的比例.顯然,c(t)的導(dǎo)數(shù)c′(t),則表示t 時刻點上的測試覆蓋率.易知,故障檢測率FDR(Fault Detection Rate)[26]與c′(t)成正比例,且與1-c(t)成反比例,b(t)=c′(t)/[1 -c(t)].r(t)表示新故障引入率,p(t)表示t 時刻故障被成功修復(fù)的比例函數(shù).
此微分方程組的邊界條件為:
這里,采用如下過程進行求解,為方便令:
將式(9)代入式(7),則有:
式(10)~(9)代入式(6)可得:
將式(13)代入式(11)得:
由此求解得到統(tǒng)一的測試覆蓋函數(shù)下,考慮故障不完全修復(fù)與新故障引入的不完美測試模型如下:
考慮到累積檢測出的故障數(shù)量與失效率之間存在著微分關(guān)系如式(2)所示,則可得失效率λ(t)為:
相應(yīng)地,可求得軟件中總故障數(shù)量a(t)和累積修復(fù)的故障數(shù)量r(t):
至此,完成了測試覆蓋函數(shù)下考慮故障不完全修復(fù)與新故障引入的不完美測試框架模型的構(gòu)建,得到了SRGM 研究中重要的關(guān)鍵內(nèi)容:m(t)、r(t)和a(t).從測試過程的整體來看,截止t 時刻,累積修復(fù)的故障數(shù)量r(t)小于等于累積檢測的故障數(shù)量m(t),m(t)小于軟件中故障總數(shù).將上述模型簡記為TCMID(Testing Coverage Software Reliability Model under Imperfect Debugging).
測試階段的軟件可靠性表示為R(x|T),即假定軟件上一次失效時間是T(T≥0,x>0),依據(jù)NHPP基本性質(zhì),可得在(T,T+x)內(nèi)的軟件可靠性表示為:
若假定從T=0 開始,則m(t)=0,將式(15)代入式(19),則可以得到更易理解的可靠性R(x),如式(20)所示:
TCM-ID 采用微分方程組的形式對不完美排錯下的測試過程進行建模,其中融入了故障排錯率p(t)、故障檢測率b(t)和新故障引入率λ(t),因此求解得到的m(t)、r(t)和a(t)是多參數(shù)的融合體.為此,可以看出該模型是具有較強柔韌性的框架模型,可以支持一系列的不完美排錯相關(guān)的具體模型的構(gòu)建.
1)采用方程組的形式建立了不完美排錯相關(guān)的軟件可靠性模型;
2)關(guān)鍵的故障數(shù)量表達式(m(t)、c(t)和a(t))均是通過求解得出,且具體由3 個參變量函數(shù)來決定,即故障檢測率b(t)、故障排錯概率p(t)以及故障引入率λ(t),這些參變量函數(shù)可根據(jù)實際情況進行設(shè)定,這為模型的框架性、統(tǒng)一性和柔韌性提供了支撐,為SRGM 所關(guān)注的m(t)等信息提供了更為客觀的依據(jù),從而使其更加直接地受制于實際因素;
3)故障修復(fù)過程中存在故障的引入,因此,單位時間內(nèi)新增加的故障數(shù)量應(yīng)與累積修復(fù)的故障數(shù)量成比例.
故障檢測率FDR:b(t)是可靠性建模中必不可少的構(gòu)成元素,其描述了測試環(huán)境下故障被檢測出來的能力.當前研究中以人為設(shè)定FDR 為某種函數(shù)為主,且為求解簡便,多以b(t)=b 為常見.顯然,由于測試環(huán)境的復(fù)雜性,測試階段、測試策略等因素的不同會使FDR 呈現(xiàn)多種變化形式.文獻[27-28]認為測試覆蓋函數(shù)與FDR 緊密相關(guān),可以成為FDR 建模的元素,并提出c′(t)/(1-c(t))可用來度量t 時刻的故障檢測率b(t).c′(t)描述了測試用例[29]的執(zhí)行情況,通過c(t)的變動可以獲得不同的FDR 函數(shù).這樣,可以得到下述的不完美排錯過程模型:
依據(jù)上述求解過程進行求解,可以得到測試覆蓋函數(shù)下的不完美測試模型中的m(t):
至此,從測試覆蓋函數(shù)c(t)的角度得到了SRGM研究中的關(guān)鍵待求變量m(t).通過設(shè)定各類測試覆蓋函數(shù)c(t),可以得到一系列相關(guān)的m(t).為簡化計算,不妨令p(t)=p,γ(t)=γ.這里令a(t)=(1 -ebtc)[30],則可求得m(t)如下:
可以看出,本文所提出的模型在測試覆蓋函數(shù)視角下,將可靠性研究由傳統(tǒng)的FDR 相關(guān)演進為不完美排錯下測試覆蓋相關(guān)的可靠性模型.
這里選定了一系列典型的不完美排錯模型參與比較,以對比模型之間的性能差異,如表1 所示.
表1 參與比較的模型Tab.1 Participating models for comparison
選取4 個已被廣泛用來進行驗證可靠性模型性能的失效數(shù)據(jù)集DS1[24],DS2[35],DS3[36],DS4[22],它們均來自國際知名公司在系統(tǒng)開發(fā)過程中所搜集的軟件測試失效數(shù)據(jù),具有廣泛的代表性,可以表征多樣的軟件測試場景;同時,選取通過可靠性過程仿真獲得的失效數(shù)據(jù)集DS5[37]進行同步驗證,該數(shù)據(jù)集來自基于率函數(shù)對不完美排錯下的軟件測試情況進行仿真,更加靠近真實情況.
采用均方誤差值(Mean Square Error,MSE),Variation,RMS-PE 和回歸曲線方程的相關(guān)指數(shù)(Rsquare)度量曲線擬合效果,利用相對誤差(Relative Error,RE)度量模型的預(yù)測能力.
式中:yi表示到ti時累積的失效個數(shù),m(ti)表示到ti時利用模型得到的估算值,k 表示失效數(shù)據(jù)樣本數(shù)量.顯然,MSE,Variance,RMS-PE 和BMMRE 的值越小,R-square 值越接近于1,擬合效果越好;RE 越趨近于0,模型預(yù)測效果越好.
為了驗證所提出模型的有效性,將表1 中的模型在5 個公開發(fā)表的真實數(shù)據(jù)集DS1~DS5上進行實驗.基于擬合得到的參數(shù)值,計算5 個失效數(shù)據(jù)中不同時刻各個模型的m(t),繪制出m(t)與真實失效數(shù)據(jù)間的擬合曲線,如圖2 所示.
圖2 各個模型的累積檢測故障數(shù)量m(t)的擬合曲線Fig.2 Fitting curve of cumulative detection failure number m(t)of each model
從圖2 可以直觀看出:
1)在DS1、DS2、DS4和DS5上,個別模型已經(jīng)嚴重偏離真實的失效曲線(M-1 模型與DS1、DS2、DS4和DS5上的失效數(shù)據(jù)曲線走勢嚴重不符;M-3 模型在DS2和DS4上也產(chǎn)生了同樣的情況),表明模型已經(jīng)嚴重失真.在DS3上參與比較的模型,在整體趨勢上與真實的失效數(shù)據(jù)相一致;
2)在DS5上,本文所提出的模型同樣表現(xiàn)出優(yōu)秀性能,與失效數(shù)據(jù)曲線走勢保持一致,重疊度高;
3)在所有5 個數(shù)據(jù)集上,本文提出的模型TCMID 與真實的失效數(shù)據(jù)曲線有較高程度的重合,這表明該模型具有較好的擬合性能.
為了進一步區(qū)分不同模型的性能差異,這里定量化地計算并列出了各模型在5 個擬合標準上的數(shù)值,如表2 所示.
從表2 可以直觀看到,與圖2 曲線相一致,個別模型的擬合指標數(shù)值不理想,反映出其性能較差
(M-1 模型在DS1、DS2和DS4上性能欠佳;M-3 模型在DS2和DS4上也有同樣的情況).在DS2數(shù)據(jù)集上,本文所提出的模型在4 個指標上均優(yōu)于其他模型(MSE,Variance,RMS-PE,BMMRE 數(shù)值越小表明模型性能越好:R-square 越接近于1 表明模型性能越好),并在數(shù)值上具有明顯的比較優(yōu)勢,顯示出了該模型優(yōu)異的性能.在DS3上,所提出的模型TCM-ID在前4 個指標上同樣表現(xiàn)出了優(yōu)秀的性能;在BMMRE 指標上與其他模型處于相同量級,沒有出現(xiàn)明顯的差異,綜合來看,可以表明模型TCM-ID 具有優(yōu)秀的性能.在DS4上,M-5 和本文所提出的模型均表現(xiàn)出了優(yōu)異的性能,二者在數(shù)值上較為接近,處于同一數(shù)量級別(M-5 在MSE,Variance,RMS-PE 這3個指標上略優(yōu)于TCM-ID,TCM-ID 在R-square 和BMMRE 上優(yōu)于M-5),顯示出了TCM-ID 的良好性能;綜合全部數(shù)據(jù)集來看,M-5 僅僅在DS4上表現(xiàn)優(yōu)秀,表明該模型具有很強的不穩(wěn)定性能,難以適應(yīng)更多的數(shù)據(jù)集.因此TCM-ID 的性能要明顯優(yōu)于M-5.同樣,M-4 也僅僅在DS1上顯示出了優(yōu)秀的性能,同樣具有較強的隨機性,不如本文所提出的模型具有在多個數(shù)據(jù)集上連續(xù)優(yōu)秀的穩(wěn)定性.在仿真失效數(shù)據(jù)集DS5上,TCM-ID 在5 個具體的指標上均優(yōu)于其他7 個模型,同樣顯示出了優(yōu)秀的性能.DS5來自于對不完美排錯軟件測試過程的仿真,這與本文建立的不完美測試框架模型具有一致性,對更加靠近真實故障檢測、修復(fù)與引入的實際情況進行了準確描述.
綜上可以看出,本文所提出的模型TCM-ID 能夠保持連貫的穩(wěn)定性能,在全部失效數(shù)據(jù)集上或者處于最優(yōu)或者處于良好(且與某個數(shù)據(jù)集上表現(xiàn)優(yōu)秀的模型之間差異較?。?這種原因可以解釋為:
1)TCM-ID 在建模中充分考慮到了排錯的不完全性與排錯過程中存在新故障引入這種真實存在的客觀現(xiàn)象,將更多的軟件測試過程中的隨機性納入到模型中,將不完美排錯用微分方程進行了準確的建模.相比之下,M-4 與M-5 模型因缺少對真實不完美排錯因素的考慮,或者僅從不完全排錯或新故障引入某個單一方面建模,導(dǎo)致它們僅能在個別數(shù)據(jù)集上表現(xiàn)優(yōu)秀.
2)在測試覆蓋方面,本文的模型在建模過程中引入了測試覆蓋函數(shù),用以描述和建模測試過程中故障被測試覆蓋從而被檢測出來的程度,更加精準地刻畫了真實測試的情形;相比之下,其他模型認為測試覆蓋是100%,這與真實的測試過程并不相符.
所有這些差異,使得其他模型的綜合性能劣于本文所提出的模型.
關(guān)于模型的預(yù)測性能,圖3 分別繪制了不同模型在5 個失效數(shù)據(jù)集上的相對誤差RE 曲線.整體上看,在失效數(shù)據(jù)集的后半程時間內(nèi),模型開始進行快速地收斂,逐漸向著0 曲線靠攏,表明其預(yù)測性能在提高.從圖3 可以看出,本文所提出的模型能夠較好地向著0 曲線收縮,特別是在測試時間過半之后收縮速度明顯加快.
圖3 各個模型的預(yù)測RE 曲線比較Fig.3 Comparison of prediction RE curves of each model
至此,從圖2、圖3 和表2 可以看出,本文所提出的模型充分考慮到了軟件測試與排錯過程的不完美特點,并將測試覆蓋作為重要的影響因素進行考慮,所建立的模型具有較好的擬合與預(yù)測性能,整體上優(yōu)于其他模型.
針對測試環(huán)境的復(fù)雜性和隨機性,以及當前研究所做假設(shè)偏離實際的問題,本文建立了涵蓋故障檢測、修復(fù)和新故障引入的統(tǒng)一的不完美排錯框架模型,模型中融入了測試覆蓋因素,使得測試中的實施細節(jié)得以在數(shù)學模型中呈現(xiàn),進而從測試覆蓋的角度研究分類模式下測試覆蓋的能力,對可靠性性能影響評測進行了深入研究.因考慮到更多真實測試的隨機性,本文所建立的模型不僅具有良好的柔韌性,在擬合與預(yù)測兩個方面也均具有較好的性能,整體上優(yōu)于其他模型.后續(xù)研究中,還應(yīng)該深入鉆研軟件排錯過程中的隨機性(包括多個測試階段內(nèi)的延遲、多種測試覆蓋類型函數(shù)等),以及針對大型開源軟件和復(fù)雜網(wǎng)絡(luò)軟件的測試階段可靠性建模與評測,同時要采用人工神經(jīng)網(wǎng)絡(luò)、遺傳算法和隨機過程等數(shù)學工具建立更加精準的驗證模型.