基于FSM模型的总线协议一致性测试系统研究

2018-10-15 05:58峰,郝
计算机技术与发展 2018年10期
关键词:测试用例报文总线

周 峰,郝 鑫

(中国软件评测中心,北京 100048)

0 引 言

在中国制造2025的战略指导下,中国的工业企业正在向着智能制造进行转型发展,其中的关键是实现信息世界与物理世界的深度融合与交互,构建具备泛在感知、深度互联、高级计算分析、精准执行功能的工业生态系统。数据采集与监视控制系统(supervisory control and data acquisition,SCADA)是其中最为核心的系统,广泛应用于石油石化、轨道交通、电力、水利等典型流程制造工艺过程的生产、输油、输电线网上的数据采集、运行状态监控、调度等[1]。该系统中的众多工业总线协议的有效交互,成为了实现工业生态系统的关键环节。由于不同的设计和开发人员对相同通信协议标准的理解存在不同,在最后实现模块间、总控与站控间的通信时,可能会产生错误。因此,为了发现并修正协议实现问题,需要对SCADA软件采用的总线协议进行一致性测试[2-3]。

文中对主要应用在管网SCADA系统中的开放性总线协议IEC60870-5-104、Modbus、Ethernet/IP、DNP3.0、OPC进行分析,研究协议测试的内容、用例、方法、流程以及实现,设计开发总线协议一致性测试系统。

1 总线协议一致性测试系统设计

1.1 架构设计

总线协议一致性测试系统结构如图1所示[4-5],其中总线测试器中运行的是标准的被测总线协议实现,测试界面作为人机交互的窗口为操作该系统的相关人员提供操作和控制测试过程的接口,并实时输出当前的测试结果。

图1 总线协议一致性测试系统结构

该系统的核心功能包括测试用例生成模块、协议解析模块、一致性判定模块。

1.2 测试用例生成算法

测试用例生成过程首先是根据形式化描述方法产生测试序列,然后将测试序列实例化。对于已经经过形式化说明的协议,可以用测试用例产生技术自动生成适合该协议进行测试的测试用例集。

常用的一致性测试用例生产算法包括Petri网、有限状态机(finite state machine,FSM)、标签迁移系统(labeled transition system,LTS)以及约束逻辑程序(constraint logic program,CLP)等。其中FSM是一种描述软件需求的形式规格说明描述工具,具有精确性、可推导性和可验证性等优点[6-7]。因此,基于FSM建立适用于SCADA软件的开放性总线协议测试系统的用例生成算法。

在此,以Modbus协议为例,说明基于FSM的协议形式化描述。

Modbus协议是一个基于请求/应答结构的数据传输标准:具体的通讯需要有两个部分参与,分别是客户端(Modbus client,C)和服务器端(Modbus server,S)[8]。根据Modbus协议描述,其服务器端有19种功能,可以将其中的每一个功能都转化为对应的FSM模型。生成Modbus协议测试用例涉及三个阶段:协议形式化、测试序列生成、测试用例实例化。

第一阶段:Modbus协议建立FSM形式化模型。首先对Modbus服务器端建模,得到简化的FSM模型,如图2所示。以该模型为基础,其他19种服务端功能的FSM模型都由此演绎而来。

图2 Modbus服务器端的FSM简化模型

FSM模型中状态的含义如下:

S0:等待Modbus下一步指令;

S1:接收Modbus指令;

S2:功能码有效;

S3:地址码有效;

S4:数据段有效;

S5:Modbus功能码执行有效;

S6:指令无效。

第二阶段:基于FSM生成测试序列。常见的FSM测试序列生成方法主要有:T、D、W、U四种方法[9]。考虑到最终的协议测试,需要确保生成的测试序列满足以下两点:在确保测试序列路径覆盖率足够大的条件下,测试序列尽量短;不同的输入序列对应不同的输出序列。

第三阶段:一致性测试用例实例化。

表1给出了总线协议一致性测试系统中不同协议的典型用例。

1.3 协议解析方法

测试工具能够模拟总线上的主站或从站,或者以监听的方式接收总线或公网链路上发送的数据,并按照协议标准对数据进行解析。不同协议有不同的帧格式,需要针对不同协议设计不同的协议解析模块。数据通信以报文帧的形式发送,但具体执行何种操作需要对报文信息进行解析。以Modbus协议为例说明协议解析模块的功能。

文中系统依据《GB/T 19582.1.2008 基于Modbus协议的工业自动化网络规范》[10]解析Modbus RTU报文,将Modbus RTU报文中的附加地址、功能码、数据、差错校验分别保存在不同变量中。协议解析模块实现对报文帧的解析:根据报文的附加地址和发送顺序,可以自动判断并显示当前报文是请求报文还是响应报文;根据功能码,可以自动判断并显示当前报文的功能;根据数据,可以自动判断并显示当前报文的含义;如果为错误响应,则可以根据异常码自动判断并显示错误原因。

表1 总线协议一致性测试用例举例表

1.4 一致性判定方法

