一、TTCN概述
TTCN(TreeandTabularCombined Notation)树表结合表示法,顾名思义,就是采用以树和表格为表现形式的测试表示法,其中表格主要用于数据类型、原语、协议观察点、约束等,树则用于描述测试集、测试例、测试步。根据ISO/IEC 9646的定义,TTCN需要满足以下几项需求:第一点,测试系统能够定义、构造发送和接收被测试实体(IUT)的抽象服务原语(ASP);第二点,能够定义和构造嵌入在ASP中的协议数据单元(PDU);第三点,在指定控制和观察点(PCO)上,能够规定ASP的发送或接收顺序和能够构造测试例。
二、协议软件测试
目前协议测试分成一致性测试(ConformanceTesting)、互操作性测试(InteroperabilityTesting)、性能测试(PerformanceTesting)、坚固性测试(Robustness Testing)和遍历性测试(Ergodicity testing)等几个方面进行研究。
图1 几个测试阶段的关系
●一致性测试:验证设备实现与相应协议标准的一致性,检验不同的待测设备是否能够满足统一的要求,从而在相同的外部条件下进行相同的动作,并且输出相同的结果。一致性测试的开展是为了保证不同厂家的产品表现一致并能够互联互通,保证开发人员有据可依,从而保证质量。
●互操作性测试:根据终端芯片与终端开发的实际进展,验证不同终端与系统之间的互操作能力,并且促进不同系统和终端空中接口间的互操作能力,即解决不同终端与不同系统之间的互操作问题。
●性能测试:主要是通过测试终端的功能,比如终端长时间稳定进行某项功能的能力,终端重复稳定地运行某项功能的能力,终端同时进行多项业务时表现出的处理能力以及系统的负载工作能力等。
●遍历性测试:协议软件开发到尾声阶段,为了尽可能穷尽所有可能的情况,同时避免重复劳作而进行的测试。
每个方面的测试一般来说又包含单层测试、集成测试、系统测试几个阶段。几个阶段测试之间的关系如图1所示。
●单层测试:主要测试单层的内部结构(如逻辑和数据流)以及该层的功能和可观测的行为。
●集成测试:确保各层集成在一起后能够按既定意图协作运行,并确保其行为正确。它所测试的内容包括层间的接口以及集成后的功能。
●系统测试:测试的最终应用将在板级上进行,模拟真实环境进行测试。
根据TTCN的规则和要求可以构造出TTCN的测试模型,如图2所示。
图2 TTCN测试模型
三、测试方法
可以看到TTCN的测试是一种典型的黑盒测试,把整个IUT看作一个测试实体来考虑,采用TTCN作为测试环境,TTCN与IUT之间的接口作为测试观测点PCO,运行测试例,通过观测和检查PCO的ASP和PDU的正确性来达到验证测试例的正确性。测试例是测试的目的和方向所在,而且测试系统也是通过TTCN编写测试例来模拟的,因此测试例的编写是一个十分重要的环节,要满足协议和应用的各种要求,做到十分严谨和精确,这也是测试人员的主要任务所在。被测实体IUT可以是单层(被测系统只有一层被测试)或多层(被测系统中有一系列相邻层需要测试),可以根据测试的不同阶段来选择组合。基于此TTCN的测试模型我们可以采用几种测试方法。
采用一个集仿真、开发、测试于一体的TelelogicABTau的产品SDLand TTCN Suite 4.0作为开发工具。通过TTCN编写测试例,SDL and TTCN Suite 4.0提供的SDL和TTCN的协仿真功能来进行测试。
1.简单的TTCN和SDL测试
ASP和PDU的接口定义使用SDL工具的TTCN-LINK(利用SDL的功能,可以将SDL描述的数据结构直接转换到TTCN中使用)功能直接转换得到。在协仿真中TTCN收到SDL发送的数据,经过IUT处理后送回到SDL中去,SDL输出的数据和TTCN发送到SDL的数据存在一定的关系。通过验证其正确性以确定IUT开发的正确性。这是基于TTCN的最基本的测试方法,所有的数据处理都是在TTCN中来完成的,但是TTCN对数据的计算能力是有限的。我们在开发中将C源代码嵌入到SDL中,所有的接口也都是通过C来定义的,因为C的数据类型非常丰富,但是TTCN可以识别的数据类型却是有限的,比如复杂的指针就无法处理。因此这种方法只适合测试数据量不大、数据类型简单的情况,不是很有实际应用的价值。
图3 简单的TTCN和SDL测试
2.改进后的TTCN和SDL测试
由于上述方法的缺陷,我们对它进行了改进,这就是要介绍的第二种测试方法。将TTCN无法处理的过程放到SDL中来完成,用C源代码完成测试数据的分析和构造,并在IUT内部增加2个测试模块A'、B'和2个测试接口,如图4所示。2个测试模块可以对信号A和B作任何处理,在测试模块进行数据的转化和处理,再将预处理后的数据送到TTCN测试环境中处理,从而大大简化了TTCN测试数据的编写和处理。这种方法最大程度的利用C、SDL、TTCN的优点,在测试过程中实现协仿真,可以生成消息序列流图(MSC图),通过观察IUT内部和IUT与环境之间PCO的消息序列和数据流,从而达到验证开发正确性的目的,可以认为该方法为一种灰箱测试方法。目前此测试方法已经广泛地应用在终端协议软件的一致性测试、互操作性测试等测试的单层和集成测试中,我们认为它是一种非常有效的测试方法。
图4 改进后的TTCN和SDL测试IUT
(二)基于TTCN的板级测试
TTCN结合SDL的测试方法能够很好地满足协议栈软件开发初期和中期的要求,但是由于SDL的实时性比较差,定时器,内存、接口测试等都不能很好的模拟现场实际情况。随着协议软件开发的逐渐成熟,只采用这种方法也不能很好的满足要求,并且到了更加需要大量基于实际环境的系统测试阶段。如此繁多的系统测试都到现场进行是非常昂贵,也是不可能实现的,因此需要对测试方法做出改进,找到能够模拟现场测试的室内系统测试新方法。
采用TTCN结合手机板的板级测试方法是一种非常有效的模拟现场测试的系统测试的好方法,仍然采用TTCN模拟测试环境,编写测试例,但是测试体不再是嵌入了C代码的SDL,而是实实在在的移植了源代码的手机板,测试模型如图5所示。
图5 板级测试的IUT
IUT的测试环境仍然是在TTCN中编写测试例模拟,也是通过接口与IUT进行消息交互,再检查消息交互的原语、数据及对应的MSC图、TRACE来验证测试实体是否达到开发的要求。而消息交互过程仍然存在,因为TTCN的局限性—无法识别复杂指针和某些数据类型的问题。因此IUT和测试环境的消息交互还必须要经过一个中间过程来转化,这个转化过程可以通过设立一个BUFFER来实现串口转换,在BUFFER中进行数据和类型的转化及处理,这个处理过程的原理实际上很类似于前面介绍的TTCN结合SDL的第二种测试方法的处理原理。
板级测试的主要特点就是将测试模块(即IUT)源代码移植到手机板上运行,在具体实现过程中,及测试例准备就绪的前提下,首先将源代码加到工程文件中,通过编译工具(一般采用ARM公司的ARMDeveloperSuite)将工程文件编译成可以在ARM核芯片上运行的目标代码,然后将代码移植到ARM核芯片上,再通过嵌入式系统的测试工具(如Lauterbach公司出品的通用调试软件TRACE-32ICD速度很快,但是价格昂贵,可根据实际情况决定)把目标代码下载到目标板上运行调试,最后通过观察PCO是否得到预期的结果。另外我们还可以将实时操作系统应用到板级测试中,将协议软件运行在这个操作系统之上,这样可以真正的实现人机界面的操作,更加真实地模拟现场测试。
板级测试不仅能够很好地克服TTCN的实时性差的缺点,而且基本上能够达到在室内实现模拟现场测试的大部分测试,就目前来说它是一种非常先进的室内测试方法,可以应用在各种终端测试的系统测试阶段。如今一致性测试互操作性测试以及性能测试等已经基本完成,但仍然需要做大量的遍历性测试,尽可能地发现以前各种测试没有发现的问题。进行遍历性测试主要应该放到系统测试阶段,因此应用板级测试将会起到非常好的效果。
责任编辑:gt
-
测试
+关注
关注
8文章
5269浏览量
126599 -
接口
+关注
关注
33文章
8575浏览量
151019 -
仿真
+关注
关注
50文章
4070浏览量
133552
发布评论请先 登录
相关推荐
评论