亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

一種基于變量切片和關(guān)聯(lián)規(guī)則的軟件錯(cuò)誤定位方法與流程

文檔序號(hào):11729280閱讀:288來源:國知局
一種基于變量切片和關(guān)聯(lián)規(guī)則的軟件錯(cuò)誤定位方法與流程

本發(fā)明屬于軟件測(cè)試技術(shù)領(lǐng)域,具體涉及到軟件錯(cuò)誤定位問題,提供了一種基于變量切片和關(guān)聯(lián)規(guī)則的軟件錯(cuò)誤定位方法,主要解決錯(cuò)誤定位中效率低的問題,達(dá)到提高錯(cuò)誤定位效率、降低測(cè)試成本的目的。



背景技術(shù):

隨著軟件在各行各業(yè)應(yīng)用的不斷普及與深入,軟件質(zhì)量逐漸成為行業(yè)競爭的核心力量之一。如何確保軟件質(zhì)量成為了開發(fā)人員和測(cè)試人員關(guān)注的焦點(diǎn),而軟件錯(cuò)誤定位是調(diào)試過程中最昂貴、最耗時(shí)的活動(dòng)之一,也是保證軟件質(zhì)量、提高調(diào)試效率、降低測(cè)試成本的關(guān)鍵性工作。

目前,軟件錯(cuò)誤定位已經(jīng)成為國內(nèi)外研究的一個(gè)熱點(diǎn)。錯(cuò)誤定位旨在找到隱含在程序源代碼中的錯(cuò)誤指令、過程或數(shù)據(jù)定義,其粒度包含程序語句、基本塊、分支、函數(shù)或類。錯(cuò)誤定位技術(shù)根據(jù)“是否需要運(yùn)行軟件”的準(zhǔn)則分為兩大類:基于測(cè)試的錯(cuò)誤定位技術(shù)和基于靜態(tài)分析的錯(cuò)誤定位技術(shù)。前者需要設(shè)計(jì)測(cè)試用例,然后運(yùn)行軟件程序,最后根據(jù)軟件程序的動(dòng)態(tài)執(zhí)行信息和輸出結(jié)果進(jìn)行錯(cuò)誤定位,然而動(dòng)態(tài)分析方法在收集執(zhí)行信息時(shí)會(huì)產(chǎn)生較大的代價(jià)。后者不用運(yùn)行軟件,而是依據(jù)程序語言的語法和語義,靜態(tài)分析軟件結(jié)構(gòu)和程序?qū)嶓w之間的依賴關(guān)系,以發(fā)現(xiàn)不符合系統(tǒng)約束的程序?qū)嶓w,從而進(jìn)行錯(cuò)誤定位。

軟件錯(cuò)誤定位方法主要通過縮小錯(cuò)誤搜索范圍來提高效率。程序切片技術(shù)通過去除與程序錯(cuò)誤不相關(guān)的語句來縮小錯(cuò)誤搜索范圍,但是計(jì)算動(dòng)態(tài)程序切片時(shí),需要進(jìn)行測(cè)試用例設(shè)計(jì),切片后的程序?yàn)檎Z句集合,集合內(nèi)元素?zé)o先后次序,測(cè)試人員需要檢查切片中所有語句以定位錯(cuò)誤,導(dǎo)致時(shí)間資源消耗較大,錯(cuò)誤定位效率較低?;诟采w信息的錯(cuò)誤定位方法以程序中語句或基本塊為研究對(duì)象,統(tǒng)計(jì)不同執(zhí)行軌跡的覆蓋信息進(jìn)行懷疑度計(jì)算,經(jīng)典的tarantula、ochiai和naish等方法通過計(jì)算語句懷疑度得出檢查語句的先后次序以定位錯(cuò)誤,但是這些方法對(duì)執(zhí)行軌跡進(jìn)行了高度簡化并忽略了程序內(nèi)部固有的依賴關(guān)系,計(jì)算量大,時(shí)間代價(jià)較高,導(dǎo)致錯(cuò)誤定位效率較低。

