一種面向修訂的條件判定覆蓋的測(cè)試數(shù)據(jù)自動(dòng)生成方法
【專利摘要】本發(fā)明公開了一種面向修訂的條件判定覆蓋的測(cè)試數(shù)據(jù)自動(dòng)生成方法。本發(fā)明通過對(duì)每個(gè)分支節(jié)點(diǎn)按修訂的條件判定覆蓋準(zhǔn)則尋找可覆蓋該分支節(jié)點(diǎn)的測(cè)試數(shù)據(jù)產(chǎn)生待測(cè)源代碼的測(cè)試數(shù)據(jù)集。其中,對(duì)個(gè)分支節(jié)點(diǎn)按修訂的條件判定覆蓋準(zhǔn)則尋找可覆蓋該分支節(jié)點(diǎn)的測(cè)試數(shù)據(jù)通過以下方法實(shí)現(xiàn):首先通過隨機(jī)方法構(gòu)建輸入向量集,然后對(duì)輸入向量集的運(yùn)行分析,再通過線性擬合的手段擴(kuò)展輸入向量集,經(jīng)重復(fù)迭代,獲得可覆蓋該節(jié)點(diǎn)面向修訂的條件判定的測(cè)試數(shù)據(jù)。本發(fā)明方法高度自動(dòng)化,能夠盡可能的提高單元測(cè)試的效率,降低測(cè)試成本,并且支持面向修訂的條件判定覆蓋準(zhǔn)則。
【專利說明】一種面向修訂的條件判定覆蓋的測(cè)試數(shù)據(jù)自動(dòng)生成方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及一種測(cè)試數(shù)據(jù)自動(dòng)生成方法,特別涉及自動(dòng)化單元測(cè)試中修改的條件 判定覆蓋測(cè)試的測(cè)試用例數(shù)據(jù)的生成方法。
【背景技術(shù)】
[0002] 測(cè)試技術(shù)是保障軟件系統(tǒng)質(zhì)量最重要和最有效的方法之一,一直以來也是工業(yè)界 保證軟件系統(tǒng)正確性最主要的手段。受計(jì)算能力和時(shí)間、空間資源的限制,測(cè)試無法窮盡軟 件所有可能的執(zhí)行,實(shí)踐中,各種測(cè)試充分度準(zhǔn)則被用于驅(qū)動(dòng)和評(píng)估測(cè)試過程。因此,面向 給定的測(cè)試充分度準(zhǔn)則,如何生成對(duì)應(yīng)的測(cè)試用例集合,以驅(qū)動(dòng)程序的執(zhí)行覆蓋相應(yīng)的結(jié) 構(gòu),成為測(cè)試過程中最關(guān)鍵的技術(shù)環(huán)節(jié)。目前測(cè)試用例的設(shè)計(jì)基本依靠人工手動(dòng)完成,不僅 費(fèi)時(shí)費(fèi)力,而且用例的有效性也難以得到保證。如何自動(dòng)地為各種測(cè)試充分度準(zhǔn)則生成有 效的測(cè)試用例,已成為測(cè)試技術(shù)研究的熱點(diǎn)問題之一。
[0003] 面向修改的條件/判定的測(cè)試覆蓋(簡(jiǎn)稱:MC/DC,即Modified Condition/ Decision Coverage)準(zhǔn)則,是應(yīng)用較廣泛的一種白箱測(cè)試充分度準(zhǔn)則,尤其適用于安全要 求較高的航空航天、醫(yī)藥等領(lǐng)域。它要求設(shè)計(jì)足夠的測(cè)試用例,使得判定中每個(gè)條件的所有 可能取值至少執(zhí)行一次,同時(shí)每個(gè)判定的所有可能判定結(jié)果至少執(zhí)行一次,并且每個(gè)條件 能夠獨(dú)立地影響判定。條件獨(dú)立地影響判定是指在其他條件不變的前提下僅改變條件的值 而使判定結(jié)果改變。舉例來說,判定語句S = A and(B or C),其中,A、B、C為判定中的條件。 A、B、C的取值有8種組合,用集合為:{TTT,TTF,TFT,TFF,F(xiàn)TT,F(xiàn)TF,F(xiàn)FT,F(xiàn)FF},其中,每個(gè) 條件能夠獨(dú)立地影響判定的情形有:{TTF,TFF,TFT,F(xiàn)FT}。也即,當(dāng)保持AC為TF時(shí),B的取 值可以獨(dú)立確定判定語句S的值;當(dāng)AB為TF時(shí),C的取值可以獨(dú)立確定判定語句S的值; 當(dāng)BC為FT時(shí),A的取值可以獨(dú)立確定判定語句S的值。
[0004] 理論研究已經(jīng)證明,不存在通用有效的算法可以為程序中任意判定的任意條件取 值組合生成測(cè)試輸入。已有的研究工作可分為基于靜態(tài)分析和基于動(dòng)態(tài)執(zhí)行兩類方法。基 于靜態(tài)分析的方法無法有效的處理判定中的非線性約束條件,動(dòng)態(tài)方法容易陷入局部最優(yōu) 點(diǎn)而無法發(fā)現(xiàn)可行的輸入,它們?cè)谔幚韺?shí)際問題時(shí)存在很大的局限性。
[0005] 科學(xué)和工程問題中,通??梢圆捎弥T如采樣、實(shí)驗(yàn)等方法獲得若干離散的數(shù)據(jù),根 據(jù)這些數(shù)據(jù),我們往往希望得到一個(gè)逼近于實(shí)際函數(shù)或者更加密集的離散方程與已知數(shù)據(jù) 相吻合,這個(gè)過程叫做擬合。線性擬合是比較簡(jiǎn)單的擬合方式,數(shù)據(jù)點(diǎn)使用直線進(jìn)行連接, 結(jié)果是一個(gè)多邊形。線性擬合簡(jiǎn)單易用,它可以在比較短的時(shí)間內(nèi)得到逼近函數(shù),縮短了算 法自動(dòng)生成測(cè)試數(shù)據(jù)的前期工作量。
【發(fā)明內(nèi)容】
[0006] 本發(fā)明所要解決的問題是為待測(cè)試源程序自動(dòng)構(gòu)建測(cè)試數(shù)據(jù)(測(cè)試用例),使得 在這些測(cè)試數(shù)據(jù)下執(zhí)行待測(cè)試源程序能夠覆蓋該待測(cè)試源程序的所有判定的可能取值及 判定中所有條件的可能取值并表明每個(gè)條件獨(dú)立影響判定,完成修改的條件判定覆蓋測(cè) 試。
[0007] 為解決上述問題,本發(fā)明采用的方案如下:
[0008] -種面向修訂的條件判定覆蓋的測(cè)試數(shù)據(jù)自動(dòng)生成方法,包括分析待測(cè)源程序獲 得待測(cè)源程序所有路徑的集合和所有分支節(jié)點(diǎn)的集合BS以及分支節(jié)點(diǎn)的關(guān)聯(lián)路徑集的集 合的步驟,該方法還包括對(duì)分支節(jié)點(diǎn)集BS中的每一分支節(jié)點(diǎn)B執(zhí)行以下步驟:
[0009] S1 :根據(jù)B的關(guān)聯(lián)路徑集中各路徑上位于B(含B)之前的各分支節(jié)點(diǎn)的各個(gè)條件, 構(gòu)建關(guān)于輸入變量向量X的分支函數(shù)Fk^_ (X);所述輸入變量向量X為所述待測(cè)源程序輸 入變量構(gòu)成的向量;所述分支函數(shù)Fk^_(X)表示路徑k上第i個(gè)分支節(jié)點(diǎn)的第j個(gè)條件的 分支函數(shù);所述路徑k經(jīng)過分支節(jié)點(diǎn)B ;
[0010] S2 :構(gòu)建初始的輸入向量集U ;所述初始的輸入向量集U至少包含兩個(gè)輸入向量;
[0011] S3 :計(jì)算以輸入向量集U中每個(gè)輸入向量作為待測(cè)源程序的輸入執(zhí)行待測(cè)源程序 時(shí)與所述分支節(jié)點(diǎn)B關(guān)聯(lián)的各路徑k上位于B之前(含B)的每個(gè)分支節(jié)點(diǎn)上的各分支函 數(shù)F k&⑴獲得分支函數(shù)值的集合V以及最遠(yuǎn)公共分支節(jié)點(diǎn)mk;當(dāng)執(zhí)行待測(cè)源程序時(shí)的執(zhí) 行路徑經(jīng)過分支節(jié)點(diǎn)B時(shí)計(jì)算B的判定和判定中各個(gè)條件的取值;假如輸入向量集U中存 在一個(gè)輸入向量執(zhí)行待測(cè)源程序時(shí)執(zhí)行路徑經(jīng)過分支節(jié)點(diǎn)B且使B的判定或判定中某個(gè)條 件產(chǎn)生新的取值,則記錄該輸入向量作為所述分支節(jié)點(diǎn)B的一個(gè)測(cè)試數(shù)據(jù);假如所述分支 節(jié)點(diǎn)B的測(cè)試數(shù)據(jù)集覆蓋了 B的判定及判定中各條件所有可能取值并且每個(gè)條件都獨(dú)立影 響了判定,則返回該測(cè)試數(shù)據(jù)集作為所述分支節(jié)點(diǎn)B的測(cè)試數(shù)據(jù)集;
[0012] S4 :根據(jù)分支節(jié)點(diǎn)B的關(guān)聯(lián)路徑集中各路徑k上位于B之前(含B)的各個(gè)分支節(jié) 點(diǎn)上的各分支函數(shù)值的集合V以及最遠(yuǎn)公共節(jié)點(diǎn)m k構(gòu)建路徑k上位于最遠(yuǎn)公共節(jié)點(diǎn)mk之 前(含mk)的每個(gè)分支節(jié)點(diǎn)的各分支函數(shù)的擬合函數(shù)LF k,u ;LFk^表示路徑k上第i個(gè)分 支節(jié)點(diǎn)的第j個(gè)條件的分支函數(shù)的線性擬合函數(shù);
[0013] S5 :根據(jù)與B關(guān)聯(lián)的各路徑上位于B之前(含B)的每個(gè)分支節(jié)點(diǎn)中的各分支函數(shù) 的線性擬合函數(shù)LFk^_和待測(cè)源程序計(jì)算可行區(qū)間I ;
[0014] S6 :在可行區(qū)間I內(nèi)隨機(jī)選取各輸入變量的輸入值得到測(cè)試數(shù)據(jù)集加入至輸入向 量集U中;
[0015] S7 :重復(fù)執(zhí)行步驟S3至S6直到步驟S3至S6執(zhí)行的次數(shù)達(dá)到限定的次數(shù);
[0016] S8 :返回所有記錄的所述分支節(jié)點(diǎn)B的測(cè)試數(shù)據(jù)作為所述分支節(jié)點(diǎn)B的測(cè)試數(shù)據(jù) 集。
[0017] 進(jìn)一步,根據(jù)本發(fā)明的面向修訂的條件判定覆蓋的測(cè)試數(shù)據(jù)自動(dòng)生成方法,所述 步驟S2中所述的初始的輸入向量集U包含Ni+Ι個(gè)輸入向量,所述Ni為輸入變量的個(gè)數(shù); 初始的輸入向量集U = {uQ,Up u2, · · ·,uNi},其中
[0018] Ui = {Uu,Ui,2, · · ·,Ui,Ni};輸入向量uQ為隨機(jī)生成,Ui與uQ滿足關(guān)系: lij j _ Μη .·? r~H i 豐 / 1 F'irin >14 · ?,其中 e U,2,...,Ni}。 Wy隨機(jī),= j 進(jìn)一步,根據(jù)本發(fā)明的面向修訂的條件判定覆蓋的測(cè)試數(shù)據(jù)自動(dòng)生成方法,所述步驟 S3包括:
[0019] S31 :從輸入向量集U獲取未執(zhí)行的輸入向量ut ;
[0020] S32 :判斷未執(zhí)行的輸入向量ut是否存在;假如不存在未執(zhí)行的輸入向量,則執(zhí)行 步驟S34 ;否則執(zhí)行步驟S33 ;
[0021] S33 :根據(jù)ut執(zhí)行待測(cè)源代碼得到執(zhí)行的路徑與分支節(jié)點(diǎn)B的關(guān)聯(lián)路徑集中各路 徑k的公共分支節(jié)點(diǎn)!,計(jì)算路徑k上位于分支節(jié)點(diǎn)B之前(含B)的各分支節(jié)點(diǎn)的分支 函數(shù)〇〇的值,B的所有關(guān)聯(lián)路徑的各個(gè)分支節(jié)點(diǎn)的各分支函數(shù)F k^(X)的值構(gòu)成集合 V ;若執(zhí)行的路徑經(jīng)過分支節(jié)點(diǎn)B,則執(zhí)行的路徑為分支節(jié)點(diǎn)B的一條關(guān)聯(lián)路徑,根據(jù)該關(guān)聯(lián) 路徑上B的判定中各個(gè)條件的分支函數(shù)值得到分支節(jié)點(diǎn)B的判定和判定中各條件的取值; 假如B的判定或判定中條件產(chǎn)生了新的取值,則記錄該輸入向量作為所述分支節(jié)點(diǎn)B的一 個(gè)測(cè)試數(shù)據(jù);假如B的測(cè)試數(shù)據(jù)集覆蓋了 B的判定且判定中各條件所有可能取值并且每個(gè) 條件都獨(dú)立影響了判定,返回該測(cè)試數(shù)據(jù)集作為所述分支節(jié)點(diǎn)B的測(cè)試數(shù)據(jù)集并結(jié)束對(duì)整 個(gè)分支節(jié)點(diǎn)B生成測(cè)試數(shù)據(jù)的過程。
[0022] S34 :從分支B的各關(guān)聯(lián)路徑k記錄的{mu, mk,2, . . .,mk,TU}中選取最遠(yuǎn)公共分支 節(jié)點(diǎn)mk。
[0023] 進(jìn)一步,根據(jù)本發(fā)明的面向修訂的條件判定覆蓋的測(cè)試數(shù)據(jù)自動(dòng)生成方法,所述 步驟S4包括以下步驟:
[0024] S41 :輸入向量集U和B的關(guān)聯(lián)路徑集中各路徑k上位于B之前(含B)的各 個(gè)分支節(jié)點(diǎn)的各分支函數(shù)值的集合V以及最遠(yuǎn)公共節(jié)點(diǎn)m k構(gòu)建坐標(biāo)集Vk,y,z,j = {(u1;j, Fk,y,z (? j)),(? j,F(xiàn)k,y,z (u2,』)),· · ·,(uTU,』,Fk,y,z (uTU,);
[0025] S42 :以 Vk,y,z,』一{(u1; j,F(xiàn)k,y,z (i^,』)),(u2,』,F(xiàn)k,y,z (u2,』)),· · ·,(uTU,』,F(xiàn)k,y,z (uTU,』))}內(nèi) 兩個(gè)相鄰的坐標(biāo)點(diǎn)構(gòu)建Fk,y, z(Xj)的線性擬合函數(shù)LFk,y,z(Xj) = Pj*Xj+qj,得到參數(shù)集LFPQ k, i, j 一 { (Pi,Qi),(P2,%),···,(Pm,%i) };
[0026] 其中,Vk,y,u表示路徑k上第y個(gè)分支節(jié)點(diǎn)第z個(gè)分支函數(shù)對(duì)應(yīng)第j個(gè)輸入變量的 坐標(biāo)集,其中y ;ui;」為輸入向量集U中第i個(gè)輸入向量的第j個(gè)輸入變量的值;Fty, z (Xj) 為路徑k上第y個(gè)節(jié)點(diǎn)第z個(gè)分支函數(shù)關(guān)于第j個(gè)輸入變量的函數(shù);LFk, y,z(Xp為路徑k上 第y個(gè)節(jié)點(diǎn)第z個(gè)分支函數(shù)關(guān)于第j個(gè)輸入變量的線性擬合函數(shù);LFPQ k^.為路徑k上第i 個(gè)節(jié)點(diǎn)第j個(gè)分支函數(shù)的線性擬合函數(shù)的參數(shù)集。
[0027] 進(jìn)一步,根據(jù)本發(fā)明的面向修訂的條件判定覆蓋的測(cè)試數(shù)據(jù)自動(dòng)生成方法,所述 步驟S5包括:
[0028] S51 :計(jì)算分支節(jié)點(diǎn)B的各關(guān)聯(lián)路徑k上位于分支節(jié)點(diǎn)B之前(含B)的各個(gè)分支 節(jié)點(diǎn)中各分支函數(shù)的可行區(qū)間Dk, i;j ;
[0029] S52 :合并每個(gè)分支節(jié)點(diǎn)內(nèi)的各分支函數(shù)的可行區(qū)間Dk,i;j得到各分支節(jié)點(diǎn)的可行 區(qū)間D k;i ;
[0030] S53 :合并最遠(yuǎn)公共分支節(jié)點(diǎn)mk前的各分支節(jié)點(diǎn)的可行區(qū)間Dti得到分支節(jié)點(diǎn)B在 關(guān)聯(lián)路徑k上的可行區(qū)間I k。
[0031] S54 :合并分支節(jié)點(diǎn)B在各關(guān)聯(lián)路徑k上的可行區(qū)間Ik,得到分支節(jié)點(diǎn)B的可行區(qū) 間I。
[0032] 進(jìn)一步,根據(jù)本發(fā)明的面向修訂的條件判定覆蓋的測(cè)試數(shù)據(jù)自動(dòng)生成方法,所述 可行區(qū)間I = ΙΛ,12, . . .,IJ,其中,S為輸入變量的個(gè)數(shù),Ii為第i個(gè)輸入變量的可行區(qū) 間,Ii = Uu,Ii,2,. . .,,其中,為第i個(gè)輸入變量第j個(gè)可行分段區(qū)間,Mi為第i 個(gè)輸入變量可行分段區(qū)間數(shù),所述步驟S6中,當(dāng)Mi為1時(shí),從Ii為第i個(gè)輸入變量的可行 區(qū)間的唯一分段區(qū)間Iu的擴(kuò)展區(qū)間中隨機(jī)取值構(gòu)建測(cè)試數(shù)據(jù)。
[0033] -種機(jī)器可讀介質(zhì),該可讀介質(zhì)上存儲(chǔ)有指令集合,當(dāng)該指令集合被執(zhí)行時(shí),使得 該機(jī)器可執(zhí)行上述面向修訂的條件判定覆蓋的測(cè)試數(shù)據(jù)自動(dòng)生成方法。
[0034] 本發(fā)明的技術(shù)效果如下:
[0035] 1、本發(fā)明方法無需分析程序路徑上各語句之間的數(shù)據(jù)依賴關(guān)系,采用動(dòng)態(tài)執(zhí)行的 方式,自動(dòng)確定分支謂詞的線性擬合函數(shù),效率高。
[0036] 2、能有效地處理路徑中的非線性約束條件,并采用動(dòng)態(tài)步長(zhǎng)擴(kuò)張的方式,很好的 解決動(dòng)態(tài)方法容易陷入局部最優(yōu)點(diǎn)而無法發(fā)現(xiàn)可行的輸入的問題。
[0037] 3、能有效地處理路徑中的復(fù)合條件約束,將復(fù)合條件謂詞等價(jià)轉(zhuǎn)換成分支函數(shù)分 組,利用線性擬合函數(shù)快速的確定輸入變量的可用取值區(qū)間。
[0038] 4、約束求解器采用線性擬合的方法求解約束系統(tǒng),充分利用線性擬合函數(shù)簡(jiǎn)單 易用的優(yōu)點(diǎn);如果分支函數(shù)關(guān)于輸入變量是線性的,則獲得的線性擬合函數(shù)與函數(shù)本身完 全吻合,如果分支函數(shù)關(guān)于輸入變量是非線性的,則綜合在各個(gè)區(qū)間上得到的線性擬合函 數(shù),可以估算分支函數(shù)的大致情況,隨著程序的不斷執(zhí)行,用于函數(shù)賦值的數(shù)據(jù)越多,估算 得到的函數(shù)信息就越精確。理論上,當(dāng)計(jì)算擬合函數(shù)的區(qū)間足夠小時(shí),獲得的線性擬合函數(shù) 就能足夠貼近函數(shù)的真實(shí)情況,對(duì)自動(dòng)生成準(zhǔn)確的測(cè)試數(shù)據(jù)就更有指導(dǎo)意義。
[0039] 5、本發(fā)明方法高度自動(dòng)化,能夠盡可能的提高單元測(cè)試的效率,降低測(cè)試成本。
[0040] 6、本發(fā)明方法能夠很好的支持面向修改的條件/判定的測(cè)試覆蓋準(zhǔn)則。
【專利附圖】
【附圖說明】
[0041] 圖1是本發(fā)明待測(cè)源程序代碼例子。
[0042] 圖2是本發(fā)明步驟S3的流程圖。
【具體實(shí)施方式】
[0043] 下面結(jié)合說明書附圖對(duì)本發(fā)明做進(jìn)一步詳細(xì)說明。
[0044] -、CLFF測(cè)試數(shù)據(jù)自動(dòng)生成方法的基本原理
[0045] CLFF測(cè)試數(shù)據(jù)自動(dòng)生成方法,即基于線性擬合函數(shù)驅(qū)動(dòng)的測(cè)試數(shù)據(jù)自動(dòng)生成算 法,是線性擬合技術(shù)在測(cè)試數(shù)據(jù)自動(dòng)生成中的應(yīng)用。具體來說,首先對(duì)待測(cè)源程序進(jìn)行詞法 分析、語法分析及語義分析后獲得待測(cè)源程序所有路徑和所有分支節(jié)點(diǎn),然后針對(duì)每個(gè)分 支節(jié)點(diǎn)單獨(dú)生成一套測(cè)試數(shù)據(jù)(測(cè)試用例)使得該測(cè)試數(shù)據(jù)能夠覆蓋該節(jié)點(diǎn)的判定及判定 中各個(gè)條件的所有可能取值以及表明各條件獨(dú)立影響判定,每個(gè)分支節(jié)點(diǎn)對(duì)應(yīng)一套測(cè)試數(shù) 據(jù),測(cè)試源程序的所有分支節(jié)點(diǎn)能夠得到測(cè)試數(shù)據(jù)集。
[0046] 在為某分支節(jié)點(diǎn)生成測(cè)試數(shù)據(jù)時(shí),首先隨機(jī)生成一輸入數(shù)據(jù),然后根據(jù)該輸入數(shù) 據(jù)執(zhí)行待測(cè)源程序,分析其執(zhí)行結(jié)果,根據(jù)執(zhí)行結(jié)果通過線性擬合后構(gòu)造新的測(cè)試數(shù)據(jù),然 后根據(jù)新的測(cè)試數(shù)據(jù)執(zhí)行待測(cè)源程序,分析其執(zhí)行結(jié)果,再根據(jù)執(zhí)行結(jié)果通過線性擬合后 構(gòu)造新的測(cè)試數(shù)據(jù),重復(fù)上述步驟直到存在一組測(cè)試數(shù)據(jù)能夠覆蓋該分支節(jié)點(diǎn)的判定及判 定中各個(gè)條件的所有取值組合以及表明各條件獨(dú)立影響判定。此外,這里還存在被分析的 分支節(jié)點(diǎn)永遠(yuǎn)無法覆蓋判定/條件的所有取值組合或無法表明所有的條件都獨(dú)立影響判 定,在這種情形下,通過對(duì)循環(huán)計(jì)數(shù)直到循環(huán)次數(shù)達(dá)到某一限值時(shí)停止,然后將能夠覆蓋該 分支節(jié)點(diǎn)的判定及判定中條件某一種取值的輸入數(shù)據(jù)作為測(cè)試數(shù)據(jù)返回。
[0047] 因此,本發(fā)明的重點(diǎn)在于,如何根據(jù)執(zhí)行結(jié)果進(jìn)行線性擬合以及如何根據(jù)線性擬 合構(gòu)造新的測(cè)試數(shù)據(jù)。
[0048] 二、構(gòu)建分支函數(shù)
[0049] 本發(fā)明的步驟S1為根據(jù)所述分支節(jié)點(diǎn)B的關(guān)聯(lián)路徑集中每條路徑上位于B之前 (含B)的各分支節(jié)點(diǎn)的各個(gè)條件,構(gòu)建關(guān)于輸入變量向量X的分支函數(shù)F k^_(X)。這個(gè)步 驟簡(jiǎn)稱為構(gòu)建分支函數(shù)。
[0050] 分支節(jié)點(diǎn)的關(guān)聯(lián)路徑集:經(jīng)過分支節(jié)點(diǎn)的路徑的集合。
[0051] 條件有兩種,一種是布爾表達(dá)式:Bool (X);對(duì)于布爾表達(dá)式,分支函數(shù)Fj^jCX) =Β〇〇1(Χ)。另一種是包含條件運(yùn)算符的條件,表示為:L(X)rel R(X),rel e { >,彡, =,尹,<,<};這里rel表示條件運(yùn)算符,L(X)表示條件運(yùn)算符左側(cè)的表達(dá)式,R(X) 表示條件運(yùn)算符右側(cè)的表達(dá)式,那么,分支函數(shù)F k^_(X) =L(X) - R(X)。也就是說,分支 函數(shù)是條件的規(guī)范表示,任何條件都可以表示成如下格式:Fk^(X)re10, rel e { >,彡, =,尹,<,<}。通常每個(gè)分支節(jié)點(diǎn)上包含多個(gè)條件,進(jìn)行條件的規(guī)范表示后,與所述 分支節(jié)點(diǎn)B關(guān)聯(lián)的路徑k上第i個(gè)分支節(jié)點(diǎn)的邏輯表達(dá)式可以表示成:c k, i = Fk, Μ (X) 代110<^1?15,1, 2(乂)代120(^2...(^_1?15, 1,;3(乂)代1;30,這里(^表示與(六11(1)或或(〇1')的邏輯運(yùn) 算符,s表示路徑k上第i個(gè)分支節(jié)點(diǎn)上條件的數(shù)量。
[0052] 除了上述的規(guī)范表示外,構(gòu)建的分支函數(shù)還有一個(gè)參數(shù)的映射過程,也就是將分 支函數(shù)F k^_(X)的參數(shù)映射至輸入變量的向量X中使得分支函數(shù)Fk^_(X)是關(guān)于輸入變 量向量X的函數(shù)。對(duì)于特定的路徑k,分支函數(shù)F k^_(X)與輸入變量向量X之間的函數(shù)關(guān) 系是確定的。如圖1所示,由C語言編寫的example源代碼中,總共有6條路徑:分別為 : 路徑 1 :P1 - C1 - P2 - C2 - P4 - P6 ;路徑 2 :P1 - C1 - P2 - C2 - C3 - P5 - P6 ; 路徑 3 :P1 - Cl - P2 - C2 - C3 - P6 ;路徑 4 :P1 - Cl - P3 - C2 - P4 - P6 ;路徑 5 : P1 - Cl - P3 - C2 - C3 - P5 - P6 ;路徑 6 :P1 - Cl - P3 - C2 - C3 - P6。程序中一 共有三個(gè)分支節(jié)點(diǎn):Cl,C2, C3。與分支節(jié)點(diǎn)Cl關(guān)聯(lián)的路徑集:路徑1,2, 3,4, 5,6 ;與分支 節(jié)點(diǎn)C2關(guān)聯(lián)的路徑集:路徑1,2,3,4, 5,6 ;與分支節(jié)點(diǎn)C3關(guān)聯(lián)的路徑集:路徑2,3,5,6。 example函數(shù)有3個(gè)輸入分別為a,b,c,其中C2分支節(jié)點(diǎn)的條件為d+e>100,在路徑確定的 情形下,d和e相對(duì)于a, b, c的輸入是確定的,可以表示成d = D(a, b, c)和e = E(a, b, c), 則該條件的分支函數(shù)定義為= D(X) - E(X),X = {a, b,c}。由此,對(duì)于任一輸入 x= {ax,bx,cx},分支函數(shù)Fk^(X)均能直接計(jì)算得到一具體的函數(shù)值。以路徑4為例,d =(a - b)*2, e = b,由此可以得到C2分支節(jié)點(diǎn)的唯--個(gè)條件的分支函數(shù)F4,2>1 (a, b, c) =d+e - 100 = (a - b) *2+b - 100 = 2*a - b - 100。以路徑 2 為例,d = (a - b) *2, e =d = (a - b)*2,由此可以得到C2分支節(jié)點(diǎn)的唯--個(gè)條件的分支函數(shù)F2,2>1 (a, b, c)= d+e - 100 = (a - b)*4 - 100。也就是說,不同路徑下,同樣分支節(jié)點(diǎn)的同樣條件的分支 函數(shù)可能不同。但在確定了的路徑下,分支函數(shù)關(guān)于輸入變量的函數(shù)是確定了的。
[0053] 本步驟的輸入是待測(cè)源程序在分支節(jié)點(diǎn)B的關(guān)聯(lián)路徑集上每一路徑中位于B之前 (含B)的各分支節(jié)點(diǎn)的各個(gè)條件,輸出是相應(yīng)條件的分支函數(shù)F k^(X)。這里X為輸入變 量向量,由待測(cè)源程序輸入變量構(gòu)成的向量。分支函數(shù)Fk^_(X)表示路徑k上第i個(gè)分支 節(jié)點(diǎn)的第j個(gè)條件的分支函數(shù),i和j的取值范圍取決于分支節(jié)點(diǎn)所在路徑上的分支節(jié)點(diǎn) 數(shù)和各個(gè)分支節(jié)點(diǎn)上的條件數(shù)。
[0054] 需要說明的是,這里路徑是由對(duì)待測(cè)源程序進(jìn)行詞法分析、語法分析及語義分析, 最終分析得到待測(cè)試源程序程序路徑集中的某一條路徑,所述分支節(jié)點(diǎn)B是由程序路徑集 中所有路徑的分支節(jié)點(diǎn)組成的程序分支節(jié)點(diǎn)集中的某一個(gè)分支節(jié)點(diǎn)。本領(lǐng)域技術(shù)人員理 解,對(duì)待測(cè)源程序進(jìn)行詞法分析、語法分析屬于現(xiàn)有技術(shù),其具體實(shí)現(xiàn)細(xì)節(jié)也不是本發(fā)明所 要討論的主題范疇。本領(lǐng)域技術(shù)人員還可以理解,在對(duì)待測(cè)源程序進(jìn)行詞法分析、語法分析 及語義分析后,可以首先對(duì)待測(cè)源程序所有分支節(jié)點(diǎn)的各個(gè)條件構(gòu)建分支函數(shù),得到一個(gè) 總的分支函數(shù)集,然后根據(jù)與分支節(jié)點(diǎn)B關(guān)聯(lián)的路徑集上每一條路徑中位于B之前(含B) 的分支節(jié)點(diǎn)從這個(gè)總的分支函數(shù)集中選取相應(yīng)的分支函數(shù)即可。
[0055] 三、構(gòu)建初始的輸入向量集
[0056] 本步驟即為前述的步驟S2。
[0057] 由于本發(fā)明通過線性擬合構(gòu)建可行區(qū)間,然后從可行區(qū)間內(nèi)選取測(cè)試數(shù)據(jù)。而線 性擬合至少需要兩個(gè)數(shù)據(jù)樣本。因此,在構(gòu)建初始的輸入向量集U時(shí),初始的輸入向量集U 至少包含兩個(gè)輸入向量。這里,輸入向量對(duì)應(yīng)前述的輸入變量向量X。輸入向量的每個(gè)兀素 為對(duì)應(yīng)著待測(cè)源程序相應(yīng)的輸入變量的具體的值。初始的輸入向量集U內(nèi)的輸入向量由隨 機(jī)生成,輸入向量?jī)?nèi)的每個(gè)元素由隨機(jī)生成。為更好的實(shí)現(xiàn)本發(fā)明的線性擬合。本發(fā)明中 優(yōu)先采用如下方法構(gòu)建初始的輸入向量集U:
[0058] 初始的輸入向量集U包含Ni+Ι個(gè)輸入向量,Ni為輸入變量的個(gè)數(shù);初始的 輸入向量集 u = {u。,Up u2, · · ·,uNi},其中 Ui = {Uu,Uu,屮,2, · · ·,Uw}。在這 Ni+1 個(gè)輸入向量中,其中第一個(gè)輸入向量,即輸入向量UQ為隨機(jī)生成。1^與11。滿足關(guān)系: Γ Uj ^ = Uq > Φ j 噸如 2 ,其中 i,j e {l,2,...,Ni} Uq j9 ~ J
[0059] 這樣設(shè)計(jì)的好處是,對(duì)于某個(gè)分支函數(shù)Fy (X)進(jìn)行線性擬合時(shí),每個(gè)輸入變量可 以分別進(jìn)行,而避免多元線性擬合,同時(shí)所有的變量都能得到進(jìn)行有效的線性擬合的數(shù)據(jù)。 以前述例子的路徑4為例,C2節(jié)點(diǎn)的分支函數(shù)為F 4,2;1 = 2*a - b - 100。假設(shè)輸入向量 集的四個(gè)輸入向量分別為:uQ = {0,一 3,一 2},屮={4,一 3,一 2},u2 = {0, 9,一 2},u3 ={0,一3,7}。其中,輸入向量如七中,輸入變量b和c的取值相同,分別為一3和一2, 此時(shí),可以構(gòu)建關(guān)于輸入變量a的線性擬合函數(shù)LF^Ja) =2*a -97。同理,根據(jù)輸入向 量11。,112可以構(gòu)建關(guān)于輸入變量b的線性擬合函數(shù)LF4, 2;1(b) = - l*b - 100。
[0060] 四、執(zhí)行代碼與統(tǒng)計(jì)
[0061] 本步驟即為前述的步驟S3。
[0062] 本步驟的輸入為:輸入向量集U、分支節(jié)點(diǎn)B的關(guān)聯(lián)路徑集和待測(cè)源程序。輸出為: 各個(gè)輸入向量對(duì)應(yīng)的分支節(jié)點(diǎn)B的關(guān)聯(lián)路徑集中各路徑k上位于分支節(jié)點(diǎn)B之前(含B) 的各分支節(jié)點(diǎn)的各個(gè)分支函數(shù)F k^_⑴的值構(gòu)成的集合V,以及與路徑k的最遠(yuǎn)公共路徑分 支節(jié)點(diǎn)mk。
[0063] 具體的過程可通過圖2所示的流程實(shí)現(xiàn),包括步驟S31、S32、S33、S34。
[0064] S31,從輸入向量集U獲取未執(zhí)行的輸入向量ut。步驟S3?S6是迭代循環(huán)的過 程。輸入向量集U隨著迭代循環(huán)過程變化,迭代循環(huán)的第一次迭代的輸入為初始的輸入向 量集U,初始的輸入向量集U由前述步驟S2獲得。由于第η次迭代過程與前幾次迭代過程 有所重復(fù),即第η次迭代過程的輸入向量集U中部分輸入向量已經(jīng)由前幾次迭代過程執(zhí)行 了步驟S33??紤]處理效率,這部分重復(fù)的輸入向量不需要重復(fù)再執(zhí)行步驟S33。因此,只 需要從輸入向量集U中選取那些未執(zhí)行的輸入向量執(zhí)行步驟S33即可。
[0065] S32,判斷未執(zhí)行的輸入向量七是否存在。該步驟是S31的延伸的判斷步驟。假 如未執(zhí)行的輸入向量ut不存在,表示輸入向量集U中每個(gè)輸入向量均執(zhí)行了步驟S33,則執(zhí) 行步驟S34。假如未執(zhí)行的輸入向量ut存在,則對(duì)該輸入向量ut執(zhí)行步驟S33。
[0066] S33,根據(jù)ut執(zhí)行待測(cè)源代碼得到執(zhí)行的路徑和分支節(jié)點(diǎn)B的各關(guān)聯(lián)路徑k的公 共分支節(jié)點(diǎn)mk, t,并計(jì)算關(guān)聯(lián)路徑k上位于分支節(jié)點(diǎn)B之前(含B)各分支節(jié)點(diǎn)的分支函數(shù) Fk,u(X)的值。這里的執(zhí)行待測(cè)源代碼可以是模擬執(zhí)行。一種實(shí)施方法是通過插樁的方式, 在待測(cè)源代碼中植入插樁代碼。插樁代碼可以監(jiān)視待測(cè)源代碼每一步執(zhí)行的結(jié)果以及執(zhí)行 待測(cè)源代碼的經(jīng)過的路徑。第二種實(shí)施方法是直接計(jì)算分支節(jié)點(diǎn)B的各關(guān)聯(lián)路徑k上位于 分支節(jié)點(diǎn)B之前(含B)各分支節(jié)點(diǎn)的分支函數(shù)F k^(X)值,然后根據(jù)分支函數(shù)Fk^(X)對(duì) 應(yīng)的條件cti分析其執(zhí)行的路徑P t。在第一種實(shí)施方法下,包括三個(gè)步驟:植入插樁代碼,執(zhí) 行待測(cè)源程序,計(jì)算分支節(jié)點(diǎn)B的關(guān)聯(lián)路徑集中各路徑k上位于B之前(含B)的各分支節(jié) 點(diǎn)的分支函數(shù)F k^_(X)的值。而第二種實(shí)施方法下,執(zhí)行待測(cè)源程序和計(jì)算分支節(jié)點(diǎn)B的關(guān) 聯(lián)路徑集中各路徑k上位于B之前(含B)的各分支節(jié)點(diǎn)的分支函數(shù)F k^_(X)的值可以一步 完成。因此本發(fā)明優(yōu)先采用第二種實(shí)施方法。任一輸入向量ut執(zhí)行待測(cè)源代碼后,可以得到 所執(zhí)行的路徑P t與分支節(jié)點(diǎn)B的關(guān)聯(lián)路徑集中路徑k的公共分支節(jié)點(diǎn)mk,t。對(duì)于輸入向量 集U = ,…,uKU}而言,可以關(guān)聯(lián)路徑k的公共分支節(jié)點(diǎn)集Mk = {π^,π^,…,mk,TU}, 以及分支函數(shù)Fu,」⑴的值的集合V= {V1,V2,...,Vτu}。這里的TU表示輸入向量集U中 元素的個(gè)數(shù)。這里的公共分支節(jié)點(diǎn)叫^(其中,te {1,2,...,KU})為分支節(jié)點(diǎn)下標(biāo)的表示 的輸入向量ut在路徑k下的最遠(yuǎn)公共分節(jié)點(diǎn)。輸入向量u t在路徑k下的公共分支節(jié)點(diǎn)是根 據(jù)輸入向量ut執(zhí)行待測(cè)源代碼后所執(zhí)行的路徑Pt與路徑k重疊的部分中最后一個(gè)分支節(jié) 點(diǎn)。相應(yīng)地,計(jì)算B的關(guān)聯(lián)路徑k上的分支函數(shù)F k^_ (X)的值也是指根據(jù)輸入向量ut執(zhí)行待 測(cè)源代碼后所執(zhí)行的路徑Pt與路徑k重疊部分的分支節(jié)點(diǎn)的各條件中的分支函數(shù)F k^_ (X)
【權(quán)利要求】
1. 一種面向修訂的條件判定覆蓋的測(cè)試數(shù)據(jù)自動(dòng)生成方法,包括分析待測(cè)源程序獲得 待測(cè)源程序所有路徑的集合和所有分支節(jié)點(diǎn)的集合BS以及分支節(jié)點(diǎn)的關(guān)聯(lián)路徑集的集合 的步驟,其特征在于,該方法還包括對(duì)分支節(jié)點(diǎn)集BS中的每一分支節(jié)點(diǎn)B執(zhí)行以下步驟 : 51 :根據(jù)B的關(guān)聯(lián)路徑集中各路徑上位于B(含B)之前的各分支節(jié)點(diǎn)的各個(gè)條件,構(gòu)建 關(guān)于輸入變量向量X的分支函數(shù)F k^_(X);所述輸入變量向量X為所述待測(cè)源程序輸入變 量構(gòu)成的向量;所述分支函數(shù)Fti,j(X)表示路徑k上第i個(gè)分支節(jié)點(diǎn)的第j個(gè)條件的分支 函數(shù);所述路徑k經(jīng)過分支節(jié)點(diǎn)B ; 52 :構(gòu)建初始的輸入向量集U ;所述初始的輸入向量集U至少包含兩個(gè)輸入向量; 53 :計(jì)算以輸入向量集U中每個(gè)輸入向量作為待測(cè)源程序的輸入執(zhí)行待測(cè)源程序時(shí) 與所述分支節(jié)點(diǎn)B關(guān)聯(lián)的各路徑k上位于B之前(含B)的每個(gè)分支節(jié)點(diǎn)上的各分支函數(shù) Fk^_(X)獲得分支函數(shù)值的集合V以及最遠(yuǎn)公共分支節(jié)點(diǎn)mk;當(dāng)執(zhí)行待測(cè)源程序時(shí)的執(zhí)行 路徑經(jīng)過分支節(jié)點(diǎn)B時(shí)計(jì)算B的判定和判定中各個(gè)條件的取值;假如輸入向量集U中存在 一個(gè)輸入向量執(zhí)行待測(cè)源程序時(shí)執(zhí)行路徑經(jīng)過分支節(jié)點(diǎn)B且使B的判定或判定中某個(gè)條件 產(chǎn)生新的取值,則記錄該輸入向量作為所述分支節(jié)點(diǎn)B的一個(gè)測(cè)試數(shù)據(jù);假如所述分支節(jié) 點(diǎn)B的測(cè)試數(shù)據(jù)集覆蓋了 B的判定及判定中各條件所有可能取值并且每個(gè)條件都獨(dú)立影響 了判定,則返回該測(cè)試數(shù)據(jù)集作為所述分支節(jié)點(diǎn)B的測(cè)試數(shù)據(jù)集; 54 :根據(jù)分支節(jié)點(diǎn)B的關(guān)聯(lián)路徑集中各路徑k上位于B之前(含B)的各個(gè)分支節(jié)點(diǎn) 上的各分支函數(shù)值的集合V以及最遠(yuǎn)公共節(jié)點(diǎn)m k構(gòu)建路徑k上位于最遠(yuǎn)公共節(jié)點(diǎn)mk之前 (含mk)的每個(gè)分支節(jié)點(diǎn)的各分支函數(shù)的擬合函數(shù)LF k^ ;LFk^表示路徑k上第i個(gè)分支 節(jié)點(diǎn)的第j個(gè)條件的分支函數(shù)的線性擬合函數(shù); 55 :根據(jù)與B關(guān)聯(lián)的各路徑上位于B之前(含B)的每個(gè)分支節(jié)點(diǎn)中的各分支函數(shù)的線 性擬合函數(shù)LF k^_和待測(cè)源程序計(jì)算可行區(qū)間I ; 56 :在可行區(qū)間I內(nèi)隨機(jī)選取各輸入變量的輸入值得到測(cè)試數(shù)據(jù)集加入至輸入向量集 U中; 57 :重復(fù)執(zhí)行步驟S3至S6直到步驟S3至S6執(zhí)行的次數(shù)達(dá)到限定的次數(shù); 58 :返回所有記錄的所述分支節(jié)點(diǎn)B的測(cè)試數(shù)據(jù)作為所述分支節(jié)點(diǎn)B的測(cè)試數(shù)據(jù)集。
2. 如權(quán)利要求1所述的面向修訂的條件判定覆蓋的測(cè)試數(shù)據(jù)自動(dòng)生成方法,其特征在 于,所述步驟S2中所述的初始的輸入向量集U包含Ni+Ι個(gè)輸入向量,所述Ni為輸入變量 的個(gè)數(shù);初始的輸入向量集u = {uQ,Up U2, · · ·,UNi},其中Ui = {Uu,Ui,2, · · ·,ι^,Μ};輸入 U: = Un ,> ^ j 向量UQ為隨機(jī)生成,Ui與uQ滿足關(guān)系:j ' ,,其中i, j e {1, 2, · · ·, Ni}。
3. 如權(quán)利要求1所述的面向修訂的條件判定覆蓋的測(cè)試數(shù)據(jù)自動(dòng)生成方法,其特征在 于,所述步驟S3包括: 531 :從輸入向量集U獲取未執(zhí)行的輸入向量ut ; 532 :判斷未執(zhí)行的輸入向量ut是否存在;假如不存在未執(zhí)行的輸入向量,則執(zhí)行步驟 S34 ;否則執(zhí)行步驟S33 ; 533 :根據(jù)ut執(zhí)行待測(cè)源代碼得到執(zhí)行的路徑與分支節(jié)點(diǎn)B的關(guān)聯(lián)路徑集中各路徑k 的公共分支節(jié)點(diǎn)mtt,計(jì)算路徑k上位于分支節(jié)點(diǎn)B之前(含B)的各分支節(jié)點(diǎn)的分支函數(shù) FuJX)的值,B的所有關(guān)聯(lián)路徑的各個(gè)分支節(jié)點(diǎn)的各分支函數(shù)FuJX)的值構(gòu)成集合V; 若執(zhí)行的路徑經(jīng)過分支節(jié)點(diǎn)B,則執(zhí)行的路徑為分支節(jié)點(diǎn)B的一條關(guān)聯(lián)路徑,根據(jù)該關(guān)聯(lián)路 徑上B的判定中各個(gè)條件的分支函數(shù)值得到分支節(jié)點(diǎn)B的判定和判定中各條件的取值;假 如B的判定或判定中條件產(chǎn)生了新的取值,則記錄該輸入向量作為所述分支節(jié)點(diǎn)B的一個(gè) 測(cè)試數(shù)據(jù);假如B的測(cè)試數(shù)據(jù)集覆蓋了 B的判定且判定中各條件所有可能取值并且每個(gè)條 件都獨(dú)立影響了判定,返回該測(cè)試數(shù)據(jù)集作為所述分支節(jié)點(diǎn)B的測(cè)試數(shù)據(jù)集并結(jié)束對(duì)整個(gè) 分支節(jié)點(diǎn)B生成測(cè)試數(shù)據(jù)的過程。 S34 :從分支B的各關(guān)聯(lián)路徑k記錄的{mu, mk>2, . . .,mk,TU}中選取最遠(yuǎn)公共分支節(jié)點(diǎn) mk。
4. 如權(quán)利要求1所述的面向修訂的條件判定覆蓋的測(cè)試數(shù)據(jù)自動(dòng)生成方法,其特征在 于,所述步驟S4包括以下步驟: 541 :輸入向量集U和B的關(guān)聯(lián)路徑集中各路徑k上位于B之前(含B)的各個(gè)分支節(jié) 點(diǎn)的各分支函數(shù)值的集合V以及最遠(yuǎn)公共節(jié)點(diǎn)mk構(gòu)建坐標(biāo)集Vk,y, z,j = {(u^Fk^Juu)), (? j,F(xiàn)k,y,z (u2,』)),· · ·,(uTU,』,Fk,y,z (uTU,』))); 542 :以 Vk,y,z,』一{(u1;』,F(xiàn)k, y,z (i^,』)),(u2,』,F(xiàn)k,y,z (u2,』)),· · ·,(uTU,』,F(xiàn)k,y,z (uTU,』))}內(nèi)兩 個(gè)相鄰的坐標(biāo)點(diǎn)構(gòu)建Fk,y, z(Xj)的線性擬合函數(shù)LFk,y,z(Xj) = Pj*Xj+qj,得到參數(shù)集LFPQk;i,j 一 {(Pi,Qi),(P2,%),···,(Pm,%i)}; 其中,\y^表示路徑k上第y個(gè)分支節(jié)點(diǎn)第z個(gè)分支函數(shù)對(duì)應(yīng)第j個(gè)輸入變量的坐 標(biāo)集,其中y < m ;Ui;j為輸入向量集U中第i個(gè)輸入向量的第j個(gè)輸入變量的值;Fty,z( Xj) 為路徑k上第y個(gè)節(jié)點(diǎn)第z個(gè)分支函數(shù)關(guān)于第j個(gè)輸入變量的函數(shù);LFk,y, z(xp為路徑k上 第y個(gè)節(jié)點(diǎn)第z個(gè)分支函數(shù)關(guān)于第j個(gè)輸入變量的線性擬合函數(shù);LFPQ k^.為路徑k上第i 個(gè)節(jié)點(diǎn)第j個(gè)分支函數(shù)的線性擬合函數(shù)的參數(shù)集。
5. 如權(quán)利要求1所述的面向修訂的條件判定覆蓋的測(cè)試數(shù)據(jù)自動(dòng)生成方法,其特征在 于,所述步驟S5包括: 551 :計(jì)算分支節(jié)點(diǎn)B的各關(guān)聯(lián)路徑k上位于分支節(jié)點(diǎn)B之前(含B)的各個(gè)分支節(jié)點(diǎn) 中各分支函數(shù)的可行區(qū)間D k,i;j ; 552 :合并每個(gè)分支節(jié)點(diǎn)內(nèi)的各分支函數(shù)的可行區(qū)間Dk^_得到各分支節(jié)點(diǎn)的可行區(qū)間 Dk,i ; 553 :合并最遠(yuǎn)公共分支節(jié)點(diǎn)mk前的各分支節(jié)點(diǎn)的可行區(qū)間Dti得到分支節(jié)點(diǎn)B在關(guān) 聯(lián)路徑k上的可行區(qū)間I k。 554 :合并分支節(jié)點(diǎn)B在各關(guān)聯(lián)路徑k上的可行區(qū)間Ik,得到分支節(jié)點(diǎn)B的可行區(qū)間I。
6. 如權(quán)利要求1所述的面向修訂的條件判定覆蓋的測(cè)試數(shù)據(jù)自動(dòng)生成方法,所述可行 區(qū)間I = ΙΛ,12,. . .,IJ,其中,s為輸入變量的個(gè)數(shù),Ii為第i個(gè)輸入變量的可行區(qū)間,Ii =Uu,Ii,2, ...,,其中,為第i個(gè)輸入變量第j個(gè)可行分段區(qū)間,Mi為第i個(gè)輸 入變量可行分段區(qū)間數(shù),其特征在于,所述步驟S6中,當(dāng)Mi為1時(shí),從^為第i個(gè)輸入變 量的可行區(qū)間的唯一分段區(qū)間Iu的擴(kuò)展區(qū)間中隨機(jī)取值構(gòu)建測(cè)試數(shù)據(jù)。
7. -種機(jī)器可讀介質(zhì),其特征在于,該可讀介質(zhì)上存儲(chǔ)有指令集合,當(dāng)該指令集合被執(zhí) 行時(shí),使得該機(jī)器可執(zhí)行權(quán)利要求1至6中任一項(xiàng)權(quán)利要求所述的面向修訂的條件判定覆 蓋的測(cè)試數(shù)據(jù)自動(dòng)生成方法。
【文檔編號(hào)】G06F11/36GK104050082SQ201410271281
【公開日】2014年9月17日 申請(qǐng)日期:2014年6月17日 優(yōu)先權(quán)日:2014年6月17日
【發(fā)明者】陳鑫, 歐建生, 成新, 周巖, 鞠秀芳 申請(qǐng)人:南京大學(xué)