白紅英 葉新銘 王慧
摘 要:CPN(Coloured Petri Nets)非常適用于描述和分析含有并發(fā)、同步和通信等情況的復(fù)雜系統(tǒng)。該文提出了一種面向CPN屬性的自動生成測試序列的方法。首先給出了CPN屬性的形式化定義,然后根據(jù)系統(tǒng)的CPN模型給出了面向CPN屬性生產(chǎn)測試序列的算法,并應(yīng)用該算法完成了面向CPN屬性的測試序列自動生成工具的開發(fā)。這對于CPN tools也是個非常有效的擴展。
關(guān)鍵詞:CPN屬性 測試序列 自動生成
中圖分類號:G64 文獻標(biāo)識碼:A 文章編號:1672-3791(2015)05(b)-0026-02
一致性測試用于檢查系統(tǒng)實現(xiàn)是否符合系統(tǒng)設(shè)計的需求,是保障實現(xiàn)質(zhì)量的有效方法。測試人員手工編寫腳本來實現(xiàn)測試方案給測試工作帶來了很大的工作量。目前對測試序列自動生成技術(shù)的研究主要基于FSM進行的,該方法在實際應(yīng)用中也存在諸多不足。實踐證明[1-2]與FSM相比,CPN[3]更適用于描述和分析含有并發(fā)、同步和通信等特征的復(fù)雜系統(tǒng),并且CPN tools[4]支持模型相關(guān)性質(zhì)的分析。
屬性可以給出系統(tǒng)期望被測的重要的和特殊的要素,系統(tǒng)符合屬性說明系統(tǒng)具備這些被測要素。文獻[1]中提出基于屬性的測試中,測試的選擇標(biāo)準(zhǔn)和屬性是相關(guān)聯(lián)的,該測試的目的是關(guān)注系統(tǒng)中重要的、感興趣的和特殊的屬性。一般屬性被說明為測試目的,用于檢查系統(tǒng)某個特定功能的實現(xiàn)。文獻[2]中認為在相同測試深度下,面向?qū)傩詼y試相對于非面向?qū)傩缘臏y試需要更少的測試序列且得到的測試序列更具有針對性。
1 預(yù)備知識
1.1 CPN和CPN Tools
在Petri網(wǎng)基礎(chǔ)上CPN提出了一種層次Petri網(wǎng)和高級Petri網(wǎng),可以對復(fù)雜系統(tǒng)進行仿真和檢驗。CPN Tools是支持分析和模擬系統(tǒng)的形式化建模工具,可以實現(xiàn)分析和生成系統(tǒng)的完整狀態(tài)空間的功能[6]。
1.2 CPN屬性相關(guān)定義
屬性說明對面向?qū)傩缘臏y試序列生成有重要影響,對CPN屬性的形式化定義做出如下說明。
CPN屬性:對于一個給定系統(tǒng)的CPN =(P,T,A,Σ,V,C,G,E,I)[3],CPN屬性是該系統(tǒng)在其CPN模型中,在某種特定場景下應(yīng)具有的特性、行為和功能,且它由CPN屬性初始狀態(tài)和CPN屬性末狀態(tài)來決定。
CPNI(CPN屬性初狀態(tài)):在給定系統(tǒng)的CPN模型中,假設(shè)它的初始marking為M0,則有CPN屬性初狀態(tài)CPNI(M0)[3],且(CPNI)不能為。
CPNE(CPN屬性末狀態(tài)):對于給定的CPN屬性,假設(shè)它的初狀態(tài)CPNI,則有CPN屬性末狀態(tài)CPNE(CPNI)。
CPN屬性子路徑:對于給定的CPN屬性,CPNI與CPNE間的點火序列[3]稱為CPN屬性子路徑。
CPN屬性完全路徑:對于給定系統(tǒng)的CPN,假設(shè)系統(tǒng)的初始狀態(tài)為SI,末狀態(tài)為SE。SI與SE間包含CPN屬性子路徑的點火序列稱為CPN屬性完全路徑。它由以下三部分組成。
(1)前導(dǎo)點火序列:SI與CPNI間的點火序列。
(2)測試點火序列:CPNI與CPNE間的點火序列。
(3)后繼點火序列:CPNE與SE間的點火序列。
2 面向CPN屬性的測試序列生成算法
面向CPN屬性的測試序列生成算法是以CPN屬性驅(qū)動測試序列的生成,所以CPN屬性覆蓋作為測試?yán)母采w標(biāo)準(zhǔn)。
2.1 測試目的與CPN屬性
確切的測試目的對系統(tǒng)的測試非常重要。當(dāng)測試執(zhí)行一組確定目的的測試?yán)龝r,通過觀察被測實現(xiàn)的輸出行為和分析測試結(jié)果,可以判斷被測實現(xiàn)的性能或功能是否滿足系統(tǒng)的設(shè)計需求。
根據(jù)測試目的得出CPN屬性條件的算法如下。
上述算實現(xiàn)了面向CPN屬性的測試序列自動生成,要注意的是該算法針對的是待測系統(tǒng)的CPN模型,而非具體系統(tǒng)實現(xiàn)。
3 面向CPN屬性的測試序列自動生成工具
面向CPN屬性的測試序列自動生成工具包含三個模塊,分別為系統(tǒng)CPN模型的信息模塊、CPN屬性條件的輸入模塊以及面向CPN屬性的測試序列生成模塊。
該工具對于任一個系統(tǒng)的模型有一定的通用性,前提是該系統(tǒng)的CPN模型必須正確,并且已用CPN Tools生成了完全狀態(tài)空間。下面以HMIPv6協(xié)議[5]為例,對該工具的應(yīng)用做出如下說明。
(1)用CPN Tools的狀態(tài)空間分析工具生成HMIPv6協(xié)議的CPN模型的某個完全狀態(tài)空間。
(2)用該工具打開HMIPv6協(xié)議CPN模型的.xml文件。
(3)查看系統(tǒng)CPN模型的狀態(tài)空間信息。在這里我們對系統(tǒng)模型中的每個狀態(tài)標(biāo)明了一個序號以便用戶輸入CPNI和CPNE。如圖1為系統(tǒng)某個狀態(tài)信息。
(4)應(yīng)用算法1得到符合測試目的的CPN屬性初狀態(tài)和CPN屬性末狀態(tài)的序號,應(yīng)用算法2生成符合CPN屬性條件的測試序列,結(jié)果如圖2所示。
4 結(jié)語
該文首先給出了CPN屬性的形式化定義。然后提出了面向CPN屬性的測試序列生成算法。最后用工具實現(xiàn)了面向CPN屬性的測試序列的自動生成。在相同的測試目的中,面向CPN屬性的測試方法避免了在所有系統(tǒng)狀態(tài)內(nèi)尋找測試路徑,從而提高了測試序列的有效性且有一定的針對性。該文提出的面向CPN屬性的測試序列自動生成方法及其工具有一定的通用性,這對于CPN tools也是個有效的擴展。
參考文獻
[1] Xinming Ye,Jing Liu,Tao Sun,et al.CP-nets Model Based Formal Verification of HMIPv6 Protocol[C].Proc. of the 3rd International Conference on Computer Design and Applications,2011:6412-6415.
[2] Jing Liu,Xinming Ye,Jun Li.Analyzing Performance for Complex Protocol using Validated CP-nets Models[C].Proc.of the 10th IEEE Conference on Computer and Information Technology,2010:377-384.
[3] Kurt Jensen,Lars Michael Kristensen,Lisa Wells.Coloured Petri Nets and CPN Tools for Modeling and Validation of Concurrent Systems[J].International Journal on Software Tools for Technology Transfer,20079(3):213-254.
[4] Kurt Jensen,Soren Christensen,Lars M. Kristensen. CPN Tools State Space Manual [EB/OL].http://wiki.daimi.au.dk/cpntoolshelp/_files/manual.pdf,2006-01.
[5] H Soliman C,Castelluccia K,El Malki,et al.Hierarchical Mobile IPv6(HMIPv6)[M].IETF Mobile IPWorking Group,2002.