一种通用测试控制器的研究与设计
2019-11-06宋惠
宋 惠
(通号城市轨道交通技术有限公司,北京 100070)
信号产品的生命周期一般包括需求分析、风险分析、设计实现、功能测试、验证确认等几个阶段,功能测试阶段主要验证产品是否满足需求设计的要求,是否能在错误输入和异常场景下做出正确反应,这就要求测试环境能够在功能特性、时间特性、故障特性等方面模拟被测产品的真实运行环境,能够按照测试人员的测试意图模拟测试场景需要的输入数据和输入时序,完成测试执行。
本文在既有信号产品测试控制器的基础上,研究设计一种新型的、通用的测试控制器,以期使不同信号产品能够使用统一的测试环境完成功能测试,简化测试环境的维护,使测试环境标准化和规范化,从而提高测试的质量和效率。
1 信号产品的测试环境
信号产品普遍与多个外部设备相连,它要与每个外部设备进行数据交互,且不同设备间的通信协议也不大相同,这就使得信号产品的测试环境天然具有接口众多、数据格式复杂的特点。一个典型的信号产品的测试环境结构如图1 所示。
测试控制器是整个测试环境的“大脑”,它从外部获取测试需要的输入,维护整个测试环境的运行,调度驱动各个模拟设备和被测设备进行通信,获取被测设备的输出,并向外部返回测试结果。测试控制器全程参与整个测试过程,是测试环境的核心模块。
图1 测试环境结构图Fig.1 Structure diagram of test environment
模拟设备是测试控制器与被测设备之间的“转换器”,它主要模拟与被测设备真实通信的外部设备,将测试控制器下发的测试命令翻译成被测设备可以识别的输入,驱动被测设备进行输出,翻译被测设备的输出并转发给测试控制器。例如在基于通信的列车控制系统(CBTC)的地面设备区域控制器(ZC)的测试环境中,ZC 作为被测设备,模拟设备主要模拟与ZC 进行通信的外部设备,包括联锁模拟器、列车自动监控模拟器、列车模拟器、相邻ZC 模拟器等。
一个典型的测试流程如图2 所示。
图2 测试流程图Fig.2 Test flow chart
1)测试控制器读取测试输入。测试输入定义了整个测试需要的基本信息,包括测试环境定义,测试步骤以及测试标准。测试环境定义说明被测设备和模拟设备是谁,以及各个设备的启动参数和设备间的连接关系。测试步骤由一组有序的测试命令组成,其中测试命令负责驱动模拟设备向被测设备进行输出,即定义模拟设备向被测设备输出的信息内容。测试标准定义执行完前述测试步骤中的测试命令后,被测设备根据预期应该输出的信息。
2)测试控制器启动测试环境。在读入测试输入后,测试控制器根据测试环境定义依次启动各个模拟设备和被测设备,完成整个测试环境的部署。
3)执行测试步骤。测试控制器依次解析测试步骤中定义的测试命令,将测试命令发送给模拟设备。模拟设备收到测试命令后“翻译”并发送给被测设备。
4)输出测试结果。模拟设备收到被测设备的输出后“翻译”并发送给测试控制器,测试控制器根据测试输入中定义的测试标准判断被测设备的输出是否符合预期。
2 测试控制器通用性分析
虽然不同信号产品之间由于其功能和接口的差异,测试环境各不相同,但它们在原理和结构上非常相似,这种相似性尤其体现在测试控制器上,使测试控制器通用化成为可能。
测试控制器通用化有很多优点,这体现在以下几个方面。
1)减少重复工作量。如果为每个信号产品都单独开发一套测试控制器,定义不同的测试输入接口和模拟设备接口,开发和调试测试控制器将花费可观的人力和时间成本,不仅直接导致信号产品的生命周期拉长,同时也带来潜在的不稳定性,间接降低信号产品的安全性。相反,如果使得信号产品的测试控制器通用化,则免去测试控制器的开发和调试,节约大量的人力和时间,同时保证信号产品的质量。
2)提高复用性。不同的测试控制器其测试输入和模拟设备接口各不相同,这使得测试输入和模拟设备不能在信号产品的测试中复用。相反,如果使得信号产品的测试控制器通用化,则可以大大提高既有信号产品的测试输入和模拟设备的复用率。
3)简化测试执行。由于测试控制器的通用化,多个信号产品的测试可以共享同一个测试控制器,在实际测试中可以大大加快测试环境的部署,降低测试环境的维护难度,简化测试执行。
3 通用测试控制器设计
3.1 通用测试控制器的需求分析
通用测试控制器的设计出发点就是其通用性。通用性就是当通用测试控制器从一个信号产品的测试环境移植到另一个信号产品的测试环境时,不需要对通用测试控制器本身做任何修改,只需通过改变它的一些配置即可适配新的测试环境。
这对通用测试控制器提出了以下要求。
1)具有灵活的模拟设备管理功能。同一个测试环境的不同测试场景或者不同测试环境对模拟设备的需求不同,通用测试控制器应根据不同的测试需要对模拟设备进行灵活配置。
2)具有灵活的模拟设备通信协议管理功能。测试环境中的模拟设备为了完成各自的功能其通信协议各不相同,通用测试控制器应适配不同模拟设备的不同通信协议。
3.2 通用测试控制器的架构
通用测试控制器主要由模拟设备管理模块、测试信息解析模块、模拟设备通信协议模块、日志记录模块等组成。其架构如图3 所示。
图3 通用测试控制器架构图Fig.3 Framework diagram of general test controller
1)模拟设备管理模块
模拟设备管理模块的主要功能是在启动测试环境时对模拟设备进行初始化设置,包括模拟设备的类型、名称、网络参数配置等。在测试执行过程中,负责模拟设备的状态监控,即实时检测模拟设备是否运行正常,与测试控制器是否通信正常。协调模拟设备,即通过对模拟设备进行时钟同步消除由于时钟漂移带来的影响。
可扩展标记语言XML 是标准通用标记语言的子集,是一种用于标记电子文件使其具有结构性的标记语言。它具有开放性、简单性、自我描述性、结构和内容分离、可扩展性等一系列优点,因此选择用XML 文件存储模拟设备的配置信息。通过XML 文件描述整个测试环境,可以方便的根据测试需要调整模拟设备的类型、个数、参数等。
2)测试信息解析模块
测试信息解析模块的主要功能是在测试过程中实时解析模拟设备需要执行的测试命令并发送给模拟设备,实时解析从模拟设备收到的被测设备的输出并与预期结果比较,判断测试是否成功。
该模块主要涉及的信息有两类,一类是发送给模拟设备的测试命令,另一类是模拟设备返回的被测设备输出。由于信号产品之间的差异性,上述两类信息在具体形式上千差万别,如果测试控制器针对具体的信息格式去解析则无法实现通用性。经过统计分析可以发现,各信号产品上述两类信息有着共同的特点,即它们都可以抽象为如下的表现形式。
T={H,N,A}
其中:
H 是命令的接收者或者结果的返回者;
N 是命令或结果的名称;
A 是命令或结果的属性集合。
通用测试控制器可以解析的测试命令或测试输出必须按照H、N、A 的顺序进行组织,H 和N 不可省略,A 是一组属性名称和属性值的集合,属性集合可以为空,也可以不为空。
3)模拟设备通信协议模块
模拟设备通信协议模块的主要功能是将测试信息解析模块解析的测试命令按照通用测试控制器与模拟设备之间的通信协议发送给对应模拟设备。将模拟设备收到的被测设备的输出按照通用测试控制器与模拟设备之间的通信协议解析并交给测试信息解析模块。
随着信号产品的研发,其测试环境需要的模拟设备会不断增加,模拟设备与测试控制器之间的通信协议也会相应不断扩展。如果测试控制器只针对具体的通信协议去解析则无法实现通用性。模拟设备通信协议模块对不同模拟设备的通信协议处理借鉴动态链接库的思想,即当通用测试控制器需要接入新的模拟设备时,通用测试控制器本身不需要做任何变更,只需将新模拟设备的通信协议解析部分单独封装,以库的形式在通用测试控制器启动时动态加载。
模拟设备通信协议模块的工作流程为:
a.启动通用测试控制器前根据测试需要,配置模拟设备的通信协议库;
b.通用测试控制器启动时根据配置加载模拟设备通信协议库;
c.模拟设备通信协议模块向模拟设备发送测试命令时,调用模拟设备通信协议库将测试命令转换为对应的协议后发送给模拟设备;从模拟设备收到信息时,调用模拟设备通信协议库将信息转换为测试输出。
4)日志记录模块
日志记录模块的主要功能是记录测试过程中通用测试控制器和模拟设备的状态信息、通用测试控制器和模拟设备之间交互的信息以及整个测试环境的异常情况。
日志记录模块可以通过配置实现按照重要程度记录日志、按照模块记录日志、按照不同输出方式记录日志等功能,以实现通用性。
4 结束语
本文在既有信号产品测试环境的基础上,设计实现了一种新型通用测试控制器,大大简化测试环境的开发难度,提高测试环境的通用性和稳定性,对保障信号产品的安全性有重要意义。