為此,本發(fā)明提出變量切片和關(guān)聯(lián)規(guī)則相結(jié)合的軟件錯(cuò)誤定位方法以期提高軟件錯(cuò)誤定位的效率。首先在系統(tǒng)依賴圖的基礎(chǔ)上進(jìn)行變量切片,通過分析程序執(zhí)行過程,可以發(fā)現(xiàn)語句之間存在關(guān)聯(lián),關(guān)聯(lián)分析技術(shù)能夠從大量程序執(zhí)行信息中獲取關(guān)聯(lián)語句,以此確定語句檢查優(yōu)先級(jí)次序,定位錯(cuò)誤出現(xiàn)的位置。



技術(shù)實(shí)現(xiàn)要素:

本發(fā)明要解決的問題是:現(xiàn)有軟件錯(cuò)誤定位方法時(shí)間資源消耗大、效率較低,難以滿足降低測(cè)試成本的需求,需要一種新的軟件錯(cuò)誤定位方法,在減少計(jì)算量、降低時(shí)間資源消耗的情況下,有效提高軟件錯(cuò)誤定位的效率。

本發(fā)明的技術(shù)方案為:采用一種縮小軟件調(diào)試范圍的變量切片技術(shù)和分析程序語句相關(guān)性的關(guān)聯(lián)規(guī)則算法相結(jié)合的針對(duì)java程序的錯(cuò)誤定位方法。首先針對(duì)java程序語句進(jìn)行變量切片,將所有變量切片行號(hào)信息作為事務(wù)數(shù)據(jù)庫;然后利用關(guān)聯(lián)分析得到關(guān)聯(lián)規(guī)則集合,根據(jù)置信度和支持度由高到低的排列順序,生成檢查語句優(yōu)先級(jí)次序;最后依據(jù)語句優(yōu)先級(jí)次序越靠前越優(yōu)先被檢查的原則定位錯(cuò)誤出現(xiàn)的位置。

本發(fā)明的特征在于包括以下步驟:

(1)對(duì)于一個(gè)包含錯(cuò)誤且可執(zhí)行代碼總行數(shù)為n的java程序pfault進(jìn)行預(yù)處理,得到系統(tǒng)依賴圖;在系統(tǒng)依賴圖上針對(duì)pfault中某一條包含m個(gè)變量的語句進(jìn)行變量切片,得到程序切片數(shù)據(jù)varslice.dot;varslice.dot文件由集合t表示為t={fname,label,fillcolor,si→sj},其中fname為pfault中執(zhí)行變量切片語句所屬方法的名稱;label為變量切片語句,label="varnumi:var=value",其中varnumi(1≤i≤n)為切片行號(hào),var為變量名,value為變量值;fillcolor表示語句是否包含在變量切片結(jié)果內(nèi),fillcolor={yellow,gray},yellow表示該語句屬于變量切片執(zhí)行結(jié)果,gray表示該語句不屬于變量切片執(zhí)行結(jié)果;si→sj為語句si和sj的依賴指向關(guān)系;執(zhí)行一次變量切片可以獲得一個(gè).dot文件,將每個(gè).dot文件中fillcolor取yellow值的label所對(duì)應(yīng)的變量切片行號(hào)集合varnum作為.txt文件的一條記錄,其中varnum={varnum1,varnum2...varnumi,...varnumn};從所有變量切片數(shù)據(jù).dot文件中依次提取varnum,構(gòu)成變量切片行號(hào)信息varslice.txt,該信息的記錄數(shù)為執(zhí)行變量切片的次數(shù);

