OSI协议测试与T TCN描述语言

发布时间:2005-03-15 作者:刘述Liu Shu 阅读量:

1 OSI测试理论概述

 

    众所周知,开放系统互连一般都采用ISO的OSI 7层模型,这样各层功能与其上层和下层无关,因此在该模型中,一层实体只考虑相邻层实体间的数据传送和对等层实体间的通信。在开放系统物理实体中的某一层(N),其相邻层为N+1层和N-1层;其对等实体是远端实体中的N层。

    对等层间完成通信传递的数据,包括本层通信规程中要求对等层处理完成的数据和本层要求下层提供服务所需的控制数据。

    这样可以将数据单元分成以下几类:

(1)接口数据单元(IDU):在层间传送的数据。其包括上层实体作为下层实体的用户在下层服务接入点送入的数据包,这个数据包中有一部分由下层进行处理,另一部分由对端对等实体处理;同时还有下层实体作为上层实体的业务提供者向上层实体传送的数据包,这个数据包包括一部分下层实体产生的数据和来自远端对等实体的数据。

(2)接口控制信息(ICI):仅在相邻层间传送的数据,用于层间的控制。

(3)业务数据单元(SDU):更高层对等实体间的数据。上层实体传到本层的IDU由本层ICI和SDU组成。下层传到本层的IDU由本层的ICI和下层的SDU组成。

(4)规程控制信息(PCI):本层实体和对等实体间传送的相互控制信息。

(5)规程数据单元(PDU):本层的SDU和本层的PCI组成PDU。

     由于功能层第N层实体事实上是第N-1层的用户,同时也是第N+1层的业务提供者。在相邻层间用原语来交换信息,用户向业务提供者用请求原语来申请服务,而业务提供者用指示原语来为用户提供服务或拒绝、放弃服务。当服务提供者提供服务时,其用户的业务数据将被透明地传送到对端的对等层中,如果不接收该数据,对端的对等层将拒绝或放弃这个数据包。在远端物理实体中,N-1层实体判断是否接收或拒绝、放弃该数据包,如果接收,就向N层发出一个指示原语,并在其中将数据传送给N层。

     协议的测试一般都是用黑盒的方式,给予被测实体激励,观测其响应,从而判断它是否能正确地向上层提供服务,并申请和接收下层的服务。在实际的测试中,将被测的协议实体从OSI的7层实体中隔离出来有一定的困难,可是由于7层结构中低层对上层的服务是透明的,就是说低层对测试端和被测端的第N层间的数据传输是透明的,从双方的角度来看,它们都是与对端进行层与层间的对话,测试方的激励会不经改变地到达被测端,被测方的响应也会同样到达测试方。所以实际中采用在远端观察对等层服务接入点的方法,来代替将第N层抽出孤立观察的方法。

     对被测实体的激励,一般为事先编好的测试例。由于协议本身的有限性,其响应结果应是可预测的,如果实体的响应与预测的相同,说明与协议相一致,否则不一致。由于通信协议纷繁复杂,测试仪表也是多种多样,如果没有一种编写测试例的标准,测试例的编写工作将会非常麻烦。因此,人们希望有一种统一的测试例的表示方法,它必须是与通信协议无关的,并且有明确的定义和严格的格式,ITU-T为此制定了TTCN描述语言作为协议描述的工具。

 

2 TTCN概述

 

    TTCN根据字面的意思是树和表结合的标识方法。TTCN用来描述测试例执行的树形结构,在树的叶上对实体、对规范的一致性做出判断。

     有两种结构,一种为非结构的树形结构,另一种为结构的树形结构,其区别在于,结构的树形结构用测试步代替了非结构的树形结构的一些分支。测试步的设计有利于树支的重复利用,减小编写测试例的工作量。

      TTCN有两种表示方法,一种是用图表来表示,这种方法易于编写者和测试人员的阅读;另一种是通过TTCN的关键字,用文字描述,这种方法,易于测试仪器的识别和执行。一般测试仪器中,都是先用图表方式编写测试例,通过测试仪提供的编译器将其编译成测试仪可执行的测试例,本文着重介绍图表法。

   用TTCN表示一个测试集,应包括如下的4个部分:

