專利名稱:一種測試用例集生成方法
技術(shù)領(lǐng)域:
本發(fā)明屬于操作系統(tǒng)安全技術(shù)領(lǐng)域,具體涉及一種測試用例集生成方法。
背景技術(shù):
隨著hternet應(yīng)用的廣泛深入,以及計(jì)算機(jī)信息系統(tǒng)安全問題的日益凸顯,安全操作系統(tǒng)的研究已吸引了越來越多的關(guān)注。然而,我們?cè)谘芯抗ぷ髦邪l(fā)現(xiàn),相比于安全操作系統(tǒng)的研發(fā),安全操作系統(tǒng)的測試與驗(yàn)證更是一項(xiàng)緊迫的工作。由于安全模型通常是獨(dú)立于實(shí)現(xiàn)開發(fā)的,我們并不能從安全模型的正確性推出其實(shí)現(xiàn)是安全的。因此,比較理想的測試方法是采用自動(dòng)化的方法生成測試用例(參考發(fā)明名稱一種可信密碼模塊的測試用例生成方法及其測試系統(tǒng),專利號(hào)ZL 200810104596. 4的專利技術(shù)文獻(xiàn);一種基于關(guān)系的測試用例生成方法,專利號(hào)200810089572.6 ;參考發(fā)明名稱一種實(shí)現(xiàn)測試用例自動(dòng)化運(yùn)行的方法,專利號(hào)200510132220. 0),將用例細(xì)化成具體的測試數(shù)據(jù)后,再利用合適的測試驅(qū)動(dòng)在具體實(shí)現(xiàn)上自動(dòng)運(yùn)行測試用例,以驗(yàn)證實(shí)現(xiàn)與規(guī)范之間的一致性。安全操作系統(tǒng)測試的自動(dòng)化的基礎(chǔ)是形式化方法。目前已經(jīng)有很多形式化方法應(yīng)用于自動(dòng)化的測試用例生成(參考發(fā)明名稱基于模型轉(zhuǎn)換的協(xié)議正確性驗(yàn)證和測試方法,專利號(hào)ZL200510002613.X的專利技術(shù)文獻(xiàn))。形式化方法中的模型檢測技術(shù)是一種基于模型的屬性驗(yàn)證方法(參考發(fā)明名稱用于驗(yàn)證電路的模型檢測中的模型抽象方法及其系統(tǒng),申請(qǐng)?zhí)?00910083790. 3的專利技術(shù)文獻(xiàn)),它以系統(tǒng)模型和待驗(yàn)證屬性或安全需求作為輸入,其優(yōu)點(diǎn)在于驗(yàn)證過程的完全自動(dòng)化,驗(yàn)證速度快、效率高。如果一個(gè)屬性不滿足, 它可以立刻反饋出違反該屬性的執(zhí)行路徑。對(duì)于安全操作系統(tǒng)測試來說,最后一點(diǎn)尤為重要,因?yàn)橐粋€(gè)違反安全需求的執(zhí)行路徑直接對(duì)應(yīng)安全模型或安全策略配置上的漏洞,對(duì)該路徑細(xì)化之后就可以直接生成測試用例。然而,由于操作系統(tǒng)狀態(tài)多,安全需求多,如果不對(duì)測試用例進(jìn)行化簡,測試的工作量會(huì)非常龐大。目前出現(xiàn)的針對(duì)測試用例化簡的研究可以分為以下三類(參考發(fā)明名稱一種測試用例集縮減技術(shù),申請(qǐng)?zhí)?00910020845. 6的專利技術(shù)文獻(xiàn))第一類對(duì)測試需求集進(jìn)行化簡,這種方法通過尋找測試需求之間以及需求集與測試集之間的相互關(guān)系對(duì)測試需求集進(jìn)行化簡,這種方法化簡方法簡單直觀,但是沒有考慮到測試集中各測試集之間的內(nèi)在聯(lián)系,化簡效果不太理想。第二類方法對(duì)模型檢測器的檢測算法進(jìn)行優(yōu)化,在模型檢測器針對(duì)某屬性P產(chǎn)生了測試用例后,在該用例的基礎(chǔ)上繼續(xù)探索狀態(tài)空間,如果發(fā)現(xiàn)路徑滿足新的屬性P’,則將P’從需求集中刪除,從而達(dá)到化簡用例集的目的。該方法充分利用了模型檢測器的性能,人工干預(yù)極少,然而從現(xiàn)有用例探索對(duì)新屬性的滿足性的過程完全是盲目的,而且探索的深度也難以控制太淺效率難以保證,太深則資源消耗嚴(yán)重。第三類方法對(duì)已生成的測試集進(jìn)行化簡,這種方法在模型檢測器生成一個(gè)測試序列之后尋找該測試序列和已生成測試集之間的內(nèi)在聯(lián)系,從而達(dá)到化簡測試集的目的。這種方法目前仍以尋找不同測試序列中的相同安全狀態(tài)為主要思路,沒有考慮到安全狀態(tài)遷移的影響,仍有繼續(xù)化簡的空間。
考慮到目前方法都是以測試路徑中的系統(tǒng)狀態(tài)為操作對(duì)象的,而在實(shí)際測試中, 決定測試集大小的直接因素是狀態(tài)遷移的數(shù)量,而不是狀態(tài)的數(shù)量,如何提供一種簡化的測試用例集,以提高安全操作系統(tǒng)的驗(yàn)證效率是目前急待解決的技術(shù)問題。
發(fā)明內(nèi)容
本發(fā)明的目的在于提供一種基于安全狀態(tài)遷移的測試用例集生成方法。首先將不存在相同安全狀態(tài)遷移的測試序列組成的測試集定義為簡并測試集。接著針對(duì)利用模型檢測器生成的測試序列,尋找不同測試序列之間存在的相同安全狀態(tài)遷移,加以化簡。在化簡的同時(shí)記錄相關(guān)信息,以減少測試集中測試序列的數(shù)量;而且在測試失敗時(shí),也能根據(jù)所記錄信息準(zhǔn)確定位失敗位置。從而最終得到簡并測試集并達(dá)到盡可能化簡測試集的目的。本發(fā)明的技術(shù)方案為一種測試用例集生成方法,其步驟為1)從測試需求集SP中取出一安全屬性P,取反后輸入模型檢測器生成該安全屬性 ρ的測試序列Tp ;2)提取測試序列Tp中所有的狀態(tài)遷移,并與測試需求集中所有已存在的狀態(tài)遷移進(jìn)行對(duì)比,將狀態(tài)遷移相同部分記錄到集合氏中;3)刪除Knownedges或Tp中的與集合E1*相同部分的狀態(tài)遷移;其中,Knownedges 為測試需求集中已經(jīng)存在的狀態(tài)遷移集合;4)對(duì)測試需求集SP中所有屬性,重復(fù)步驟1) 3),生成簡并測試序列集;5)將生成的測試序列集實(shí)例化,得到測試用例集。進(jìn)一步的,生成所述測試序列Tp之后,將該屬性ρ從所述測試需求集SP中刪除; 然后遍歷所述測試需求集SP中剩下的所有需求,查找所述測試序列Tp滿足的需求并將其從所述測試需求集SP中刪除。進(jìn)一步的,所述測試序列Tp = <0l,σ2, ... , ση>,Tp e TS;其中,TS為測試用例集合,on為第η個(gè)測試序列,第P個(gè)測試序列中的第k項(xiàng)表示為0pk,Opk = (Ipk, epk, hold) e P(N) XEX {0,1, NE},k e [l..#Tp],# 表示求集合的基數(shù),集合
b = ^ TS I (3m [i J乃]丨^lm ^T1A σ η .2 = epk)· i},用于記錄所有包括了狀態(tài)遷移e的測
試序列的編號(hào),Ti為TS中的任意元素,i是測試序列的編號(hào),ο im是Ti中的項(xiàng),m屬于集合 [1. . STi],epk為σ pk中的狀態(tài)遷移對(duì)( + sk),hold為標(biāo)志位,E為包含了所有t e TS中的狀態(tài)遷移對(duì)(Sh,。的集合,££(&5),S為有限狀態(tài)集合,P(N)為自然數(shù)集合。
'0 當(dāng)σ,執(zhí)行不成立時(shí)進(jìn)一步的,所述標(biāo)志位hold的取值方法為hold =1 當(dāng)σ,‘執(zhí)行成立時(shí) ,
NE當(dāng)σ,尚未執(zhí)行時(shí)
i為第i個(gè)測試序列。進(jìn)一步的,定義函數(shù),即測試序列T中包含的所有不帶標(biāo)簽的狀態(tài)遷移,計(jì)算交集E1 = EDGE(Tp) Π Knowledges,得到狀態(tài)遷移相同部分的集合。進(jìn)一步的,所述刪除Knownedges或Tp中的與集合E1中相同部分的狀態(tài)遷移的方法為
1)計(jì)算集合WepteW = {T, DTSI νσ e盡· / e σ.1},其中,DTS為簡并測試序列集;2)如果集合R印laced不為空,則保留其中最長的Ti,刪除剩下元素中的E1部分, 然后進(jìn)行步驟幻;如果集合Replaced為空,則直接進(jìn)行步驟3);3)將EDGE (Tp)加入Knownedges集合中,將測試序列Tp加入DTS中,輸出所述簡并測試序列集。進(jìn)一步的,刪除Knownedges或Tp中相同部分的狀態(tài)遷移時(shí),同時(shí)記錄所刪除的狀態(tài)遷移信息。本發(fā)明結(jié)合模型檢測器基于有限狀態(tài)自動(dòng)機(jī)模型的特點(diǎn),將待測系統(tǒng)抽象為有限狀態(tài)自動(dòng)機(jī)(Finite State Machine,FSM)模型,而針對(duì)系統(tǒng)的一個(gè)測試序列則為FSM的一個(gè)運(yùn)行序列。定義如下定義1 系統(tǒng)模型M是個(gè)有限狀態(tài)自動(dòng)機(jī)(FSA),表示為M= (S,S0, L,T,F(xiàn)),其中S是有限狀態(tài)集合是初始狀態(tài)集合,L是一個(gè)有限標(biāo)簽集合;T是轉(zhuǎn)換集合, T^(SxLxS); F是最終狀態(tài)集合,F(xiàn)qS。定義2.系統(tǒng)M的一個(gè)運(yùn)行t,是一個(gè)有序的、可能有限也可能無限的轉(zhuǎn)換集合(序列),表示為< (s0, I0, S1) , (S1, I1, s2) , (s2, I2, s3),... >,即yi,(i>0)-> (SiJl^e Γ其中,Si e S,Ii e L0模型檢測器每產(chǎn)生的這樣的一個(gè)運(yùn)行,就對(duì)應(yīng)著一條測試序列(用例)。為了便于表述,我們將測試序列t = <(s0, I0',S1),(Sl, I1',&),...,(sn, In',sn+1)>, η = #t-l轉(zhuǎn)記為下面的形式t = < σ ” O2,..., ο η+1>·其中σ i = (I^ei)為二元組,Ii = 1'…力=(Si+Si),i e [1. · n+l],為狀態(tài)遷移對(duì),表示系統(tǒng)M由狀態(tài)S"遷移到狀態(tài)Si。另記包含了所有t e TS中的狀態(tài)遷移對(duì) (S",Si)的集合記為E。即如果存在t e TS,σ e t,那么一定有σ . 2 e E。此外,定義測試需求集為SP = {所有待驗(yàn)證的安全需求},測試用例集合為TS = {所有待驗(yàn)證的安全需求的測試用例}。那么對(duì)于測試需求P e SP到測試用例集TS的映射為集合Test (ρ) = {t :TS·所有可以滿足ρ的測試用例t},顯然Vpe爐G TS。本發(fā)明方法所提出的簡并測試集(Degenerate Test Set, DTS)的定義為定義3.簡并測試集(DTS)是這樣的測試集首先,它是TS的一個(gè)子集;其次,簡并測試集中任意兩個(gè)測試序列都不包含相同的狀態(tài)遷移。本發(fā)明方法包含了三個(gè)層次1)利用模型檢測器生成測試序列、幻尋找測試序列與已生成測試集之間的相同狀態(tài)遷移、幻對(duì)相同狀態(tài)遷移進(jìn)行處理并將處理結(jié)果加入測試集。測試序列的生成需要利用模型檢測器運(yùn)行系統(tǒng)模型M,同時(shí)檢查M是否滿足取反后的安全需求,以產(chǎn)生對(duì)應(yīng)的測試序列,一個(gè)安全需求對(duì)應(yīng)的測試序列不會(huì)超過一個(gè);尋找相同狀態(tài)遷移則是將第一步中產(chǎn)生的測試序列中的狀態(tài)遷移與已生成測試集中所有狀態(tài)遷移進(jìn)行比較,相同部分則是需要化簡掉的部分;狀態(tài)遷移處理則是對(duì)第二步中發(fā)現(xiàn)的狀態(tài)遷移進(jìn)行篩選和相關(guān)信息記錄,既要保證測試集中測試用例數(shù)最少,也要保證即使測試失敗,也可以根據(jù)記錄的信息找到導(dǎo)致測試失敗的狀態(tài)遷移。
本發(fā)明的具體步驟如下步驟A 測試序列的生成,從測試需求集SP中取出一個(gè)安全屬性P,取反后輸入模型檢測器,如果P成立,則模型檢測器生成該安全屬性P的測試序列Tp,如果ρ不成立,模型檢測器會(huì)報(bào)告沒有測試序列生成。步驟B 尋找相同狀態(tài)遷移,提取步驟A中得到的每個(gè)測試序列中所有的狀態(tài)遷移,并與測試需求集中所有已存在的狀態(tài)遷移集合Knowedges進(jìn)行對(duì)比,查找相同的部分, 將相同部分記錄到集合E1中。步驟C 狀態(tài)遷移處理,這一步驟分為兩部分,一方面選擇刪除Knowedges或Tp中的相同狀態(tài)遷移氏,另一方面需要記錄所刪除遷移的信息,以備測試失敗時(shí)進(jìn)行錯(cuò)誤定位。步驟D 結(jié)果輸出,對(duì)需求集SP中所有屬性實(shí)施以上步驟,最終可以得到簡并測試集。從而達(dá)到化簡初始測試集的目的。本發(fā)明的積極效果本發(fā)明以安全狀態(tài)遷移作為測試集的化簡對(duì)象,和傳統(tǒng)的以安全狀態(tài)為對(duì)象的測試集化簡方法相比,能更為有效、直接地縮小測試集的大小。此外,由于DTS中儲(chǔ)存了被化簡狀態(tài)遷移的位置信息,所以在測試序列失敗時(shí)也可以準(zhǔn)確定位未滿足的安全需求。
具體實(shí)施例方式本發(fā)明的輸入是待驗(yàn)證的系統(tǒng)模型與其所待測試的安全需求。輸入信息分為兩部分,一部分來源于已經(jīng)實(shí)施的軟硬件系統(tǒng),它可以來自任何一個(gè)計(jì)算機(jī)軟件系統(tǒng)及設(shè)備,如主機(jī)、服務(wù)器、入侵檢測系統(tǒng)、路由器、防火墻等等。對(duì)這些設(shè)備上的運(yùn)行機(jī)制經(jīng)過形式化抽象、提取后得到的數(shù)學(xué)模型都可作為本發(fā)明的輸入信息。另一部分來源于這些系統(tǒng)、設(shè)備應(yīng)滿足的安全需求或安全屬性,如“setuid程序在執(zhí)行不可信程序前必須放棄root權(quán)限”或者“禁止以寫模式打開文件到stderr或stdout”等。以上信息要求完整全面,信息越完整, 驗(yàn)證結(jié)果越準(zhǔn)確。通過對(duì)輸入信息的層層處理和分析,最后得到進(jìn)一步為實(shí)際測試步驟的測試序列。下面給出詳細(xì)過程。步驟A 測試序列的生成。為了生成滿足安全需求ρ的測試用例,對(duì)待測系統(tǒng)建模并進(jìn)行模型檢測,檢驗(yàn)在模型各處屬性的滿足情況,如果出現(xiàn)反例,則表明存在滿足P的測試用例Tp,如果模型檢測器找不到的反例,則表明P是不存在對(duì)應(yīng)測試用例的。一個(gè)反例對(duì)應(yīng)一個(gè)測試用例。由于模型檢測器對(duì)于一個(gè)P只生成一個(gè)反例,因此,一般情況下,利用模型檢測器生成測試用例時(shí),一個(gè)待驗(yàn)證全需求P也只對(duì)應(yīng)一個(gè)測試用例Τρ。在為ρ生成Tp之后,將ρ從需求集SP中刪除,然后遍歷SP中剩下的所有需求,檢查Tp是否也滿足這些需求,如果滿足,則將所有Tp滿足的需求均從SP中刪除。步驟B 尋找相同狀態(tài)遷移。對(duì)于測試序列Tp = <σρ1, σρ2,... , σρη>,Tp e TS,我們將它的每一個(gè)項(xiàng)Qpk (P為測試序列的編號(hào),k為測試序列ρ中各個(gè)項(xiàng)的編號(hào))由定義2中的二元組構(gòu)造為一個(gè)三元組opk = (Ipk, epk, hold) e P(N) XEX {Ο,Ι,ΝΕ}, k e [1. . #Tp]。
其中,P(N)為自然數(shù)集合;i^CSx^),表示TS中所有狀態(tài)遷移對(duì)( + sk) 的集合,“#”在集合論中表示求集合的基數(shù),也就是集合中包含元素的數(shù)量,集合 Ipk = [T1 TS 丨(3w [1..#7]| σ, e 7> σ,2 = epk)-i},用于記錄 TS 中所有包括了狀態(tài)遷移 e
的測試序列的編號(hào),Ti: TS表示TS中的任意元素Ti, i是測試序列的編號(hào),σ im是Ti中的項(xiàng), 3m:[l..#7;]的意思是“存在這樣的自然數(shù)m,m屬于集合[1. . ”,^為中的狀態(tài)遷移對(duì)(Sk+ sk),σ m 2的意思是三元組中第二個(gè)元素,即em,初始狀態(tài)時(shí)Ipk = {ρ},即初始狀態(tài)時(shí),集合Ipk中只包含自身的序號(hào)P ;而hold是個(gè)標(biāo)志位
0 當(dāng)σ,執(zhí)行不成立時(shí) hold = 1 當(dāng)σ,執(zhí)行成立時(shí) NE當(dāng)σ,尚未執(zhí)行時(shí)這樣,當(dāng)在實(shí)際測試時(shí),如果某個(gè)Tp中的某個(gè)狀態(tài)遷移出錯(cuò)(假設(shè)為opk),只需檢查它對(duì)應(yīng)的opk. 1的元素,也就是相應(yīng)的Ipk集合,那么,所有Ti, i e Ipk都是無法執(zhí)行的測試序列;此外,當(dāng)DTS中所有的狀態(tài)轉(zhuǎn)移都被遍歷一遍之后,可以得到所有失敗的測試集合failwe = {7; 1巧e 7> 3 = 0} °由于DTS對(duì)不同測試序列中出現(xiàn)的相同狀態(tài)遷移僅保留一份,然而卻存在一個(gè)問題如果擁有相同狀態(tài)遷移的兩個(gè)測試序列中有一個(gè)在具體測試中被證明不成立,那么另一個(gè)測試用例即使通過也不能保證它對(duì)應(yīng)的屬性成立。這個(gè)問題在現(xiàn)有的以刪除測試序列中的冗余狀態(tài)為手段的測試用例化簡方法中也存在,而且并未得到解決。本方法利用failure集合則可以解決這個(gè)問題,在TS中所有測試序列都執(zhí)行完畢之后,failure集合可以收集所有失敗的測試序列。其次,定義函數(shù)^,即測試序列T中包含的所有不帶標(biāo)簽的狀態(tài)遷移,函數(shù)?^Ι ΙΡσΙΙσ.ρΟ.σ},即測試序列T中所有包含了集合E 中的狀態(tài)遷移的項(xiàng),e'表示E中的任意元素;而£^(<5x5)。那么Tp與測試集中已經(jīng)存在的狀態(tài)遷移集合Knowledges的交集E1 = EDGE(Tp) Π Knownedges就是相同的、需要被化簡掉的狀態(tài)遷移。步驟C 狀態(tài)遷移處理。在上一步驟獲得氏后,需要對(duì)其做一定的處理以獲得DTS。具體方法如下1)計(jì)算集合Replaced = [T1 DTS \/σ e E1 -i e σ.\}從而獲得擁有全部E1中狀態(tài)遷移的測試序列的集合。如果R印laced不為空,則保留其中最長的Ti,刪除剩下元素中的E1部分,這樣可以保證留在DTS中的E1始終在最長的測試序列中,從而盡可能地削減DTS中測試序列的數(shù)量;如果R印laced為空,則無需做此步處理。計(jì)算方法為if Replaced^ 0 thenTm — thelongest T e Replaced ;forall T e Replaced EXCEPT Tm doT ^ T-SEQ (Ti, E1);end
end2)其次,將EDGE (Tp)加入KnownedgesJf Tp加入DTS。計(jì)算公式為Knownedges 一 Knownedges+EDGE (Tp);DTS — DTS+Tp ;步驟D 結(jié)果輸出。重復(fù)以上步驟,當(dāng)SP為空時(shí)可以得到簡并測試集DTS,該測試集與原始的、為每一個(gè)SP中的需求生成一個(gè)測試序列的測試集相比,擁有更高的化簡率,更節(jié)省儲(chǔ)存空間。只需將DTS中的測試序列實(shí)例化,就可得到測試用例對(duì)實(shí)際系統(tǒng)進(jìn)行測試。盡管為說明目的公開了本發(fā)明的具體實(shí)施例,其目的在于幫助理解本發(fā)明的內(nèi)容并據(jù)以實(shí)施,但是本領(lǐng)域的技術(shù)人員可以理解在不脫離本發(fā)明及所附的權(quán)利要求的精神和范圍內(nèi),各種替換、變化和修改都是可能的。因此,本發(fā)明不應(yīng)局限于最佳實(shí)施例所公開的內(nèi)容,本發(fā)明要求保護(hù)的范圍以權(quán)利要求書界定的范圍為準(zhǔn)。
權(quán)利要求
1.一種測試用例集生成方法,其步驟為1)從測試需求集SP中取出一安全屬性P,取反后輸入模型檢測器生成該安全屬性ρ的測試序列Tp ;2)提取測試序列Tp中所有的狀態(tài)遷移,并與測試需求集中所有已存在的狀態(tài)遷移進(jìn)行對(duì)比,將狀態(tài)遷移相同部分記錄到集合氏中;3)刪除Knowledges或Tp中的與集合E1中相同部分的狀態(tài)遷移;其中,Knowledges為測試需求集中已經(jīng)存在的狀態(tài)遷移集合;4)對(duì)測試需求集SP中所有屬性,重復(fù)步驟1) 3),生成簡并測試序列集;5)將生成的測試序列集實(shí)例化,得到測試用例集。
2.如權(quán)利要求1所述的方法,其特征在于生成所述測試序列Tp之后,將該屬性ρ從所述測試需求集SP中刪除;然后遍歷所述測試需求集SP中剩下的所有需求,查找所述測試序列Tp滿足的需求并將其從所述測試需求集SP中刪除。
3.如權(quán)利要求1所述的方法,其特征在于所述測試序列Tp= <0l,σ2, ..., ση>, Tp e TS ;其中,TS為測試用例集合,ο η為第η個(gè)測試序列,第ρ個(gè)測試序列中的第k項(xiàng)表示為 °pk' Opk = (Ipk, epk, hold) e P(N) XEX {0,l,NE},k e [1. #TP],# 表示求集合的基數(shù), 集合={Γ, :re|(3m:[l..#r,]|a,ffl e Γ, Aa,m2 = epk)-i},用于記錄所有包括了狀態(tài)遷移 e的測試序列的編號(hào),Ti為TS中的任意元素,i是測試序列的編號(hào),ο im是Ti中的項(xiàng),m屬于集合[l..#Ti],epk為opk中的狀態(tài)遷移對(duì)(Slrf, sk),hold為標(biāo)志位,E為包含了所有t e TS 中的狀態(tài)遷移對(duì)(Si^si)的集合,紀(jì)伽》,S為有限狀態(tài)集合,P(N)為自然數(shù)集合。
4.如權(quán)利要求3所述的方法,其特征在于所述標(biāo)志位hold的取值方法為 O 當(dāng)σ,執(zhí)行不成立時(shí)hold =1 當(dāng)σ,執(zhí)行成立時(shí) ,σ i為第i個(gè)測試序列。 NE當(dāng)σ,尚未執(zhí)行時(shí)
5.如權(quán)利要求3所述的方法,其特征在于定義函數(shù),即測試序列T中包含的所有不帶標(biāo)簽的狀態(tài)遷移,計(jì)算交集E1 = EDGE(Tp) η Knownedges,得到狀態(tài)遷移相同部分的集合。
6.如權(quán)利要求5所述的方法,其特征在于所述刪除Knownedges或Tp中的與集合E1中相同部分的狀態(tài)遷移的方法為1)計(jì)算集合i^kd= {Τ, DTSI νσ e盡· / e σ.1},其中,DTS為簡并測試序列集;2)如果集合Iteplaced不為空,則保留其中最長的Ti,刪除剩下元素中的E1部分,然后進(jìn)行步驟幻;如果集合!^placed為空,則直接進(jìn)行步驟3);3)將EDGE(Tp)加入Knowledges集合中,將測試序列Tp加入DTS中,輸出所述簡并測試序列集。
7.如權(quán)利要求1或6所述的方法,其特征在于刪除Knownedges或Tp中相同部分的狀態(tài)遷移時(shí),同時(shí)記錄所刪除的狀態(tài)遷移信息。
全文摘要
本發(fā)明公開了一種測試用例集生成方法,屬于操作系統(tǒng)安全技術(shù)領(lǐng)域。本方法為1)從測試需求集SP中取出一安全屬性p,取反后輸入模型檢測器生成該安全屬性p的測試序列Tp;2)提取Tp中所有的狀態(tài)遷移,并與測試需求集中所有已存在的狀態(tài)遷移進(jìn)行對(duì)比,將狀態(tài)遷移相同部分記錄到集合EI中;3)刪除Knownedges或Tp中與集合EI中相同部分的狀態(tài)遷移;4)對(duì)測試需求集SP中所有屬性,重復(fù)步驟1)~3),生成簡并測試序列集;5)將生成的測試序列集實(shí)例化,得到測試用例集。與現(xiàn)有技術(shù)相比,本發(fā)明能更為有效、直接地縮小測試集的大小。
文檔編號(hào)G06F11/36GK102193858SQ20101011684
公開日2011年9月21日 申請(qǐng)日期2010年3月2日 優(yōu)先權(quán)日2010年3月2日
發(fā)明者馮登國, 張陽, 程亮 申請(qǐng)人:中國科學(xué)院軟件研究所