(2)將varslice.txt作為事務(wù)數(shù)據(jù)庫d,通過掃描d計(jì)算每個(gè)變量切片行號(hào)varnumi的頻數(shù)slicenum1,每個(gè)varnumi都是候選1項(xiàng)集的集合c1的成員;假設(shè)最小支持度計(jì)數(shù)為min_support,可以確定頻繁1項(xiàng)集的集合l1,它由滿足slicenum1≥min_support的候選1項(xiàng)集組成;使用連接操作l1×l1產(chǎn)生候選2項(xiàng)集的集合c2,它由個(gè)2項(xiàng)集組成;掃描d中事務(wù),累計(jì)c2中每個(gè)候選項(xiàng)集的支持計(jì)數(shù)slicenum2,然后確定頻繁2項(xiàng)集的集合l2,它由c2中滿足slicenum2≥min_support的候選2項(xiàng)集組成;令c3=l2×l2,從c3中刪除具有非頻繁子集的候選項(xiàng)集,再累計(jì)c3中每個(gè)候選項(xiàng)集的支持計(jì)數(shù)slicenum3,掃描d中事務(wù)確定頻繁3項(xiàng)集的集合l3,l3由c3中滿足slicenum3≥min_support的候選3項(xiàng)集組成;以此類推,利用產(chǎn)生候選集的連接步li×li和刪除具有非頻繁子集的候選集的剪枝步逐層搜索,直至ci=φ終止,即得到了所有的頻繁項(xiàng)集frevarslice={c1,c2,c3,...ci-1};

(3)對(duì)于每個(gè)頻繁項(xiàng)集cj(1≤j≤i-1),可以得到2j-2個(gè)非空真子集s,假設(shè)最小置信度為min_confidence,支持度計(jì)數(shù)為support_count,若滿足則獲取到語句之間蘊(yùn)含的關(guān)聯(lián)規(guī)則relatelisti,表示為以及關(guān)聯(lián)規(guī)則數(shù)目relatelistnum;

(4)將所有關(guān)聯(lián)規(guī)則totalrelatelist={relatelist1,relatelist2,...relatelisti,...relatelistnum}按照置信度由高到低的次序重新排列,可以得到排序關(guān)聯(lián)規(guī)則seqrelatelist={relatelist1',relatelist2',...relatelisti',...relatelistnum'},其中第i條關(guān)聯(lián)規(guī)則relatelisti'表示為

(5)對(duì)步驟(4)的排序關(guān)聯(lián)規(guī)則seqrelatelist進(jìn)行分類,置信度相同的劃分為同一類,形成集合{confidence1=varnum1,varnum11,...varnum1i;confidence2=varnum2,varnum22,...varnum2i;...confidencek=varnumk,varnumkk,...varnumki},其中根據(jù)置信度的排列順序生成檢查語句優(yōu)先級(jí)次序insequence={varnum1,varnum11,...varnum1i;varnum2,varnum22,...varnum2i;...varnumk,varnumkk,...varnumki};

(6)對(duì)于未在關(guān)聯(lián)規(guī)則內(nèi)的語句按照支持度由高到低進(jìn)行排列并分類,支持度相同的劃分為同一類,形成集合{support(k+1)=varnum(k+1),varnum(k+1)(k+1),...varnum(k+1)j;support(k+2)=varnum(k+2),varnum(k+2)(k+2),...varnum(k+2)j;...support(k+m)=varnum(k+m),varnum(k+m)(k+m),...varnum(k+m)j},其中support(k+m)∈slicenum1;根據(jù)支持度的排列順序生成關(guān)聯(lián)規(guī)則外的檢查語句優(yōu)先級(jí)次序outsequence={varnum(k+1),varnum(k+1)(k+1),...varnum(k+1)j;varnum(k+2),varnum(k+2)(k+2),...varnum(k+2)j;...varnum(k+m),varnum(k+m)(k+m),...varnum(k+m)j};

(7)依據(jù)步驟(5)和步驟(6)得到總的檢查語句優(yōu)先級(jí)次序prioritysequence=insequence∪outsequence,依據(jù)語句優(yōu)先級(jí)次序越靠前越優(yōu)先被檢查的原則,可以定位到程序pfault中錯(cuò)誤出現(xiàn)的具體位置。

