白紅英 葉新銘 王慧


摘 要:CPN(Coloured Petri Nets)非常適用于描述和分析含有并發、同步和通信等情況的復雜系統。該文提出了一種面向CPN屬性的自動生成測試序列的方法。首先給出了CPN屬性的形式化定義,然后根據系統的CPN模型給出了面向CPN屬性生產測試序列的算法,并應用該算法完成了面向CPN屬性的測試序列自動生成工具的開發。這對于CPN tools也是個非常有效的擴展。
關鍵詞:CPN屬性 測試序列 自動生成
中圖分類號:G64 文獻標識碼:A 文章編號:1672-3791(2015)05(b)-0026-02
一致性測試用于檢查系統實現是否符合系統設計的需求,是保障實現質量的有效方法。測試人員手工編寫腳本來實現測試方案給測試工作帶來了很大的工作量。目前對測試序列自動生成技術的研究主要基于FSM進行的,該方法在實際應用中也存在諸多不足。實踐證明[1-2]與FSM相比,CPN[3]更適用于描述和分析含有并發、同步和通信等特征的復雜系統,并且CPN tools[4]支持模型相關性質的分析。
屬性可以給出系統期望被測的重要的和特殊的要素,系統符合屬性說明系統具備這些被測要素。文獻[1]中提出基于屬性的測試中,測試的選擇標準和屬性是相關聯的,該測試的目的是關注系統中重要的、感興趣的和特殊的屬性。一般屬性被說明為測試目的,用于檢查系統某個特定功能的實現。文獻[2]中認為在相同測試深度下,面向屬性測試相對于非面向屬性的測試需要更少的測試序列且得到的測試序列更具有針對性。
1 預備知識
1.1 CPN和CPN Tools
在Petri網基礎上CPN提出了一種層次Petri網和高級Petri網,可以對復雜系統進行仿真和檢驗。CPN Tools是支持分析和模擬系統的形式化建模工具,可以實現分析和生成系統的完整狀態空間的功能[6]。
1.2 CPN屬性相關定義
屬性說明對面向屬性的測試序列生成有重要影響,對CPN屬性的形式化定義做出如下說明。
CPN屬性:對于一個給定系統的CPN =(P,T,A,Σ,V,C,G,E,I)[3],CPN屬性是該系統在其CPN模型中,在某種特定場景下應具有的特性、行為和功能,且它由CPN屬性初始狀態和CPN屬性末狀態來決定。
CPNI(CPN屬性初狀態):在給定系統的CPN模型中,假設它的初始marking為M0,則有CPN屬性初狀態CPNI(M0)[3],且(CPNI)不能為。
CPNE(CPN屬性末狀態):對于給定的CPN屬性,假設它的初狀態CPNI,則有CPN屬性末狀態CPNE(CPNI)。
CPN屬性子路徑:對于給定的CPN屬性,CPNI與CPNE間的點火序列[3]稱為CPN屬性子路徑。
CPN屬性完全路徑:對于給定系統的CPN,假設系統的初始狀態為SI,末狀態為SE。SI與SE間包含CPN屬性子路徑的點火序列稱為CPN屬性完全路徑。它由以下三部分組成。
(1)前導點火序列:SI與CPNI間的點火序列。
(2)測試點火序列:CPNI與CPNE間的點火序列。
(3)后繼點火序列:CPNE與SE間的點火序列。
2 面向CPN屬性的測試序列生成算法
面向CPN屬性的測試序列生成算法是以CPN屬性驅動測試序列的生成,所以CPN屬性覆蓋作為測試例的覆蓋標準。
2.1 測試目的與CPN屬性
確切的測試目的對系統的測試非常重要。當測試執行一組確定目的的測試例時,通過觀察被測實現的輸出行為和分析測試結果,可以判斷被測實現的性能或功能是否滿足系統的設計需求。
根據測試目的得出CPN屬性條件的算法如下。
上述算實現了面向CPN屬性的測試序列自動生成,要注意的是該算法針對的是待測系統的CPN模型,而非具體系統實現。
3 面向CPN屬性的測試序列自動生成工具
面向CPN屬性的測試序列自動生成工具包含三個模塊,分別為系統CPN模型的信息模塊、CPN屬性條件的輸入模塊以及面向CPN屬性的測試序列生成模塊。
該工具對于任一個系統的模型有一定的通用性,前提是該系統的CPN模型必須正確,并且已用CPN Tools生成了完全狀態空間。下面以HMIPv6協議[5]為例,對該工具的應用做出如下說明。
(1)用CPN Tools的狀態空間分析工具生成HMIPv6協議的CPN模型的某個完全狀態空間。
(2)用該工具打開HMIPv6協議CPN模型的.xml文件。
(3)查看系統CPN模型的狀態空間信息。在這里我們對系統模型中的每個狀態標明了一個序號以便用戶輸入CPNI和CPNE。如圖1為系統某個狀態信息。
(4)應用算法1得到符合測試目的的CPN屬性初狀態和CPN屬性末狀態的序號,應用算法2生成符合CPN屬性條件的測試序列,結果如圖2所示。
4 結語
該文首先給出了CPN屬性的形式化定義。然后提出了面向CPN屬性的測試序列生成算法。最后用工具實現了面向CPN屬性的測試序列的自動生成。在相同的測試目的中,面向CPN屬性的測試方法避免了在所有系統狀態內尋找測試路徑,從而提高了測試序列的有效性且有一定的針對性。該文提出的面向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.