收藏本站 收藏本站
积木网首页 - 技术学院 - 软件测试 - 网站黄页 - 常用手册 - 站长工具 - 技术社区
软件测试 > TTCN > 正文

首页 | 领域细分: 游戏测试 安全测试 手机测试 Web测试 | 技术研究: 单元测试 入门教程 用例设计 性能测试 功能测试 | 测试职场: 面试精选 职场发展 面试试题

测试管理: 配置及流程 - 需求管理 - 质量验收 - 缺陷管理 - 其它管理相关 | 开发语言: PHP技巧 - PHP基础 - PHP实例 - PHP错误代码

测试工具: LoadRunner JiRa QuickTestPro RoBot WinRunner TestDirector 其它测试工具 | 数据库: Mysql数据库 Oracle数据库 CSS/DIV基础 HTML基础

基于TTCN-3的协议互操作性测试

来源:互联网 日期:2012-04-18 16:00

  一、协议测试

  协议测试是用来保证协议实现的正确性和有效性的重要手段。协议测试是在软件测试的基础上发展起来的,主要包括4种测试:

  1、一致性测试(Conformance Testing):检测协议实现系统与协议的符合程度;

  2、性能测试(Performance Testing):检测协议实现系统的性能指标(如数据传输率、连接时间、执行速度、和吞吐量等);

  3、互操作性测试(Interoperability Testing):检测同一协议的不同实现版本之间、或同一类协议的不同实现版本之间互通能力和互连操作能力;

  4、鲁棒性测试(Robustness Testing):检测协议实现系统在各种恶劣环境下运行的能力(信道被切断、通信技术掉电、注入干扰报文等)。

  二、互操作性测试

  协议测试系统是对协议进行有效测试的有机的、完整的统一体。协议一致性测试目的是检测IUT(Implementation Under Test)是否能够按照协议标准所规定的实现了它的功能,但是并不验证IUT与其他系统的互操作性,所以一致性测试无法检查出IUT在与其他系统互连时功能上的不正确性。因此必须能够对IUT互连时的互操作性功能进行检测。在互操作规程测试中,既可以存在专门的测试系统,也可以不存在。当没有专门的测试系统存在时,互操作的测试过程只是简单地将两个被测系统互连在一起,由测试人员或测试程序对两个系统的行为进行控制和观察。这种互操作性测试方法有许多缺陷。当被测试系统由多层协议组成时,测试系统无法对内部协议层的行为进行观察,也无法得到像协议一致性测试中那样详尽的测试报告,所以当发现功能上的问题时,就无法准确地定位是哪一层协议实现有错误。而且在这种测试结构下,只能观察到被测系统向高层提供的服务,却无法对底层的信息交换进行监测,从而无法观察到被测系统对底层不正常行为反应。所以这种不带专用测试系统的互操作规程测试只能达到互连通性测试的目的,而不能成为严格意义上的“互操作性测试”。由于协议的互操作性测试没有像一致性测试那样的国际标准,所以各种互操作系统所使用的方法都不相同,而其测试效率也差别很大。

  互操作性测试系统的实现方法有很多,一种理想的测试系统的结构框图如图1所示。

  

  在这一测试系统中,每一个被测系统SUT(Sytem Under Test)都通过用户接口展开测试活动,因此测试器1和测试器2便分别扮演了被测协议实现1和被测协议实现2的用户。测试系统的作用是控制和观察测试器1 与被测协议实现1、测试器2与被测协议实现2之间的交互作用,同时尽可能的观察两个被协议实现之间通过(N-1)层服务进行的信息交换。测试系统也可以生成错误的数据测试协议实现IUT的错误恢复能力。

  互操作性测试的主要过程与一致性测试有许多相似的地方(如图2),主要有如下一些步骤:

  

  1、通过分析在实际网络环境下的协议标准,定义测试目的,制定抽象测试集ATS。互操作性测试ATS与一致性测试ATS非常相像,但内容不同。

  2、根据ATS开发互操作性测试可执行测试集ETS(Executive Test Case)。在互操作性测试中,对ATS的处理过程与一致性测试完全相同。

  3、分析PICS和PIXIT,选择互操作测试的测试项。

  4、执行互操作测试,每个测试项的测试结果与一致性测试一样,也分为测试通过、测试失败和测试无结论三种。

  5、对测试结果进行分析,产生测试报告。

  三、基于TTCN-3的协议互操作测试系统

  根据协议互操作性测试原理图(见图1),在进行协议互操作性测试时,互操作测试系统采用TTCN-3语言编写抽象测试系统,对协议下的N-1层服务进行监听,在两端的被测系统上采用TTCN-3语言编写抽象测试用例,分别从两端的被测系统进行测试,两端的测试用例都通过测试系统进行控制执行,测试完毕后由测试系统根据测试用例的测试判决生成测试结果分析报告。基于TTCN-3的协议互操作测试系统结构框图如图3所示。

  

  测试系统使用人员界面:该模块为图形化软件控制界面,供用户选择被测协议和测试类型。

  被测系统:协议互操作性测试中的被测协议。

  互操作性测试系统:控制抽象测试用例的配置和执行。

  抽象测试用例:针对被测协议,采用TTCN-3语言编写的测试用例。

  适配器:将TTCN-3编写的抽象测试用例和实际的被测系统连接起来。

  编解码器:在TTCN3语言和实际系统进行数据通信时,将数据编解码为对方能识别的数据文件。

  基于TTCN-3的协议互操作性测试步骤如下:

  1、测试人员通过测试系统界面进入互操作性测试系统;

  2、在测试系统中选择被测系统A、B的抽象测试用例,并配置相关测试数据;

  3、编译运行抽象测试用例,对被测系统进行测试,并将发送接收的数据进行管理和存储;

  4、分析测试数据和测试判决,生成测试结果分析报告,测试过程完毕。

  四、协议互操作性测试流程

  由于协议互操作性测试没有明确的标准规范规定协议互操作性测试的流程、步骤以及判决标准,因此我们需要自己提出协议互操作性测试的流程、步骤以及最终测试结果的判决标准。在这一方面需要我们对大量的协议,采用不同的方法和步骤进行测试后,根据测试数据来总结得出一套最优化的协议互操作性测试的标准化流程、步骤,以及最终的协议互操作性评判标准。这是本文最大的创新点,也是最有难度的技术性问题。

  经过详细的调研以及对协议互操作性测试和TTCN-3语言的掌握,拟定协议互操作性测试流程如图4所示。

  

  在这个流程中,最为重要的就是互操作测试系统的构建,其次是测试用例的编写和覆盖问题,最后是测试分析报告的依据,这也和测试系统以及测试用例的覆盖等问题相关,这些问题也是研究的重点内容。在对这个测试流程进行大量的实验后,对每一模块进行分解,阐明它们的功能,分配它们不同的任务,提出不同模块的验收标准,最后得出一整套互操作测试系统构建、编写、测试、验收的标准性流程规范。

  五、基于TTCN-3协议互操作性测试系统构建

  在互操作性测试系统中,由于测试系统和两个被测系统独立地存在于不同的系统之中,要监视两个被测系统之间通过N-1层服务进行的通信,测试系统必需能够监听N-1层的通信;由于测试器分布在各个被测系统之中,它们之间协调过程的同步难以保证。通过采作TTCN-3语言形式化的描述、测试配置以及协议互操作性测试系统框架结构的研究,可以简单有效地实现被测协议和测试器之间信息交换的转发功能。但是由于TTCN-3语言是一种全新的抽象性的描述语言,在采用TTCN-3语言对协议进行描述,编写抽象测试用例时,还需要编写配套的编译器、适配器和编解码器。目前TTCN-3语言的主要应用方向为协议的一致性测试,在互操作性测试领域应用于的较少,没有相应的规范和标准。

  在采用TTCN-3语言对协议进行描述构建互操作性测试系统时,系统的结构框图如图3所示。互操作性测试系统由TTCN-3语言编写,分配测试组件、安排测试成分、配置测试用例以及控制测试用例的执行。抽象测试用例也是采用 TTCN-3语言根据具体的协议内容以及互操作性测试的要求编写,经过TTCN-3语言编译软件编译为可执行测试用例。适配器的作用就是将抽象的测试用例和实际的被测系统连接起来,使得抽象测试用例和实际的被测系统能进行通讯连接和数据交换。编解码器的作用就是将适配器和被测系统进行通讯的消息以及数据编解码为双方都能够识别的数据结构。

  两种测试系统的构建方法:一种是针对有两个被实现,即两块不版本的协议的板卡,另一种是针对只有一个被测实现,即一块协议协议板卡。

  对于第一种情况,互操作性测试系统框架图如图5所示。

  

  在这种情况下,被测系统A和被测系统B可位于不同的测试仪器上,对于每个被测系统都需要编写抽象测试用例,每个测试系统上的测试用例都要从主动发送和被动接收消息做出反应这两个方面进行编写。当两个被测系统不在同一台测试机器上时,在每台测试机器上都需要互操作性测试系统、编解码器、适配器,在测试时,该系统调用编写好的抽象测试用例对该被测系统进行测试,其中编解码器是将TTCN-3语言构建的测试系统中的输出数据解码为测试仪器可识别的数据格式,还将测试仪器接收到的反馈数据编码为TTCN-3数据格式,输入互操作性测试系统;适配器是将互操作性测试系统和实际仪器的数据传输端口连接起来,使得互操作性测试系统数据的发送和接收能够正常进行。因此,在这种情况下只需要在不同的测试仪器上编写测试用例,适配器和编解码器,然后在互操作性测试系统中运行执行不同的测试功能。这种情况可以同时测试两个被测系统的互操作性,但是一旦出现问题时,需要具体分析是哪一个被测系统的哪一部分出现问题。

  对于第二种情况只有一个被测实现时,互操作性测试系统框架如图6所示。

  

  这种情况主要应用于由于通信的另一方过于复杂或并无足够的信息对其进行建模,在测试中,只有一方是可建模、观察和控制的。针对这种情况,提出了这种“A 对B的互操作能力”的互操作性测试模型。对这种测试模型进行延伸,就是不把这种方法限制在一主不能建模、观察和控制的基础上,即当双方都能建模时,也可采取这种方法进行测试,唯一的区别是,当一方可观察、控制、建模时,我们可以在该测试系统上编写测试用例;当一方不能观察、控制建模时,我们就不能在该测试系统上编写测试用例。

  在这种情况下,我们首先用TTCN-3语言模拟协议版本嵌入到互操作性测试系统A中,并且假设我们模拟的这个协议版本的互操作性能非常好,然后我们通过这个互操作性测试系统向被测系统发送消息、命令、连接请求等来测试被测系统和该协议版本的互操作性能,这部分测试用例嵌入在用TTCN-3语言模拟的协议版本中是测试被测系统的被动反应能力。另外,被测系统中的测试用例是用来测试被测系统向互操作性测试系统A发送消息、命令、连接请求等信息来测试被测系统和该协议版本的主动连接请求等性能。这种情况的好处是,我们可以用TTCN-3语言模拟任何协议的任何版本来和被测系统进行互操作性测试,这样就不会拘泥于两个被测实现的限制;另外,这种测试方法中如果在软件编程模拟中没有问题,而测试中一旦出现问题,它肯定是出现在被测系统一方,能及时的反应出被测系统中的问题和不足之处;最后,这种测试方法可以在一台测试仪器上完成,对硬件设施的要求较低,对软件编写能力要求较高。不足之处在于用TTCN-3语言模拟协议版本工作最大,随着协议中状态数的增加,软件模拟的工作量呈爆炸性增长,所以这种方法也只能应用于一些较为简单的协议,或者复杂协议中的某一些功能的测试。

  六、TTCN-3测试系统中适配器的设计

  在TTCN-3测试系统中,适配作用是将抽象的测试用例和实际的被测系统连接起来,使得抽象测试用例和实际的被测系统能进行通讯连接和数据交换。在适配器和TTCN-3语言编写抽象测试用例的连接中,数据流图如图7所示。

  

  适配器将抽象测试用例中定义的通讯端口和实际被测系统中N-1层的服务提供者即实际被测系统中的端口连接起来,使得抽象测试用例通过定义的数据发送端口向被测系统传送的数据能通过该端口传送给被测系统,也使得被系统向抽象测试用例反馈回的数据能通过数据接收端口发送给抽象测试用例。

  适配器分为输出适配器和输入适配器。输出适配器的消息是测试系统传递过来的,并且它要负责把消息传递到被测系统。输入适配器则相反,它等待被测系统的消息,并把消息发送给测试系统。输出适配器在每次测试系统阐释消息到被测系统的进修都会被调用,因此它可以是被动的,也就是说可以运行于测试系统的组件线程内。

  输入适配器必须能提供被测试系统调用的方法。在这里,测试系统调用适配器对象的一个方法就是,这个对象的类必须是已经被注册为适配器实现的。当测试用例执行一个map语句的时候调用trimap操作,当测试用例执行一个unamp的时候调用triunmap操作,当测试用例执行send语句的时候调用 trisend操作。

  triMap(当测试用例执行一个map语句的时候调用)

  triUnmap(当测试用例执行一个unmap语句的时候调用)

  triSend(send语句的时候调用)

  当测试用例执行map(Component:ComponentPort,system:SystemPort)会调用tirMap(compPortId,tsiPortId)。

  TRI规范中的tirMap:TriStatusTyjpe triMap(in TriPortIdType compPortId,in TriPortIdType tsiPortId)comPortId和tsiPortId都是TriPortIdType类型的参数。comPortId表示 Component:ComponentPort,tsiPortId表示system:SystemPort,利用这个信息可以建立与被测系统的连接。

  对于不同的测试协议即不同的被测系统,需要编写不同的适配器,对于不同的抽象测试用例也需要编写不同的适配器。所以需要设计制作一个能够通用的适配器,这需要我们对于各个不同的协议编写了不同的适配器后,从中抽象出每个适配器的相同点,设计制作一个通用适配器,使测试系统更加智能化,能够测试更多不同的协议。

  理想互操作性测试系统实现起来有以下难点:首先,由于测试系统和两个被测系统独立地存在于不同的系统之中,要监视两个被测系统之间通过(N-1)层服务进行的通信,测试系统必须能够监听(N-1)层的通信;其次由于测试器分布在各个被测系统之中,他们之间协调过程的同步难以保证。基于以上原因,采用了TTCN-3测试系统,解决了上述难点。

本周排行

别人正在浏览

强悍的草根IT技术社区,这里应该有您想要的! 友情链接:b2b电子商务
Copyright © 2010 Gimoo.Net. All Rights Rreserved  京ICP备05050695号