專利名稱:一種基于概念格的軟件多錯誤定位方法
技術(shù)領(lǐng)域:
本發(fā)明提出了一種基于概念格的軟件多錯誤定位技術(shù),主要是利用概念格技術(shù)來解決軟件程序中的多錯誤定位問題,屬于軟件調(diào)試的技術(shù)領(lǐng)域。
背景技術(shù):
在軟件測試過程中,測試可能會產(chǎn)生錯誤的結(jié)果,而此時,測試人員需要不斷地去調(diào)試程序,直至查找測試產(chǎn)生錯誤的緣由,該過程就是錯誤定位。錯誤定位是軟調(diào)試活動中最困難、最耗時的任務(wù)之一。錯誤定位即定位引起軟件失效的錯誤,傳統(tǒng)的方法有兩種:一是在程序中插入輸出語句,根據(jù)輸出結(jié)果去分析可能導(dǎo)致異常的錯誤;二是在程序中可能產(chǎn)生錯誤的地方設(shè)置斷點,然后單步執(zhí)行分析錯誤產(chǎn)生的位置。這兩種方法主要通過手動完成,效率不高。近些年來,隨著軟件規(guī)模的指數(shù)級增長,正變得越來越復(fù)雜多樣,這給軟件調(diào)試帶來了巨大的挑戰(zhàn)。自動化,半自動化的軟件錯誤定位技術(shù)因而也成為當(dāng)前的迫切需要,目前相關(guān)的主要技術(shù)有Delta調(diào)試法、程序切片法、程序譜方法,等等。盡管出現(xiàn)了如上所述的眾多的軟件錯誤定位技術(shù),這些技術(shù)主要是面向軟件中存在的單錯誤進行定位的,當(dāng)程序中有一個錯誤的時候,這些技術(shù)還是比較有效的,但是目前軟件規(guī)模較大,在軟件不同的地方幾個甚至幾十個錯誤同時出現(xiàn)的情況是普遍存在的,而當(dāng)前這些軟件錯誤定位技術(shù)由于沒有考慮到錯誤測試與錯誤之間的一些關(guān)聯(lián)關(guān)系,它們并不適用于這種多錯誤的定位情況。所以,需要一種新型的軟件多錯誤定位技術(shù)來處理軟件中多錯誤的調(diào)試。當(dāng)前,基于程序譜的錯誤定位技術(shù)由于其實現(xiàn)比較簡單,也比較適用于大規(guī)模程序分析的優(yōu)點變得非常流行。通過對程序譜的分析,計算程序中各個元素可能產(chǎn)生錯誤的概率,然后根據(jù)各個元素的概率從大到小依次檢查以找到錯誤所在位置。這種技術(shù)通常是基于程序譜,但是它缺乏了依賴分析,特別是程序元素與錯誤測試以及正確測試直接的關(guān)聯(lián)關(guān)系,對于多錯誤定位并不是很實用。而概念格是一種能夠有效地表示出不同元素之間關(guān)聯(lián)關(guān)系的一種技術(shù),因此,將概念格與程序譜結(jié)合起來能夠有效地表示出錯誤測試與可能產(chǎn)生錯誤的程序元素之間的關(guān)系。然后基于這樣一種概念格表示,一方面,能夠有效地定位到程序中可能導(dǎo)致錯誤產(chǎn)生的一些特征元素;另一方面,根據(jù)概念格的層次特性,對各種程序可疑元素進行排序,從而實現(xiàn)更加高效、準(zhǔn)確的錯誤定位。
發(fā)明內(nèi)容
技術(shù)問題:本發(fā)明的目的是提供一種基于概念格的軟件多錯誤定位方法,該技術(shù)能夠有效地表示出錯誤測試和導(dǎo)致程序出錯元素之間的關(guān)聯(lián)關(guān)系,能夠更加有效地找出軟件中存在的錯誤。該技術(shù)在實際應(yīng)用中不受程序語言約束,可以應(yīng)用于各種編程語言程序中,提高了該技術(shù)可應(yīng)用的范圍。技術(shù)方案:本發(fā)明基于概念格的軟件多錯誤定位方法具體如下:步驟1:給定一個測試用例集,收集程序執(zhí)行情況;其中,有一些測試用例結(jié)果與預(yù)期不一致,稱之為失效測試用例集,記為Failed ;而其余測試執(zhí)行結(jié)果正確的測試集合記為 Passed,步驟2:根據(jù)測試用例覆蓋信息構(gòu)造二維表,表中行表示測試用例運行情況,列表示程序元素,某個列的程序元素被某一行的測試用例覆蓋,就對其進行標(biāo)記,再以該二維表為輸入,利用形式概念分析技術(shù)構(gòu)造概念格(形式概念分析是一種從形式背景(這里表示測試用例覆蓋表)進行數(shù)據(jù)分析和規(guī)則提取的強有力工具)。形式概念分析建立在數(shù)學(xué)基礎(chǔ)之上,對組成概念的對象、屬性以及關(guān)系等用形式化的語境表述出來,然后根據(jù)語境,利用概念格的生成算法自動構(gòu)造出概念格。概念格上的節(jié)點表示概念,而一個概念是由外延和內(nèi)涵組成,分別表示某個節(jié)點的特征測試和特征元素;步驟3:在概念格上識別出所有都有外延和內(nèi)涵標(biāo)記的概念節(jié)點,如果一個節(jié)點的外延只有錯誤測試用例標(biāo)記,則將該節(jié)點所標(biāo)記的程序元素提取出來,那么根據(jù)概念格的標(biāo)記方法,該錯誤特征測試很有可能是由于該概念節(jié)點所標(biāo)記的程序元素導(dǎo)致的,因而該元素?fù)碛凶罡叩目梢啥?,則要檢查該元素是否是錯誤產(chǎn)生的原因;另外,如果一個節(jié)點的外延只有正確測試用例標(biāo)記,根據(jù)概念格的標(biāo)記方法,該節(jié)點所標(biāo)記的程序元素不可能是導(dǎo)致其他測試用例運行錯誤的元素,因而將其從可疑程序元素中刪除;步驟4:對于概念格上的其他節(jié)點,根據(jù)概念格的層次特性提出一種新的程序元
素的可疑程度SD (SuspiciousDegree,)模型,而SD是針對概念格上的每一個節(jié)點k進行度
量的,即
權(quán)利要求
1.一種基于概念格的軟件多錯誤定位方法,其特征在于該多錯誤定位方法具體如下:步驟1:給定一個測試用例集,收集程序執(zhí)行情況;其中,有一些測試用例結(jié)果與預(yù)期不一致,稱之為失效測試用例集,記為Failed ;而其余測試執(zhí)行結(jié)果正確的測試集合記為Passed ; 步驟2:根據(jù)測試用例覆蓋信息構(gòu)造二維表,表中行表示測試用例運行情況,列表示程序元素,某個列的程序元素被某一行的測試用例覆蓋,就對其進行標(biāo)記,再以該二維表為輸入,利用形式概念分析技術(shù)構(gòu)造概念格,形式概念分析建立在數(shù)學(xué)基礎(chǔ)之上,對組成概念的對象、屬性以及關(guān)系,用形式化的語境表述出來,然后根據(jù)語境,利用概念格的生成算法自動構(gòu)造出概念格;概念格上的節(jié)點表示概念,而一個概念是由外延和內(nèi)涵組成,分別表示某個節(jié)點的特征測試和特征元素; 步驟3:在概念格上識別出所有都有外延和內(nèi)涵標(biāo)記的概念節(jié)點,如果一個節(jié)點的外延只有錯誤測試用例標(biāo)記,則將該節(jié)點所標(biāo)記的程序元素提取出來,那么根據(jù)概念格的標(biāo)記方法,該錯誤特征測試很有可能是由于該概念節(jié)點所標(biāo)記的程序元素導(dǎo)致的,因而該元素?fù)碛凶罡叩目梢啥?,則要檢查該元素是否是錯誤產(chǎn)生的原因;另外,如果一個節(jié)點的外延只有正確測試用例標(biāo)記,根據(jù)概念格的標(biāo)記方法,該節(jié)點所標(biāo)記的程序元素不可能是導(dǎo)致其他測試用例運行錯誤的元素,因而將其從可疑程序元素中刪除; 步驟4:對于概念格上的其他節(jié)點,根據(jù)概念格的層次特性提出一種新的程序元素的可疑程度SD模型,而SD是針對概念格上的每一個節(jié)點k進行度量的,即,
全文摘要
本發(fā)明是一種基于概念格的軟件多錯誤定位方法,該方法能夠有效地表示出錯誤測試和導(dǎo)致程序出錯元素之間的關(guān)聯(lián)關(guān)系,能夠更加有效地找出軟件中存在的錯誤。該技術(shù)在實際應(yīng)用中不受程序語言約束,可以應(yīng)用于各種編程語言程序中,提高了該技術(shù)可應(yīng)用的范圍。根據(jù)概念格的層次特性提出一種新的程序元素的可疑程度SD模型,而SD是針對概念格上的每一個節(jié)點k進行度量的,即,其中,F(xiàn)ailed表示失效測試用例,Passed表示正確測試用例,Distance表示兩個節(jié)點間的最短距離,有了該可疑程度度量后,按照該可疑程度從高到低的順序檢查哪些元素是導(dǎo)致測試用例的失效,從而實現(xiàn)軟件中的多錯誤定位。
文檔編號G06F11/36GK103176902SQ20131007496
公開日2013年6月26日 申請日期2013年3月8日 優(yōu)先權(quán)日2013年3月8日
發(fā)明者孫小兵 申請人:揚州大學(xué)