一致性判定模块用于提供实际响应与预期响应的比较结果。如果被测实现IUT能够在定时器规定的时间内回复正确的请求,说明IUT符合协议规范,则测试判决结果为通过(PASS),测试顺利完成。如果IUT未能按时完成相应的请求或请求结果不正确,说明IUT不符合协议规范,则判决结果为失败(FAIL)。

2 总线协议一致性测试系统实现与测试

2.1 测试用例生成模块

文中主要基于TTCN来实现协议一致性测试用例。TTCN-3是为测试而专门定义的一种抽象描述语言,目前广泛用于测试用例的设计[11-12]。基于TTCN数表描述语言在TTCN Suite 6.0软件开发环境下根据协议规范编写测试用例,可分为6步:

(1)在TTCN Suite 6.0软件中新建一个TTCN的suites。

(2)需要对控制和观察点(PCO)进行定义及对其类型进行声明,尤其需要说明所构造的PCO的具体使用形式:是上测试(UT)接口、下测试(LT)接口,还是LT、UT同时使用。

(3)对ASP和PDU的类型进行定义,需要对被测实体IUT与UT和LT之间的通信数据单元进行必要的描述,即需要对抽象服务原语(abstract service primitives,ASP)的协议数据单元(protocol data units,PDU)进行定义。

(4)定义用户自己需要的常量、变量、定时器等数据的数据类型,避免与TTCN中预定义的数据类型混淆。

(5)在约束部分构建从UT或LT到IUT的ASP或PDU数据流以及相关的响应数据流[13],此处需要对ASP、PDU和动态部分使用的变量或参数进行赋值操作,然后在测试用例的动态部分使用。

(6)在TTCN Suites的动态部分构造测试用例Test Case,将协议的每一步按照协议逻辑顺序构造成Test Case中的Test Step,并完成相应的结构化设计,完成对测试用例的编写。

这部分的软件设计主要是利用事件结构并配合While循环结构实现事件触发机制,不同的事件触发进入不同的程序处理。对于不同的测试协议,测试用例的创建各不相同,如Modbus RTU需要设置端口,波特率,是否有校验和,停止位选择,等等,而其他几个协议并没有这些内容。

测试用例的构造分为输入集构造和结果集生成两个部分。根据测试规范分别构造每一个测试用例的输入与输出,并将生成得到的测试用例进行验证,以保证测试用例符合测试需求。而在进行测试工作时,所采用的测试用例需要根据具体的测试需求由自动生成工具调取测试用例库中的部分用例数据或人为通过查询工具进行筛查选择所需要的符合测试任务要求的测试用例构成测试用例集。最终通过相应的数据接口或传输媒介,应用测试用例到实际的测试工程中。用例管理逻辑图如图4所示,详细地描述了一致性测试系统中测试用例的生成、保存、管理、搜索、使用等流程之间的相互关系和具体运行关系。

2.2 协议解析模块

协议解析功能是总线协议一致性测试的基础,不同协议对应不同的协议解析程序。虽然各个协议的接口形式不一样,但是只要从底层链路层接口获取报文,后续对报文的处理流程是大同小异的。

2.3 结果判定模块

测试判定功能主要包括一致性测试和性能测试以及对应的数据收发部分,其中一致性测试用于判定被测设备是否符合协议规范;性能测试用于测试被测设备是否满足一定的通信功能需求。为了方便程序调用,所有的测试判断代码都封装为一个可被重复调用的独立测试程序,主要包括初始化配置、打开数据接口、读操作以及关闭数据接口。

图3 测试用例管理逻辑图

3 测试与验证流程

以一套油气调控SCADA系统为实验对象,验证该测试系统的有效性。以OPC协议的一致性测试为例,项目测试中用到的测试用例如表2所示,其中主要包括了测试用例具体测试项目,测试案例输入,以及预期结果的说明信息。执行测试用例并发送至SCADA系统,借助判定模块分析SCADA系统的响应报文,从而得出总线协议的一致性测试结论[14]。

表2 OPC协议一致性测试用例表

4 结束语

面向SCADA软件系统的开放性总线协议一致性测试系统,是对工业控制领域监测与数据采集系统的总线协议通讯功能进行测试的综合系统,广泛应用于不同协议的SCADA系统的设计、研发、认证、生产工作中。随着工业控制领域网络化、智能化的发展,未来有大量的系统需要互联互通,另外国内对于拥有自主知识产权的SCADA系统软件的需求十分强烈,因此文中实现的总线一致性测试系统有助于国内的相关智能工厂的互联互通集成和工控企业SCADA系统研发工作,促进国内工业控制领域向工业4.0发展。

猜你喜欢
测试用例报文总线
基于J1939 协议多包报文的时序研究及应用
以太网QoS技术研究及实践
基于相似性的CITCP强化学习奖励策略①
测试用例自动生成技术综述
浅析反驳类报文要点
DCOM在混合总线自动测试系统的应用
基于AVR单片机的RS485工业总线开发设计
仿真型总线控制实训室设计与建设
宝马F02车总线系统
测试工时受限的测试策略研究