TTCN-3语言看起来像一个普通的程序设计语言,但是它与普通的程序设计语言又有不同。要实现一个TTCN-3测试系统,除了TTCN-3语言外,我们还需要加上测试扩展,包括测试配置、匹配机制、定时器支持、测试判决、通信机制等。这里简要介绍下测试配置的基本原理并用简单的实例加以说明。

  一、测试配置的基本原理

  TTCN-3支持对测试配置的动态定义,测试配置包括两部分。第一是一个带有良好定义的互连测试组件,包括一个主测试组件MTC和若干并行的测试组件PTC;第二是定义该测试系统边界的明确的测试系统接口TSI,它负责MTC、PTC与被测系统之间的通信。

  当启动测试例时,主测试组件MTC自动创建,负责管理和协调PTC的测试行为,生命周期贯穿整个测试例的执行过程。所有的PTC都能由Creat、Start、Stop操作来动态地创建、启动和停止。

  MTC、PTC、TSI都通过端口交换信息(端口,即测试组件端口,它可以收发由TTCN-3所定义的消息)。在测试例执行过程中,可以通过map、unmap、 connect、 disconnect动态地改变各个端口之间的连接和映射关系。

  每个不同的测试系统都有一个且仅有一个主测试组件和测试系统接口。它们都是在测试例启动时,系统自动创建,测试例运行结束后销毁,主测试组件在测试行为中通过关键字mtc引用,测试系统接口在测试行为中通过关键字system引用。

  二、测试配置的实现

  介绍了测试配置的基本原理,那么如何具体实现测试配置呢,TTCN-3给出了端口和组件的定义。

  端口的定义:TTCN-3通过关键字port来定义端口,支持基于消息或基于过程的端口,分别通过关键字message、procedure来定义。端口是有方向的,关键字in表示输入方向,关键字out表示输出方向,关键字in/out表示输入/输出方向。例1:

  type port mymsgport message { in msgtype1;out msgtype2;inout integer }上面的这个例子中,端口名称定义为mymsgport,是基于消息的端口,用关键字message来标志。该端口可以接收msgtype1和msgtype2类型的数据,允许接收和发送integer类型的数据,其中msgtype1、msgtype2是TTCN-3特有的数据类型,如record,set等。

  组件的定义:组件,是用来执行测试行为的。TTCN-3通过关键字component来定义组件。一个组件中可以包含端口、本地变量、定时器说明等。注意:不同的组件可以使用相同的端口,但是同一组件的端口名字应该是的。例2:

  type component mymtc { port mymsgport;var integer mylocalinteger;timer mylocaltimer }上面的这个例子中,组件名称定义为mymtc,它包含上面定义的端口mymsgport,一个本地变量mylocalinteger,还有一个TTCN-3定义的定时器变量mylocaltimer.

  注:测试系统接口定义和组件定义具有相同的形式,但是在定义测试系统接口时,测试组件的声明中不能包含任何常量、变量和定时器。例如上面的例2只能表示定义的是一个测试组件,而不是测试系统接口。

  三、小结

  前面两部分介绍了测试配置的基本原理和具体的实现,那么针对一个具体的被测系统设计TTCN-3测试系统时,对于测试配置的设计要考虑我们需要测试哪些功能,需要几个端口,几个组件,定义的端口和组件能否满足我们测试的需要,然后根据上面的定义实现测试系统的测试配置可以了。