基于組合測(cè)試的錯(cuò)誤定位方法
【專利摘要】本發(fā)明提供一種基于組合測(cè)試的錯(cuò)誤定位方法,該方法從輸出端的結(jié)果入手,分析輸出端的故障模式,結(jié)合apriori算法定位錯(cuò)誤,提高了錯(cuò)誤定位的定全率和定準(zhǔn)率。作為軟件測(cè)試中定位故障的方法,本發(fā)明保證了錯(cuò)誤定位結(jié)果的準(zhǔn)確性。比對(duì)已有技術(shù)具有以下一些特點(diǎn)和創(chuàng)新之處:在基于組合測(cè)試的錯(cuò)誤定位方法中,對(duì)輸出的故障模式進(jìn)行掃描,找出出現(xiàn)最頻繁的項(xiàng)集,經(jīng)過重復(fù)掃描,生成可疑的故障模式集,提高軟件錯(cuò)誤定位的效率。
【專利說明】基于組合測(cè)試的錯(cuò)誤定位方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及一種基于組合測(cè)試的錯(cuò)誤定位方法,屬于軟件測(cè)試的錯(cuò)誤定位領(lǐng)域。
【背景技術(shù)】
[0002] 軟件系統(tǒng)可能會(huì)受到它的參數(shù)間相互作用的影響。這些相互作用需要進(jìn)行測(cè)試, 以保證軟件的質(zhì)量。但對(duì)于有η個(gè)參數(shù)的待測(cè)系統(tǒng),由于參數(shù)值的組合很多,我們不可能去 覆蓋所有可能的η元組參數(shù)值的組合。組合測(cè)試則是在測(cè)試成本和組合覆蓋度之間的一個(gè) 折衷方法。例如,2維組合測(cè)試要求覆蓋所有的2元組合,在η元組合中則不是。
[0003] 在錯(cuò)誤檢測(cè)后,錯(cuò)誤定位在軟件質(zhì)量保證中起到了一個(gè)重要的作用,它也需要去 協(xié)助軟件調(diào)試。在交互錯(cuò)誤定位階段,基于從組合測(cè)試用例的執(zhí)行中獲取的信息,需要定位 導(dǎo)致故障的那些參數(shù)值得特定組合。然而,基于組合測(cè)試的交互錯(cuò)誤定位技術(shù)很少被研究。 因此,需要進(jìn)行研究來協(xié)助組合測(cè)試更廣泛的應(yīng)用。
[0004] 目前,人們關(guān)于組合測(cè)試的研究主要集中在組合覆蓋測(cè)試用例的生成方面。Cohen 與Dalai等提出了一種基于兩兩組合覆蓋的測(cè)試數(shù)據(jù)啟發(fā)式生成方法,所產(chǎn)生的測(cè)試數(shù)據(jù) 可以根據(jù)測(cè)試要求實(shí)現(xiàn)對(duì)系統(tǒng)參數(shù)的兩兩組合覆蓋,或者多個(gè)參數(shù)的組合覆蓋。但這種方 法無法保證所產(chǎn)生的測(cè)試用例最優(yōu)。Lei和Tai提出一種基于參數(shù)順序的漸進(jìn)擴(kuò)充的兩兩 組合覆蓋測(cè)試數(shù)據(jù)生成方法,在某些方面具有比較好的特性,同時(shí),這種方法也有很大不足 之處。作為啟發(fā)式方法的一種重要補(bǔ)充,Kobayashi和Tsuchiya等提出了一種代數(shù)方法用 于生成兩兩組合覆蓋的測(cè)試數(shù)據(jù),在某些情況下其效果要比啟發(fā)式方法好。
[0005] Zeller提出了 Delta Debugging方法,是一種能自動(dòng)縮小程序的成功運(yùn)行過程和 失敗運(yùn)行過程之間區(qū)別的技術(shù)。在實(shí)現(xiàn)層面,它采用分治思想,把軟件配置(測(cè)試輸入、源 程序等)變動(dòng)的集合進(jìn)行劃分,然后分別進(jìn)行測(cè)試,結(jié)果可以為通過、失敗和無解。然后遞 歸地把導(dǎo)致失敗配置的集合并入結(jié)果為通過配置的集合。通過逐漸減小兩個(gè)集合之間的差 異,最終確認(rèn)成功配置和失敗配置差別的一個(gè)最小子集。
[0006] 徐寶文等人首先假定"若某個(gè)模式是錯(cuò)誤模式,則任意包含該模式的其它模式也 將引發(fā)相同的錯(cuò)誤"。在此前提條件下,他們通過分析執(zhí)行失敗的測(cè)試用例,生成一批與之 類似的附加測(cè)試用例,并通過執(zhí)行附加測(cè)試用例,逐步縮小故障模式集合Μ的范圍,直到錯(cuò) 誤被精確地定位。
【發(fā)明內(nèi)容】
[0007] 本發(fā)明的目的是提出一種基于組合測(cè)試的錯(cuò)誤定位方法,該方法結(jié)合了 apriori 算法,該算法能不斷掃描故障模式集,找出出現(xiàn)頻率最高的一個(gè)幾個(gè)故障模式,最終達(dá)到軟 件測(cè)試中錯(cuò)誤定位的定全率和準(zhǔn)確率的目標(biāo)。
[0008] 本發(fā)明的技術(shù)解決方案是:
[0009] 一種基于組合測(cè)試的錯(cuò)誤定位方法,
[0010] S1、獲取可執(zhí)行的待測(cè)系統(tǒng)以及測(cè)試用例集;
[0011] S2、運(yùn)行測(cè)試用例,劃分通過和失敗的測(cè)試用例集,保留失敗測(cè)試用例集用來定位 故障;
[0012] S3、生成失敗附加測(cè)試用例集Tfail' ;
[0013] S4、合并所有失敗測(cè)試用例的集合為Tf ;
[0014] S5、利用apriori算法找到Tf中的頻繁項(xiàng)目集;
[0015] S6、故障定位結(jié)果的度量使用定全率和定準(zhǔn)率兩個(gè)指標(biāo),計(jì)算可以故障模式集合 中的定全率和定準(zhǔn)率,判斷是否達(dá)到100% :
[0016] 如果"是",轉(zhuǎn)步驟S7 ;如果否,則跳轉(zhuǎn)步驟S3 ;
[0017] S7、頻繁項(xiàng)目集即為錯(cuò)誤定位的結(jié)果,結(jié)束。
[0018] 進(jìn)一步地,步驟S1具體為:
[0019] S11、獲取待測(cè)系統(tǒng)SUT ;
[0020] S12、待測(cè)系統(tǒng)SUT有η個(gè)參數(shù)f\,f2, . . .,fn,形成集合F = {f\,f2, . . .,fn},形成該 因素的取值集合\ = {1,2, . . .,aj ;
[0021] S13、獲取測(cè)試用例集,記為T ;
[0022] S14、對(duì)Τ中的測(cè)試用例進(jìn)行編號(hào),按序編為test" test2, . . .,testy . . .,testn,其 中 test = {vd v2, · · ·,vj h e ν1; v2 e V2, · · ·,Vn e Vn)表示測(cè)試用例集 T 中的第 i 條測(cè) 試用例,n為測(cè)試用例的總條數(shù)。
[0023] 進(jìn)一步地,步驟S2具體為:
[0024] S21、從測(cè)試用例集中選取測(cè)試用例testi ;
[0025] S22、運(yùn)行當(dāng)前選取的測(cè)試用例testi ;
[0026] S23、判斷測(cè)試用例的通過情況;
[0027] S231、判定測(cè)試用例test是否通過,如果"是",則轉(zhuǎn)S232,否則轉(zhuǎn)S233 ;
[0028] S232、將測(cè)試用例test放入集合Tpass ;
[0029] S233、將測(cè)試用例test放入集合Tfail ;
[0030] S234、判定待測(cè)系統(tǒng)SUT是否執(zhí)行結(jié)束,如果"是",則轉(zhuǎn)S235,否則轉(zhuǎn)S21,直到T 中的測(cè)試用例均被待測(cè)系統(tǒng)SUT檢測(cè);
[0031] S235、獲取集合Tfail,Tfail為所有失敗測(cè)試用例的集合。
[0032] 進(jìn)一步地,步驟S3具體為:
[0033] S31、從Tfail中選取測(cè)試用例testi ;
[0034] S32、獲取附加測(cè)試用例集Τ' ;
[0035] S33、從Τ'中選取測(cè)試用例test/ ;
[0036] S34、運(yùn)行當(dāng)前選取的測(cè)試用例test/ ;
[0037] S35、判斷測(cè)試用例的通過情況;
[0038] S351、判定測(cè)試用例test/是否通過,如果"是",則轉(zhuǎn)S352,否則轉(zhuǎn)S353 ;
[0039] S352、將測(cè)試用例test/放入集合Tpass' ;
[0040] S353、將測(cè)試用例test/放入集合Tfail' ;
[0041] S354、判定待測(cè)系統(tǒng)SUT是否執(zhí)行結(jié)束,如果"是",則轉(zhuǎn)S355,否則轉(zhuǎn)S33,直到 Tfail'中的測(cè)試用例均被待測(cè)系統(tǒng)SUT檢測(cè);
[0042] S355、獲取集合Tfail',Tfail'為所有失敗附加測(cè)試用例的集合。
[0043] 進(jìn)一步地,步驟S31具體為:
[0044] S311、改變其中一項(xiàng)V/A (k=l)啲值,生成新的測(cè)試用例test/ ;
[0045] S312、將test/放入附加測(cè)試用例集Τ'中;
[0046] S313、判斷是否有k = η,如果"是",則轉(zhuǎn)S31,k = k+Ι,否則轉(zhuǎn)S311 ;
[0047] S314、判斷Tfail中的測(cè)試用例test是否都被選取,如果"是",則轉(zhuǎn)S32,否則轉(zhuǎn) S31。
[0048] 進(jìn)一步地,步驟S5具體為:
[0049] S51、算法開始;
[0050] S52、設(shè)定最小支持度為2 ;
[0051] S53、掃描集合Tf,對(duì)每個(gè)項(xiàng)Vi進(jìn)行計(jì)數(shù);
[0052] S54、生成1階候選項(xiàng)目集,k = 1 ;
[0053] S55、由保留的項(xiàng)Vi生成1階頻繁項(xiàng)目集,k = 1 ;
[0054] S56、掃描集合Tf,對(duì)(V 4)計(jì)數(shù);
[0055] S57、生成2階候選項(xiàng)目集,k = 2 ;
[0056] S58、由保留的項(xiàng)(v;l,ν?:)生成2階頻繁項(xiàng)目集,k = 2 ;
[0057] S59、掃描 Tf,k = k+1,對(duì)(%,ν?:,…,' )計(jì)數(shù);
[0058] S510、生成k階候選項(xiàng)目集;
[0059] S511、由保留的項(xiàng)(V,.,,\,…,\ )生成k階頻繁項(xiàng)目集;
[0060] S512、判斷k階頻繁項(xiàng)目集的每個(gè)項(xiàng)(ν;1,ν(· :,…,)計(jì)數(shù)是否大于最小支持度2,如 果"是",則轉(zhuǎn)S513,否則轉(zhuǎn)S59 ;
[0061] S513、算法結(jié)束;
[0062] 進(jìn)一步地,步驟S54具體為:
[0063] S541、從1階候選項(xiàng)目集中選取項(xiàng)Vi ;
[0064] S542、判斷Vi的計(jì)數(shù)是否大于最小支持度2,如果"是",則轉(zhuǎn)S543,否則轉(zhuǎn)S544 ;
[0065] S543、保留該項(xiàng) vi;
[0066] S544、刪除計(jì)數(shù)不大于2的項(xiàng);
[0067] S545、判斷是否掃描1階候選項(xiàng)目集中所有項(xiàng)Vi,如果"是",則轉(zhuǎn)S55,否則轉(zhuǎn) S541。
[0068] 進(jìn)一步地,步驟S57具體為:
[0069] S571、從2階候選項(xiàng)目集中選取項(xiàng)(?2);
[0070] S572、判斷(W的計(jì)數(shù)是否大于最小支持度2,如果"是",則轉(zhuǎn)S573,否則轉(zhuǎn) S574 ;
[0071] 3573、保留該項(xiàng)(^2);
[0072] S574、刪除計(jì)數(shù)不大于2的項(xiàng);
[0073] S575、判斷是否掃描1階候選項(xiàng)目集中所有項(xiàng)(? ),如果"是",則轉(zhuǎn)S58,否則轉(zhuǎn) S571。
[0074] 進(jìn)一步地,步驟S510具體為:
[0075] S5101、從k階候選項(xiàng)目集中選取項(xiàng)(',v,:,…,ν4 );
[0076] 35102、判斷〇,1,圪,?,1\)計(jì)數(shù)是否大于最小支持度2,如果"是",則轉(zhuǎn)55103,否則 轉(zhuǎn) S5104 ;
[0077] S5103、保留該項(xiàng)(',ν,:,…,v;i);
[0078] S5104、刪除計(jì)數(shù)不大于2的項(xiàng);
[0079] S5105、判斷是否掃描1階候選項(xiàng)目集中所有項(xiàng)(ν;1,ν?2,…,ν4),如果"是",則轉(zhuǎn) S511,否則轉(zhuǎn) S5101。
[0080] 本發(fā)明的有益效果是:作為軟件測(cè)試中定位故障的方法,本發(fā)明保證了錯(cuò)誤定位 結(jié)果的準(zhǔn)確性。比對(duì)已有技術(shù)具有以下一些特點(diǎn)和創(chuàng)新之處:在基于組合測(cè)試的錯(cuò)誤定位 方法中,對(duì)輸出的故障模式進(jìn)行掃描,找出出現(xiàn)最頻繁的項(xiàng)集,經(jīng)過重復(fù)掃描,生成可疑的 故障模式集,提高軟件錯(cuò)誤定位的效率。
【專利附圖】
【附圖說明】
[0081] 圖1是實(shí)施例方法錯(cuò)誤定位的流程圖。
[0082] 圖2是apriori算法流程圖。
[0083] 圖3是利用apriori算法找到故障模式中的頻繁項(xiàng)集流程圖。
【具體實(shí)施方式】
[0084] 下面結(jié)合附圖詳細(xì)說明本發(fā)明的優(yōu)選實(shí)施例。
[0085] 在充分考慮保證生成結(jié)果最優(yōu)的基礎(chǔ)上,提出了一種新的關(guān)于兩兩組合覆蓋的測(cè) 試數(shù)據(jù)生成算法。實(shí)施例方法主要是在現(xiàn)有理論的基礎(chǔ)上,分析輸出端的故障模式集,結(jié)合 apriori算法,找到可疑故障模式集合來定位錯(cuò)誤,最終提高錯(cuò)誤定位的定全率和準(zhǔn)確率。 Apriori算法是一種挖掘關(guān)聯(lián)規(guī)則的頻繁項(xiàng)集算法,如圖2所示。
[0086] 實(shí)施例的該種基于組合測(cè)試的錯(cuò)誤定位方法,從輸出端的結(jié)果入手,分析輸出端 的故障模式,結(jié)合apriori算法定位錯(cuò)誤,提高了錯(cuò)誤定位的定全率和定準(zhǔn)率。在極小故障 模式模型中,認(rèn)為軟件錯(cuò)誤是由極小故障模式所引發(fā)的,這一模式必然被包含在一條運(yùn)行 失敗的測(cè)試用例中。因此,組合測(cè)試故障的定位目標(biāo)就在于尋找這樣的極小故障模式,或是 將這樣的極小故障模式確定在一個(gè)比較小的、可供人工篩選的范圍內(nèi)。在進(jìn)行組合測(cè)試的 故障定位時(shí),可以考慮綜合使用DeltaDebuging和NearestNeighborHeuristic策略,即生 成并運(yùn)行一些與失敗測(cè)試用例近似的附加測(cè)試用例,以尋找錯(cuò)誤出現(xiàn)的規(guī)律,進(jìn)而定位誘 發(fā)錯(cuò)誤的極小故障模式。結(jié)合apriori算法,不斷掃描故障模式集,找出出現(xiàn)頻率最高的一 個(gè)或幾個(gè)故障模式,提高了錯(cuò)誤定位的定準(zhǔn)率和定全率。
[0087] 實(shí)施例基于組合測(cè)試,結(jié)合apriori算法,從開始選取測(cè)試用例到最終定位故障 的實(shí)現(xiàn)步驟為,如圖1所示:
[0088] 步驟1)獲取可執(zhí)行的待測(cè)系統(tǒng)以及測(cè)試用例集;
[0089] 步驟1. 1)獲取待測(cè)系統(tǒng)SUT,其中引起故障的參數(shù)組合已知;
[0090] 步驟 1. 2)待測(cè)系統(tǒng) SUT 有 η 個(gè)參數(shù) f\,f2, . . .,fn,形成集合 F = {f\,f2, . . .,fn}, 其中因素 fi經(jīng)過等價(jià)類劃分等前期處理后包含%個(gè)可選取值,形成該因素的取值集合\ = {1,2,· · ·,£1土};
[0091] 步驟1. 3)獲取測(cè)試用例集,記為T,測(cè)試用例按照特定的規(guī)則利用測(cè)試工具自動(dòng) 生成;
[0092] 步驟1.4)對(duì)T中的測(cè)試用例進(jìn)行編號(hào),按序編為 testj, test2, . . . , testj, . . . , testn, 其中 t e s t j = {v 1; v2, . . . , vn} (Vl e %,v2 e V2,...,vn e Vn)表示測(cè)試用例集T中的第i條測(cè)試用例,n為測(cè)試用例的總 條數(shù),對(duì)測(cè)試用例進(jìn)行編號(hào)為查找失敗測(cè)試用例提供便利。
[0093] 步驟2)運(yùn)行測(cè)試用例,劃分通過和失敗的測(cè)試用例集,保留失敗測(cè)試用例集用來 定位故障;
[0094] 步驟2. 1)根據(jù)測(cè)試用例的編號(hào)按序從T中選取測(cè)試用例testi ;
[0095] 步驟2. 2)通過待測(cè)系統(tǒng)SUT運(yùn)行當(dāng)前選取的測(cè)試用例test ;
[0096] 步驟2. 3)判斷測(cè)試用例test的通過情況,根據(jù)結(jié)果劃分為通過和失敗兩個(gè)測(cè)試 用例集,Tpass表示通過測(cè)試用例集,T fail表示失敗測(cè)試用例集,保留Tfail來定位故障。
[0097] 步驟3)根據(jù)失敗測(cè)試用例生成失敗附加測(cè)試用例Tfail',增加失敗的測(cè)試用例能 使錯(cuò)誤定位更加準(zhǔn)確;
[0098] 步驟3. 1)從Tfail*選取測(cè)試用例testp依次改變其中的一項(xiàng),生成附加測(cè)試用例 集;
[0099] 步驟3. 2)獲取附加測(cè)試用例集Τ',用待測(cè)系統(tǒng)SUT來運(yùn)行Τ'中測(cè)試用例;
[0100] 步驟3. 3)從Τ'中選取測(cè)試用例test/ ;
[0101] 步驟3. 4)通過待測(cè)系統(tǒng)SUT運(yùn)行當(dāng)前選取的測(cè)試用例test/ ;
[0102] 步驟3. 5)判斷測(cè)試用例test/的通過情況,根據(jù)結(jié)果劃分為通過和失敗兩個(gè)測(cè) 試用例集,Tpass'表示通過測(cè)試用例集,T fail'表示失敗測(cè)試用例集,保留Tfail'來定位故障, Tfail'就是失敗附加測(cè)試用例集。
[0103] 步驟4)將所有失敗測(cè)試用例和附加失敗測(cè)試用例合并為集合Tf。
[0104] 步驟5)利用apriori算法找到Tf中的頻繁項(xiàng)集,如圖3所示,Apriori算法是一 種挖掘關(guān)聯(lián)規(guī)則的頻繁項(xiàng)集算法,通過該算法尋找失敗測(cè)試用例集中出現(xiàn)最頻繁的參數(shù)組 合,該參數(shù)組合則最有可能引起待測(cè)系統(tǒng)的故障;
[0105] 步驟5.1)算法開始;
[0106] 步驟5. 2) -般設(shè)定最小支持度為2 ;
[0107] 步驟5. 3)掃描集合Tf,對(duì)每條測(cè)試用例的每個(gè)項(xiàng)Vi進(jìn)行計(jì)數(shù);
[0108] 步驟5. 4)生成1階候選項(xiàng)目集,比較每個(gè)項(xiàng)Vi的計(jì)數(shù)與最小支持度2的大小,刪 除計(jì)數(shù)不大于2的項(xiàng),即去除干擾項(xiàng),方便找到頻繁項(xiàng);
[0109] 步驟5. 5)由保留的項(xiàng)Vi生成1階頻繁項(xiàng)目集,該集合中的每個(gè)項(xiàng)出現(xiàn)的次數(shù)均 大于2 ;
[0110] 步驟5. 6)掃描集合Tf,對(duì)(v;l,V,':)進(jìn)行計(jì)數(shù);
[0111] 步驟5. 7)生成2階候選項(xiàng)目集,比較每個(gè)項(xiàng)〇V\)的計(jì)數(shù)與最小支持度2的大 小,刪除計(jì)數(shù)不大于2的項(xiàng);
[0112] 步驟5. 8)由保留的項(xiàng)(',化)生成2階頻繁項(xiàng)目集,該集合中的每個(gè)項(xiàng)出現(xiàn)的次數(shù) 均大于2 ;
[0113] 步驟5. 9)掃描Tf,k = k+Ι,對(duì)0^々,...,\)進(jìn)行計(jì)數(shù);
[0114] 步驟5. 10)生成k階候選項(xiàng)目集,比較每個(gè)項(xiàng),…,v4)的計(jì)數(shù)與最小支持度2 的大小,刪除計(jì)數(shù)不大于2的項(xiàng);
[0115] 步驟5. 11)由保留的項(xiàng)(^,一^4)生成讓階頻繁項(xiàng)目集,該集合中的每個(gè)項(xiàng)出 現(xiàn)的次數(shù)均大于2 ;
[0116] 步驟5. 12)判斷k階頻繁項(xiàng)目集的每個(gè)項(xiàng)0V4,…,ν?()計(jì)數(shù)是否大于最小支持度 2,如果"是",則轉(zhuǎn)步驟5. 9,否則轉(zhuǎn)步驟5. 13 ;
[0117] 步驟5. 13)當(dāng)k階頻繁項(xiàng)目集中的每個(gè)項(xiàng)的計(jì)數(shù)均不大于最小支持度2的時(shí)候, 則停止apriori算法,得到的頻繁項(xiàng)集就是失敗測(cè)試用例集中T f的故障模式。算法結(jié)束。
[0118] 步驟6)故障定位結(jié)果的度量使用定全率(recall)和定準(zhǔn)率(precision)等兩個(gè) 指標(biāo)。計(jì)算可以故障模式集合中的定全率和定準(zhǔn)率,是否接近1〇〇 %,如果"是",則轉(zhuǎn)步驟 7,否,跳轉(zhuǎn)步驟3;
[0119] 定義:假設(shè)MinFaultScheSetO為待測(cè)系統(tǒng)中客觀存在且已被測(cè)試用例集T所命中 的極小故障模式構(gòu)成的集合,F(xiàn)aultScheSetO為待測(cè)系統(tǒng)中客觀存在且已被測(cè)試用例集T 所命中的故障模式構(gòu)成的集合,SuspScheSet為故障定位所得的嫌疑模式集合,貝U
【權(quán)利要求】
1. 一種基于組合測(cè)試的錯(cuò)誤定位方法,其特征在于: 51、 獲取可執(zhí)行的待測(cè)系統(tǒng)以及測(cè)試用例集; 52、 運(yùn)行測(cè)試用例,劃分通過和失敗的測(cè)試用例集,保留失敗測(cè)試用例集用來定位故 障; 53、 生成失敗附加測(cè)試用例集Tfail' ; 54、 合并所有失敗測(cè)試用例的集合為Tf ; 55、 利用apriori算法找到Tf中的頻繁項(xiàng)目集; 56、 故障定位結(jié)果的度量使用定全率和定準(zhǔn)率兩個(gè)指標(biāo),計(jì)算可以故障模式集合中的 定全率和定準(zhǔn)率,判斷是否達(dá)到100% : 如果"是",轉(zhuǎn)步驟S7 ;如果否,則跳轉(zhuǎn)步驟S3 ; 57、 頻繁項(xiàng)目集即為錯(cuò)誤定位的結(jié)果,結(jié)束。
2. 如權(quán)利要求1所述的基于組合測(cè)試的錯(cuò)誤定位方法,其特征在于,步驟S1具體為: 511、 獲取待測(cè)系統(tǒng)SUT ; 512、 待測(cè)系統(tǒng)SUT有η個(gè)參數(shù)f\,f2,. . .,fn,形成集合F = {f\,f2,. . .,fn},形成該因素 的取值集合 Vi = {l,2,...,ai}; 513、 獲取測(cè)試用例集,記為T ; 514、 對(duì)Τ中的測(cè)試用例進(jìn)行編號(hào),按序編為test。test2, . . .,testy . . .,testn,其中 test = {vd v2, · · ·,vn} h e ν1; v2 e V2, · · ·,Vn e Vn)表示測(cè)試用例集 T 中的第 i 條測(cè)試 用例,n為測(cè)試用例的總條數(shù)。
3. 如權(quán)利要求2所述的基于組合測(cè)試的錯(cuò)誤定位方法,其特征在于,步驟S2具體為: 521、 從測(cè)試用例集中選取測(cè)試用例test ; 522、 運(yùn)行當(dāng)前選取的測(cè)試用例test ; 523、 判斷測(cè)試用例的通過情況; 5231、 判定測(cè)試用例test是否通過,如果"是",轉(zhuǎn)S232,否則轉(zhuǎn)S233 ; 5232、 將測(cè)試用例test放入集合Tpass ; 5233、 將測(cè)試用例test放入集合Tfail ; 5234、 判定待測(cè)系統(tǒng)SUT是否執(zhí)行結(jié)束,如果"是",則轉(zhuǎn)S235,否則轉(zhuǎn)S21,直到T中的 測(cè)試用例均被待測(cè)系統(tǒng)SUT檢測(cè); 5235、 獲取集合Tfail,Tfail為所有失敗測(cè)試用例的集合。
4. 如權(quán)利要求3所述的基于組合測(cè)試的錯(cuò)誤定位方法,其特征在于,步驟S3具體為: 531、 從Tfail中選取測(cè)試用例test ; 532、 獲取附加測(cè)試用例集Τ' ; 533、 從Τ'中選取測(cè)試用例test/ ; 534、 運(yùn)行當(dāng)前選取的測(cè)試用例test/ ; 535、 判斷測(cè)試用例的通過情況; 5351、 判定測(cè)試用例test/是否通過,如果"是",則轉(zhuǎn)S352,否則轉(zhuǎn)S353 ; 5352、 將測(cè)試用例test/放入集合Tpass' ; 5353、 將測(cè)試用例test/放入集合Tfail' ; 5354、 判定待測(cè)系統(tǒng)SUT是否執(zhí)行結(jié)束,如果"是",則轉(zhuǎn)S355,否則轉(zhuǎn)S33,直到Tfail'中 的測(cè)試用例均被待測(cè)系統(tǒng)SUT檢測(cè); S355、獲取集合Tfail',Tfail'為所有失敗附加測(cè)試用例的集合。
5. 如權(quán)利要求4所述的基于組合測(cè)試的錯(cuò)誤定位方法,其特征在于,步驟S31具體為: 5311、 改變其中一項(xiàng)\ (1<=1)的值,生成新的測(cè)試用例test/ ; 5312、 將test/放入附加測(cè)試用例集Τ'中; 5313、 判斷是否有k = η,如果"是",則轉(zhuǎn)S31,k = k+Ι,否則轉(zhuǎn)S311 ; 5314、 判斷Tfail中的測(cè)試用例test是否都被選取,如果"是",則轉(zhuǎn)S32,否則轉(zhuǎn)S31。
6. 如權(quán)利要求1-5任一項(xiàng)所述的基于組合測(cè)試的錯(cuò)誤定位方法,其特征在于,步驟S5 具體為: 551、 算法開始; 552、 設(shè)定最小支持度為2 ; 553、 掃描集合Tf,對(duì)每個(gè)項(xiàng)Vi進(jìn)行計(jì)數(shù); 554、 生成1階候選項(xiàng)目集,k = 1 ; 555、 由保留的項(xiàng)Vi生成1階頻繁項(xiàng)目集,k = 1 ; 556、 掃描集合Tf,對(duì)〇VV,2)計(jì)數(shù); 557、 生成2階候選項(xiàng)目集,k = 2 ; 558、 由保留的項(xiàng)(?)生成2階頻繁項(xiàng)目集,k = 2 ; 559、 掃描 Tf,k = k+1,對(duì)(?,…,& )計(jì)數(shù); 5510、 生成k階候選項(xiàng)目集; 5511、 由保留的項(xiàng)(V,.,, ν?2,…,\ )生成k階頻繁項(xiàng)目集; 5512、 判斷k階頻繁項(xiàng)目集的每個(gè)項(xiàng))計(jì)數(shù)是否大于最小支持度2,如果 "是",則轉(zhuǎn)S513,否則轉(zhuǎn)S59 ; 5513、 算法結(jié)束。
7. 如權(quán)利要求6所述的基于組合測(cè)試的錯(cuò)誤定位方法,其特征在于,步驟S54具體為: 5541、 從1階候選項(xiàng)目集中選取項(xiàng)Vi ; 5542、 判斷Vi的計(jì)數(shù)是否大于最小支持度2,如果"是",則轉(zhuǎn)S543,否則轉(zhuǎn)S544 ; 5543、 保留該項(xiàng)Vi ; 5544、 刪除計(jì)數(shù)不大于2的項(xiàng); 5545、 判斷是否掃描1階候選項(xiàng)目集中所有項(xiàng)Vi,如果"是",則轉(zhuǎn)S55,否則轉(zhuǎn)S541。
8. 如權(quán)利要求6所述的基于組合測(cè)試的錯(cuò)誤定位方法,其特征在于,步驟S57具體為: 5571、 從2階候選項(xiàng)目集中選取項(xiàng)(',' ); 5572、 判斷(νΑ,ν?:)的計(jì)數(shù)是否大于最小支持度2,如果"是",則轉(zhuǎn)S573,否則轉(zhuǎn)S574 ; 3573、保留該項(xiàng)(',4); 5574、 刪除計(jì)數(shù)不大于2的項(xiàng); 5575、 判斷是否掃描1階候選項(xiàng)目集中所有項(xiàng)(νΑ, ν,:),如果"是",則轉(zhuǎn)S58,否則轉(zhuǎn) S571。
9.如權(quán)利要求6所述的基于組合測(cè)試的錯(cuò)誤定位方法,其特征在于,步驟S510具體 為: 55101、 從k階候選項(xiàng)目集中選取項(xiàng)(',v,:,…,\ ); 55102、 判斷(vA,圪,…,)計(jì)數(shù)是否大于最小支持度2,如果"是",則轉(zhuǎn)S5103,否則轉(zhuǎn) S5104 ; 55103、 保留該項(xiàng); 55104、 刪除計(jì)數(shù)不大于2的項(xiàng); 55105、 判斷是否掃描1階候選項(xiàng)目集中所有項(xiàng)(',…,),如果"是",則轉(zhuǎn)S511,否 則轉(zhuǎn)S5101。
【文檔編號(hào)】G06F11/36GK104050086SQ201410310475
【公開日】2014年9月17日 申請(qǐng)日期:2014年7月1日 優(yōu)先權(quán)日:2014年7月1日
【發(fā)明者】張衛(wèi)豐, 陸子南, 王云, 王子元 申請(qǐng)人:南京郵電大學(xué)