面向CPN属性的测试序列的自动生成方法

2015-06-29 17:41白红英叶新铭王慧
科技资讯 2015年14期

白红英 叶新铭 王慧

摘 要: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.