欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種基于分類挖掘和版本變更的測(cè)試用例優(yōu)先化方法

文檔序號(hào):6330958閱讀:346來(lái)源:國(guó)知局
專利名稱:一種基于分類挖掘和版本變更的測(cè)試用例優(yōu)先化方法
技術(shù)領(lǐng)域
本發(fā)明涉及軟件自動(dòng)化測(cè)試中的回歸測(cè)試用例選擇,特別涉及在軟件系統(tǒng)存在大 量升級(jí)版本、以及存在大量測(cè)試用例的情況下,根據(jù)測(cè)試用例在此前版本的歷史數(shù)據(jù)及新 版本的變更數(shù)據(jù),挖掘出版本變更與測(cè)試用例執(zhí)行結(jié)果之間的關(guān)系,從而在新版本回歸測(cè) 試中指導(dǎo)測(cè)試用例的優(yōu)先選擇。
背景技術(shù)
軟件系統(tǒng)在整個(gè)產(chǎn)品生命周期中面臨持續(xù)的升級(jí)換代和變更(稱為軟件演化)以 滿足不斷變化的軟件需求,這需要頻繁對(duì)軟件系統(tǒng)實(shí)施回歸測(cè)試,使得回歸測(cè)試成本在軟 件產(chǎn)品生命周期總成本中占據(jù)較大比例。研究指出,回歸測(cè)試成本占據(jù)高達(dá)80%的測(cè)試總 成本,在軟件維護(hù)成本中占到50%左右。研究回歸測(cè)試選擇技術(shù),提高回歸測(cè)試的效率和有 效性,能夠降低回歸測(cè)試成本,帶來(lái)可觀的經(jīng)濟(jì)效益。在回歸測(cè)試中,測(cè)試人員需要復(fù)用已 有測(cè)試用例。在軟件系統(tǒng)開發(fā)和升級(jí)過(guò)程中存在大量可用的測(cè)試用例,如何重用并選擇測(cè) 試集成為回歸測(cè)試的核心問(wèn)題。在測(cè)試資源和時(shí)間約束下,測(cè)試用例優(yōu)先化技術(shù)能夠提高 回歸測(cè)試的缺陷檢測(cè)率,從而減少所需的測(cè)試用例數(shù)量,在保證測(cè)試效果的前提下降低測(cè) 試成本。測(cè)試集優(yōu)先化技術(shù)根據(jù)回歸測(cè)試需求的優(yōu)先化目標(biāo)將已有的測(cè)試用例進(jìn)行排序, 使高優(yōu)先級(jí)的測(cè)試用例先于低優(yōu)先級(jí)的測(cè)試用例執(zhí)行。傳統(tǒng)測(cè)試優(yōu)先化技術(shù)主要從代碼覆 蓋角度,以代碼的全覆蓋為目標(biāo)完成測(cè)試用例的優(yōu)先化排序;需要獲得測(cè)試用例在以前版 本的代碼覆蓋情況,且需要覆蓋所有的軟件代碼??紤]到缺陷通常由新的修改導(dǎo)致,而新的 修改又通常只占據(jù)全部代碼的一部分;本發(fā)明方法通過(guò)考慮軟件最近的代碼變更,結(jié)合測(cè) 試用例在舊版本上的執(zhí)行歷史,預(yù)測(cè)測(cè)試用例在新版本上的“不通過(guò)率”(即發(fā)現(xiàn)軟件缺陷 的概率),以指導(dǎo)完成對(duì)測(cè)試用例的優(yōu)先選取,達(dá)到以較少的測(cè)試用例數(shù)量更快更多發(fā)現(xiàn)新 版本軟件缺陷的目標(biāo)。

