本發(fā)明涉及軟件測試技術(shù)領(lǐng)域,具體的涉及一種軟件測試方法及其裝置。
背景技術(shù):
現(xiàn)有的獲得軟件可靠性評估的方法要求運(yùn)用專門的技術(shù)——基于操作剖面的可靠性測試技術(shù)(或稱基于統(tǒng)計測試、基于凈室工程測試等)獲得軟件的失效數(shù)據(jù),利用軟件失效數(shù)據(jù)在已有可靠性模型的基礎(chǔ)上獲得可靠性評估結(jié)果。但這種可靠性評估方法存在理論上的缺陷,限制了其在工程實際中的廣泛應(yīng)用。
一方面,隨著軟件規(guī)模和復(fù)雜性的提高,構(gòu)造操作剖面是非常困難的;對于安全關(guān)鍵軟件來說,需要的測試用例數(shù)量遠(yuǎn)遠(yuǎn)超過了現(xiàn)實可行的范圍,實施可靠性測試是很困難的;由于軟件測試過程中會出現(xiàn)擾動,導(dǎo)致可靠性評估和預(yù)測結(jié)果會偏于樂觀。因此軟件可靠性測試具有時間長、費(fèi)用高、資源消耗大的特點,從而難以滿足工程型號的進(jìn)度和成本要求,軟件可靠性測試沒有在工程實踐中真正的開展開來。另一方面,企業(yè)對可靠性要求很高的軟件大多數(shù)都必須進(jìn)行軟件的系統(tǒng)測試或者是為了增加缺陷揭錯率而進(jìn)行的軟件測試。而可靠性測試與這種以揭錯為目的的軟件測試是截然不同的兩個過程,二者之間沒有必然聯(lián)系,導(dǎo)致軟件測試資源的極大浪費(fèi)。但開發(fā)者和用戶在沒有進(jìn)行可靠性測試的情況下往往也想知道軟件當(dāng)前的可靠性水平。
因此,在這樣的背景下,如何確定滿足以揭錯為目的的軟件測試和可靠性評估之間的關(guān)系,達(dá)到合并揭錯與可靠性評估的目的,成為亟待解決的問題。
技術(shù)實現(xiàn)要素:
本發(fā)明提供一種軟件測試方法及其裝置,用以確定滿足以揭錯為目的的軟件測試和可靠性評估之間的關(guān)系。
為了實現(xiàn)上述目的,本發(fā)明實施例提供了一種軟件測試方法,包括:
設(shè)定一測試程序;
對所述一測試程序分別進(jìn)行揭錯測試和可靠性測試,得到缺陷失效后對應(yīng)的L組測試失效數(shù)據(jù),所述測試失效數(shù)據(jù)包括揭錯測試過程信息及對應(yīng)的程序失效率,L為大于等于1的正整數(shù);
根據(jù)L組測試失效數(shù)據(jù),確定用于指示所述揭錯測試過程信息與所述程序失效率之間關(guān)系的約束方程。
進(jìn)一步地,所述揭錯測試過程信息為M維數(shù)據(jù),M為正整數(shù),包括以下參數(shù)的一種或任意組合:
累計用例數(shù);發(fā)現(xiàn)缺陷數(shù);缺陷發(fā)現(xiàn)率;語句覆蓋率;函數(shù)覆蓋率;分支覆蓋率。
進(jìn)一步地,所述根據(jù)L組測試數(shù)據(jù),確定用于指示所述揭錯測試過程信息與所述程序失效率之間關(guān)系的約束方程,包括:
將M維的揭錯測試過程信息降維為一維的主成份變量,獲得主成份變量與所述揭錯測試過程信息之間的降維關(guān)系式;所述測試失效數(shù)據(jù)中的揭錯測試過程信息為所述揭錯測試過程信息降維后的主成份變量;
對L組主成份變量和對應(yīng)的程序失效率進(jìn)行曲線擬合,獲得主成份變量與程序失效率之間的映射關(guān)系;
對所述降維關(guān)系式以及所述主成份變量與程序失效率之間的映射關(guān)系進(jìn)行驗證,并在驗證通過后將所述主成份變量與程序失效率之間的映射關(guān)系作為所述約束方程。
進(jìn)一步地,所述對所述降維關(guān)系式進(jìn)行驗證,包括:
獲取N個相鄰的揭錯測試過程信息,并將所述N個相鄰的揭錯測試過程信息代入所述降維關(guān)系式獲得N組降維系數(shù),其中N為大于1的正整數(shù);
根據(jù)N組降維系數(shù)確定N-1組降維系數(shù)差值,每組降維系數(shù)差值為相鄰的兩組降維系數(shù)之間的差值;
對所述N-1組降維系數(shù)差值進(jìn)行曲線擬合,獲得降維系數(shù)差值擬合曲線;
判斷所述降維系數(shù)差值擬合曲線是否收斂,若是,則確定所述主成份變量與所述程序失效率之間的映射關(guān)系驗證通過。
進(jìn)一步地,所述主成份變量與所述程序失效率之間的映射關(guān)系進(jìn)行驗證,包括:
根據(jù)所述主成份變量與所程序失效率之間的映射關(guān)系確定K個預(yù)測失效數(shù)據(jù),其中K為大于1的正整數(shù);
確定所述K個預(yù)測失效數(shù)據(jù)對應(yīng)的K個程序失效率,所述程序失效率通過可靠性測試得到的;
根據(jù)所述K個預(yù)測失效數(shù)據(jù)以及所述K個預(yù)測失效數(shù)據(jù)對應(yīng)的K個程序失效率,確定K個程序失效率誤差值,每個程序失效率誤差值為一個預(yù)測失效數(shù)據(jù)與該預(yù)測失效數(shù)據(jù)對應(yīng)的程序失效率之間的差值;
將所述K個程序失效率誤差值進(jìn)行曲線擬合,獲得程序失效率誤差值擬合曲線;
判斷所述程序失效率誤差值擬合曲線是否收斂,若是,則確定所述主成份變量與所述程序失效率之間的映射關(guān)系驗證通過。
相應(yīng)地,本發(fā)明實施例提供了一種軟件測試裝置,包括:
獲取模塊,用于設(shè)定一測試程序;
對所述一測試程序分別進(jìn)行揭錯測試和可靠性測試,得到缺陷失效后對應(yīng)的L組測試失效數(shù)據(jù),所述測試失效數(shù)據(jù)包括揭錯測試過程信息及對應(yīng)的程序失效率,L為大于等于1的正整數(shù);
確定模塊,用于根據(jù)L組測試失效數(shù)據(jù),確定用于指示所述揭錯測試過程信息與所述程序失效率之間關(guān)系的約束方程。
進(jìn)一步地,所述獲取模塊具體用于:
所述揭錯測試過程信息為M維數(shù)據(jù),M為正整數(shù),包括以下參數(shù)的一種或任意組合:
累計用例數(shù);發(fā)現(xiàn)缺陷數(shù);缺陷發(fā)現(xiàn)率;語句覆蓋率;函數(shù)覆蓋率;分支覆蓋率。
進(jìn)一步地,所述確定模塊具體用于:
將M維的揭錯測試過程信息降維為一維的主成份變量,獲得主成份變量與所述揭錯測試過程信息之間的降維關(guān)系式;所述測試失效數(shù)據(jù)中的揭錯測試過程信息為所述揭錯測試過程信息降維后的主成份變量;
對L組主成份變量和對應(yīng)的程序失效率進(jìn)行曲線擬合,獲得主成份變量與程序失效率之間的映射關(guān)系;
對所述降維關(guān)系式以及所述主成份變量與程序失效率之間的映射關(guān)系進(jìn)行驗證,并在驗證通過后將所述主成份變量與程序失效率之間的映射關(guān)系作為所述約束方程。
進(jìn)一步地,所述確定模塊具體用于:
獲取N個相鄰的揭錯測試過程信息,并將所述N個相鄰的揭錯測試過程信息代入所述降維關(guān)系式獲得N組降維系數(shù),其中N為大于1的正整數(shù);
根據(jù)N組降維系數(shù)確定N-1組降維系數(shù)差值,每組降維系數(shù)差值為相鄰的兩組降維系數(shù)之間的差值;
對所述N-1組降維系數(shù)差值進(jìn)行曲線擬合,獲得降維系數(shù)差值擬合曲線;
判斷所述降維系數(shù)差值擬合曲線是否收斂,若是,則確定所述主成份變量與所述揭錯測試過程信息之間的降維關(guān)系式驗證通過。
進(jìn)一步地,所述確定模塊具體用于:
根據(jù)所述主成份變量與所述程序失效率之間的映射關(guān)系確定K個預(yù)測失效數(shù)據(jù),其中K為大于1的正整數(shù);
確定所述K個預(yù)測失效數(shù)據(jù)對應(yīng)的K個程序失效率,所述程序失效率通過可靠性測試得到的;
根據(jù)所述K個預(yù)測失效數(shù)據(jù)以及所述K個預(yù)測失效數(shù)據(jù)對應(yīng)的K個程序失效率,確定K個程序失效率誤差值,每個程序失效率誤差值為一個預(yù)測失效數(shù) 據(jù)與該預(yù)測失效數(shù)據(jù)對應(yīng)的程序失效率之間的差值;
將所述K個程序失效率誤差值進(jìn)行曲線擬合,獲得程序失效率誤差值擬合曲線;
判斷所述程序失效率誤差值擬合曲線是否收斂,若是,則確定所述主成份變量與所述程序失效率之間的映射關(guān)系驗證通過。
本發(fā)明實施例中,設(shè)定一測試程序;對所述一測試程序分別進(jìn)行揭錯測試和可靠性測試,得到缺陷失效后對應(yīng)的L組測試失效數(shù)據(jù),所述測試失效數(shù)據(jù)包括揭錯測試過程信息及對應(yīng)的程序失效率,L為大于等于1的正整數(shù);根據(jù)L組測試失效數(shù)據(jù),確定用于指示所述揭錯測試過程信息與所述程序失效率之間關(guān)系的約束方程,從而在以揭錯為目的的軟件測試中,確定揭錯測試過程信息,根據(jù)指示所述揭錯測試過程信息與所述程序失效率之間關(guān)系的約束方程預(yù)測程序失效率,從而達(dá)到合并揭錯和可靠性評估的目的。
附圖說明
為了更清楚地說明本發(fā)明實施例中的技術(shù)方案,下面將對實施例描述中所需要使用的附圖作簡要介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領(lǐng)域的普通技術(shù)人員來講,在不付出創(chuàng)造性勞動性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1為本發(fā)明實施例提供的一種軟件測試方法的整體流程圖;
圖2為本發(fā)明實施例提供的一種軟件測試方法流程圖;
圖3為現(xiàn)有技術(shù)中一種軟件可靠性測試方法;
圖4為現(xiàn)有技術(shù)中一種揭錯軟件測試方法;
圖5為本發(fā)明實施提供的一種主成分變量與自變量揭錯測試過程信息之間的降維關(guān)系式的驗證方法流程圖;
圖6為本發(fā)明實施提供的一種因變量程序失效率與主成份變量之間的映射關(guān)系式的驗證方法流程圖;
圖7為本發(fā)明實施例提供的一種軟件測試裝置的方框圖。
具體實施方式
為了使本發(fā)明的目的、技術(shù)方案和優(yōu)點更加清楚,下面將結(jié)合附圖對本發(fā)明作進(jìn)一步地詳細(xì)描述,顯然,所描述的實施例僅僅是本發(fā)明一部份實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其它實施例,都屬于本發(fā)明保護(hù)的范圍。
為了更好地解釋本發(fā)明,下面使用具體的實施例對本發(fā)明進(jìn)行說明,下述本發(fā)明實施例中用于進(jìn)行以揭錯為目的的軟件測試和軟件可靠性測試的程序如表1中所示,僅僅出于示例的目的,本發(fā)明的實施例不限于此,在其它的軟件程序中同樣可以實現(xiàn)下述實施例。
以表1中的7個變異版本程序中的totinfo變異版本程序作為實驗程序,在totinfo標(biāo)準(zhǔn)程序的基礎(chǔ)上通過修改程序中的一行代碼播種缺陷,生成了如表1中對應(yīng)的totinfo變異版本程序,每個變異版本程序都包含一個單一的缺陷。本發(fā)明實施例中,將totinfo變異版本程序分別進(jìn)行揭錯測試和可靠性測試。
表1實驗程序基本特征
從圖1所示的一種軟件測試方法的整體流程圖中可以看出,本發(fā)明實施例中,可靠性測試方法和揭錯測試方法在進(jìn)行測試之前必須滿足兩個約束條件, 一方面是能夠得到可靠性測試過程信息和揭錯測試過程信息。例如,在針對性揭錯測試過程中,根據(jù)黑盒軟件測試方法,能夠得到軟件測試用例數(shù),根據(jù)白盒軟件測試方法,能夠得到語句覆蓋率、分支覆蓋率、函數(shù)覆蓋率等參數(shù)信息;在可靠性測試過程中,可靠性測試過程中得到的參數(shù)變量應(yīng)該是與可靠性相關(guān)的變量,如程序失效率、平均故障間隔等,本發(fā)明實施例把缺陷作為揭錯測試和可靠性測試的紐帶,即可靠性測試過程要得到的信息必須與缺陷有關(guān),因此本發(fā)明實施例選用程序失效率作為可靠性測試過程需要收集的與缺陷相關(guān)的信息,根據(jù)可靠性摸底測試能夠得到可靠性測試過程中的程序失效率,即首先計算出每個缺陷在可靠性摸底測試過程中的缺陷失效率,然后用殘余缺陷失效率之和計算程序失效率。
另一方面是可靠性測試方法和揭錯測試方法在測試之前必須收集適量的失效數(shù)據(jù),以供兩個測試過程進(jìn)行測試使用。例如,回歸分析方法以及神經(jīng)網(wǎng)絡(luò)方法都需要較多的數(shù)據(jù)量,才能保證結(jié)果的可靠性;回歸分析方法需要的數(shù)據(jù)量是根據(jù)自變量和因變量的變量數(shù)量來定的。一般來說,數(shù)據(jù)規(guī)模要超過變量數(shù)量的3至5倍,比如在測試過程中一共使用了3個變量,那么至少需要10個個案的數(shù)據(jù)進(jìn)行軟件測試分析。
實施例中,當(dāng)滿足以上兩個約束條件之后,根據(jù)如圖2所示的一種軟件測試方法流程圖進(jìn)行揭錯測試和可靠性測試。
例如,如圖2所示的本發(fā)明實施例提供的一種軟件測試方法流程圖,該方法包括:
S201,設(shè)定一測試程序;對所述一測試程序分別進(jìn)行揭錯測試和可靠性測試,得到缺陷失效后對應(yīng)的L組測試失效數(shù)據(jù),所述測試失效數(shù)據(jù)包括揭錯測試過程信息及對應(yīng)的程序失效率;
S202,根據(jù)L組測試失效數(shù)據(jù),確定用于指示所述揭錯測試過程信息與所述程序失效率之間關(guān)系的約束方程。
在S201中,針對測試失效數(shù)據(jù)進(jìn)行圖3所示的一種可靠性測試方法和圖4 所示的一種揭錯測試方法,所述失效數(shù)據(jù)在可靠性測試過程中確定缺陷發(fā)生時對應(yīng)的程序失效率,同時所述測試失效數(shù)據(jù)在揭錯測試過程中確定揭錯測試過程信息,所述揭錯測試過程信息包括以下參數(shù)的一種或任意組合:累計用例數(shù);發(fā)現(xiàn)缺陷數(shù);缺陷發(fā)現(xiàn)率;語句覆蓋率;函數(shù)覆蓋率;分支覆蓋率。
本發(fā)明實施例中,通過如圖3所示的現(xiàn)有技術(shù)中的一種可靠性測試方法流程圖,對表1中的7個變異版本程序進(jìn)行可靠性測試,確定每個變異版本程序發(fā)現(xiàn)缺陷后的程序失效率。
例如,如圖3所示的現(xiàn)有技術(shù)中的一種可靠性測試方法流程圖,該方法包括:
S301,確定用于可靠性測試的變異版本程序及其對應(yīng)的源程序,構(gòu)造缺陷池N和用例池n,N和n分別為正整數(shù);
S302,將用例池中的所有用例分別對變異版本程序及其對應(yīng)的源程序進(jìn)行可靠性測試,并記錄測試結(jié)果;
S303,將變異版本程序的測試結(jié)果與其對應(yīng)的源程序的測試結(jié)果進(jìn)行比較,確定使變異版本程序與其對應(yīng)的源程序測試結(jié)果不同的用例為失效數(shù)據(jù);所述失效數(shù)據(jù)為使變異版本程序發(fā)生失效的用例;
S304,根據(jù)用例池n和失效數(shù)據(jù),確定變異版本程序的缺陷失效率;
S305,根據(jù)變異版本程序的缺陷失效率,確定變異版本程序的程序失效率,所述程序失效率為變異版本程序剩余所有缺陷的缺陷失效率之和。
在S303中,失效數(shù)據(jù)為ni;
在S304中,缺陷失效率的計算公式為
在S305中,程序失效率的計算公式為
實施例中,如表1所示,將用例池的所有用例分別對totinfo變異版本程及其對應(yīng)的源程序進(jìn)行可靠性測試,其中,用例池為1052,缺陷池為23,假設(shè)用例1的測試結(jié)果為t1,若t1為1,則表示變異版本程序的測試結(jié)果與其對應(yīng)的 源程序的測試結(jié)果相同,若t1為0,則表示變異版本程序的測試結(jié)果與其對應(yīng)的源程序的測試結(jié)果不同,同時確定使變異版本程序與其對應(yīng)的源程序測試結(jié)果不同的用例為失效數(shù)據(jù),假設(shè)用例1的測試結(jié)果t1為0時對應(yīng)的失效數(shù)據(jù)為2,根據(jù)用例池1052和失效數(shù)據(jù)2,確定出totinfo變異版本程序的缺陷失效率為根據(jù)totinfo變異版本程序的缺陷失效率,確定totinfo變異版本程序的程序失效率,所述程序失效率為變異版本程序剩余所有缺陷的缺陷失效率之和,則有totinfo變異版本程序的程序失效率為
需要說明的是,本發(fā)明實施例的上述一種可靠性測試方法只是舉例說明,并不局限于上述測試方法,其他能夠進(jìn)行軟件可靠性測試的方法都適用本發(fā)明實施例。
本發(fā)明實施例中,通過如圖4所示的現(xiàn)有技術(shù)中的一種揭錯測試方法,對表1中的totinfo程序進(jìn)行揭錯測試,確定揭錯測試過程信息。
例如,如圖4所示的現(xiàn)有技術(shù)中的一種揭錯測試方法流程圖,該方法包括:
S401,根據(jù)揭錯測試中的測試用例設(shè)計方法,確定揭錯測試用例池;
S402,根據(jù)可靠性測試方法中確定的失效數(shù)據(jù),確定揭錯測試用例池的每個用例能發(fā)現(xiàn)的缺陷;
S403,根據(jù)每個用例能發(fā)現(xiàn)的缺陷,確定發(fā)現(xiàn)不重復(fù)缺陷所對應(yīng)的失效數(shù)據(jù);
S404,根據(jù)測試覆蓋信息工具,編寫腳本,執(zhí)行所述發(fā)現(xiàn)不重復(fù)缺陷所對應(yīng)的失效數(shù)據(jù),確定揭錯測試過程信息。
需要說明的是,本發(fā)明實施例的上述一種揭錯測試方法只是舉例說明,并不局限于上述測試方法,其他能夠進(jìn)行揭錯測試的方法都適用本發(fā)明實施例。
需要說明的是,本發(fā)明實施例先進(jìn)行上述的一種可靠性測試,而后進(jìn)行上述的一種揭錯測試,并不局限于上述先后順序的測試過程,同時,本發(fā)明實施例亦可先進(jìn)行上述的一種揭錯測試,而后進(jìn)行上述的一種可靠性測試。
實施例中,當(dāng)確定可靠性測試方法過程的程序失效率和揭錯測試方法的揭錯測試過程信息后,對上述適量的失效數(shù)據(jù)進(jìn)行數(shù)據(jù)預(yù)處理。數(shù)據(jù)預(yù)處理方法包括數(shù)據(jù)標(biāo)準(zhǔn)化、主成份分析、特異樣本點的判定、數(shù)據(jù)歸一化。例如,本發(fā)明實施例在數(shù)據(jù)處理中以程序失效率為因變量,以揭錯測試過程確定的變量為自變量,其中所述的揭錯測試過程信息為M維數(shù)據(jù),M為正整數(shù),包括以下參數(shù)的一種或任意組合:累計用例數(shù);發(fā)現(xiàn)缺陷數(shù);缺陷發(fā)現(xiàn)率;語句覆蓋率;函數(shù)覆蓋率;分支覆蓋率,由于揭錯測試過程確定的變量較多,擬采用主成份分析的方法對揭錯測試過程確定的變量進(jìn)行降維,得到主成份變量與揭錯測試過程信息之間的降維關(guān)系式,然后進(jìn)行非線性回歸分析。在實際應(yīng)用中,往往存在指標(biāo)的量綱不同,所以在計算之前須先消除量綱的影響,而將原始數(shù)據(jù)標(biāo)準(zhǔn)化。
實施例中,對可靠性測試方法過程的程序失效率和揭錯測試方法的揭錯測試過程信息進(jìn)行數(shù)據(jù)預(yù)處理之后,通過數(shù)據(jù)分析方法,分析兩個測試過程的規(guī)律。其中,數(shù)據(jù)分析方法既包括傳統(tǒng)經(jīng)典的統(tǒng)計分析方法,如回歸分析、因子分析等,又包括近年來迅速發(fā)展的基于機(jī)器學(xué)習(xí)的各種數(shù)據(jù)挖掘方法,如人工神經(jīng)網(wǎng)絡(luò)、支持向量機(jī)等。例如,以非線性回歸分析中生成的主成份變量作為新自變量,程序失效率為因變量。采用曲線擬合方法得到主成份變量與因變量程序失效率之間的映射關(guān)系式。擬合模型為:線性、對數(shù)、倒數(shù)、二次、三次、復(fù)合、冪函數(shù)、S函數(shù)、指數(shù)分布、逆模型。
實施例中,對可靠性測試方法過程的程序失效率和揭錯測試方法的揭錯測試過程信息進(jìn)行規(guī)律研究后,若不存在映射關(guān)系式,本領(lǐng)域技術(shù)人員不能直接作出以上兩個測試過程不存在規(guī)律的結(jié)論。例如,對一個軟件而言,如果采用支持向量機(jī)的數(shù)據(jù)分析方法所需的數(shù)據(jù)量為8,但是對8組數(shù)據(jù)進(jìn)行規(guī)律研究沒有發(fā)現(xiàn)規(guī)律,此時不能判定軟件的兩個測試過程不存在規(guī)律,因為可能需要對10組數(shù)據(jù)進(jìn)行分析就能得到規(guī)律。因此,需要對收集測試數(shù)據(jù)進(jìn)行規(guī)律研究的停止準(zhǔn)則進(jìn)行研究,因此可以把覆蓋率作為一種停止準(zhǔn)則,即覆蓋率達(dá)到一定 程度后,收集的兩個測試過程數(shù)據(jù)仍然不存在規(guī)律,則停止測試,退出本發(fā)明實施例的測試方案。
在S202中,將M維的揭錯測試過程信息降維為一維的主成份變量,獲得主成份變量與揭錯測試過程信息之間的降維關(guān)系式;所述測試失效數(shù)據(jù)中的揭錯測試過程信息為所述揭錯測試過程信息降維后的主成份變量;
對L組主成份變量和對應(yīng)的程序失效率進(jìn)行曲線擬合,獲得主成份變量與程序失效率之間的映射關(guān)系;
對所述降維關(guān)系式以及所述主成份變量與程序失效率之間的映射關(guān)系進(jìn)行驗證,并在驗證通過后將所述主成份變量與程序失效率之間的映射關(guān)系作為所述約束方程。
實施例中,可靠性測試方法過程的程序失效率和揭錯測試方法的揭錯測試過程信息確實存在統(tǒng)計規(guī)律時,由于,隨著數(shù)據(jù)的增多或減少,無論是主成分變量與自變量揭錯測試過程信息之間的降維關(guān)系式還是因變量程序失效率與主成份變量之間的映射關(guān)系式都是變化的,因此,需要對上述確定的降維關(guān)系式和映射關(guān)系式進(jìn)行結(jié)果驗證和關(guān)系式的確定。
圖5為本發(fā)明實施例中主成分變量與自變量揭錯測試過程信息之間的降維關(guān)系式的驗證方法流程圖,該方法包括:
S501,獲取N個相鄰的揭錯測試過程信息,并將所述N個相鄰的揭錯測試過程信息代入所述降維關(guān)系式獲得N組降維系數(shù),其中N為大于1的正整數(shù);
S502,根據(jù)N組降維系數(shù)確定N-1組降維系數(shù)差值,每組降維系數(shù)差值為相鄰的兩組降維系數(shù)之間的差值;
S503,對所述N-1組降維系數(shù)差值進(jìn)行曲線擬合,獲得降維系數(shù)差值擬合曲線;
S504,判斷所述降維系數(shù)差值擬合曲線是否收斂,若是,則確定所述主成份變量與所述程序失效率之間的映射關(guān)系驗證通過。
需要說明的是,本發(fā)明實施例的上述主成分變量與自變量揭錯測試過程信 息之間的降維關(guān)系式的驗證方法只是舉例說明,并不局限于上述驗證方法,其他能夠進(jìn)行降維關(guān)系式驗證方法都適用本發(fā)明實施例。
圖6為本發(fā)明實施例中因變量程序失效率與主成份變量之間的映射關(guān)系式的驗證方法流程圖,該方法包括:
S601,根據(jù)所述主成份變量與所述程序失效率之間的映射關(guān)系確定K個預(yù)測失效數(shù)據(jù),其中K為大于1的正整數(shù);
S602,確定所述K個預(yù)測失效數(shù)據(jù)對應(yīng)的K個程序失效率,所述程序失效率通過可靠性測試得到的;
S603,根據(jù)所述K個預(yù)測失效數(shù)據(jù)以及所述K個預(yù)測失效數(shù)據(jù)對應(yīng)的K個程序失效率,確定K個程序失效率誤差值,每個程序失效率誤差值為一個預(yù)測失效數(shù)據(jù)與該預(yù)測失效數(shù)據(jù)對應(yīng)的程序失效率之間的差值;
S604,將所述K個程序失效率誤差值進(jìn)行曲線擬合,獲得程序失效率誤差值擬合曲線;
S605,判斷所述程序失效率誤差值擬合曲線是否收斂,若是,則確定所述主成份變量與所述程序失效率之間的映射關(guān)系驗證通過。
需要說明的是,本發(fā)明實施例的上述因變量程序失效率與主成份變量之間的映射關(guān)系式的驗證方法只是舉例說明,并不局限于上述驗證方法,其他能夠進(jìn)行映射關(guān)系式的驗證方法都適用本發(fā)明實施例。
實施例中,通過對上述驗證方法的規(guī)律研究,得到表1中的totinfo變異版本程序中的可靠性測試過程的程序失效率與揭錯測試過程確定的揭錯測試過程信息存在統(tǒng)計規(guī)律。例如,假設(shè)用戶在設(shè)定誤差0.1的情況下,存在24組失效數(shù)據(jù)滿足可靠性測試和揭錯測試。首先,采用SPSS軟件對這24組失效數(shù)據(jù)進(jìn)行主成份分析得到標(biāo)準(zhǔn)化后的數(shù)據(jù),具體的揭錯測試的揭錯測試過程信息為:用例數(shù)記為X1,語句覆蓋記為X2,函數(shù)覆蓋記為X3,分支覆蓋記為X4,發(fā)現(xiàn)缺陷記為X5,缺陷發(fā)現(xiàn)率記為X6。則得到主成份變量Z與揭錯測試過程信息之間的降維關(guān)系式為公式(1):
Z=0.3915976*X1+0.4027479*X2+
0.3826774*X3+0.4286166*X4+
0.4205884*X5+0.4205884*X6 (1)
然后對上述降維關(guān)系式進(jìn)行非線性回歸分析,三次函數(shù)擬合效果最好。其中,用可決系數(shù)表示回歸函數(shù)與觀察所得數(shù)據(jù)的擬合程度,一般認(rèn)為可決系數(shù)大于0.85才能說明自變量能很好地預(yù)測因變量,本發(fā)明實施例中所得的可決參數(shù)R2=0.956,擬合度遠(yuǎn)遠(yuǎn)高于0.85;其中,sig值用于檢驗整體回歸模型顯著性的標(biāo)準(zhǔn)當(dāng)sig<0.05時,則表示整體回歸模型達(dá)到顯著性水平,本發(fā)明實施例中分析數(shù)據(jù)所得的sig=0.00<0.05,說明得到的模型達(dá)到顯著性水平,能夠用于預(yù)測。
例如,對表1中的totinfo變異版本程序的失效數(shù)據(jù)進(jìn)行預(yù)測,確定失效數(shù)據(jù)1的程序失效率的預(yù)測值為Y1=0.461-0.145Z1-0.007Z12+0.001Z13,其中失效數(shù)據(jù)1的程序失效率的真實值Y1'為可靠性測試中一句公式得到的結(jié)果,確定totinfo變異版本程序的程序失效率誤差值為△Y1;通過上述采用失效數(shù)據(jù)1確定totinfo變異版本程序的程序失效率誤差值△Y1的方法,分別確定所述24組失效數(shù)據(jù)所確定的totinfo變異版本程序的程序失效率誤差值△Y1、△Y2、△Y3、、、△Y24,并將所述24個程序失效率誤差值△Y1、△Y2、△Y3、、、△Y24進(jìn)行曲線擬合,得到程序失效率誤差值擬合曲線,判斷所述程序失效率誤差值是否收斂,若是,則確定所述主成份變量與所述程序失效率之間的映射關(guān)系驗證通過,則將通過驗證的因變量程序失效率Y與主成份變量Z之間的映射關(guān)系式確定為約束方程,公式為(2):
Y=0.461-0.145Z-0.007Z2+0.001Z3 (2)
需要說明的是,本發(fā)明實施例通過上述表1中的totinfo變異版本程序確定的因變量程序失效率Y與主成份變量Z之間的約束方程只是舉例說明,并不局限于上述表1中的totinfo變異版本程序,其他能夠獲得程序失效率誤差值的變異版本程序都適用本發(fā)明實施例。
在確定可靠性測試過程中的程序失效率Y與揭錯測試過程中的主成份變量Z之間的約束方程之后,按照上述確定變量信息的方法、步驟,確定揭錯測試過程缺陷失效時的用例數(shù)、語句覆蓋、分支覆蓋、函數(shù)覆蓋、發(fā)現(xiàn)缺陷數(shù)、缺陷發(fā)現(xiàn)率6個變量信息,運(yùn)用上述約束方程模型預(yù)測程序失效率,由于程序失效率是可靠性的一個度量,因此運(yùn)用上述模型可以進(jìn)行可靠性評估與預(yù)計,從而達(dá)到了合并揭錯和可靠性評估的目的。
本發(fā)明實施例,針對表1中的totinfo變異版本程序提出的合并揭錯和可靠性測試技術(shù)進(jìn)行應(yīng)用,結(jié)果表明,揭錯測試過程信息與可靠性測試過程信息程序失效率之間存在規(guī)律,因此,可以結(jié)合揭錯測試進(jìn)行可靠性評估,從而達(dá)到合并揭錯和可靠性評估的目的。
基于相同的技術(shù)構(gòu)思,本發(fā)明實施例還提供一種軟件測試裝置,該裝置可執(zhí)行上述方法實施例。本發(fā)明實施例提供的一種軟件測試裝置的方框圖如圖7所示。
本發(fā)明實施例提供的一種軟件測試裝置,包括:
獲取模塊701,用于設(shè)定一測試程序;
對所述一測試程序分別進(jìn)行揭錯測試和可靠性測試,得到一組測試失效數(shù)據(jù),所述測試失效數(shù)據(jù)包括揭錯測試過程信息及對應(yīng)的程序失效率,L為大于等于1的正整數(shù);
確定模塊702,用于根據(jù)L組測試失效數(shù)據(jù),確定用于指示所述揭錯測試過程信息與所述程序失效率之間關(guān)系的約束方程。
進(jìn)一步地,確定獲取具體用于:
所述揭錯測試過程信息為M維數(shù)據(jù),M為正整數(shù),包括以下參數(shù)的一種或任意組合:
累計用例數(shù);發(fā)現(xiàn)缺陷數(shù);缺陷發(fā)現(xiàn)率;語句覆蓋率;函數(shù)覆蓋率;分支覆蓋率。
進(jìn)一步地,確定模塊具體用于:
將M維的揭錯測試過程信息降維為一維的主成份變量,獲得主成份變量與所述揭錯測試過程信息之間的降維關(guān)系式;所述測試數(shù)據(jù)中的揭錯測試過程信息為所述揭錯測試過程信息降維后的主成份變量;
對L組主成份變量和對應(yīng)的程序失效率進(jìn)行曲線擬合,獲得主成份變量與程序失效率之間的映射關(guān)系;
對所述降維關(guān)系式以及所述主成份變量與程序失效率之間的映射關(guān)系進(jìn)行驗證,并在驗證通過后將所述主成份變量與程序失效率之間的映射關(guān)系作為所述約束方程。
進(jìn)一步地,確定模塊具體用于:
獲取N個相鄰的揭錯測試過程信息,并將所述N個相鄰的揭錯測試過程信息代入所述降維關(guān)系式獲得N組降維系數(shù),其中N為大于1的正整數(shù);
根據(jù)N組降維系數(shù)確定N-1組降維系數(shù)差值,每組降維系數(shù)差值為相鄰的兩組降維系數(shù)之間的差值;
對所述N-1組降維系數(shù)差值進(jìn)行曲線擬合,獲得降維系數(shù)差值擬合曲線;
判斷所述降維系數(shù)差值擬合曲線是否收斂,若是,則確定所述主成份變量與所述揭錯測試過程信息之間的降維關(guān)系式驗證通過。
進(jìn)一步地,驗證模塊具體用于:
根據(jù)所述主成份變量與所述程序失效率之間的映射關(guān)系確定K個預(yù)測失效數(shù)據(jù),其中K為大于1的正整數(shù);
確定所述K個預(yù)測失效數(shù)據(jù)對應(yīng)的K個程序失效率,所述程序失效率通過可靠性測試得到的;
根據(jù)所述K個預(yù)測失效數(shù)據(jù)以及所述K個預(yù)測失效數(shù)據(jù)對應(yīng)的K個程序失效率,確定K個程序失效率誤差值,每個程序失效率誤差值為一個預(yù)測失效數(shù)據(jù)與該預(yù)測失效數(shù)據(jù)對應(yīng)的程序失效率之間的差值;
將所述K個程序失效率誤差值進(jìn)行曲線擬合,獲得程序失效率誤差值擬合曲線;
判斷所述程序失效率誤差值擬合曲線是否收斂,若是,則確定所述主成份變量與所述程序失效率之間的映射關(guān)系驗證通過。
本發(fā)明實施例中,設(shè)定一測試程序;對所述一測試程序分別進(jìn)行揭錯測試和可靠性測試,得到缺陷失效后對應(yīng)的L組測試失效數(shù)據(jù),所述測試失效數(shù)據(jù)包括揭錯測試過程信息及對應(yīng)的程序失效率,L為大于等于1的正整數(shù);根據(jù)L組測試失效數(shù)據(jù),確定用于指示所述揭錯測試過程信息與所述程序失效率之間關(guān)系的約束方程,從而在以揭錯為目的的軟件測試中,確定揭錯測試過程信息,根據(jù)指示所述揭錯測試過程信息與所述程序失效率之間關(guān)系的約束方程預(yù)測程序失效率,從而達(dá)到合并揭錯和可靠性評估的目的。
本發(fā)明是參照根據(jù)本發(fā)明實施例的方法、設(shè)備(系統(tǒng))、和計算機(jī)程序產(chǎn)品的流程圖和/或方框圖來描述的。應(yīng)理解可由計算機(jī)程序指令實現(xiàn)流程圖和/或方框圖中的每一流程和/或方框、以及流程圖和/或方框圖中的流程和/或方框的結(jié)合??商峁┻@些計算機(jī)程序指令到通用計算機(jī)、專用計算機(jī)、嵌入式處理機(jī)或其他可編程數(shù)據(jù)處理設(shè)備的處理器以產(chǎn)生一個機(jī)器,使得通過計算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備的處理器執(zhí)行的指令產(chǎn)生用于實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的裝置。
這些計算機(jī)程序指令也可存儲在能引導(dǎo)計算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備以特定方式工作的計算機(jī)可讀存儲器中,使得存儲在該計算機(jī)可讀存儲器中的指令產(chǎn)生包括指令裝置的制造品,該指令裝置實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能。
這些計算機(jī)程序指令也可裝載到計算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備上,使得在計算機(jī)或其他可編程設(shè)備上執(zhí)行一系列操作步驟以產(chǎn)生計算機(jī)實現(xiàn)的處理,從而在計算機(jī)或其他可編程設(shè)備上執(zhí)行的指令提供用于實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的步驟。
盡管已描述了本發(fā)明的優(yōu)選實施例,但本領(lǐng)域內(nèi)的技術(shù)人員一旦得知了基本創(chuàng)造性概念,則可對這些實施例作出另外的變更和修改。所以,所附權(quán)利要 求意欲解釋為包括優(yōu)選實施例以及落入本發(fā)明范圍的所有變更和修改。
顯然,本領(lǐng)域的技術(shù)人員可以對本發(fā)明進(jìn)行各種改動和變型而不脫離本發(fā)明的精神和范圍。這樣,倘若本發(fā)明的這些修改和變型屬于本發(fā)明權(quán)利要求及其等同技術(shù)的范圍之內(nèi),則本發(fā)明也意圖包含這些改動和變型在內(nèi)。