專利名稱:一種軟件可靠性執(zhí)行過程加速測試方法
技術(shù)領(lǐng)域:
本發(fā)明涉及軟件測試領(lǐng)域,尤其涉及對嵌入式軟件進(jìn)行軟件可靠性加速測試技術(shù)。
背景技術(shù):
隨著計(jì)算機(jī)技術(shù)的迅猛發(fā)展,計(jì)算機(jī)軟件已經(jīng)滲透到越來越多的領(lǐng)域,特別是航空航天、金融和醫(yī)療等關(guān)系國計(jì)民生的關(guān)鍵行業(yè)。在這些領(lǐng)域中,往往采用嵌入式軟件,軟件系統(tǒng)規(guī)模龐大、邏輯復(fù)雜,對可靠性往往有著非常高的要求。因此,針對嵌入式軟件的可靠性工程越來越受到人們的重視。而軟件可靠性測試作為提高軟件質(zhì)量和可靠性的重要措施之一,正逐漸成為國內(nèi)外軟件可靠性工程的主要研究方向。
軟件可靠性測試是指為了對軟件的可靠性進(jìn)行調(diào)查、分析和評價(jià)的一種測試活動,其主要特征是按照用戶實(shí)際使用軟件的方法來測試軟件。為了能滿足用戶對軟件的可靠性要求、評價(jià)軟件可靠性水平及驗(yàn)證軟件產(chǎn)品是否到達(dá)可靠性要求,軟件可靠性測試作為測試軟件并評估軟件可靠性的一項(xiàng)技術(shù),要求能有效地暴露在實(shí)際使用工程中影響軟件可靠性的缺陷,并對軟件的可靠性進(jìn)行定量評估。
針對嵌入式軟件,軟件可靠性測試通常根據(jù)測試剖面生成測試數(shù)據(jù),軟件可靠性測試剖面可以理解為描述軟件使用情況及其使用分布的一種模型。通過基于剖面的大量隨機(jī)抽樣獲得的測試數(shù)據(jù),能夠從統(tǒng)計(jì)學(xué)的角度體現(xiàn)出軟件的實(shí)際使用分布,因此軟件可靠性測試發(fā)現(xiàn)的軟件失效與軟件的使用時間存在聯(lián)系,能夠用于軟件的可靠性評估。根據(jù)統(tǒng)計(jì)學(xué)的大數(shù)原理,隨機(jī)抽樣的樣本量越大越能體現(xiàn)出實(shí)際分布。在實(shí)際的工程中,測試數(shù)據(jù)太少不能體現(xiàn)出實(shí)際使用的分布,而測試數(shù)據(jù)的增大則意味著測試執(zhí)行時間的增多,成本的擴(kuò)大。以MTBF(平均故障間隔時間)要求為20000小時的嵌入式軟件為例,為了能準(zhǔn)確的評估該軟件的可靠性,就需要抽取至少保證測試時間在20000小時以上的測試數(shù)據(jù),顯然這樣的測試要求是很難滿足的。目前,巨大的測試執(zhí)行成本已經(jīng)成為了制約嵌入式軟件可靠性測試推廣的瓶頸。
在針對嵌入式軟件進(jìn)行可靠性測試時,存在大量相似的測試數(shù)據(jù)。一方面,由于軟件在功能點(diǎn)、運(yùn)行剖面等方面存在著相似性,因此根據(jù)功能特性需求以及運(yùn)行剖面所生成的測試數(shù)據(jù)具有相似性;另一方面,測試數(shù)據(jù)的大量生成,需要借助一定的建模語言或程序,因此所生成的測試數(shù)據(jù)就存在語法、格式等相似性。主要地,由于軟件可靠性測試是基于測試剖面的隨機(jī)測試,在發(fā)生概率較高的操作中,抽樣產(chǎn)生的測試數(shù)據(jù)的相似度較高,事實(shí)上,這種情況也符合在實(shí)際使用中,人們總是習(xí)慣使用最常用的軟件功能這一特性。但即使測試數(shù)據(jù)很相似,在測試過程中卻也必須執(zhí)行這些測試數(shù)據(jù),原因一是它的執(zhí)行累計(jì)時間會影響到軟件可靠性的評估結(jié)果,另外也缺少對測試數(shù)據(jù)相關(guān)性進(jìn)行科學(xué)判斷的方法。 因此,即使在針對嵌入式軟件進(jìn)行可靠性測試時,存在大量相似的測試數(shù)據(jù),但是在現(xiàn)有的可靠性測試技術(shù)中都必須執(zhí)行這些測試數(shù)據(jù),這就使得嵌入式軟件的可靠性測試具有比較大的成本和測試時間。發(fā)明內(nèi)容
本發(fā)明針對現(xiàn)有對嵌入式軟件的可靠性測試需要較大的成本和較長的測試時間的問題,提出了一種軟件可靠性執(zhí)行過程加速測試方法。
本發(fā)明提供的一種軟件可靠性執(zhí)行過程加速測試方法,包括以下步驟
步驟1 讀取已進(jìn)行過軟件可靠性測試的測試用例,對測試用例進(jìn)行預(yù)處理,得到經(jīng)分類后的數(shù)字形式的測試用例,然后再將各測試用例的測試輸入轉(zhuǎn)換為二進(jìn)制數(shù)據(jù);
步驟2 針對每一類測試用例,首先對測試用例的測試輸入進(jìn)行數(shù)據(jù)特征分析,將測試輸入的二進(jìn)制數(shù)據(jù)分組,每組為一個數(shù)據(jù)特征,然后針對每個測試用例,將該測試用例中的每個測試輸入的數(shù)據(jù)特征作為行元素為該測試用例建立數(shù)據(jù)特征矩陣;
步驟3 針對每一類測試用例的數(shù)據(jù)特征矩陣進(jìn)行累積效應(yīng)分析,建立兩個累積矩陣通用特征矩陣和關(guān)鍵特征矩陣,其中通用特征矩陣?yán)鄯e測試通過的測試用例的數(shù)據(jù)特征,關(guān)鍵特征矩陣?yán)鄯e未通過測試的測試用例的數(shù)據(jù)特征;
步驟4 讀取待測試的測試用例并對該測試用例執(zhí)行判定,判斷該測試用例是否需要執(zhí)行,若需要執(zhí)行,執(zhí)行步驟5,若不需要執(zhí)行,則直接累積測試時間,然后轉(zhuǎn)至步驟6 ;
步驟5 對讀取的測試用例執(zhí)行測試,在測試執(zhí)行完畢后,累積測試時間,若該測試用例測試通過,則將該測試用例的數(shù)據(jù)特征累積到通用特征矩陣中,若該測試用例測試不通過,則將該測試用例的數(shù)據(jù)特征累積到關(guān)鍵特征矩陣中;
步驟6 判斷是否還有待測試的測試用例,如果有,則轉(zhuǎn)步驟4執(zhí)行,否則根據(jù)測試結(jié)果開始進(jìn)行可靠性評估,結(jié)束本測試方法。
步驟2中所述的數(shù)據(jù)特征分析具體為選取顆粒度k,k值根據(jù)軟件測試數(shù)據(jù)生成文件,在完整表述測試輸入邏輯意義的前提下選取,然后根據(jù)顆粒度k和測試輸入的邏輯意義,將測試輸入的二進(jìn)制數(shù)據(jù)劃分為k組。并根據(jù)劃分的k組邏輯數(shù)據(jù)建立數(shù)據(jù)特征矩陣。
步驟3中所述的累積效應(yīng)分析具體為根據(jù)已測測試用例的數(shù)據(jù)特征矩陣,對每一類測試用例中測試通過和測試未通過的測試用例的數(shù)據(jù)特征矩陣分別進(jìn)行累積,累積矩陣中的每個元素為需要累積的數(shù)據(jù)特征矩陣中對應(yīng)的同一位置的元素的集合,若需要累積的數(shù)據(jù)特征矩陣中對應(yīng)的同一位置的元素相同,則在累積矩陣只保留一個元素,若需要累積的數(shù)據(jù)特征矩陣中對應(yīng)的同一位置的元素不相同,則將所有不相同的元素組成一個格作為累積矩陣中的一個元素。
本發(fā)明的優(yōu)點(diǎn)和積極效果在于本發(fā)明方法在不影響軟件可靠性評估模型的基礎(chǔ)上,在軟件可靠性測試執(zhí)行的環(huán)節(jié)進(jìn)行加速,能夠有效地減少測試執(zhí)行的工作量,起到明顯的軟件可靠性測試加速效果,減少測試時間,節(jié)約成本。
圖1為本發(fā)明加速測試方法的整體步驟流程圖2為本發(fā)明加速測試方法的步驟五中執(zhí)行判定過程的步驟流程圖。
具體實(shí)施步驟
為了便于本領(lǐng)域普通技術(shù)人員理解和實(shí)施本發(fā)明所提出的方法,下面通過具體實(shí)施方式
對本發(fā)明作進(jìn)一步的詳細(xì)和深入描述。
本發(fā)明旨在利用已經(jīng)完成的軟件可靠性測試工作中收集到的失效數(shù)據(jù)、測試數(shù)據(jù)和測試執(zhí)行記錄等信息開展研究工作,分析軟件可靠性測試數(shù)據(jù)的特征,能夠在軟件可靠性測試執(zhí)行的過程中,通過不斷的積累建立測試數(shù)據(jù)特征與發(fā)現(xiàn)軟件失效的相互關(guān)系,在此基礎(chǔ)上提出一種軟件可靠性執(zhí)行過程加速測試方法,在不影響軟件可靠性評估模型的基礎(chǔ)上,在軟件可靠性測試執(zhí)行的環(huán)節(jié)進(jìn)行加速,能夠有效的減少測試執(zhí)行的工作量,起到明顯的軟件可靠性測試加速效果。
本發(fā)明軟件可靠性執(zhí)行過程加速測試,主要通過對測試數(shù)據(jù)進(jìn)行分析,得到大量測試數(shù)據(jù)中具有較高相似度的那些測試數(shù)據(jù),進(jìn)一步通過執(zhí)行判定原理對其是否執(zhí)行進(jìn)行判定,若判定成功,則直接累積測試時間而不執(zhí)行該測試數(shù)據(jù)。如圖1所示,為本發(fā)明方法的整體步驟流程圖。本發(fā)明實(shí)施例以仿掛點(diǎn)管理軟件(SMSQ進(jìn)行可靠性測試時使用本發(fā)明方法的過程進(jìn)行具體說明。
步驟1,讀取軟件可靠性測試用例,對軟件可靠性測試數(shù)據(jù)進(jìn)行預(yù)處理,使數(shù)字化成便于計(jì)算機(jī)分析處理的數(shù)據(jù)。每個測試用例中包含若干測試輸入,針對每個測試用例,其包含的測試輸入的個數(shù)就是該測試用例的長度,測試用例的長度不一定相同。
SMSS軟件的測試用例由一組16進(jìn)制數(shù)據(jù)的測試輸入組成,具體一個測試用例中的各測試輸入如表1所示。該測試用例中包含25個測試輸入。
表1 測試用例實(shí)例
權(quán)利要求
1.一種軟件可靠性執(zhí)行過程加速測試方法,其特征在于,該方法針對嵌入式軟件,進(jìn)行如下測試加速步驟步驟1 讀取已進(jìn)行過軟件可靠性測試的測試用例,對測試用例進(jìn)行預(yù)處理,得到分類的數(shù)字型的測試用例,然后再將各測試用例的測試輸入轉(zhuǎn)換為二進(jìn)制數(shù)據(jù);步驟2 針對每一類測試用例,首先對測試用例的測試輸入進(jìn)行數(shù)據(jù)特征分析,將測試輸入的二進(jìn)制數(shù)據(jù)分組,每組為一個數(shù)據(jù)特征,然后針對每個測試用例,將該測試用例中的每個測試輸入的數(shù)據(jù)特征作為行元素為該測試用例建立數(shù)據(jù)特征矩陣;步驟3 針對每一類測試用例的數(shù)據(jù)特征矩陣進(jìn)行累積效應(yīng)分析,建立兩個累積矩陣 通用特征矩陣和關(guān)鍵特征矩陣,其中通用特征矩陣?yán)鄯e測試通過的測試用例的數(shù)據(jù)特征, 關(guān)鍵特征矩陣?yán)鄯e未通過測試的測試用例的數(shù)據(jù)特征;步驟4 讀取待測試的測試用例并對該測試用例執(zhí)行判定,判斷該測試用例的數(shù)據(jù)特征是否與當(dāng)前所屬類型的測試用例的通用特征矩陣相似,若否,進(jìn)入步驟5執(zhí)行;若是,直接累積測試時間,然后轉(zhuǎn)步驟6執(zhí)行;步驟5 執(zhí)行步驟4中讀取的待測的測試用例,在測試執(zhí)行完畢后,累積測試時間,若該測試用例測試通過,則將該測試用例的數(shù)據(jù)特征累積到通用特征矩陣中,若該測試用例測試不通過,則將該測試用例的數(shù)據(jù)特征累積到關(guān)鍵特征矩陣中;步驟6 判斷是否還有待測試的測試用例,如果有,則轉(zhuǎn)步驟4執(zhí)行,否則根據(jù)測試結(jié)果開始進(jìn)行可靠性評估,結(jié)束本測試方法。
2.根據(jù)權(quán)利要求1所述的一種軟件可靠性執(zhí)行過程加速測試方法,其特征在于,步驟1 中所述的預(yù)處理,包括將各測試用例的測試輸入轉(zhuǎn)換為數(shù)字型,使得計(jì)算機(jī)便于處理,然后將具有相同長度的測試用例歸為一類,對于完全相同的測試用例,保留其中一個測試用例,刪除其他。
3.根據(jù)權(quán)利要求1所述的一種軟件可靠性執(zhí)行過程加速測試方法,其特征在于,步驟2 中所述的數(shù)據(jù)特征分析,具體方法是根據(jù)軟件測試數(shù)據(jù)生成文件,在完整表述測試輸入的邏輯意義的前提下選取顆粒度k,然后根據(jù)測試輸入的邏輯意義,將測試輸入的二進(jìn)制數(shù)據(jù)劃分為k組,對于同一類的測試用例,所選取的顆粒度k相同。
4.根據(jù)權(quán)利要求1所述的一種軟件可靠性執(zhí)行過程加速測試方法,其特征在于,步驟3 中所述的累積效應(yīng)分析,對每一類測試用例中測試通過和測試未通過的測試用例的數(shù)據(jù)特征矩陣分別進(jìn)行累積,累積矩陣中的每個元素為需要累積的數(shù)據(jù)特征矩陣中對應(yīng)的同一位置的元素的集合,若需要累積的數(shù)據(jù)特征矩陣中對應(yīng)的同一位置的元素相同,則在累積矩陣只保留一個元素,若需要累積的數(shù)據(jù)特征矩陣中對應(yīng)的同一位置的元素不相同,則將所有不相同的元素組成一個格作為累積矩陣中的一個元素。
5.根據(jù)權(quán)利要求1所述的一種軟件可靠性執(zhí)行過程加速測試方法,其特征在于,所述的步驟4具體包括如下步驟步驟4. 1 首先,確定待測的測試用例屬于哪一類測試用例,并對該測試用例進(jìn)行步驟 1至步驟2的過程得到該測試用例的數(shù)據(jù)特征矩陣Q,設(shè)矩陣R,令矩陣R =當(dāng)前該測試用例所屬測試用例類型的通用特征矩陣;步驟4. 2 利用數(shù)值對比分析方法確定矩陣Q中的元素Qi, j對于矩陣R中對應(yīng)位置的Ri, j的隸屬度,具體是分別將矩陣Q中的元素Qi, j與矩陣R中的元素Ri, j作交集運(yùn)算,若運(yùn)算結(jié)果為數(shù)據(jù)特征元素仏….,則隸屬度為1,若交集為空,則隸屬度為0 ;步驟4. 3 確定待測的測試用例的數(shù)據(jù)特征矩陣Q中每個測試輸入的評判函數(shù)值,具體是選取加權(quán)平均型評判函數(shù)、幾何平均型評判函數(shù)、單因素決定型評判函數(shù)和主因素突出型評判函數(shù)中的一種評判函數(shù),來確定第η個測試用例的第i個測試輸入的評判函數(shù)值fn,i,對某個測試輸入,在評判函數(shù)中第j個因素
6.根據(jù)權(quán)利要求5所述的一種軟件可靠性執(zhí)行過程加速測試方法,其特征在于,步驟 4. 5中所述的置信等級具體是標(biāo)記A為待測試的測試用例的數(shù)據(jù)特征,B為當(dāng)前待測測試用例所屬測試用例類型的通用特征矩陣,則置信度λ = 0,表示A與B的數(shù)據(jù)不具備相似度; 置信度λ = 0. 1,表示A與B的數(shù)據(jù)相似度很低; 置信度λ = 0. 2,表示A與B的數(shù)據(jù)相似度較低; 置信度λ = 0. 5,表示A與B的數(shù)據(jù)相似度一般; 置信度λ =0.8,表示A與B的數(shù)據(jù)相似度較高; 置信度λ =0.9,表示A與B的數(shù)據(jù)相似度很高; 置信度λ = 1,表示A與B的數(shù)據(jù)相同。
全文摘要
本發(fā)明針對現(xiàn)有對嵌入式軟件的可靠性測試需要較大的成本和較長的測試時間的問題,提出了一種軟件可靠性執(zhí)行過程加速測試方法,主要通過對已測的測試用例進(jìn)行分析,得到由通過測試的測試用例的數(shù)據(jù)特征組成的通用特征矩陣和由引起軟件失效的測試用例的數(shù)據(jù)特征所組成的關(guān)鍵特征矩陣,然后讀取待測的測試用例,得到該測試用例的數(shù)據(jù)特征并對該數(shù)據(jù)特征與相應(yīng)的通用特征矩陣進(jìn)行相似性比較,對其是否執(zhí)行進(jìn)行判定,若是則執(zhí)行,否則直接累積測試時間而不執(zhí)行。本發(fā)明方法在不影響軟件可靠性評估模型的基礎(chǔ)上,在軟件可靠性測試執(zhí)行的環(huán)節(jié)進(jìn)行加速,有效地減少了測試執(zhí)行的工作量,起到明顯的軟件可靠性測試加速效果,減少了測試時間,節(jié)約了成本。
文檔編號G06F11/36GK102541736SQ201110448159
公開日2012年7月4日 申請日期2011年12月28日 優(yōu)先權(quán)日2011年11月30日
發(fā)明者敖麒, 王金輝, 艾駿, 鄭峰, 鐘芳凌, 陸民燕 申請人:北京航空航天大學(xué)