發(fā)明內(nèi)容
本發(fā)明是以較少數(shù)量的測(cè)試用例更快更多的發(fā)現(xiàn)新版本軟件缺陷為目標(biāo),提出一 種測(cè)試用例的優(yōu)先化方法。為實(shí)現(xiàn)上述目的,本發(fā)明所述基于分類挖掘和版本變更的測(cè)試用例優(yōu)先化方法, 包括了以下步驟1)歷史數(shù)據(jù)預(yù)處理收集不同版本下的測(cè)試用例執(zhí)行結(jié)果和模塊變更的信息,轉(zhuǎn) 化成不同版本下測(cè)試用例執(zhí)行結(jié)果數(shù)據(jù)矩陣和不同版本間模塊變更數(shù)據(jù)矩陣;2)分類挖掘訓(xùn)練集構(gòu)建根據(jù)步驟1)得到的兩個(gè)數(shù)據(jù)矩陣,為每個(gè)測(cè)試用例建立 分類挖掘訓(xùn)練和預(yù)測(cè)所需訓(xùn)練集;3)分類挖掘訓(xùn)練和預(yù)測(cè)選擇貝葉斯分類HNB和AODE兩個(gè)分類挖掘模型,對(duì)每個(gè) 測(cè)試用例采用對(duì)應(yīng)的訓(xùn)練集進(jìn)行模型訓(xùn)練;根據(jù)訓(xùn)練好的模型預(yù)測(cè)新版本中每個(gè)測(cè)試用例發(fā)現(xiàn)軟件缺陷的概率;4)測(cè)試用例優(yōu)先化排序根據(jù)模型預(yù)測(cè)的綜合結(jié)果,結(jié)合回歸測(cè)試執(zhí)行的時(shí)間限 制,對(duì)測(cè)試用例進(jìn)行優(yōu)先化排序。上述于步驟1)中執(zhí)行結(jié)果數(shù)據(jù)矩陣的轉(zhuǎn)化過(guò)程為收集每個(gè)版本\下各測(cè)試用 例、的執(zhí)行結(jié)果IV構(gòu)建測(cè)試用例執(zhí)行結(jié)果數(shù)據(jù)矩陣R(m,n) = [ru]mXn,其中m為測(cè)試用 例數(shù)量;η為軟件版本數(shù)量;為矩陣元素,表示測(cè)試用例、在軟件版本\上的執(zhí)行結(jié)果, riJ共有三個(gè)取值0表示測(cè)試通過(guò);1表示測(cè)試未通過(guò);null (空值)表示在版本\中測(cè)試 用例、未被執(zhí)行過(guò)。上述步驟1)中模塊變更數(shù)據(jù)矩陣的轉(zhuǎn)化過(guò)程為選定樣例版本Vtl ;參照版本V(1, 收集每個(gè)版本、中各模塊Modk的變更情況δ Λ,構(gòu)建模塊變更矩陣Λ (n, 1) = [5Jk]nX1, 其中1為軟件包含的模塊數(shù)量;矩陣元素S Jk表示版本\同樣例版本Y0在模塊Modk上相 比是否發(fā)生變更,共有兩個(gè)取值0表示版本Vj跟樣例版本Vtl相比較,在模塊Modk上未發(fā)生 變更;1表示版本\跟樣例版本%相比較,在模塊Modk上發(fā)生變更。上述步驟2)的分類挖掘訓(xùn)練集構(gòu)建過(guò)程是為每個(gè)測(cè)試用例構(gòu)建分類挖掘訓(xùn)練 集,給定測(cè)試用例集T中的測(cè)試用例考慮執(zhí)行過(guò)測(cè)試用例、的每個(gè)版本\,將版本Vj 中每個(gè)模塊Modk的變更信息δ Jk和該測(cè)試用例、在版本\的執(zhí)行結(jié)果合并成一個(gè)數(shù) 據(jù)向量< S J1, δ J2,..., δ J1, riJ> ;然后將測(cè)試用例、在各版本的數(shù)據(jù)向量合并成矩陣,構(gòu) 成測(cè)試用例、的訓(xùn)練集Trainseti ;針對(duì)測(cè)試用例ti;訓(xùn)練集Trainseti = [ Δ,Ri],是一個(gè) η’ X (1+1)的矩陣,其中Δ (η’,1)取自模塊變更數(shù)據(jù)矩陣Δ (η, 1),且不考慮未執(zhí)行用例 、的版本氓是一個(gè)η’ Xl向量,是測(cè)試用例執(zhí)行結(jié)果矩陣R(m,η)中第i行的轉(zhuǎn)置,表示 測(cè)試用例、在η個(gè)版本中的執(zhí)行結(jié)果,同樣不考慮未執(zhí)行用例、的版本。上述步驟3)分類挖掘訓(xùn)練和預(yù)測(cè)中選擇貝葉斯分類模型HNB和AODE進(jìn)行訓(xùn)練 和預(yù)測(cè)的過(guò)程是載入這兩個(gè)模型并進(jìn)行初始化,其中載入HNB時(shí)以默認(rèn)方式初始化;載入 AODE時(shí)設(shè)置最小頻度f(wàn)req,缺省情況取1 ;若訓(xùn)練集較大時(shí)增加freq值。對(duì)每個(gè)測(cè)試用例
載入對(duì)應(yīng)的訓(xùn)練集Trainseti進(jìn)行訓(xùn)練;當(dāng)訓(xùn)練集較大時(shí)設(shè)置最大訓(xùn)練步數(shù)和最大訓(xùn)練 時(shí)間。組織新版本的模塊變更信息,填入檢驗(yàn)集Testseti = [Anew, θ J,其中新版本模塊變 更向量Δη = { δ ^new, δ 2,new, ...,δ ^neJ ;將檢驗(yàn)集代入上一個(gè)步驟訓(xùn)練好的分類挖掘模 型,預(yù)測(cè)出測(cè)試用例、在新版本的執(zhí)行結(jié)果θ i,這個(gè)值是浮點(diǎn)值(處于O和1之間),代表 測(cè)試用例^能夠發(fā)現(xiàn)新版本中軟件缺陷的概率;綜合所有測(cè)試用例的預(yù)測(cè)結(jié)果,最終輸出 是一個(gè)三元組集合 Prof = Kti, θ ” type〉Iti e t,0< Qi 彡 1,1 ^ i ^ m, type e {HNB, AODE}}。上述步驟4)的測(cè)試用例優(yōu)先化排序的過(guò)程是首先取測(cè)試用例、對(duì)應(yīng)的Prof集 合中兩個(gè)三元組,將其中的兩個(gè)θ 和取平均值,得到測(cè)試用例^發(fā)現(xiàn)新版本軟件缺陷的 最終預(yù)測(cè)概率Pi ;然后根據(jù)每個(gè)測(cè)試用例發(fā)現(xiàn)軟件缺陷的最終概率Pi對(duì)所有測(cè)試用例進(jìn)行 排序;最后根據(jù)回歸測(cè)試階段的最大允許時(shí)間timemax,選取在timemax內(nèi)能夠完成的前m’個(gè) 測(cè)試用例構(gòu)成最終的回歸測(cè)試用例集。本發(fā)明方法考慮到缺陷通常由新的修改導(dǎo)致,而新的修改又通常只占據(jù)全部代碼 的一部分;基于最近的代碼變更,結(jié)合測(cè)試用例在以往版本上的執(zhí)行歷史,采用貝葉斯分類 挖掘模型預(yù)測(cè)各測(cè)試用例在新版本中發(fā)現(xiàn)軟件缺陷的概率,指導(dǎo)完成對(duì)測(cè)試用例的優(yōu)先選取。本發(fā)明能夠以較少的測(cè)試用例數(shù)量更快更多發(fā)現(xiàn)新版本軟件缺陷。實(shí)證數(shù)據(jù)表明使用 本發(fā)明方法優(yōu)先排序的測(cè)試用例執(zhí)行序列在發(fā)現(xiàn)新版本軟件缺陷效率方面遠(yuǎn)遠(yuǎn)優(yōu)于原始 測(cè)試用例序列,接近最理想排序的效果。
下面結(jié)合附圖進(jìn)行詳細(xì)說(shuō)明。