本發(fā)明的特點(diǎn)在于:(1)采用基于程序內(nèi)部固有的數(shù)據(jù)依賴和控制依賴關(guān)系、縮小軟件調(diào)試范圍的變量切片技術(shù);(2)將變量切片技術(shù)結(jié)合關(guān)聯(lián)規(guī)則算法得到語句之間蘊(yùn)含的關(guān)聯(lián)規(guī)則;(3)通過排序策略生成排序關(guān)聯(lián)規(guī)則和檢查語句優(yōu)先級(jí)次序,從而進(jìn)行錯(cuò)誤定位。

本發(fā)明的有益效果為:

目前,解決軟件錯(cuò)誤定位問題的方法很多,傳統(tǒng)的軟件錯(cuò)誤定位方法主要通過縮小錯(cuò)誤搜索范圍來提高效率。從不同角度出發(fā)且被廣泛應(yīng)用的錯(cuò)誤定位技術(shù)主要包括基于距離度量的delta調(diào)試技術(shù)、并集模型、交集模型、近鄰模型,基于排序度量的懷疑度計(jì)算tarantula方法、改進(jìn)的徑向基函數(shù)神經(jīng)網(wǎng)絡(luò)wong方法,基于程序切片的靜態(tài)切片、動(dòng)態(tài)切片技術(shù),基于概率度量的統(tǒng)計(jì)分析、sober方法以及基于模型度量的診斷方法等。

其中,程序切片技術(shù)的理論已經(jīng)相當(dāng)成熟,主要有靜態(tài)切片和動(dòng)態(tài)切片,前向切片和后向切片等,由于程序切片與程序有關(guān),在軟件的編碼和調(diào)試階段,當(dāng)出現(xiàn)錯(cuò)誤時(shí)通過程序切片可以快速對(duì)程序中的錯(cuò)誤進(jìn)行定位,這樣引起錯(cuò)誤的代碼就被限定在這個(gè)程序切片里,從而縮小了軟件調(diào)試范圍,協(xié)助測(cè)試人員更加有效地定位程序錯(cuò)誤。在實(shí)用的程序切片工具方面,主要包括關(guān)注c程序的wisconsin、chopshop、ghinsu、unravel,適用于ada語言的pss/ada,支持oberon-2語言的theoberonslicingtool(ost),應(yīng)用于oopql語言環(huán)境的jato以及針對(duì)java程序的動(dòng)態(tài)切片工具dsfl、spyder等,但是這些工具中開源的較少,尤其針對(duì)java語言的靜態(tài)切片工具就更為少見。

基于覆蓋信息的錯(cuò)誤定位方法以程序中語句或基本塊為研究對(duì)象,統(tǒng)計(jì)不同執(zhí)行軌跡的覆蓋信息,進(jìn)行懷疑度計(jì)算。tarantula方法、ochiai方法、wong方法、dstar方法和naish等方法通過計(jì)算語句懷疑度得出檢查語句的先后次序以定位錯(cuò)誤。

程序切片技術(shù)能夠在一定程度上縮小檢查語句的范圍,減少檢查不相關(guān)語句帶來的時(shí)間資源消耗,但切片后的語句集合里并不包括優(yōu)先級(jí)次序,故測(cè)試人員需要按照切片中語句的自然順序逐個(gè)檢查,在效率上優(yōu)勢(shì)并不明顯。而關(guān)聯(lián)規(guī)則能夠從大量程序執(zhí)行信息中獲取語句錯(cuò)誤的相關(guān)信息,反映出執(zhí)行軌跡中語句和執(zhí)行結(jié)果的關(guān)系。為此,本發(fā)明將程序切片技術(shù)和關(guān)聯(lián)規(guī)則算法相結(jié)合,在得到變量切片后進(jìn)行關(guān)聯(lián)分析,得到檢查語句優(yōu)先級(jí)次序以定位錯(cuò)誤,達(dá)到提高錯(cuò)誤定位效率的目的。

