基于語句覆蓋和缺陷檢測(cè)的多目標(biāo)測(cè)試數(shù)據(jù)縮減方法
【專利摘要】本發(fā)明提出一種基于語句覆蓋和缺陷檢測(cè)的多目標(biāo)測(cè)試數(shù)據(jù)縮減方法,目的是有效減少測(cè)試數(shù)據(jù)的冗余度,提高軟件測(cè)試的效率。首先,將測(cè)試數(shù)據(jù)縮減問題轉(zhuǎn)化為多目標(biāo)優(yōu)化問題,優(yōu)化的目標(biāo)是使得測(cè)試數(shù)據(jù)集的語句覆蓋率和缺陷檢測(cè)率盡可能地多,并且測(cè)試數(shù)據(jù)的個(gè)數(shù)盡可能地少;然后明確各個(gè)目標(biāo)函數(shù),建立多目標(biāo)優(yōu)化模型;最后提出一種遺傳算法對(duì)該問題進(jìn)行求解。該方法能夠找到有效的測(cè)試數(shù)據(jù),使其同時(shí)滿足滿足語句覆蓋率、缺陷檢測(cè)率的最大化,測(cè)試數(shù)據(jù)個(gè)數(shù)最小化。
【專利說明】基于語句覆蓋和缺陷檢測(cè)的多目標(biāo)測(cè)試數(shù)據(jù)縮減方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及計(jì)算機(jī)軟件測(cè)試領(lǐng)域,設(shè)計(jì)了一種基于語句覆蓋和缺陷檢測(cè)的多目標(biāo) 測(cè)試數(shù)據(jù)縮減及進(jìn)化求解方法。該方法區(qū)別于已有方法的特色在于,基于語句覆蓋和缺陷 檢測(cè)建立測(cè)試數(shù)據(jù)縮減問題的多目標(biāo)優(yōu)化模型,從而保證縮減后的測(cè)試數(shù)據(jù)具有較好的質(zhì) 量;另外,給出一種遺傳算法來對(duì)上述模型進(jìn)行求解。該方法不但可以有效減少測(cè)試數(shù)據(jù)的 數(shù)量,還可以保證縮減后的測(cè)試數(shù)據(jù)具有較好的檢錯(cuò)能力,對(duì)提高軟件測(cè)試的效率和質(zhì)量 具有重要意義。
【背景技術(shù)】
[0002] 軟件測(cè)試的目的是為了發(fā)現(xiàn)軟件中存在的缺陷甚至錯(cuò)誤,從而提高軟件的質(zhì)量。 而進(jìn)行軟件測(cè)試的核心,是采用有針對(duì)性的理論和方法,生成有效的測(cè)試數(shù)據(jù),以滿足既定 的測(cè)試充分性準(zhǔn)則。但是,傳統(tǒng)方法生成的測(cè)試數(shù)據(jù)往往存在大量冗余。測(cè)試數(shù)據(jù)之所以會(huì) 出現(xiàn)冗余,是因?yàn)楦采w某一測(cè)試目標(biāo)的測(cè)試數(shù)據(jù)往往同時(shí)覆蓋其他測(cè)試目標(biāo)。另外,在回歸 測(cè)試中,會(huì)根據(jù)新的測(cè)試要求不斷補(bǔ)充大量測(cè)試數(shù)據(jù),從而導(dǎo)致測(cè)試用例的數(shù)量不斷攀升。
[0003] 測(cè)試數(shù)據(jù)冗余是軟件測(cè)試領(lǐng)域面臨的一個(gè)重要難題。如果能夠找到更少的測(cè)試數(shù) 據(jù)滿足既定的測(cè)試要求,那么,無疑將會(huì)提高軟件測(cè)試的效率,因?yàn)檫@可以減少執(zhí)行測(cè)試數(shù) 據(jù)集所需的時(shí)間,從而降低測(cè)試成本。為此,人們提出多種測(cè)試數(shù)據(jù)進(jìn)行縮減策略,從而達(dá) 到減少冗余、提高軟件測(cè)試效率的目的。
[0004] 一般來說,測(cè)試數(shù)據(jù)縮減的思想是:按照某種覆蓋準(zhǔn)則,找到原有測(cè)試數(shù)據(jù)集的子 集,使得該子集也能夠覆蓋所有測(cè)試目標(biāo),該子集稱為原有測(cè)試數(shù)據(jù)集的代表集。如果一個(gè) 測(cè)試數(shù)據(jù)集的任何真子集都不能滿足既定的測(cè)試準(zhǔn)則,那么,稱該測(cè)試數(shù)據(jù)集為最優(yōu)集或 最小集。
[0005] Leung和White證明,尋找覆蓋所有測(cè)試目標(biāo)的最小測(cè)試數(shù)據(jù)集屬于NP困難問題。 所以,人們往往尋找該問題的近似解。Harrold等提出一種啟發(fā)式算法縮減測(cè)試數(shù)據(jù)集,該 方法首先根據(jù)測(cè)試數(shù)據(jù)和測(cè)試目標(biāo)的關(guān)聯(lián)矩陣對(duì)測(cè)試需求分類,再根據(jù)測(cè)試需求的等級(jí), 按照一定順序選擇測(cè)試數(shù)據(jù)。Chen等提出另外一種啟發(fā)式方法,解決測(cè)試數(shù)據(jù)縮減問題,該 方法用到3種策略,分別是貪心策略、必要性策略和一對(duì)一策略,其中,貪心策略優(yōu)先選擇 覆蓋更多測(cè)試目標(biāo)的測(cè)試數(shù)據(jù);必要性策略選擇必不可少的測(cè)試數(shù)據(jù);而一對(duì)一策略選擇 只能由一個(gè)測(cè)試數(shù)據(jù)覆蓋的測(cè)試目標(biāo)。Lin等改進(jìn)了 Harrold的方法,區(qū)分具有相同優(yōu)先級(jí) 的測(cè)試數(shù)據(jù)。
[0006] 解決測(cè)試數(shù)據(jù)冗余問題的另一種方法,是在生成測(cè)試數(shù)據(jù)的同時(shí),最小化測(cè)試數(shù) 據(jù)集。Ding等提出一種面向連續(xù)和并發(fā)程序的測(cè)試數(shù)據(jù)生成方法,該方法首先根據(jù)條件 語句,將程序的輸入域劃分為若干子區(qū)域;然后,在程序的每個(gè)輸出節(jié)點(diǎn)建立表達(dá)式,包括: 相應(yīng)的輸入變量、到達(dá)的條件,以及一些"與、或"操作符號(hào)等;最后,根據(jù)表達(dá)式生成相應(yīng)的 測(cè)試數(shù)據(jù)。實(shí)驗(yàn)結(jié)果表明,該方法生成的測(cè)試數(shù)據(jù)避免了大量的冗余。Li等提出一種利用 語句優(yōu)先級(jí)選擇測(cè)試目標(biāo)的語句覆蓋測(cè)試數(shù)據(jù)生成方法,該方法首先按照某種準(zhǔn)則確定語 句的優(yōu)先級(jí);然后,根據(jù)語句的優(yōu)先級(jí)選擇目標(biāo)路徑,使得該路徑能夠覆蓋更多高優(yōu)先級(jí)的 目標(biāo)語句。
[0007] 一般情況下,人們把測(cè)試數(shù)據(jù)縮減看成單目標(biāo)優(yōu)化問題,優(yōu)化的目標(biāo)是測(cè)試數(shù)據(jù) 個(gè)數(shù)最少。但是,也有把測(cè)試數(shù)據(jù)縮減和其它目標(biāo)相結(jié)合的方法,如:在Υ〇〇和Harman的 工作中,優(yōu)化的目標(biāo)包括:代碼覆蓋、以前的排錯(cuò)記錄和執(zhí)行該測(cè)試數(shù)據(jù)所需要的時(shí)間等。 Black等利用線性規(guī)劃縮減測(cè)試數(shù)據(jù),該方法包含兩個(gè)模型,第一個(gè)優(yōu)化的目標(biāo)是測(cè)試數(shù)據(jù) 個(gè)數(shù)最少;第二個(gè)優(yōu)化的目標(biāo)有兩個(gè),一個(gè)是測(cè)試數(shù)據(jù)個(gè)數(shù)最少;另一個(gè)是測(cè)試數(shù)據(jù)累計(jì) 覆蓋的測(cè)試目標(biāo)最多。
[0008] 與測(cè)試數(shù)據(jù)縮減相近的另一工作是測(cè)試數(shù)據(jù)選擇,二者都是要找到原來的測(cè)試數(shù) 據(jù)集的代表集,不同的是代表集滿足的準(zhǔn)則不同。測(cè)試數(shù)據(jù)縮減的準(zhǔn)則是代表集能夠覆蓋 既定的測(cè)試目標(biāo);而測(cè)試數(shù)據(jù)選擇主要針對(duì)回歸測(cè)試,考察代表集能否覆蓋程序中修改的 部分。
[0009] 現(xiàn)有方法對(duì)測(cè)試數(shù)據(jù)進(jìn)行縮減時(shí),一般只要求縮減后的測(cè)試數(shù)據(jù)滿足特定覆蓋要 求。雖然也有利用多目標(biāo)方法解決測(cè)試數(shù)據(jù)縮減問題的,但很少考慮縮減后測(cè)試數(shù)據(jù)的檢 錯(cuò)能力。因此,已有測(cè)試數(shù)據(jù)縮減方法雖然可以降低測(cè)試數(shù)據(jù)的數(shù)量,但往往會(huì)消弱其缺陷 檢測(cè)能力。
[0010] 語句覆蓋是最基本的測(cè)試覆蓋準(zhǔn)則,因此,本發(fā)明把語句覆蓋率作為衡量測(cè)試數(shù) 據(jù)質(zhì)量的第一個(gè)目標(biāo)。另外,軟件測(cè)試的核心是為了查找缺陷。測(cè)試數(shù)據(jù)發(fā)現(xiàn)的錯(cuò)誤越多, 對(duì)應(yīng)測(cè)試數(shù)據(jù)的質(zhì)量也就越高。因此,本發(fā)明把缺陷檢測(cè)率作為衡量測(cè)試數(shù)據(jù)質(zhì)量的第二 個(gè)目標(biāo)。最后,為了降低測(cè)試成本,第三個(gè)目標(biāo)是希望縮減后的測(cè)試數(shù)據(jù)數(shù)量越少越好。鑒 于此,本發(fā)明建立了測(cè)試縮減問題的多目標(biāo)優(yōu)化模型,并給出其進(jìn)化求解方法。
【發(fā)明內(nèi)容】
[0011] 本發(fā)明給出一種基于語句覆蓋和缺陷檢測(cè)的多目標(biāo)測(cè)試數(shù)據(jù)縮減方法。首先,把 測(cè)試數(shù)據(jù)縮減問題轉(zhuǎn)化為多目標(biāo)優(yōu)化問題,優(yōu)化的目標(biāo)分別語句覆蓋率、缺陷檢測(cè)率和縮 減率。在此基礎(chǔ)之上,設(shè)計(jì)了一種遺傳算法對(duì)上述多目標(biāo)優(yōu)化模型進(jìn)行求解。最后的實(shí)驗(yàn) 結(jié)果表明,本發(fā)明提出的方法不但可以大幅度縮減測(cè)試數(shù)據(jù)的數(shù)量,同時(shí)可以保證其語句 覆蓋率和檢錯(cuò)能力不會(huì)降低。
[0012] 本發(fā)明所要解決的技術(shù)問題:基于語句覆蓋和缺陷檢測(cè)建立測(cè)試數(shù)據(jù)縮減問題的 多目標(biāo)優(yōu)化模型,從而保證縮減后的測(cè)試數(shù)據(jù)具有較好的質(zhì)量;提出一種求解上述優(yōu)化問 題的遺傳算法,從而保證該優(yōu)化問題求解的效率。
[0013] 本發(fā)明的技術(shù)解決方案:一種基于語句覆蓋和缺陷檢測(cè)的測(cè)試數(shù)據(jù)縮減方法,其 特征包含以下步驟:
[0014] 步驟1.把測(cè)試數(shù)據(jù)縮減問題轉(zhuǎn)化為多目標(biāo)優(yōu)化問題
[0015] 首先,明確我們所要解決的問題。假設(shè)被測(cè)程序?yàn)镚,其輸入空間為D,要求覆蓋 的目標(biāo)語句集為S = {sp s2,…,sm},其中,m為目標(biāo)語句的個(gè)數(shù)。已有測(cè)試數(shù)據(jù)集為Ω = {Xl,x2,…,xn},其中Xi eD。假設(shè)Ω能夠覆蓋目標(biāo)語句集S的所有目標(biāo)語句?,F(xiàn)在要解決 的問題可描述為:找到測(cè)試數(shù)據(jù)集Ω的一個(gè)子集Ω*,使其盡可能滿足以下幾個(gè)目標(biāo)要求: 能夠覆蓋的目標(biāo)語句的個(gè)數(shù)盡可能的多,即語句覆蓋率最大化;檢測(cè)到的缺陷個(gè)數(shù)盡可能 的多,即缺陷檢測(cè)率最大化;且包含的測(cè)試數(shù)據(jù)個(gè)數(shù)盡可能的少,也就是說測(cè)試數(shù)據(jù)集最小 化。
[0016] 因此,我們需要得到滿足上述目標(biāo)的一個(gè)子集Ω*。為了有效解決該問題,需要建 立語句覆蓋率函數(shù)、缺陷檢測(cè)率函數(shù)以及縮減率函數(shù),從而本發(fā)明將測(cè)試數(shù)據(jù)縮減問題建 模為一個(gè)多目標(biāo)優(yōu)化問題。
[0017] 步驟2.明確測(cè)試數(shù)據(jù)縮減問題各個(gè)目標(biāo)函數(shù),建立多目標(biāo)優(yōu)化模型
[0018] 我們?cè)趯?duì)測(cè)試數(shù)據(jù)集進(jìn)行約簡(jiǎn)時(shí),同時(shí)考慮三個(gè)因素,即保證測(cè)試數(shù)據(jù)得到約簡(jiǎn), 并且測(cè)試數(shù)據(jù)集的語句覆蓋率和缺陷檢測(cè)能力不會(huì)降低。因此,所建立的優(yōu)化模型包含三 個(gè)目標(biāo)函數(shù),分別是語句覆蓋率、缺陷檢測(cè)率和測(cè)試數(shù)據(jù)縮減率。
[0019] (1)語句覆蓋率
[0020] 語句覆蓋準(zhǔn)則要求測(cè)試數(shù)據(jù)集能夠覆蓋所有的目標(biāo)語句。若Ω *覆蓋了目標(biāo)語句 集S中的t條語句,那么,Ω *對(duì)S的語句覆蓋率可定義為:
[0021]
【權(quán)利要求】
1. 基于語句覆蓋和缺陷檢測(cè)的多目標(biāo)測(cè)試數(shù)據(jù)縮減方法,其特征在于如下步驟: 步驟1.1:把測(cè)試數(shù)據(jù)縮減問題轉(zhuǎn)化為多目標(biāo)優(yōu)化問題,優(yōu)化目標(biāo)是能夠覆蓋的目標(biāo) 語句的個(gè)數(shù)盡可能的多;檢測(cè)到的缺陷個(gè)數(shù)盡可能的多;包含的測(cè)試數(shù)據(jù)個(gè)數(shù)盡可能的 少,也就是說測(cè)試數(shù)據(jù)集最小化。 步驟1. 2 :明確測(cè)試數(shù)據(jù)縮減問題的各個(gè)目標(biāo)函數(shù),建立多目標(biāo)優(yōu)化模型。 步驟1. 3 :利用遺傳算法對(duì)基于語句覆蓋和缺陷檢測(cè)的多目標(biāo)測(cè)試數(shù)據(jù)縮減問題進(jìn)化 求解。
2. 權(quán)利要求1中步驟1. 1所述的把測(cè)試數(shù)據(jù)縮減問題轉(zhuǎn)化為多目標(biāo)優(yōu)化問題,其特征 在于本發(fā)明優(yōu)化的目標(biāo)是使得測(cè)試數(shù)據(jù)集的語句覆蓋率和檢錯(cuò)率不會(huì)降低,以及使得測(cè)試 數(shù)據(jù)的個(gè)數(shù)盡可能的少。
3. 權(quán)利要求1中步驟1. 2所述的明確測(cè)試數(shù)據(jù)縮減問題各個(gè)目標(biāo)函數(shù),建立多目標(biāo)數(shù) 學(xué)模型,其特征在于將目標(biāo)函數(shù)建立為多目標(biāo)優(yōu)化模型。
4. 權(quán)利要求1中步驟1. 3所述利用遺傳算法進(jìn)化求解,其特征在于以下步驟: 步驟4. 1 :個(gè)體編碼方法 設(shè)是待求問題(4)的一個(gè)候選解,下面將給出的編碼方法。對(duì)于原有測(cè)試數(shù) 據(jù)集Q = {x,,Xa…,xj,令
則可得到一個(gè)長(zhǎng)為n的(0-1)串a(chǎn) a2,…,an??梢钥闯?,(0-1)串Yi, y2,…, 和子集是一一對(duì)應(yīng)的關(guān)系。因此,我們可以使用長(zhǎng)度為n的(0-1)串Yl,Y2,…,Y n來表不個(gè)體Q*。這樣表不,為遺傳操作的順利實(shí)施奠定了基礎(chǔ)。 步驟4. 2 :種群初始化 隨機(jī)生成m個(gè)長(zhǎng)為n的(0-1)字符串,分別記為,…,。每個(gè)字符串是一個(gè)個(gè) 體,m個(gè)個(gè)體組成一個(gè)初始種群。 步驟4. 3 :個(gè)體評(píng)價(jià)方法 由于(4)式建立的是一個(gè)多目標(biāo)優(yōu)化問題,需要給出個(gè)體的評(píng)價(jià)方法。由式(1)、(2) 和⑶可知,目標(biāo)函數(shù)&(〇*),&⑴*)和f3(Q*)的取值都在0和1之間,因此,不需要對(duì) 目標(biāo)函數(shù)進(jìn)行歸一化處理。 另外,由于和&(0*)是最大化問題,f3(Q*)是最小化問題,現(xiàn)在統(tǒng)一轉(zhuǎn)化 為最小化問題。令 Q *) = 14 ( Q *),f2 ' ( Q *) = l-f2 ( Q *)。則 Q *)和 ⑴*)的值都在〇和1之間,且對(duì)心⑴*)和^⑴*)是最大化問題,等價(jià)于對(duì)f/⑴*) 和(Q*)的最小化問題。 最后,將f/ (Q*),f2' (Q*)和f3(Q*)進(jìn)行加權(quán)組合,得到個(gè)體Q*的適應(yīng)值函數(shù) 如下: fit(Q*) = c〇1f1(Q>l<) + c〇2f2(Q>l<) + c〇3f3(^*) (6) 其中,〇2, 〇3為權(quán)重系數(shù)。個(gè)體的適應(yīng)值越小,就越接近我們期望的解。 步驟4. 4 :進(jìn)化策略 由于每個(gè)個(gè)體都是一個(gè)(〇,1)字符串,可以采用傳統(tǒng)的進(jìn)化算子對(duì)個(gè)體實(shí)施遺傳操 作。本文算法中,個(gè)體交叉算子為單點(diǎn)交叉,變異算子為單點(diǎn)變異,選擇算子采用輪盤賭選 擇。 步驟4. 5 :算法步驟 基于前面提出的個(gè)體編碼及適應(yīng)值計(jì)算策略,使用遺傳算法來求解式(4)的步驟如 下: (1) 遺傳算法的參數(shù)設(shè)置及個(gè)體編碼 確定算法的控制參數(shù),包括種群規(guī)模、算法終止代數(shù)、選擇概率、交叉概率,以及變異概 率等。種群的個(gè)體為已有測(cè)試數(shù)據(jù)集的子集,并按照第4. 1小節(jié)給出的方法進(jìn)行編碼。 (2) 種群初始化 隨機(jī)生成包含若干個(gè)體的初始種群A,進(jìn)化代數(shù)t = 1。 (3) 個(gè)體適應(yīng)值計(jì)算 對(duì)第i代種群%,按照(6)式計(jì)算每個(gè)個(gè)體的適應(yīng)值。個(gè)體適應(yīng)值越小,說明該個(gè)體越 接近最優(yōu)解,被遺傳到下一代的概率也就越大。 (4) 判斷算法終止條件是否滿足 算法終止的條件是,連續(xù)進(jìn)化若干代后沒有出現(xiàn)更優(yōu)個(gè)體,或者種群進(jìn)化代數(shù)超過設(shè) 定的最大值。若終止條件被滿足,轉(zhuǎn)步驟6 ;否則,轉(zhuǎn)步驟5。 (5) 進(jìn)行遺傳操作 對(duì)個(gè)體實(shí)施選擇、交叉和變異算子;令i = i+1,轉(zhuǎn)步驟3。 (6) 停止進(jìn)化,輸出結(jié)果。
【文檔編號(hào)】G06F11/36GK104281522SQ201410543046
【公開日】2015年1月14日 申請(qǐng)日期:2014年10月14日 優(yōu)先權(quán)日:2014年10月14日
【發(fā)明者】鞏敦衛(wèi), 姚香娟, 李彬, 胡雷, 陳永偉 申請(qǐng)人:中國礦業(yè)大學(xué)