(1)测试集概述:对测试集的一个总的描述。

(2)声明部分:对测试集内所有的参数的类型进行定义或声明,这些参数包括控制观察点(PCO)、时钟、ASP、PDU及其包含的参数。

(3)约束部分:对声明部分定义的抽象服务原语(ASP)和PDU的参数进行赋值。

(4)动态部分:这部分是在规定的PCO上根据约束部分定义的抽象服务原语或PDU的具体值制定相应的测试行为,这部分又分成测试例动态行为描述、测试例动态行为引用库(如果有的话)、测试例动态行为默认行为库(如果有的话)这3个部分。

 

2.1 声明部分

     测试部分是对测试中所用的所有参数的定义,包括PCO、时钟、简单类型参数、复合类型参数、ASP与PDU的定义。

 

2.1.1 PCO的声明

     PCO为控制观察点。一般情况下N层实体与N+1层和N-1层实体都有接口,因此协议测试的观察点有上下两个,所以PCO对应一层实体也分上下两个,都是先入先出队列。

    在TTCN中,PCO是获得输入输出数据的观测点。

    PCO的声明就是分别给上下两个PCO命名,在随后的测试项目中用这个名字来代替相应的PCO,在TTCN中规定的控制观察点的结构中上PCO的类型是传输服务接入点(TSAP),它的作用是上测试,该PCO是在测试协议层的底部进行观察。下PCO的类型是协商服务接入点(SSAP),作用是下测试。在测试应用层的协议,比如智能网中的INAP协议时只用到下观测点。

 

2.1.2 时钟的声明

     时钟的声明是用来定义测试中用到的计时器的名称、时长和计时单位,TTCN中规定的时钟结构中等待时钟(Wait)定义为时长为15s的时钟,无应答时钟(No_response)定义为时长为2min的时钟。

 

2.1.3 TTCN的类型声明

     在TTCN中保留了一些关键字如:IN-TEGER、BOOLEAN等做为最基本的类型,在其基础上为其它类型数据进行声明。

     TTCN中的类型声明包括简单结构的类型声明和复合结构的类型声明。

     简单类型声明就是以TTCN中的关键字或以定义好的简单类型进行声明,类型声明不仅定义了参数的类型,还规定了该类型数据的长度和范围。

     复合类型的声明就是用简单类型构成结构式类型。复合类型的声明通常用ASN.1来声明,ASN.1是ITU-T规定的一种数据的表示方法和编码方法,ITU-T对其做出了明确严格的规定,保证其描述无歧义,因此,凡是符合ASN.1的描述都能唯一地转换成16进制编码。

 

2.1.4 PDU的声明

     PDU意为协议数据包,是实际测试中用来激励被测实体和被测实体响应激励的协议数据,在前面的介绍中,我们知道,PDU的组成包括PCI和SDU,SDU是为上层服务的数据包,而PCI是用于对等层之间控制的数据包,是协议测试的主体,其数据格式一般用ASN.1来表示。在应用层的协议中,没有SDU,而是由PCI单独构成PDU,比如智能网中的INAP协议中所有业务交换点(SSP)和业务控制点(SCP)间传递的消息就是PCI(或称由PCI单独构成的PDU)。

 

2.1.5 ASP的声明

    ASP意为抽象服务原语。上文提到要申请下层的服务,就必须建立与下层的控制关系,所以必须给PDU加上ICI部分,构成和低层对话的原语。而低层的指示也是低层的SDU加上ICI构成对话层间对话的原语传送给上层。ASP就是PDU加上控制信息ICI的数据包。

 