下面以典型實(shí)例的實(shí)驗(yàn)結(jié)果證實(shí)該方法的有效性和可行性:

測(cè)試程序選用5個(gè)輕量級(jí)java單錯(cuò)誤版本程序作為基準(zhǔn),其基本信息如表1所示,其中第1—3列分別為程序名稱、描述和可執(zhí)行代碼行數(shù)(不包含注釋行)。

表1測(cè)試程序描述

對(duì)比實(shí)驗(yàn)選取經(jīng)典的tarantula、ochiai、jarcard、dstar、wong和naish2共6種計(jì)算懷疑度方法(計(jì)算公式如(1)—(6)所列)作為評(píng)測(cè)數(shù)據(jù)集,錯(cuò)誤類型為植入錯(cuò)誤。

通過執(zhí)行變量切片并進(jìn)行關(guān)聯(lián)分析,獲得的實(shí)驗(yàn)結(jié)果如表2、表3、圖5、圖6所示。

其中,表2的第2—9列分別表示加載soot類所消耗的時(shí)間、進(jìn)行指向分析需要的時(shí)間、程序依賴圖中方法的數(shù)目、分析方法所消耗的時(shí)間、系統(tǒng)依賴圖中結(jié)點(diǎn)的數(shù)目、控制依賴數(shù)目、數(shù)據(jù)依賴數(shù)目以及成功構(gòu)造系統(tǒng)依賴圖所需要的時(shí)間。

表2執(zhí)行變量切片過程的時(shí)間復(fù)雜度

由表2和圖5可以看出程序規(guī)模越大、結(jié)構(gòu)越復(fù)雜,在執(zhí)行變量切片的過程中所消耗的時(shí)間資源越多。

表3的第2—5列分別為執(zhí)行變量切片數(shù)目、由關(guān)聯(lián)規(guī)則算法得到的關(guān)聯(lián)規(guī)則數(shù)目和執(zhí)行時(shí)間以及在關(guān)聯(lián)規(guī)則算法中設(shè)置的最小支持度參數(shù)。

表3執(zhí)行關(guān)聯(lián)分析結(jié)果

由表3可以看出,在采用輕量級(jí)java程序進(jìn)行實(shí)驗(yàn)的過程中,變量切片數(shù)隨著程序規(guī)模的增加而增加。關(guān)聯(lián)規(guī)則數(shù)目反映的是語句之間的聯(lián)系程度,數(shù)目越多表示語句之間聯(lián)系越緊密。

本發(fā)明采用檢查到錯(cuò)誤語句的累積檢查語句數(shù)與可執(zhí)行代碼數(shù)的比值這一錯(cuò)誤定位代價(jià)指標(biāo)對(duì)錯(cuò)誤定位的效率進(jìn)行評(píng)價(jià),比值越小表示錯(cuò)誤定位的效果越好。由于檢查語句中可能存在多條語句檢查次序相同的情況,故本發(fā)明采用對(duì)均值情況進(jìn)行對(duì)比分析。最好的情況是在同一優(yōu)先級(jí)的前提下,檢查第一條語句就定位到錯(cuò)誤,最壞的情況是在檢查到最后一條語句才定位到錯(cuò)誤,均值的情況是兩者的平均值。由圖6可以看出,在均值情況下,本發(fā)明方法的錯(cuò)誤定位效率優(yōu)勢(shì)明顯,僅需平均檢查10%左右的代碼即可定位到錯(cuò)誤位置,比基于覆蓋信息的tarantula、ochiai、jarcard、dstar、wong和naish2方法的錯(cuò)誤定位效率高且穩(wěn)定性良好。

