一種基于軟件組合測(cè)試的回歸測(cè)試用例重用方法
【專利摘要】本發(fā)明公開了一種基于軟件組合測(cè)試的回歸測(cè)試用例重用方法,本發(fā)明所述方法主要包括以下步驟:計(jì)算新模型所有需要覆蓋的組合;對(duì)于已有的每條測(cè)試用例嘗試重用,若能重用,則將其轉(zhuǎn)換為新模型下的測(cè)試用例,加入新的測(cè)試用例集,并去掉該測(cè)試用例覆蓋的組合,否則該測(cè)試用例不可重用,將其拋棄;若還有未被覆蓋的組合,則按照傳統(tǒng)組合測(cè)試生成方法補(bǔ)充新的測(cè)試用例,覆蓋剩余未被覆蓋的組合,并加入新的測(cè)試用例集;最終得到的測(cè)試用例集就是重用了已有測(cè)試用例的回歸組合測(cè)試用例集。
【專利說明】一種基于軟件組合測(cè)試的回歸測(cè)試用例重用方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及一種回歸測(cè)試用例重用方法,特別是涉及一種利用軟件組合測(cè)試在待 測(cè)系統(tǒng)中生成測(cè)試用例的回歸測(cè)試用例重用的方法。
【背景技術(shù)】
[0002] 軟件測(cè)試用于發(fā)現(xiàn)軟件系統(tǒng)中的缺陷,是軟件系統(tǒng)開發(fā)中的重要環(huán)節(jié)之一。當(dāng)今 軟件系統(tǒng)規(guī)模越來越大,結(jié)構(gòu)日趨復(fù)雜,使得軟件更容易產(chǎn)生缺陷。而軟件中的缺陷往往會(huì) 導(dǎo)致各種各樣的問題,如軟件崩潰、財(cái)產(chǎn)損失甚至危及人身安全。軟件組合測(cè)試是一種非常 有效的軟件測(cè)試方法,該方法用于測(cè)試多參數(shù)系統(tǒng)。在組合測(cè)試中,被測(cè)系統(tǒng)被看作一個(gè)黑 盒,其行為受到多個(gè)參數(shù)(或稱因素)相互作用的影響,這些參數(shù)可能是系統(tǒng)的配置、內(nèi)部 事件、外部輸入等。這個(gè)多參數(shù)模型稱為組合測(cè)試模型。D. Kuhn等人的研宄表明,在某些 系統(tǒng)中,大多數(shù)的軟件錯(cuò)誤是少數(shù)參數(shù)(一般不超過3個(gè))取特定組合時(shí)引起的,這種錯(cuò)誤 稱作組合錯(cuò)誤。因此,如果能夠測(cè)試到所有這樣少數(shù)參數(shù)之間的組合,則被測(cè)系統(tǒng)中的大多 數(shù)組合錯(cuò)誤都可以被檢測(cè)到。在軟件組合測(cè)試中,通常使用覆蓋數(shù)組作為測(cè)試用例集。覆 蓋數(shù)組是一個(gè)矩陣,其中的每一行對(duì)應(yīng)一條測(cè)試用例,每一列對(duì)應(yīng)一個(gè)參數(shù)。給定覆蓋強(qiáng)度 t,一個(gè)t強(qiáng)度的覆蓋數(shù)組能夠保證對(duì)于任意t列,該數(shù)組覆蓋這t列所對(duì)應(yīng)參數(shù)之間的所 有組合。與此同時(shí),由于覆蓋數(shù)組精簡(jiǎn)的特性,其行數(shù)較少。因此組合測(cè)試可以采用較少數(shù) 量的測(cè)試用例,達(dá)到較高的錯(cuò)誤覆蓋率。
[0003] 組合測(cè)試用例集(覆蓋數(shù)組)的生成技術(shù)有很多,其中一種是一維擴(kuò)展策略。該 策略先計(jì)算所有需要覆蓋的組合,然后逐條生成測(cè)試用例,直到所有組合都被覆蓋。每條測(cè) 試用例的生成準(zhǔn)則為覆蓋盡量多未被覆蓋的組合。
[0004] 傳統(tǒng)的組合測(cè)試方法是假設(shè)待測(cè)軟件多參數(shù)模型中的參數(shù)之間是互相獨(dú)立的。但 在實(shí)際應(yīng)用中,軟件各因素間往往存在一定的約束關(guān)系,從而使這些因素中某些取值的組 合受到一定限制。在生成組合測(cè)試用例集的過程當(dāng)中,每條測(cè)試用例都必須滿足參數(shù)間的 約束,否則該測(cè)試用例無效,無法被執(zhí)行,其覆蓋到的參數(shù)組合也無法被測(cè)試到。在處理參 數(shù)約束的過程中,經(jīng)常會(huì)用到約束求解技術(shù)。約束求解技術(shù)以一組約束為輸入,嘗試生成一 個(gè)滿足所有約束的解(可行解)。若存在可行解,則這組約束可滿足,并返回找到的可行解; 若不存在可行解,則這組約束不可滿足,也就說明這些約束之間存在矛盾。因此,在約束存 在時(shí),一維擴(kuò)展策略中生成的每條測(cè)試用例都應(yīng)當(dāng)滿足所有約束,并覆蓋盡量多未被覆蓋 的組合。已有的工具或算法,如AETG-SAT、PICT等,處理約束的方法多分為兩層:在高層對(duì) 參數(shù)進(jìn)行賦值,以覆蓋盡量多未被覆蓋的組合;當(dāng)需要判斷當(dāng)前的賦值是否滿足約束時(shí),調(diào) 用低層的求解器進(jìn)行判斷。而也有一類方法如Cascade,將整條新測(cè)試用例生成轉(zhuǎn)化為待約 束的優(yōu)化問題進(jìn)行求解。
[0005] 在實(shí)際應(yīng)用組合測(cè)試時(shí),往往由于待測(cè)系統(tǒng)的測(cè)試需求發(fā)生變更,或待測(cè)系統(tǒng)本 身的變更,導(dǎo)致參數(shù)化模型需要進(jìn)行相應(yīng)的變更。常見的變更類型有:增加或刪除參數(shù),增 加或刪除參數(shù)取值,增加、刪除或變更約束。在參數(shù)化模型發(fā)生改變后,需要重新生成組合 測(cè)試用例集,來達(dá)到新模型下的覆蓋要求。這個(gè)過程稱為組合測(cè)試的回歸測(cè)試。若針對(duì)新 的參數(shù)化模型重新生成測(cè)試用例集,往往新的測(cè)試用例集和舊模型下的測(cè)試用例集差異很 大,重新測(cè)試的代價(jià)相對(duì)較高。而事實(shí)上,舊模型下的測(cè)試用例集,往往有很大一部分可以 在新模型下進(jìn)行重用,從而降低重新測(cè)試的代價(jià)。大多數(shù)已有的組合測(cè)試測(cè)試用例生成的 流程都是在模型給定的情況下進(jìn)行,并沒有考慮模型變更后,如何進(jìn)行回歸組合測(cè)試的問 題。
[0006] 本發(fā)明涉及的一種回歸測(cè)試用例重用方法的目標(biāo)是在參數(shù)化模型發(fā)生變更后,在 滿足新模型下覆蓋要求的前提下,盡可能重用原模型下已有的測(cè)試用例,以減小新增的測(cè) 試開銷。
【發(fā)明內(nèi)容】
[0007] 本發(fā)明針對(duì)的是組合回歸測(cè)試問題,提出了一種基于軟件組合測(cè)試的回歸測(cè)試用 例重用方法,能夠在滿足新模型下覆蓋要求的前提下,盡可能重用原模型下已有的測(cè)試用 例,以減小新增的測(cè)試開銷。
[0008] 為了實(shí)現(xiàn)本發(fā)明的目的,采用的技術(shù)方案概述如下:一種基于軟件組合測(cè)試的回 歸測(cè)試用例重用方法,包括以下步驟:
[0009] (1)計(jì)算軟件組合測(cè)試模型變更后的新模型下所有需要覆蓋的參數(shù)組合;
[0010] (2)對(duì)于已有的每條測(cè)試用例嘗試重用,若能重用,則將其轉(zhuǎn)換為新模型下的測(cè)試 用例,加入新的測(cè)試用例集,并從需要覆蓋的參數(shù)組合中去掉該測(cè)試用例覆蓋的參數(shù)組合, 否則該測(cè)試用例不可重用,將該測(cè)試用例拋棄;
[0011] (3)經(jīng)過步驟(2)之后,若還有需要覆蓋的參數(shù)組合,則按照傳統(tǒng)組合測(cè)試測(cè)試生 成方法補(bǔ)充新的測(cè)試用例,覆蓋剩余需要覆蓋的參數(shù)組合,并加入新的測(cè)試用例集;
[0012] (4)最終得到的測(cè)試用例集就是重用了已有測(cè)試用例的回歸組合測(cè)試用例集。
[0013] 所述步驟⑵具體包括以下步驟:
[0014] (2-1)將已有的每條測(cè)試用例按照軟件組合測(cè)試模型變更后的新模型進(jìn)行適配, 根據(jù)新模型中參數(shù)及參數(shù)取值的增減進(jìn)行適當(dāng)裁剪,得到新模型下的一條部分測(cè)試用例;
[0015] (2-2)將步驟(2-1)得到的每條測(cè)試用例編碼成約束集;
[0016] (2-3)將新模型的所有約束和步驟(2-2)生成的約束集合并,并進(jìn)行約束求解,嘗 試生成一條滿足合并后約束集的測(cè)試用例;若生成成功,說明該測(cè)試用例能夠重用,并將得 到的測(cè)試用例加入新的測(cè)試用例集,并從需要覆蓋的組合中去掉該測(cè)試用例覆蓋的組合; 否則說明該測(cè)試用例不可重用,將該測(cè)試用例拋棄;
[0017] (2-4)重復(fù)執(zhí)行步驟(2-1)至(2-3),直到檢查完所有測(cè)試用例的可重用性。
[0018] 所述步驟(2-1)具體包括以下步驟:
[0019] (2-1-1)若對(duì)于每條已有的測(cè)試用例,其中的某個(gè)參數(shù)或取值在新的待測(cè)系統(tǒng)模 型下不出現(xiàn),則將該參數(shù)從該測(cè)試用例中去除;
[0020] (2-1-2)若待測(cè)系統(tǒng)變更后的模型增加了一個(gè)新參數(shù),則對(duì)于每條已有的測(cè)試用 例,該參數(shù)在轉(zhuǎn)換成的測(cè)試用例中取值任意,不做限定。
[0021] 所述步驟(2-2)具體包括以下步驟:
[0022] (2-2-1)對(duì)于每個(gè)測(cè)試用例中的每個(gè)參數(shù)-取值對(duì),將該參數(shù)-取值對(duì)編碼為"該 參數(shù)取該值"形式的約束;
[0023] (2-2-2)將步驟(2-2-1)得到的所有約束加入約束集中,即得到最終編碼后的約 束集。
[0024] 與現(xiàn)有技術(shù)相比,本發(fā)明具有以下優(yōu)點(diǎn):
[0025] 本發(fā)明給出了一種在待測(cè)系統(tǒng)模型變更后,能夠重用原模型下已有的組合測(cè)試用 例的方法,可以在滿足新模型下覆蓋要求的前提下,盡可能重用原模型下已有的測(cè)試用例, 以減小新增的測(cè)試開銷。
【專利附圖】
【附圖說明】
[0026] 圖1是本發(fā)明方法在實(shí)施例中的實(shí)現(xiàn)的總體流程圖;
[0027] 圖2是本發(fā)明方法在實(shí)施例中的實(shí)現(xiàn)的重用測(cè)試用例過程(步驟b))的流程圖;
[0028] 圖3是本發(fā)明方法在實(shí)施例中的實(shí)現(xiàn)的適配已有測(cè)試用例過程(步驟bl))的流 程圖;
[0029] 圖4是本發(fā)明方法在實(shí)施例中的實(shí)現(xiàn)的將測(cè)試用例編碼成約束過程(步驟b2)) 的流程圖。
【具體實(shí)施方式】
[0030] 本發(fā)明采用重用已有測(cè)試用例和生成新測(cè)試用例的方法進(jìn)行回歸測(cè)試,其中已有 的測(cè)試用例是在使用組合測(cè)試技術(shù)針對(duì)原模型生成的。該方法的使用位于待測(cè)系統(tǒng)模型變 更后進(jìn)行回歸測(cè)試的階段,可重用的測(cè)試用例加上新生成的測(cè)試用例構(gòu)成最終回歸測(cè)試的 測(cè)試用例集。
[0031] 下面舉一個(gè)簡(jiǎn)單的組合測(cè)試回歸測(cè)試場(chǎng)景,說明本發(fā)明的工作流程。
[0032] 假設(shè)某待測(cè)系統(tǒng)的參數(shù)化模型包含4個(gè)參數(shù)Vl,v2, v3, V4,每個(gè)參數(shù)取值范圍都是 {〇,1},如表1所示。該待測(cè)系統(tǒng)不包含約束。假設(shè)先前對(duì)該待測(cè)系統(tǒng)進(jìn)行過組合測(cè)試,假 設(shè)已有兩條測(cè)試用例(0, 1,0, 0)和(0, 1,1,0)。
[0033] 表1舊的參數(shù)化模型
[0034]
【權(quán)利要求】
1. 一種基于軟件組合測(cè)試的回歸測(cè)試用例重用方法,其特征在于包括w下步驟: (1) 計(jì)算軟件組合測(cè)試模型變更后的新模型下所有需要覆蓋的參數(shù)組合; (2) 對(duì)于已有的每條測(cè)試用例嘗試重用,若能重用,則將其轉(zhuǎn)換為新模型下的測(cè)試用 例,加入新的測(cè)試用例集,并從需要覆蓋的參數(shù)組合中去掉該測(cè)試用例覆蓋的參數(shù)組合,否 則該測(cè)試用例不可重用,將該測(cè)試用例拋棄; (3) 經(jīng)過步驟(2)之后,若還有需要覆蓋的參數(shù)組合,則按照傳統(tǒng)組合測(cè)試測(cè)試生成方 法補(bǔ)充新的測(cè)試用例,覆蓋剩余需要覆蓋的參數(shù)組合,并加入新的測(cè)試用例集; (4) 最終得到的測(cè)試用例集就是重用了已有測(cè)試用例的回歸組合測(cè)試用例集。
2. 如權(quán)利要求1所述的方法,其特征在于:所述步驟(2)具體包括W下步驟: (2-1)將已有的每條測(cè)試用例按照軟件組合測(cè)試模型變更后的新模型進(jìn)行適配,根據(jù) 新模型中參數(shù)及參數(shù)取值的增減進(jìn)行適當(dāng)裁剪,得到新模型下的一條部分測(cè)試用例; (2-2)將步驟(2-1)得到的每條測(cè)試用例編碼成約束集; (2-3)將新模型的所有約束和步驟(2-2)生成的約束集合并,并進(jìn)行約束求解,嘗試生 成一條滿足合并后約束集的測(cè)試用例;若生成成功,說明該測(cè)試用例能夠重用,并將得到的 測(cè)試用例加入新的測(cè)試用例集,并從需要覆蓋的組合中去掉該測(cè)試用例覆蓋的組合;否則 說明該測(cè)試用例不可重用,將該測(cè)試用例拋棄; (2-4)重復(fù)執(zhí)行步驟(2-1)至(2-3),直到檢查完所有測(cè)試用例的可重用性。
3. 如權(quán)利要求2所述的方法,其特征在于:所述步驟(2-1)具體包括W下步驟: (2-1-1)若對(duì)于每條已有的測(cè)試用例,其中的某個(gè)參數(shù)或取值在新的待測(cè)系統(tǒng)模型下 不出現(xiàn),則將該參數(shù)從該測(cè)試用例中去除; (2-1-2)若待測(cè)系統(tǒng)變更后的模型增加了一個(gè)新參數(shù),則對(duì)于每條已有的測(cè)試用例,該 參數(shù)在轉(zhuǎn)換成的測(cè)試用例中取值任意,不做限定。
4. 如權(quán)利要求2所述的方法,其特征在于,所述步驟(2-2)具體包括W下步驟: (2-2-1)對(duì)于每個(gè)測(cè)試用例中的每個(gè)參數(shù)-取值對(duì),將該參數(shù)-取值對(duì)編碼為"該參數(shù) 取該值"形式的約束; (2-2-2)將步驟(2-2-1)得到的所有約束加入約束集中,即得到最終編碼后的約束集。
【文檔編號(hào)】G06F11/36GK104461908SQ201410852192
【公開日】2015年3月25日 申請(qǐng)日期:2014年12月31日 優(yōu)先權(quán)日:2014年12月31日
【發(fā)明者】張艷麗, 張智強(qiáng), 嚴(yán)俊 申請(qǐng)人:中國(guó)科學(xué)院軟件研究所