圖1是基于分類挖掘和版本變更的測(cè)試用例優(yōu)先化方法總體流程圖,
圖2是測(cè)試數(shù)據(jù)預(yù)處理的流程圖,
圖3是記錄不同版本下測(cè)試用例執(zhí)行結(jié)身艮信息的數(shù)據(jù)矩陣,
圖4是模塊變更數(shù)據(jù)預(yù)處理的流程圖,
圖5是記錄不同版本下模塊變更信息的_女據(jù)矩陣,
圖6是分類挖掘訓(xùn)練集構(gòu)建的流程圖,
圖7是每個(gè)測(cè)試用例的分類挖掘訓(xùn)練集的組織結(jié)構(gòu)示意圖,
圖8是分類挖掘訓(xùn)練和預(yù)測(cè)的流程圖,
圖9是利用預(yù)測(cè)結(jié)果完成測(cè)試用例優(yōu)先化排序的處理流程圖。
具體實(shí)施例方式如圖1所示,本發(fā)明方法處理流程包含歷史數(shù)據(jù)預(yù)處理、分類挖掘訓(xùn)練集構(gòu)建、分 類挖掘訓(xùn)練和預(yù)測(cè)、以及測(cè)試用例優(yōu)先化排序四個(gè)模塊。其中歷史數(shù)據(jù)預(yù)處理模塊負(fù)責(zé)收 集和提取不同版本下測(cè)試用例執(zhí)行結(jié)果,以及模塊變更的歷史數(shù)據(jù),轉(zhuǎn)化成后續(xù)處理所需 的不同版本下測(cè)試用例執(zhí)行結(jié)果數(shù)據(jù)矩陣和模塊變更數(shù)據(jù)矩陣;分類挖掘訓(xùn)練集構(gòu)建模塊 利用不同版本下測(cè)試用例執(zhí)行結(jié)果數(shù)據(jù)矩陣和模塊變更數(shù)據(jù)矩陣,為每個(gè)測(cè)試用例建立分 類挖掘訓(xùn)練時(shí)所需的訓(xùn)練集;分類挖掘訓(xùn)練和預(yù)測(cè)模塊采用不同的分類挖掘模型,基于每 個(gè)測(cè)試用例的訓(xùn)練集進(jìn)行訓(xùn)練,采用訓(xùn)練后模型預(yù)測(cè)測(cè)試用例在新版本中的執(zhí)行結(jié)果;最 后測(cè)試用例優(yōu)先化排序模塊跟據(jù)預(yù)測(cè)的執(zhí)行結(jié)果,對(duì)所有測(cè)試用例進(jìn)行優(yōu)先化排序,優(yōu)先 執(zhí)行排在前面的測(cè)試用例。下面詳細(xì)介紹每個(gè)模塊的實(shí)施步驟模塊1是歷史數(shù)據(jù)預(yù)處理模塊,包含測(cè)試數(shù)據(jù)預(yù)處理和模塊變更數(shù)據(jù)預(yù)處理兩個(gè) 部分。圖2所示為測(cè)試數(shù)據(jù)預(yù)處理流程。首先收集并組織各個(gè)版本下測(cè)試用例的執(zhí)行結(jié)果 信息。第一步先確定測(cè)試用例執(zhí)行結(jié)果矩陣的版本數(shù)η和測(cè)試用例數(shù)m。令軟件系統(tǒng)的版 本數(shù)量為n,版本集合V= {Vl,V2,...,Vn};共有m個(gè)相異的測(cè)試用例,測(cè)試用例集T= It1, t2,...,tm}。然后建立如表1所示的測(cè)試用例執(zhí)行結(jié)果矩陣R(m,η) = [ι^]ωΧη,其中rij為 矩陣元素,表示測(cè)試用例、在版本\上的執(zhí)行結(jié)果。共有三個(gè)取值0表示測(cè)試通過(guò);1 表示測(cè)試未通過(guò);null (空值)表示在版本\中測(cè)試用例、未被執(zhí)行過(guò)。矩陣中所有元素 riJ先初始化為皿11,然后根據(jù)測(cè)試用例、在版本\上的執(zhí)行結(jié)果對(duì)矩陣中各元素進(jìn)行 賦值。圖4是版本變更數(shù)據(jù)預(yù)處理的流程圖。首先確定軟件系統(tǒng)包含的模塊數(shù)量。令 軟件系統(tǒng)包含1個(gè)模塊(模塊的劃分標(biāo)準(zhǔn)根據(jù)軟件系統(tǒng)特征和測(cè)試覆蓋粒度來(lái)定義,如將 Java程序的一個(gè)對(duì)象定義為一個(gè)模塊),于是軟件系統(tǒng)System = (Mod1, Mod2, ... , Mod1I。 接下來(lái)需要確定樣例版本%。樣例版本用來(lái)作為版本變更的參照標(biāo)準(zhǔn),選取樣例版本可遵循以下標(biāo)準(zhǔn)第一樣例版本應(yīng)該是一個(gè)的穩(wěn)定版本,功能和結(jié)構(gòu)完整,第二樣例版本應(yīng)該包 含軟件系統(tǒng)System的所有模塊,第三樣例版本應(yīng)該是測(cè)試用例執(zhí)行出錯(cuò)幾率最小的版本, 即質(zhì)量最穩(wěn)定的版本。基于樣例版本V(l,以模塊為單位構(gòu)建版本變更矩陣Δ (n,1) = [ δ Jk] nX1,如圖5所示。其中變更矩陣元素δ #表示版本、跟樣例版本V(l相比較在模塊Modk上 是否發(fā)生變更。有兩個(gè)取值0表示版本\跟樣例版本Vtl相比較,在模塊Modk上未發(fā) 生變更;1表示版本\在模塊Modk上相對(duì)樣例版本Y0有變更。模塊2是分類挖掘訓(xùn)練集構(gòu)建模塊,其處理流程如圖6所示。訓(xùn)練集構(gòu)建基于模 塊變更跟測(cè)試用例相關(guān)聯(lián)的假設(shè)每個(gè)測(cè)試用例^對(duì)于不同模塊缺陷具有不同程度的檢測(cè) 能力,而新缺陷是由于新版本中某些模塊中發(fā)生變更引入的;在某個(gè)模塊發(fā)生變更時(shí),一些 測(cè)試用例會(huì)更敏感,即其缺陷檢測(cè)能力將高于其他測(cè)試用例,于是模塊變更同測(cè)試用例的 執(zhí)行結(jié)果具有關(guān)聯(lián)性,可通過(guò)分類挖掘予以分析和測(cè)定。如圖6所示,為每個(gè)測(cè)試用例構(gòu)建分類挖掘訓(xùn)練集。給定測(cè)試用例集T中的測(cè)試 用例ti;考慮執(zhí)行過(guò)用例、的每個(gè)版本\,將版本\中每個(gè)模塊Modk的變更信息δ Jk和該 用例、在版本、執(zhí)行結(jié)果合并成一個(gè)數(shù)據(jù)向量< δ f δ J2,...,;然后將用例 、在各版本的數(shù)據(jù)向量合并成矩陣,構(gòu)成用例、的訓(xùn)練集Trainsetit5每個(gè)訓(xùn)練集的組織結(jié)構(gòu)如圖7所示。對(duì)測(cè)試用例、,訓(xùn)練集Trainseti = [ Δ,Ri], 是一個(gè)η’ X (1+1)的矩陣。其中Δ(η’,1)取自模塊變更數(shù)據(jù)矩陣Δ (η,1),不考慮未執(zhí)行 用例、的版本氓是一個(gè)η’ Xl向量,是測(cè)試用例執(zhí)行結(jié)果矩陣R(m,η)中第i行的轉(zhuǎn)置, 表示測(cè)試用例、在η個(gè)版本中的執(zhí)行結(jié)果,同樣不考慮未執(zhí)行用例、的版本。在分類挖掘中,訓(xùn)練集由一組記錄(Record)組成,每個(gè)記錄分成屬性 (Attribute)和類標(biāo)簽(Class Label),類標(biāo)簽對(duì)應(yīng)分類結(jié)果。在這里,訓(xùn)練集的一行作為 一個(gè)記錄,前1列即1個(gè)模塊的變更情況作為屬性,最后一列既執(zhí)行結(jié)果作為類標(biāo)簽。模塊3是分類挖掘訓(xùn)練和預(yù)測(cè)模塊,其處理流程如圖8所示。本發(fā)明方法在分類 挖掘訓(xùn)練和預(yù)測(cè)部分選用HNB和AODE這兩個(gè)貝葉斯分類模型。AODE是一種半樸素貝葉斯 技術(shù),同樸素貝葉斯技術(shù)相比,降低了屬性間相互獨(dú)立性要求,能夠在實(shí)際應(yīng)用中有效提高 分類結(jié)果的準(zhǔn)確性。HNB是另一種貝葉斯技術(shù),結(jié)合簡(jiǎn)單貝葉斯模型和貝葉斯網(wǎng)絡(luò)模型的優(yōu) 點(diǎn),同時(shí)克服了簡(jiǎn)單貝葉斯模型的屬性獨(dú)立假設(shè),以及貝葉斯網(wǎng)絡(luò)結(jié)構(gòu)學(xué)習(xí)耗時(shí)的缺點(diǎn)。如圖8所示,在步驟3. 1中分別載入這兩個(gè)模型并進(jìn)行初始化。由于HNB不需要設(shè) 置任何參數(shù),因此在載入HNB時(shí)以默認(rèn)方式初始化。對(duì)于A0DE,需要設(shè)置最小頻度f(wàn)req,該 參數(shù)為整數(shù),表示出現(xiàn)至少freq次的組合予以考慮。正常情況取1即可;若訓(xùn)練集較大,也 可適當(dāng)增加freq的值,減少偶然組合的影響。在步驟3. 2中,對(duì)每個(gè)測(cè)試用例ti;載入對(duì)應(yīng) 的訓(xùn)練集Trainseti進(jìn)行訓(xùn)練。當(dāng)訓(xùn)練集較大時(shí),可設(shè)置最大訓(xùn)練步數(shù)和最大訓(xùn)練時(shí)間。在 步驟3. 3中,準(zhǔn)備好新版本的模塊變更信息,以訓(xùn)練集相同的格式要求填入檢驗(yàn)集Testseti =[Δ·,OiJ0其中新版本變更信息集合Δ· = { δ ^new, δ2,·,...,δ f},代表新版本 中的模塊變更向量。將檢驗(yàn)集代入上一個(gè)步驟訓(xùn)練好的分類挖掘模型,預(yù)測(cè)出測(cè)試用例、 在新版本的執(zhí)行結(jié)果θ i,這個(gè)值是浮點(diǎn)值(處于O和1之間),代表測(cè)試用例、能夠發(fā)現(xiàn) 新版本中軟件缺陷的概率。綜合所有測(cè)試用例的預(yù)測(cè)結(jié)果,模塊3的最終輸出是一個(gè)三元組集合Prof = Kti, θ ” type) Iti e t,0 < θ i 彡 1,1 彡 i 彡 m,type e {HNB, A0DE}},其中、為測(cè)試用例;type是選用的分類模型;概率θ i表示測(cè)試用例ti能夠發(fā)現(xiàn)新版本軟件缺陷的概率, θ i越高表示測(cè)試用例^的價(jià)值越高,越值得優(yōu)先測(cè)試。模塊4是測(cè)試用例優(yōu)先化排序模塊,其處理流程如圖9所示。由于本發(fā)明方法采 用HNB和AODE兩個(gè)貝葉斯分類挖掘模型分別預(yù)測(cè),在步驟4. 1中首先取測(cè)試用例、對(duì)應(yīng) 的Prof集合中兩個(gè)三元組,將其中的兩個(gè)θ i求和取平均值,得到測(cè)試用例、發(fā)現(xiàn)新版本 軟件缺陷的最終預(yù)測(cè)概率Pi。然后在步驟4. 2中,根據(jù)每個(gè)測(cè)試用例發(fā)現(xiàn)軟件缺陷的最終 概率Pi對(duì)所有測(cè)試用例進(jìn)行排序。最后在步驟4. 3中,考慮回歸測(cè)試階段的時(shí)間是有限的, 令回歸測(cè)試的總時(shí)間為timemax,選取在timemax內(nèi)能夠完成的前m’個(gè)測(cè)試用例構(gòu)成最終的 回歸測(cè)試用例集。為驗(yàn)證本發(fā)明方法的有效性,設(shè)計(jì)實(shí)驗(yàn)選取7個(gè)軟件系統(tǒng)的歷史測(cè)試數(shù)據(jù)和 版本數(shù)據(jù)集完成測(cè)試用例優(yōu)先化。這7個(gè)軟件系統(tǒng)分別是r印lace,printtokens, printtokens2, schedule, schedule2, teas及totinfo。它們是軟件測(cè)試領(lǐng)域權(quán)威的公開 數(shù)據(jù)集,最初由西門子公司的研究人員建立。實(shí)驗(yàn)采用WEKA提供的HNB和AODE分類挖掘 模型實(shí)現(xiàn)。WEKA是Java語(yǔ)言實(shí)現(xiàn)的數(shù)據(jù)挖掘平臺(tái),在數(shù)據(jù)挖掘領(lǐng)域得到了廣泛的認(rèn)可和應(yīng) 用。實(shí)驗(yàn)選擇M1準(zhǔn)則衡量?jī)?yōu)先化方法的有效性。M1是公認(rèn)的評(píng)價(jià)黑盒測(cè)試有效性的 準(zhǔn)則,M1考慮測(cè)試執(zhí)行過(guò)程中已檢測(cè)到缺陷的測(cè)試用例占能夠檢測(cè)到缺陷的用例總數(shù)比例 的變化,不考慮是否檢測(cè)到重復(fù)的缺陷。M1計(jì)算公式如下M1 = 2 U_
mxYlJ'其中m為測(cè)試集規(guī)模,f,代表測(cè)試用例是否能夠檢測(cè)到缺陷(對(duì)應(yīng)、在新版本的 執(zhí)行結(jié)果0表示未檢測(cè)到缺陷,1表示能夠檢測(cè)缺陷。表 1
Optimal本發(fā)明方法Originalprinttokens99. 1654. 1235. 13printtokens297. 2885. 9232. 78schedule98. 3262. 3725. 70schedule294. 4262. 4226. 54totinfo95. 9882. 5344. 45replace94. 3981. 5244. 16
8 表1所示是本發(fā)明方法在7個(gè)西門子數(shù)據(jù)集上的M1值。其中Optimal是理想化的 最優(yōu)測(cè)試用例排序,是逆向推導(dǎo)的排序,由于事先不可預(yù)知測(cè)試用例在新版本的執(zhí)行結(jié)果, 所以O(shè)ptimal代表M1上界,且不可達(dá)成。Original是沒(méi)有經(jīng)過(guò)排序的原始測(cè)試用例序列。 綜合上表的數(shù)據(jù),本發(fā)明方法取得的M1值在各個(gè)數(shù)據(jù)集上均遠(yuǎn)遠(yuǎn)優(yōu)于未排序的原始測(cè)試序 列,接近理想的Optimal序列的效果。
權(quán)利要求
一種基于分類挖掘和版本變更的測(cè)試用例優(yōu)先化方法,其特征在于包括以下步驟1)歷史數(shù)據(jù)預(yù)處理收集不同版本下的測(cè)試用例執(zhí)行結(jié)果和模塊變更的信息,轉(zhuǎn)化成不同版本下測(cè)試用例執(zhí)行結(jié)果數(shù)據(jù)矩陣和不同版本間模塊變更數(shù)據(jù)矩陣;2)分類挖掘訓(xùn)練集構(gòu)建根據(jù)步驟1)得到的兩個(gè)數(shù)據(jù)矩陣,為每個(gè)測(cè)試用例建立分類挖掘訓(xùn)練和預(yù)測(cè)所需訓(xùn)練集;3)分類挖掘訓(xùn)練和預(yù)測(cè)選擇貝葉斯分類HNB和AODE兩個(gè)分類挖掘模型,對(duì)每個(gè)測(cè)試用例采用對(duì)應(yīng)的訓(xùn)練集進(jìn)行模型訓(xùn)練;根據(jù)訓(xùn)練好的模型預(yù)測(cè)新版本中每個(gè)測(cè)試用例發(fā)現(xiàn)軟件缺陷的概率;4)測(cè)試用例優(yōu)先化排序根據(jù)模型預(yù)測(cè)的綜合結(jié)果,結(jié)合回歸測(cè)試執(zhí)行的時(shí)間限制,對(duì)測(cè)試用例進(jìn)行優(yōu)先化排序。
2.根據(jù)權(quán)利要求1所述的基于分類挖掘和版本變更的測(cè)試用例優(yōu)先化方法,其特征在 于步驟1)中執(zhí)行結(jié)果數(shù)據(jù)矩陣的轉(zhuǎn)化過(guò)程為收集每個(gè)版本\下各測(cè)試用例、的執(zhí)行結(jié) 果1^.,構(gòu)建測(cè)試用例執(zhí)行結(jié)果數(shù)據(jù)矩陣R(m,n) = [ru]mXn,其中m為測(cè)試用例數(shù)量;η為軟 件版本數(shù)量為矩陣元素,表示測(cè)試用例^在軟件版本\上的執(zhí)行結(jié)果,共有三個(gè)取 值0表示測(cè)試通過(guò);1表示測(cè)試未通過(guò);null (空值)表示在版本\中測(cè)試用例、未被執(zhí) 行過(guò)。
3.根據(jù)權(quán)利要求1或2所述的基于分類挖掘和版本變更的測(cè)試用例優(yōu)先化方法,其特 征在于步驟1)中模塊變更數(shù)據(jù)矩陣的轉(zhuǎn)化過(guò)程為選定樣例版本Vtl ;參照版本V(l,收集每 個(gè)版本、中各模塊Modk的變更情況δ Λ,構(gòu)建模塊變更矩陣Δ (η,1) = [ δ Λ]ηΧ1,其中1 為軟件包含的模塊數(shù)量;矩陣元素S Jk表示版本\同樣例版本Y0在模塊Modk上相比是否 發(fā)生變更,共有兩個(gè)取值0表示版本\跟樣例版本Vtl相比較,在模塊Modk上未發(fā)生變更; 1表示版本\跟樣例版本%相比較,在模塊Modk上發(fā)生變更。
4.根據(jù)權(quán)利要求1或2所述的基于分類挖掘和版本變更的測(cè)試用例優(yōu)先化方法,其特 征在于步驟2)的分類挖掘訓(xùn)練集構(gòu)建過(guò)程是為每個(gè)測(cè)試用例構(gòu)建分類挖掘訓(xùn)練集,給定 測(cè)試用例集T中的測(cè)試用例、,考慮執(zhí)行過(guò)測(cè)試用例、的每個(gè)版本\,將版本\中每個(gè)模塊 Modk的變更信息δ Λ和該測(cè)試用例、在版本\的執(zhí)行結(jié)果合并成一個(gè)數(shù)據(jù)向量< δ J1, δ j2,. . .,δ J1, riJ> ;然后將測(cè)試用例、在各版本的數(shù)據(jù)向量合并成矩陣,構(gòu)成測(cè)試用例、 的訓(xùn)練集Trainseti ;針對(duì)測(cè)試用例、,訓(xùn)練集Trainseti = [ Δ ,Ri],是一個(gè)η,X (1+1)的 矩陣,其中Δ (η’,1)取自模塊變更數(shù)據(jù)矩陣Δ (η, 1),且不考慮未執(zhí)行用例、的版本氓是 一個(gè)η’ Xl向量,是測(cè)試用例執(zhí)行結(jié)果矩陣R(m,n)中第i行的轉(zhuǎn)置,表示測(cè)試用例、在η 個(gè)版本中的執(zhí)行結(jié)果,同樣不考慮未執(zhí)行用例、的版本。
5.
6.根據(jù)權(quán)利要求1或2所述的基于分類挖掘和版本變更的測(cè)試用例優(yōu)先化方法,其特 征在于步驟3)中分類挖掘訓(xùn)練和預(yù)測(cè)中選擇貝葉斯分類模型HNB和AODE進(jìn)行訓(xùn)練和預(yù)測(cè) 的過(guò)程是載入這兩個(gè)模型并進(jìn)行初始化,其中載入HNB時(shí)以默認(rèn)方式初始化;載入AODE 時(shí)設(shè)置最小頻度f(wàn)req,缺省情況取1 ;若訓(xùn)練集較大時(shí)增加freq值。對(duì)每個(gè)測(cè)試用例、,載 入對(duì)應(yīng)的訓(xùn)練集Trainseti進(jìn)行訓(xùn)練;當(dāng)訓(xùn)練集較大時(shí)設(shè)置最大訓(xùn)練步數(shù)和最大訓(xùn)練時(shí)間。 組織新版本的模塊變更信息,填入檢驗(yàn)集Testseti = [Anew, θ J,其中新版本模塊變更向 量Δ· = { δ i,■,δ 2,■,...,δ ^neJ ;將檢驗(yàn)集代入上一個(gè)步驟訓(xùn)練好的分類挖掘模型, 預(yù)測(cè)出測(cè)試用例、在新版本的執(zhí)行結(jié)果θ i,這個(gè)值是浮點(diǎn)值(處于O和1之間),代表測(cè)試用例^能夠發(fā)現(xiàn)新版本中軟件缺陷的概率;綜合所有測(cè)試用例的預(yù)測(cè)結(jié)果,最終輸出是 一個(gè)三元組集合 Prof = Kti, θ ” type) Iti e t,0 < θ j ^ 1,1 ^ i ^ m, type e {HNB, AODE}}。
7.根據(jù)權(quán)利要求1或2所述的基于分類挖掘和版本變更的測(cè)試用例優(yōu)先化方法,其特 征在于步驟4)的測(cè)試用例優(yōu)先化排序的過(guò)程是首先取測(cè)試用例、對(duì)應(yīng)的Prof集合中兩 個(gè)三元組,將其中的兩個(gè)θ 和取平均值,得到測(cè)試用例^發(fā)現(xiàn)新版本軟件缺陷的最終預(yù) 測(cè)概率Pi ;然后根據(jù)每個(gè)測(cè)試用例發(fā)現(xiàn)軟件缺陷的最終概率Pi對(duì)所有測(cè)試用例進(jìn)行排序; 最后根據(jù)回歸測(cè)試階段的最大允許時(shí)間timemax,選取在timemax內(nèi)能夠完成的前m’個(gè)測(cè)試 用例構(gòu)成最終的回歸測(cè)試用例集。
全文摘要
本發(fā)明公開了一種基于分類挖掘和版本變更的測(cè)試用例優(yōu)先化方法,首先收集不同版本下的測(cè)試用例執(zhí)行結(jié)果和模塊變更的信息,轉(zhuǎn)化成測(cè)試用例執(zhí)行結(jié)果數(shù)據(jù)矩陣和模塊變更數(shù)據(jù)矩陣;再為每個(gè)測(cè)試用例建立分類挖掘訓(xùn)練和預(yù)測(cè)所需訓(xùn)練集;選擇貝葉斯分類HNB和AODE兩個(gè)分類挖掘模型,對(duì)每個(gè)測(cè)試用例采用對(duì)應(yīng)的訓(xùn)練集進(jìn)行模型訓(xùn)練;根據(jù)訓(xùn)練好的模型預(yù)測(cè)新版本中每個(gè)測(cè)試用例發(fā)現(xiàn)軟件缺陷的概率;根據(jù)模型預(yù)測(cè)的綜合結(jié)果,結(jié)合回歸測(cè)試執(zhí)行的時(shí)間限制,對(duì)測(cè)試用例進(jìn)行優(yōu)先化排序。本發(fā)明能夠以較少的測(cè)試用例數(shù)量更快更多發(fā)現(xiàn)新版本軟件缺陷。
文檔編號(hào)G06F11/36GK101908020SQ20101026402
公開日2010年12月8日 申請(qǐng)日期2010年8月27日 優(yōu)先權(quán)日2010年8月27日
發(fā)明者張孟樂(lè), 趙海鋼, 陳道蓄, 顧慶 申請(qǐng)人:南京大學(xué)
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
东台市| 安图县| 永顺县| 马公市| 石河子市| 新津县| 桑日县| 什邡市| 怀安县| 绥芬河市| 二连浩特市| 福建省| 井研县| 贵溪市| 平顺县| 吉隆县| 景泰县| 长乐市| 旌德县| 资溪县| 河曲县| 平乐县| 米易县| 修水县| 五华县| 龙门县| 兴宁市| 丹棱县| 舞钢市| 荣昌县| 宝山区| 焉耆| 宝丰县| 介休市| 黔西| 乐昌市| 正安县| 楚雄市| 湘潭市| 进贤县| 五台县|