通過以上分析和實(shí)例驗(yàn)證,本發(fā)明方法錯(cuò)誤定位效率優(yōu)于其他方法,原因在于本發(fā)明方法基于變量切片,將程序中語句的執(zhí)行軌跡和語句之間潛在的關(guān)聯(lián)關(guān)系聯(lián)系起來,生成檢查語句優(yōu)先級(jí)次序,從而定位出錯(cuò)誤的位置,該方法穩(wěn)定性良好,是一種有效改善調(diào)試效率、降低測(cè)試成本的軟件錯(cuò)誤定位方法。

附圖說明

圖1是本發(fā)明方法的流程圖

圖2是驗(yàn)證方法的一個(gè)java實(shí)例程序

圖3是java實(shí)例程序從.dot文件提取的變量切片信息varslice.txt

圖4是由java實(shí)例程序的varslice.txt得到的頻繁項(xiàng)集frevarslice及支持度計(jì)數(shù)

圖5是5個(gè)典型java程序執(zhí)行變量切片獲得的數(shù)據(jù)信息和時(shí)間資源消耗情況的對(duì)比圖

圖6是本發(fā)明方法和基于懷疑度公式方法的錯(cuò)誤定位效率的對(duì)比圖

具體實(shí)施方式

以圖2的實(shí)例程序?yàn)槔齺碚f明本發(fā)明的具體實(shí)施過程。

如圖1,本發(fā)明將變量切片技術(shù)和關(guān)聯(lián)分析算法相結(jié)合進(jìn)行錯(cuò)誤定位,其具體步驟如下:

(1)對(duì)圖2所示程序源代碼.java進(jìn)行編譯,將其轉(zhuǎn)換為字節(jié)碼.class形式后,利用soot中提供的spark流和指向分析方法,進(jìn)行控制流和數(shù)據(jù)流分析,分析方法個(gè)數(shù)以及結(jié)點(diǎn)數(shù)目;結(jié)合控制依賴圖和數(shù)據(jù)依賴圖構(gòu)建系統(tǒng)依賴圖,在該依賴圖上進(jìn)行變量切片。

執(zhí)行變量切片獲取的數(shù)據(jù)信息為:

test.slicer.classic.compareloadsootclassesin13.6s

finishpoints-toanalysisin1.1s

[pdg]0:<test.slicer.classic.compare:voidmain(java.lang.string[])>--1.8s,23nodes

[pdg]1:<test.slicer.classic.compare:intsub(int,int,int)>--0.0s,8nodes

[sdg]2methodsanalyzedin1.8s

[dependencecount]nodes31,ctrl29,stack23

[sdg]sdgsuccessfullyconstructedin9.5s

對(duì)s6:x=x/z;執(zhí)行變量切片:

對(duì)變量x執(zhí)行切片:

slicingresult:

#0encompare.main

6:x=x/z

2:x=5

對(duì)變量z執(zhí)行切片:

slicingresult:

#0encompare.main

6:x=x/z

4:z=5

從所有變量切片數(shù)據(jù).dot文件中依次提取varnum,構(gòu)成變量切片行號(hào)信息varslice.txt,針對(duì)實(shí)例程序,得到執(zhí)行變量切片的次數(shù)為25,如圖3所示;

(2)將varslice.txt作為事務(wù)數(shù)據(jù)庫d,利用產(chǎn)生候選集的連接步li×li和刪除非頻繁集候選的剪枝步逐層搜索,直至頻繁項(xiàng)集c6=φ終止,得到了所有的頻繁項(xiàng)集frevarslice={c1,c2,c3,c4,c5},如圖4所示;

(3)在步驟(2)的基礎(chǔ)上進(jìn)行關(guān)聯(lián)分析,獲取語句之間蘊(yùn)含的關(guān)聯(lián)規(guī)則totalrelatelist,并得到關(guān)聯(lián)語句之間的置信度;實(shí)例程序得到138條關(guān)聯(lián)規(guī)則;

(4)對(duì)于實(shí)例程序,按照置信度由高到低的排序策略得到排序關(guān)聯(lián)規(guī)則seqrelatelist;