2.2 约束部分

     在抽象测试集中应该明确规定发送的与接收的ASP或PDU的具体值,而约束部分就是用来给测试集中的参数赋值的部分。

     在约束部分中规定了发送事件的值和接收事件的值,赋值的参数类型都是在声明部分事先声明过的。

     给发送事件赋值时,所有可选参数可以用通配符定义为任意值(?)及任意或删除(*)。必选参数的值可以是具体值,也可以是个区间,也可以以枚举的方式罗列出值的范围,但所赋的值必须符合声明部分中规定的长度和范围,否则,将不能编译通过。

    接收事件的值是用来判断被测实体响应是否与协议相一致,如果接收到的ASP或PDU中的所有参数与约束部分规定的相符合则称之与协议一致,否则就与协议不一致。所谓相符合,就是指参数与约束规定的值相等。同样,在约束接收ASP与/或PDU的参数时,对不关心的参数可以定义为任意值(?)及任意或删除(*)。

 

2.3 动态部分

     动态部分是测试例执行部分,给出了测试例执行的完整的树型结构。在每个结点上,测试仪等待被测实体的响应,正常情况下沿分支继续向下执行,否则执行下一个分支。在树型结构的顶点上,对测试例进行评判,判断测试是否通过。

TTCN的行为描述是用来规定当前测试仪的动作是在PCO把一个ASP或PDU作为一个事件向对方发送,还是在PCO等待ASP或PDU构成的事件。

TTCN中用“?选”表示发送一个事件,用“?”表示等待一个事件,举例来说若要在下测试观测点L处发送一个ConReq消息,则表示为L?选ConReq,若要在下测试点L处接收一个ConInd消息,则表示为L?ConInd。

比如有下面的行为描述例:

L?选A

     L?B

          L?选C

     L?D

          L?选E

     在行为描述例中,通过行的缩进表示事件执行的先后,缩进程度越大的,执行得越晚,同一缩进的行可理解为同一节点的不同分支,在上一行执行事件时出现意外,将不再沿该分支向下进行,而执行同一缩进的下一行描述的事件,并且从这为起点进入另一分支,继续向下执行。

    在描述例中由PCO的L处发送一个事件A,如果被测试实体响应B,那么再发送事件C;若被测实体没有响应事件B,而是响应D,则向其发送事件E。可以看出这样的结构明显呈现出一个树形,在树形结构的顶点(比如L?选C和L?选E行)对测试作出判断,并且结束执行测试例。对测试例的判断有3种结果:通过(P或PASS)、失败(F或FAIL)、不确定(I或INCONC)。

     以上的测试例的树形结构是非结构形的。还有一种结构形的,就是把非结构形的树中一组执行的事件构成测试步,在测试例中引用测试步,代替这一组事件,测试步就好比程序中的子函数。测试步可以在编写测试例时,多次引用,这样减少了重复编写代码的工作。测试步的定义格式与行为描述相同。

     至此,可以完整定义一个测试例,最终由一组测试例构成一个测试集。

 

3 结束语

 

     TTCN为测试例的编写提供了有力的工具,使得测试例编写有了统一的标准,并让测试例编写和具体的协议无关,而且编写的代码可以运行在所有提供TTCN编译器的测试仪上,对协议测试仪内部不必有很深的了解就可以运行已经写好的测试例。为了保证可移植性,TTCN的语法格式十分严格,在实际应用中,TTCN还有许多技巧,这些在ITU-T的X.292建议中有详尽的描述。

    有了TTCN,测试例的编写的工作量大大减小,对测试结果的验证轻而易举。因此正确运用TTCN编写测试例是协议测试人员应具备的能力。

 

(收稿日期:1999-01-07)

[摘要] 文章简单介绍了OSI七层模型测试的基本理论,系统介绍了TTCN描述语言的基本格式和用途。

[关键词] 开放系统互连 协议测试 树形与表格型相结合的表示法

[Abstract] The paper introduces the basic theory for protocol testing based on OSI 7-layer model and the format and usage of TTCN descriptive language.

[Keywords] OSI Protocol testing TTCN