覆蓋表約簡(jiǎn)的方法及系統(tǒng)的制作方法
【專利摘要】本發(fā)明公開了一種覆蓋表約簡(jiǎn)的方法及系統(tǒng)。其中該方法包括如下步驟:對(duì)初始覆蓋表進(jìn)行分析處理,得到覆蓋表的相對(duì)靈活位置集;根據(jù)相對(duì)靈活位置集,判斷覆蓋表中每條測(cè)試用例中包含靈活位置的個(gè)數(shù),并按靈活位置的個(gè)數(shù)從小到大的順序?qū)Ω采w表中的測(cè)試用例進(jìn)行排序,得到第一新覆蓋表;對(duì)第一新覆蓋表進(jìn)行進(jìn)一步分析處理,得到覆蓋表的靈活位置集;根據(jù)靈活位置集,刪除覆蓋表中全部為靈活位置的測(cè)試用例,得到新的靈活位置集;將新的靈活位置集中的靈活位置在預(yù)設(shè)取值范圍內(nèi)進(jìn)行隨機(jī)替換,得到第二新覆蓋表;循環(huán)執(zhí)行上述所有步驟,直至得到滿足預(yù)設(shè)條件的最終覆蓋表。其減少實(shí)際測(cè)試用例條數(shù),降低測(cè)試成本,且保證原覆蓋表中參數(shù)組合的覆蓋率。
【專利說明】覆蓋表約簡(jiǎn)的方法及系統(tǒng)
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及計(jì)算機(jī)領(lǐng)域,尤其涉及一種覆蓋表約簡(jiǎn)的方法及系統(tǒng)。
【背景技術(shù)】
[0002]軟件或硬件系統(tǒng)的系統(tǒng)行為通常會(huì)受到多個(gè)參數(shù)或因素的影響,其中每個(gè)參數(shù)有多個(gè)不同的離散取值。在這樣的系統(tǒng)中,系統(tǒng)故障通常是由部分參數(shù)的某些取值組合引起的,而軟件或硬件測(cè)試的目標(biāo),則是構(gòu)建相應(yīng)的測(cè)試用例來觸發(fā)這些系統(tǒng)故障。窮盡測(cè)試方法可以完全地測(cè)試待測(cè)系統(tǒng)的所有參數(shù)取值組合,但其需要大量的測(cè)試用例,因而無法在實(shí)際測(cè)試中應(yīng)用。與之相比,通過覆蓋任意t個(gè)參數(shù)間的所有t_組合,組合測(cè)試方法可以在保證較高故障檢測(cè)率的前提下,極大地減少測(cè)試成本,是一種非常有效的測(cè)試方法。
[0003]組合測(cè)試方法使用覆蓋表作為測(cè)試用例集。在一個(gè)t-way覆蓋表中,任意t個(gè)參數(shù)間t_組合的所有取值都至少需要在覆蓋表中出現(xiàn)一次,這里的t稱為覆蓋強(qiáng)度。如果一個(gè)tiay覆蓋表中的每個(gè)t-組合的所有取值僅出現(xiàn)一次,則該覆蓋表是最優(yōu)覆蓋表(也稱為正交表),具有最小的規(guī)模(測(cè)試用例的數(shù)目)。但覆蓋表的生成是一個(gè)復(fù)雜的問題,對(duì)于絕大多數(shù)待測(cè)系統(tǒng)來說,目前無法生成最優(yōu)規(guī)模的覆蓋表,在最終得到的覆蓋表中一般存在很多冗余組合。
【發(fā)明內(nèi)容】
[0004]基于此,為解決現(xiàn)有技術(shù)中的存在的問題及缺陷,有必要提供一種簡(jiǎn)單有效的覆蓋表約簡(jiǎn)的方法及系統(tǒng)。
[0005]為實(shí)現(xiàn)本發(fā)明目的提供的一種覆蓋表約簡(jiǎn)的方法,包括以下步驟:
[0006]S100,對(duì)初始覆蓋表進(jìn)行分析處理,得到所述初始覆蓋表的相對(duì)靈活位置集;
[0007]S200,根據(jù)所述相對(duì)靈活位置集,判斷所述初始覆蓋表中每條測(cè)試用例中包含靈活位置的個(gè)數(shù),并按所述靈活位置的個(gè)數(shù)從小到大的順序?qū)λ龀跏几采w表中的所述測(cè)試用例進(jìn)行排序,得到第一新覆蓋表;
[0008]S300,對(duì)所述第一新覆蓋表進(jìn)行進(jìn)一步分析處理,得到所述第一新覆蓋表的靈活位置集;
[0009]S400,根據(jù)所述靈活位置集,刪除所述第一新覆蓋表中全部為靈活位置的測(cè)試用例,得到新的靈活位置集;
[0010]S500,將所述新的靈活位置集中的靈活位置在預(yù)設(shè)取值范圍內(nèi)進(jìn)行隨機(jī)替換,得
到第二新覆蓋表;
[0011]S600,將所述第二新覆蓋表作為初始覆蓋表,返回步驟SlOO循環(huán)執(zhí)行上述所有步驟,直至得到滿足預(yù)設(shè)條件的最終覆蓋表;
[0012]所述預(yù)設(shè)條件為預(yù)設(shè)循環(huán)總次數(shù),或者預(yù)設(shè)循環(huán)次數(shù)內(nèi)所述第二新覆蓋表中的測(cè)試用例的條數(shù)相同。
[0013]在其中一個(gè)實(shí)施例中,步驟SlOO包括以下步驟:[0014]S110,將所述初始覆蓋表中的所有位置標(biāo)記為靈活位置;
[0015]S120,選擇所述初始覆蓋表中任意t個(gè)參數(shù)進(jìn)行組合,得到所述初始覆蓋表中參數(shù)的m個(gè)t-組合,并將所述初始覆蓋表中所有測(cè)試用例中只出現(xiàn)一次的t-組合值對(duì)應(yīng)的初始覆蓋表的位置還原為原始值,得到所述初始覆蓋表的相對(duì)靈活位置集;
[0016]其中,所述t為正整數(shù),為所述初始覆蓋表的覆蓋強(qiáng)度;
[0017]m=C (n, t), η為所述初始覆蓋表中參數(shù)的個(gè)數(shù);
[0018]所述參數(shù)的某個(gè)t_組合對(duì)應(yīng)多個(gè)所述t_組合值,所述初始覆蓋表中每條測(cè)試用例包含m個(gè)所述t-組合的各一個(gè)所述t-組合值。
[0019]在其中一個(gè)實(shí)施例中,步驟S120包括以下步驟:
[0020]S121,選擇所述初始覆蓋表中任意t個(gè)參數(shù)進(jìn)行組合,得到所述初始覆蓋表中參數(shù)的m個(gè)t-組合;
[0021]S122,選擇所述初始覆蓋表中未選擇過的一個(gè)所述t-組合,為第一 t-組合;
[0022]S123,將所述初始覆蓋表中所有測(cè)試用例中只出現(xiàn)一次的第一 t-組合值對(duì)應(yīng)的初始覆蓋表的位置還原為原始值;
[0023]S124,判斷所述初始覆蓋表中是否還存在未選擇過的t-組合,若是則返回執(zhí)行步驟S122 ;否則,得到所述初始覆蓋表的相對(duì)靈活位置集。
[0024]在其中一個(gè)實(shí)施例中,步驟S300,包括以下步驟:
[0025]S310,將所述第一新覆蓋表中的所有位置標(biāo)記為靈活位置;
[0026]S320,選擇所述第一新覆蓋表中任意t個(gè)參數(shù)進(jìn)行組合,得到所述第一新覆蓋表中參數(shù)的m個(gè)t-組合,按照所述第一新覆蓋表中所有測(cè)試用例的排列順序,將第一次出現(xiàn)的t-組合值對(duì)應(yīng)的所述第一新覆蓋表的位置還原為原始值,得到所述第一新覆蓋表的靈活位置集;
[0027]其中,所述t為正整數(shù),為所述初始覆蓋表的覆蓋強(qiáng)度;
[0028]所述m=C (n, t), η為所述初始覆蓋表中參數(shù)的個(gè)數(shù);
[0029]所述參數(shù)的某個(gè)t_組合對(duì)應(yīng)多個(gè)所述t_組合值,所述初始覆蓋表中每條測(cè)試用例包含m個(gè)所述t-組合的各一個(gè)所述t-組合值。
[0030]在其中一個(gè)實(shí)施例中,步驟S320,包括以下步驟:
[0031]S321,選擇所述第一新覆蓋表中任意t個(gè)參數(shù)進(jìn)行組合,得到所述第一新覆蓋表中參數(shù)的m個(gè)t-組合;
[0032]S322,選擇所述第一新覆蓋表中未選擇過的一個(gè)所述t-組合,為第二 t-組合;
[0033]S323,按照所述第一新覆蓋表中所有測(cè)試用例的排列順序,將第一次出現(xiàn)的所述第二 t-組合值對(duì)應(yīng)的所述第一新覆蓋表的位置還原為原始值;
[0034]S324,判斷所述第一新覆蓋表中是否還存在未選擇過的t-組合,若是則返回執(zhí)行步驟S322 ;否則,得到所述第一新覆蓋表的靈活位置集。
[0035]基于同一發(fā)明構(gòu)思的一種覆蓋表約簡(jiǎn)的系統(tǒng),包括相對(duì)靈活位置集生成模塊,排序模塊,靈活位置集生成模塊,靈活位置集調(diào)整模塊,以及新覆蓋表生成模塊,其中:
[0036]所述相對(duì)靈活位置集生成模塊,用于對(duì)初始覆蓋表進(jìn)行分析處理,得到所述初始覆蓋表的相對(duì)靈活位置集;
[0037]所述排序模塊,用于根據(jù)所述相對(duì)靈活位置集,判斷所述初始覆蓋表中每條測(cè)試用例中包含靈活位置的個(gè)數(shù),并按所述靈活位置的個(gè)數(shù)從小到大的順序?qū)λ龀跏几采w表中的所述測(cè)試用例進(jìn)行排序,得到第一新覆蓋表;
[0038]所述靈活位置集生成模塊,用于對(duì)所述第一新覆蓋表進(jìn)行進(jìn)一步分析處理,得到所述第一新覆蓋表的靈活位置集;
[0039]所述靈活位置集調(diào)整模塊,用于根據(jù)所述靈活位置集,刪除所述第一新覆蓋表中全部為靈活位置的測(cè)試用例,得到新的靈活位置集;
[0040]所述新覆蓋表生成模塊,將所述新的靈活位置集中的靈活位置在預(yù)設(shè)取值范圍內(nèi)進(jìn)行隨機(jī)替換,得到第二新覆蓋表。
[0041]在其中一個(gè)實(shí)施例中,所述相對(duì)靈活位置集生成模塊,包括第一標(biāo)記子模塊,以及第一處理子模塊,其中:
[0042]所述第一標(biāo)記子模塊,用于將所述初始覆蓋表中的所有位置標(biāo)記為靈活位置;
[0043]所述第一處理子模塊,用于選擇所述初始覆蓋表中任意t個(gè)參數(shù)進(jìn)行組合,得到所述初始覆蓋表中參數(shù)的m個(gè)t-組合,并將所述初始覆蓋表中所有測(cè)試用例中只出現(xiàn)一次的t-組合值對(duì)應(yīng)的初始覆蓋表的位置還原為原始值,得到所述初始覆蓋表的相對(duì)靈活位
置集;
[0044]所述t為正整數(shù),為所述初始覆蓋表的覆蓋強(qiáng)度;
[0045]所述m=C (n, t), η為所述初始覆蓋表中參數(shù)的個(gè)數(shù);
[0046]所述參數(shù)的某個(gè)t-組合對(duì)應(yīng)多個(gè)所述t-組合值,所述初始覆蓋表中每條測(cè)試用例包含m個(gè)所述t-組合的各一個(gè)所述t-組合值。
[0047]在其中一個(gè)實(shí)施例中,所述第一處理子模塊包括第一組合單元,第一選擇單元,第一還原單元,以及第一判斷單元,其中:
[0048]所述第一組合單元,用于選擇所述初始覆蓋表中任意t個(gè)參數(shù)進(jìn)行組合,得到所述初始覆蓋表中參數(shù)的m個(gè)t-組合;
[0049]所述第一選擇單元,用于選擇所述初始覆蓋表中未選擇過的一個(gè)所述t_組合,為第一 t_組合;
[0050]所述第一還原單元,用于將所述初始覆蓋表中所有測(cè)試用例中只出現(xiàn)一次的第一t_組合值對(duì)應(yīng)的初始覆蓋表的位置還原為原始值;
[0051]所述第一判斷單元,用于判斷所述初始覆蓋表中是否還存在未選擇過的t_組合,若是則轉(zhuǎn)所述第一組合單元進(jìn)行處理;否則,得到所述初始覆蓋表的相對(duì)靈活位置集。
[0052]在其中一個(gè)實(shí)施例中,所述靈活位置集生成模塊包括第二標(biāo)記子模塊,以及第二處理子模塊,其中:
[0053]所述第二標(biāo)記子模塊,用于將所述第一新覆蓋表中的所有位置標(biāo)記為靈活位置;
[0054]所述第二處理子模塊,用于選擇所述第一新覆蓋表中任意t個(gè)參數(shù)進(jìn)行組合,得到所述第一新覆蓋表中參數(shù)的m個(gè)t-組合,按照所述第一新覆蓋表中所有測(cè)試用例的排列順序,將第一次出現(xiàn)的t-組合值對(duì)應(yīng)的所述第一新覆蓋表的位置還原為原始值,得到所述第一新覆蓋表的靈活位置集;
[0055]所述t為正整數(shù),為所述初始覆蓋表的覆蓋強(qiáng)度;m為正整數(shù)。
[0056]在其中一個(gè)實(shí)施例中,所述第二處理子模塊包括第二組合單元,第二選擇單元,第二還原單元,以及第二判斷單元,其中:[0057]所述第二組合單元,用于選擇所述第一新覆蓋表中任意t個(gè)參數(shù)進(jìn)行組合,得到所述第一新覆蓋表中參數(shù)的m個(gè)t-組合;
[0058]所述第二選擇單元,用于選擇所述第一新覆蓋表中未選擇過的一個(gè)所述t_組合,為第二 t_組合;
[0059]所述第二還原單元,用于按照所述第一新覆蓋表中所有測(cè)試用例的排列順序,將第一次出現(xiàn)的所述第二 t_組合值對(duì)應(yīng)的所述第一新覆蓋表的位置還原為原始值;
[0060]所述第二判斷單元,用于判斷所述第一新覆蓋表中是否還存在未選擇過的t_組合,若是則轉(zhuǎn)所述第二組合單元進(jìn)行處理;否則,得到所述第一新覆蓋表的靈活位置集。
[0061]本發(fā)明的有益效果包括:
[0062]本發(fā)明提供的一種覆蓋表約簡(jiǎn)的方法及系統(tǒng),對(duì)原測(cè)試用覆蓋表進(jìn)行約簡(jiǎn),得到最終的新覆蓋表比原覆蓋表中的測(cè)試用例的條數(shù)少,從而減少實(shí)際測(cè)試用例的條數(shù),降低實(shí)際測(cè)試中的測(cè)試成本。且能夠保證原覆蓋表中參數(shù)組合的覆蓋率。
【專利附圖】
【附圖說明】
[0063]圖1為本發(fā)明一種覆蓋表約簡(jiǎn)的方法的一具體實(shí)施例的流程圖;
[0064]圖2為本發(fā)明一種覆蓋表約簡(jiǎn)的系統(tǒng)的一具體實(shí)施例的系統(tǒng)結(jié)構(gòu)示意圖。
【具體實(shí)施方式】
[0065]為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點(diǎn)更加清楚明白,以下結(jié)合附圖對(duì)本發(fā)明實(shí)施例的覆蓋表約簡(jiǎn)的方法及系統(tǒng)的【具體實(shí)施方式】進(jìn)行說明。應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。
[0066]本發(fā)明實(shí)施例的覆蓋表約簡(jiǎn)的方法,如圖1所示,包括以下步驟:
[0067]S100,對(duì)初始覆蓋表進(jìn)行分析處理,得到所述初始覆蓋表的相對(duì)靈活位置集;
[0068]S200,根據(jù)所述相對(duì)靈活位置集,判斷所述初始覆蓋表中每條測(cè)試用例中包含靈活位置的個(gè)數(shù),并按所述靈活位置的個(gè)數(shù)從小到大的順序?qū)λ龀跏几采w表中的所述測(cè)試用例進(jìn)行排序,得到第一新覆蓋表;
[0069]S300,對(duì)所述第一新覆蓋表進(jìn)行進(jìn)一步分析處理,得到所述第一新覆蓋表的靈活位置集;
[0070]S400,根據(jù)所述靈活位置集,刪除所述第一新覆蓋表中全部為靈活位置的測(cè)試用例,得到新的靈活位置集;
[0071]S500,將所述新的靈活位置集中的靈活位置在預(yù)設(shè)取值范圍內(nèi)進(jìn)行隨機(jī)替換,得
到第二新覆蓋表。
[0072]S600,將所述第二新覆蓋表作為初始覆蓋表,返回步驟SlOO循環(huán)執(zhí)行上述所有步驟,直至得到滿足預(yù)設(shè)條件的最終覆蓋表。
[0073]所述預(yù)設(shè)條件為預(yù)設(shè)循環(huán)總次數(shù),或者預(yù)設(shè)循環(huán)次數(shù)內(nèi)所述第二新覆蓋表中的測(cè)試用例的條數(shù)相同。
[0074]例如設(shè)置循環(huán)5次之后則停止對(duì)覆蓋表的約簡(jiǎn),則循環(huán)執(zhí)行步驟SlOO?S500,5次之后退出對(duì)覆蓋表約簡(jiǎn)的程序,得到約簡(jiǎn)后的最終的新覆蓋表。或者設(shè)置對(duì)初始覆蓋表按照步驟SlOO?S500進(jìn)行約簡(jiǎn),若連續(xù)循環(huán)執(zhí)行5次得到的第二新覆蓋表中包含的測(cè)試用例的條數(shù)都相同,則停止對(duì)覆蓋表的約簡(jiǎn),得到約簡(jiǎn)后的最終的新覆蓋表。大多數(shù)情況下所述最終的第二新覆蓋表中的測(cè)試用例的條數(shù)小于所述初始覆蓋表中的測(cè)試用例的條數(shù),從而減少實(shí)際測(cè)試用例的條數(shù),降低實(shí)際測(cè)試中的測(cè)試成本。本發(fā)明實(shí)施例通過排序之后僅對(duì)全部為靈活位置的測(cè)試用例進(jìn)行刪除,保證原覆蓋表中參數(shù)組合的覆蓋率。通過對(duì)刪除后的覆蓋表中靈活位置隨機(jī)賦值后,再次進(jìn)行約簡(jiǎn),進(jìn)一步減小實(shí)際測(cè)試用例的條數(shù)。
[0075]較佳地,作為一種可實(shí)施方式,步驟SlOO包括以下步驟:
[0076]SI 10,將所述初始覆蓋表中的所有位置標(biāo)記為靈活位置。
[0077]采用反向確定的方式確定覆蓋表的靈活位置集,首先將要進(jìn)行約簡(jiǎn)的覆蓋表中的所有位置都標(biāo)記為靈活位置,后續(xù)再進(jìn)行排除。
[0078]S120,選擇所述初始覆蓋表中任意t個(gè)參數(shù)進(jìn)行組合,得到所述初始覆蓋表中參數(shù)的m個(gè)t-組合,并將所述初始覆蓋表中所有測(cè)試用例中只出現(xiàn)一次的t-組合值對(duì)應(yīng)的初始覆蓋表的位置還原為原始值,得到所述初始覆蓋表的相對(duì)靈活位置集。
[0079]其中,所述t為正整數(shù),為所述初始覆蓋表的覆蓋強(qiáng)度;
[0080]所述m=C (n, t), η為所述初始覆蓋表中參數(shù)的個(gè)數(shù);
[0081]所述參數(shù)的某個(gè)t-組合對(duì)應(yīng)多個(gè)所述t-組合值,所述初始覆蓋表中每條測(cè)試用例包含m個(gè)所述t-組合的各一個(gè)所述t-組合值。
[0082]此處需要說明的是,若待測(cè)系統(tǒng)包含η個(gè)測(cè)試參數(shù),覆蓋表的覆蓋強(qiáng)度為t,則選擇覆蓋表中任意t個(gè)參數(shù)進(jìn)行組合,這樣的組合共有m=c (n, t)個(gè)。對(duì)于m個(gè)t-組合中的任意一個(gè)組合,其組合值的個(gè)數(shù)根據(jù)參數(shù)可取值的數(shù)量的不同而不同。例如,在某個(gè)包含4個(gè)參數(shù)的覆蓋表中,t=2,且每個(gè)參數(shù)包含兩個(gè)不同的取值I或者0,則覆蓋表中由第I個(gè)和第2個(gè)參數(shù)構(gòu)成的2-組合所對(duì)應(yīng)的2-組合值可能為(0,0,-,_),(O, I,-,-), (1,0,-,-),(I, 1,_,-)四種。若初始覆蓋表中某一 2-組合值僅出現(xiàn)一次,則將該組合對(duì)應(yīng)的位置還原為原始值,其余位置仍保持為靈活位置。如在上例中,覆蓋表的所有測(cè)試用例中(1,O,-,-)組合值只出現(xiàn)了一次,則將(1,O,-,-)組合值在初始覆蓋表的相應(yīng)位置進(jìn)行還原。當(dāng)處理完所有組合后,剩余的靈活位置即構(gòu)成相對(duì)靈活位置集。
[0083]所述位置解釋為:一條測(cè)試用例中某個(gè)參數(shù)取值。例如(0,0,I, I)為一條測(cè)試用例,0,0,1,I分別為該測(cè)試用例的4個(gè)不同位置。
[0084]所述靈活位置解釋為:對(duì)于一個(gè)覆蓋表中的每條測(cè)試用例,每個(gè)位置均包含在C (n-1, t-Ι)個(gè)t-組合的t-組合值中,如果這些組合值都在其余的測(cè)試用例中出現(xiàn),則該位置稱為靈活位置。
[0085]例如,考慮測(cè)試用例集T={(0,I, I), (O, 1,2), (O, 2, I)},假設(shè)覆蓋強(qiáng)度為2,則第I條測(cè)試用例的第一個(gè)位置O為靈活位置,這是因?yàn)榘涞?-組合值有(0,1,_)和(O, _,I),他們分別在第2條和第3條測(cè)試用例中出現(xiàn)。
[0086]所述相對(duì)靈活位置集(RFS)解釋為:覆蓋表中所有靈活位置的集合稱為相對(duì)靈活位置集。對(duì)靈活位置集中的某些位置進(jìn)行取值替換會(huì)影響其余靈活位置的靈活性。
[0087]所述靈活位置集(FS)解釋為:靈活位置集是相對(duì)靈活位置集的一個(gè)子集,其滿足可以同時(shí)對(duì)這些位置進(jìn)行取值替換而不影響其余靈活位置的靈活性。
[0088]較佳地,作為一種可實(shí)施方式,步驟S120包括以下步驟:
[0089]S121,選擇所述初始覆蓋表中任意t個(gè)參數(shù)進(jìn)行組合,得到所述初始覆蓋表中參數(shù)的m個(gè)t-組合;
[0090]S122,選擇所述初始覆蓋表中未選擇過的一個(gè)所述t-組合,為第一 t-組合;
[0091]每次對(duì)覆蓋表中的一個(gè)t_組合進(jìn)行分析處理,直至處理完所有的t_組合。
[0092]S123,將所述初始覆蓋表中所有測(cè)試用例中只出現(xiàn)一次的第一 t_組合值對(duì)應(yīng)的初始覆蓋表的位置還原為原始值;
[0093]S124,判斷所述原始覆蓋表中是否還存在未選擇過的t_組合,若是則返回執(zhí)行步驟S122 ;否則,得到所述初始覆蓋表的相對(duì)靈活位置集。
[0094]較佳地,作為一種可實(shí)施方式,步驟S300,包括以下步驟:
[0095]S310,將所述第一新覆蓋表中的所有位置標(biāo)記為靈活位置;
[0096]S320,選擇所述第一新覆蓋表中任意t個(gè)參數(shù)進(jìn)行組合,得到所述第一新覆蓋表中參數(shù)的m個(gè)t-組合,按照所述第一新覆蓋表中所有測(cè)試用例的排列順序,將第一次出現(xiàn)的t-組合值對(duì)應(yīng)的所述第一新覆蓋表的位置還原為原始值,得到所述第一新覆蓋表的靈活位置集;
[0097]其中,所述t為正整數(shù),為所述初始覆蓋表的覆蓋強(qiáng)度;
[0098]m=C (n, t), η為所述初始覆蓋表中參數(shù)的個(gè)數(shù);
[0099]所述參數(shù)的某個(gè)t_組合對(duì)應(yīng)多個(gè)所述t_組合值,所述初始覆蓋表中每條測(cè)試用例包含m個(gè)所述t-組合的各一個(gè)所述t-組合值。
[0100]此處需要說明的是,靈活位置集的查找通過將第一次出現(xiàn)的(而不是僅出現(xiàn)一次的)t-組合值對(duì)應(yīng)的覆蓋表的位置還原,保證最終得到的所有靈活位置構(gòu)成靈活位置集(而不是相對(duì)靈活位置集),避免造成必須測(cè)試用例的刪除。
[0101]較佳地,作為一種可實(shí)施方式,步驟S320,包括以下步驟:
[0102]S321,選擇所述第一新覆蓋表中任意t個(gè)參數(shù)進(jìn)行組合,得到所述第一新覆蓋表中參數(shù)的m個(gè)t-組合。
[0103]S322,選擇所述第一新覆蓋表中未選擇過的一個(gè)所述t-組合,為第二 t-組合。
[0104]每次對(duì)覆蓋表中的一個(gè)t_組合進(jìn)行分析處理,直至處理完所有的t_組合。
[0105]S323,按照所述第一新覆蓋表中所有測(cè)試用例的排列順序,將第一次出現(xiàn)的所述第二 t-組合值對(duì)應(yīng)的所述第一新覆蓋表的位置還原為原始值;
[0106]S324,判斷所述第一新覆蓋表中是否還存在未選擇過的t-組合,若是則返回執(zhí)行步驟S322 ;否則,得到所述第一新覆蓋表的靈活位置集。
[0107]為了更好的說明本發(fā)明,下面舉一具體例子進(jìn)行說明。
[0108]假設(shè)一個(gè)待測(cè)的軟件系統(tǒng)受5個(gè)不同參數(shù)的影響,分別記為Pl,P2, P3, P4, P5,其中每個(gè)參數(shù)均有兩個(gè)不同的合法取值,分別記為O和I。這些參數(shù)可以是用戶輸入、系統(tǒng)配置、內(nèi)部事件等,例如P1可以代表“操作系統(tǒng)”,其對(duì)應(yīng)的取值分別為“Windows”和“Linux”。
[0109]在這樣一個(gè)系統(tǒng)中,系統(tǒng)故障往往是由一些參數(shù)間的某些取值組合所引發(fā)的。例如當(dāng)P1取值為0,P3取值為I時(shí)會(huì)引發(fā)某種系統(tǒng)故障,而為了檢測(cè)出這樣的系統(tǒng)故障,其對(duì)應(yīng)的組合值(0,-,1,-,-)就需要包含在某條測(cè)試用例中。窮盡測(cè)試方法可以完全地對(duì)所有可能的組合值進(jìn)行檢測(cè),但其需要25=32條測(cè)試用例,測(cè)試開銷較大。
[0110]對(duì)于這樣的系統(tǒng),使用組合測(cè)試方法可以極大地減少測(cè)試開銷。例如,如果假設(shè)系統(tǒng)故障是由任意2個(gè)參數(shù)間的取值組合所引發(fā)的,那么組合測(cè)試僅需要表I中的7條測(cè)試用例。這7條測(cè)試用例構(gòu)成的測(cè)試用例集稱為一個(gè)2-way覆蓋表。在一個(gè)2_way覆蓋表中,任意2個(gè)參數(shù)的所有2 X 2=4個(gè)取值組合都至少在該表中覆蓋一次。例如,對(duì)于P1和P3這兩個(gè)參數(shù)的2-組合,其對(duì)應(yīng)的所有4個(gè)2-組合值(O,-,O,-,-),(O,-,1,-,-),(1,-,O,-,-),(1,_,1,_,_)都能在該表中找到。
[0111]表1 一個(gè)2-way覆蓋表
[0112]
【權(quán)利要求】
1.一種覆蓋表約簡(jiǎn)的方法,其特征在于,包括以下步驟: S100,對(duì)初始覆蓋表進(jìn)行分析處理,得到所述初始覆蓋表的相對(duì)靈活位置集; S200,根據(jù)所述相對(duì)靈活位置集,判斷所述初始覆蓋表中每條測(cè)試用例中包含靈活位置的個(gè)數(shù),并按所述靈活位置的個(gè)數(shù)從小到大的順序?qū)λ龀跏几采w表中的所述測(cè)試用例進(jìn)行排序,得到第一新覆蓋表; S300,對(duì)所述第一新覆蓋表進(jìn)行進(jìn)一步分析處理,得到所述第一新覆蓋表的靈活位置集; S400,根據(jù)所述靈活位置集,刪除所述第一新覆蓋表中全部為靈活位置的測(cè)試用例,得到新的靈活位置集; S500,將所述新的靈活位置集中的靈活位置在預(yù)設(shè)取值范圍內(nèi)進(jìn)行隨機(jī)替換,得到第二新覆蓋表; S600,將所述第二新覆蓋表作為初始覆蓋表,返回步驟SlOO循環(huán)執(zhí)行直至得到滿足預(yù)設(shè)條件的最終覆蓋表; 所述預(yù)設(shè)條件為預(yù)設(shè)循環(huán)總次數(shù),或者預(yù)設(shè)循環(huán)次數(shù)內(nèi)所述第二新覆蓋表中的測(cè)試用例的條數(shù)相同。
2.根據(jù)權(quán)利要求1所述的覆蓋表約簡(jiǎn)的方法,其特征在于,步驟SlOO包括以下步驟: S110,將所述初始覆蓋表中的所有位置標(biāo)記為靈活位置; 5120,選擇所述初始覆蓋表 中任意t個(gè)參數(shù)進(jìn)行組合,得到所述初始覆蓋表中參數(shù)的m個(gè)t-組合,并將所述初始覆蓋表中所有測(cè)試用例中只出現(xiàn)一次的t-組合值對(duì)應(yīng)的初始覆蓋表的位置還原為原始值,得到所述初始覆蓋表的相對(duì)靈活位置集; 其中,所述t為正整數(shù),為所述初始覆蓋表的覆蓋強(qiáng)度; 所述m=C(n, t),n為所述初始覆蓋表中參數(shù)的個(gè)數(shù);所述參數(shù)的某個(gè)t_組合對(duì)應(yīng)多個(gè)所述t-組合值,所述初始覆蓋表中每條測(cè)試用例包含m個(gè)所述t-組合的各一個(gè)所述t-組合值。
3.根據(jù)權(quán)利要求2所述的覆蓋表約簡(jiǎn)的方法,其特征在于,步驟S120包括以下步驟: 5121,選擇所述初始覆蓋表中任意t個(gè)參數(shù)進(jìn)行組合,得到所述初始覆蓋表中參數(shù)的m個(gè)t-組合; S122,選擇所述初始覆蓋表中未選擇過的一個(gè)所述t-組合,為第一 t-組合; S123,將所述初始覆蓋表中所有測(cè)試用例中只出現(xiàn)一次的第一 t-組合值對(duì)應(yīng)的初始覆蓋表的位置還原為原始值; S124,判斷所述初始覆蓋表中是否還存在未選擇過的t-組合,若是則返回執(zhí)行步驟S122 ;否則,得到所述初始覆蓋表的相對(duì)靈活位置集。
4.權(quán)利要求1至3任一項(xiàng)所述的覆蓋表約簡(jiǎn)的方法,其特征在于,步驟S300包括以下步驟: S310,將所述第一新覆蓋表中的所有位置標(biāo)記為靈活位置; S320,選擇所述第一新覆蓋表中任意t個(gè)參數(shù)進(jìn)行組合,得到所述第一新覆蓋表中參數(shù)的m個(gè)t-組合,按照所述第一新覆蓋表中所有測(cè)試用例的排列順序,將第一次出現(xiàn)的t-組合值對(duì)應(yīng)的所述第一新覆蓋表的位置還原為原始值,得到所述第一新覆蓋表的靈活位置集;其中,所述t為正整數(shù),為所述初始覆蓋表的覆蓋強(qiáng)度; 所述m=C (n, t), η為所述初始覆蓋表中參數(shù)的個(gè)數(shù); 所述參數(shù)的某個(gè)t-組合對(duì)應(yīng)多個(gè)所述t-組合值,所述初始覆蓋表中每條測(cè)試用例包含m個(gè)所述t-組合的各一個(gè)所述t-組合值。
5.根據(jù)權(quán)利要求4所述的覆蓋表約簡(jiǎn)的方法,其特征在于,步驟S320包括以下步驟: S321,選擇所述第一新覆蓋表中任意t個(gè)參數(shù)進(jìn)行組合,得到所述第一新覆蓋表中參數(shù)的m個(gè)t-組合; S322,選擇所述第一新覆蓋表中未選擇過的一個(gè)所述t-組合,為第二 t-組合; S323,按照所述第一新覆蓋表中所有測(cè)試用例的排列順序,將第一次出現(xiàn)的所述第二t-組合值對(duì)應(yīng)的所述第一新覆蓋表的位置還原為原始值; S324,判斷所述第一新覆蓋表中是否還存在未選擇過的t-組合,若是則返回執(zhí)行步驟S322 ;否則,得到所述第一新覆蓋表的靈活位置集。
6.一種覆蓋表約簡(jiǎn)的系統(tǒng),其特征在于,包括相對(duì)靈活位置集生成模塊,排序模塊,靈活位置集生成模塊,靈活位置集調(diào)整模塊,以及新覆蓋表生成模塊,其中: 所述相對(duì)靈活位置集生成模塊,用于對(duì)初始覆蓋表進(jìn)行分析處理,得到所述初始覆蓋表的相對(duì)靈活位置集; 所述排序模塊,用于根據(jù)所述相對(duì)靈活位置集,判斷所述初始覆蓋表中每條測(cè)試用例中包含靈活位置的個(gè)數(shù),并按所述靈活位置的個(gè)數(shù)從小到大的順序?qū)λ龀跏几采w表中的所述測(cè)試用例進(jìn)`行排序,得到第一新覆蓋表; 所述靈活位置集生成模塊,用于對(duì)所述第一新覆蓋表進(jìn)行進(jìn)一步分析處理,得到所述第一新覆蓋表的靈活位置集; 所述靈活位置集調(diào)整模塊,用于根據(jù)所述靈活位置集,刪除所述第一新覆蓋表中全部為靈活位置的測(cè)試用例,得到新的靈活位置集; 所述新覆蓋表生成模塊,將所述新的靈活位置集中的靈活位置在預(yù)設(shè)取值范圍內(nèi)進(jìn)行隨機(jī)替換,得到第二新覆蓋表。
7.根據(jù)權(quán)利要求6所述的覆蓋表約簡(jiǎn)的系統(tǒng),其特征在于,所述相對(duì)靈活位置集生成模塊,包括第一標(biāo)記子模塊,以及第一處理子模塊,其中: 所述第一標(biāo)記子模塊,用于將所述初始覆蓋表中的所有位置標(biāo)記為靈活位置; 所述第一處理子模塊,用于選擇所述初始覆蓋表中任意t個(gè)參數(shù)進(jìn)行組合,得到所述初始覆蓋表中參數(shù)的m個(gè)t-組合,并將所述初始覆蓋表中所有測(cè)試用例中只出現(xiàn)一次的t-組合值對(duì)應(yīng)的初始覆蓋表的位置還原為原始值,得到所述初始覆蓋表的相對(duì)靈活位置集; 所述t為正整數(shù),為所述初始覆蓋表的覆蓋強(qiáng)度;m=C (n, t),η為所述初始覆蓋表中參數(shù)的個(gè)數(shù);所述參數(shù)的某個(gè)t-組合對(duì)應(yīng)多個(gè)所述t-組合值,所述初始覆蓋表中每條測(cè)試用例包含m個(gè)所述t-組合的各一個(gè)所述t-組合值。
8.根據(jù)權(quán)利要求7所述的覆蓋表約簡(jiǎn)的系統(tǒng),其特征在于,所述第一處理子模塊包括第一組合單元,第一選擇單元,第一還原單元,以及第一判斷單元,其中: 所述第一組合單元,用于選擇所述初始覆蓋表中任意t個(gè)參數(shù)進(jìn)行組合,得到所述初始覆蓋表中參數(shù)的m個(gè)t-組合;所述第一選擇單元,用于選擇所述初始覆蓋表中未選擇過的一個(gè)所述t-組合,為第一t-組合; 所述第一還原單元,用于將所述初始覆蓋表中所有測(cè)試用例中只出現(xiàn)一次的第一t-組合值對(duì)應(yīng)的初始覆蓋表的位置還原為原始值; 所述第一判斷單元,用于判斷所述初始覆蓋表中是否還存在未選擇過的t-組合,若是則轉(zhuǎn)所述第一組合單元進(jìn)行處理;否則,得到所述初始覆蓋表的相對(duì)靈活位置集。
9.權(quán)利要求6所述的覆蓋表約簡(jiǎn)的系統(tǒng),其特征在于,所述靈活位置集生成模塊包括第二標(biāo)記子模塊,以及第二處理子模塊,其中: 所述第二標(biāo)記子模塊,用于將所述第一新覆蓋表中的所有位置標(biāo)記為靈活位置; 所述第二處理子模塊,用于選擇所述第一新覆蓋表中任意t個(gè)參數(shù)進(jìn)行組合,得到所述第一新覆蓋表中參數(shù)的m個(gè)t-組合,按照所述第一新覆蓋表中所有測(cè)試用例的排列順序,將第一次出現(xiàn)的t-組合值對(duì)應(yīng)的所述第一新覆蓋表的位置還原為原始值,得到所述第一新覆蓋表的靈活位置集; 所述t為正整數(shù),為所述初始覆蓋表的覆蓋強(qiáng)度;m=C (n, t),η為所述初始覆蓋表中參數(shù)的個(gè)數(shù);所述參數(shù)的某個(gè)t-組合對(duì)應(yīng)多個(gè)所述t-組合值,所述初始覆蓋表中每條測(cè)試用例包含m個(gè)所述t-組合的各一個(gè)所述t-組合值。
10.根據(jù)權(quán)利要求 9所述的覆蓋表約簡(jiǎn)的系統(tǒng),其特征在于,所述第二處理子模塊包括第二組合單元,第二選擇單元,第二還原單元,以及第二判斷單元,其中: 所述第二組合單元,用于選擇所述第一新覆蓋表中任意t個(gè)參數(shù)進(jìn)行組合,得到所述第一新覆蓋表中參數(shù)的m個(gè)t-組合; 所述第二選擇單元,用于選擇所述第一新覆蓋表中未選擇過的一個(gè)所述t-組合,為第二 t-組合; 所述第二還原單元,用于按照所述第一新覆蓋表中所有測(cè)試用例的排列順序,將第一次出現(xiàn)的所述第二 t-組合值對(duì)應(yīng)的所述第一新覆蓋表的位置還原為原始值; 所述第二判斷單元,用于判斷所述第一新覆蓋表中是否還存在未選擇過的t-組合,若是則轉(zhuǎn)所述第二組合單元進(jìn)行處理;否則,得到所述第一新覆蓋表的靈活位置集。
【文檔編號(hào)】G06F11/36GK103605603SQ201310477511
【公開日】2014年2月26日 申請(qǐng)日期:2013年10月12日 優(yōu)先權(quán)日:2013年10月12日
【發(fā)明者】聶長(zhǎng)海, 吳化堯, 李曉花, 董昭, 劉克, 蔡開元 申請(qǐng)人:南京大學(xué), 中國(guó)科學(xué)院數(shù)學(xué)與系統(tǒng)科學(xué)研究院, 北京航空航天大學(xué)