(5)對(duì)步驟(4)的排序關(guān)聯(lián)規(guī)則seqrelatelist進(jìn)行分類,置信度相同的劃分為同一類,形成集合{1.00=5,2,3,4,10;0.89=6;},生成檢查語句優(yōu)先級(jí)次序insequence為{5,2,3,4,10,6},故

檢查的第1條語句是:第5行,第2行,第3行,第4行,第10行;

檢查的第6條語句是:第6行;

其中,最小支持度根據(jù)程序的規(guī)模、結(jié)構(gòu)、復(fù)雜性設(shè)定為7。

(6)對(duì)于未在關(guān)聯(lián)規(guī)則內(nèi)的語句按照支持度由高到低進(jìn)行排列得到8:5;7:4;9:4;11:4;12:4;15:3;13:1;16:1;17:1;將支持度相同的劃分為同一類,形成集合{5=8;4=7,9,11,12;3=15;1=13,16,17;},生成關(guān)聯(lián)規(guī)則外的檢查語句優(yōu)先級(jí)次序outsequence為{8,7,9,11,12,15,13,16,17},故

檢查的第7條語句是:第8行;

檢查的第8條語句是:第7行,第9行,第11行,第12行;

檢查的第12條語句是:第15行;

檢查的第13條語句是:第13行,第16行,第17行。

(7)依據(jù)步驟(5)和步驟(6)得到總的檢查語句優(yōu)先級(jí)次序prioritysequence=insequence∪outsequence,即prioritysequence={5,2,3,4,10,6,8,7,9,11,12,15,13,16,17},依據(jù)語句優(yōu)先級(jí)次序越靠前越優(yōu)先被檢查的原則,可以定位到錯(cuò)誤出現(xiàn)的具體位置(如表4所示)以及錯(cuò)誤定位代價(jià)結(jié)果:6/17=35.29%。

表4錯(cuò)誤定位結(jié)果

本發(fā)明涉及的基本思想可以完整體現(xiàn)在表5的實(shí)例程序中,其中基于覆蓋信息的語句檢查次序是在構(gòu)造8個(gè)測(cè)試用例(t1-t8)的基礎(chǔ)上,通過比較懷疑度tarantula方法和基于動(dòng)態(tài)切片和關(guān)聯(lián)分析的錯(cuò)誤定位方法flar得到的,*表示該條語句被覆蓋,第一列行號(hào)中si表示第i條語句,s6為錯(cuò)誤語句,t/f表示執(zhí)行測(cè)試用例結(jié)果為成功(t)/失敗(f)。本發(fā)明方法在執(zhí)行變量切片的基礎(chǔ)上進(jìn)行關(guān)聯(lián)分析,定位到錯(cuò)誤需要檢查語句數(shù)i—j中,i表示最好情況下只需檢查i條語句即可定位到錯(cuò)誤,j表示最壞情況下需要檢查j條語句才能定位到錯(cuò)誤,均值為(i+j)/2,表示平均需要檢查的語句數(shù)目。錯(cuò)誤定位代價(jià)為平均需要檢查的語句數(shù)目與可執(zhí)行代碼總行數(shù)的比值,值越小表示錯(cuò)誤定位的效率越高。

表5實(shí)例程序

表6為本發(fā)明方法與基于懷疑度公式的檢查語句數(shù)和錯(cuò)誤定位代價(jià)對(duì)比,可以看出在均值情況下,本發(fā)明方法與ochiai方法、dstar方法錯(cuò)誤定位效率相當(dāng),優(yōu)于tarantula方法、flar方法、jarcard方法、wong方法和naish2方法。

表6方法對(duì)比

通過實(shí)例驗(yàn)證,可以看出變量切片和關(guān)聯(lián)規(guī)則相結(jié)合的軟件錯(cuò)誤定位方法能夠有效改善軟件調(diào)試效率,降低軟件測(cè)試成本。

當(dāng)前第1頁1 2 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1