通信协议状态转换序列生成方法与流程

文档序号:20575075发布日期:2020-04-29 01:04阅读:954来源:国知局
通信协议状态转换序列生成方法与流程
本发明涉及通信协议测试
技术领域
,特别涉及一种面向应用数据的通信协议的状态转换序列生成方法。
背景技术
:航天/航空载荷、武器装备等一般由多个系统组成,各个系统之间交互信息,最常用的方式依然是异步串行通信,使用各自领域的串行总线,比如rs232/422/485/uart、can、arinc429等等。通信协议在物理层、数据链路层等都按照各自总线标准组建数据,在面向应用的应用层,由于系统设备工作方式千差万别,设计人员在设计应用层通信协议时,无法遵循统一的应用标准,而是根据系统信息交互的需要综合考虑。依据这种没有标准格式的协议进行测试是对系统功能测试的一个重要方式。有些系统的状态转换由外部的命令出发,而外部命令正是同过应用层接口协议的数据元素进行传输。合理的协议数据元素序列能够更好的测试系统状态转换关系。技术实现要素:为解决上述技术问题,本发明提供一种用于通信协议状态转换序列生成方法,采用如下技术方案:本发明提供的通信协议状态转换序列生成方法,包括如下步骤:s1、分析通信协议中数据包内的数据元素,确定各系统间的状态转换关系,将状态转换关系转换为状态转换图;s2、对状态转换图进行遍历,将其转换成状态转换树;s3、对状态转换树进行深度优先遍历获得从根节点到叶子节点的各条路径,根据各条路径上的节点生成状态转换序列。优选地,在步骤s2之前还包括如下步骤:判断状态转换图中是否存在终止节点,如未存在终止节点,则将状态转换图中的起始节点拆分出一个终止节点。优选地,步骤s2具体包括如下步骤:以起始节点作为父节点,以起始节点的后续节点作为子节点,直至终止节点或者父节点出现循环时结束遍历,将状态转换图转换为状态转换树。优选地,通信协议为串行接口通信协议,串行接口通信协议的数据内容为面向应用者的顶层数据的测试数据生成约束。优选地,串行通信协议适用于各系统之间测试数据的约束或适用于单个系统内部子系统之间测试数据的约束。优选地,在步骤s3之后还包括如下步骤:s4、根据状态转换序列选择数据包内的数据元素的取值顺序生成测试数据。本发明能够取得以下技术效果:根据系统中的状态转换关系生成状态转换序列,从而合理选择的通信协议中数据包内的数据元素序列,能够更好的测试系统的状态转换情况。附图说明图1是根据本发明一个实施例的通信协议状态转换序列生成方法的流程示意图;图2是根据本发明一个实施例的系统组的结构示意图;图3是根据本发明一个实施例的状态转换关系示意图;图4a是图3中状态转换关系转换后的状态转换图;图4b是图4a拆分出终止节点的状态转换图;图5是图4b对应的状态转换树的结构示意图。具体实施方式为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及具体实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,而不构成对本发明的限制。参考图1所示,本发明实施例提供了一种通信协议状态转换序列生成方法,包括如下步骤:步骤1、分析通信协议中数据包内的数据元素,确定各系统间的状态转换关系,将状态转换关系转换为状态转换图。本发明实施例的通信协议为串行接口通信协议或并行接口通信协议,串行接口通信协议可以是同步串行接口通信协议或异步串行接口通信协议,并行接口通信协议可以是同步并行接口通信协议或异步并行接口通信协议,下面以串行接口通信协议为例进行说明。串行通信协议为连接多个系统或单个系统内部子系统之间的数据传输要求,可适用于各系统之间测试数据的约束或适用于单个系统内部子系统之间测试数据的约束。通信协议可分解为数据包,数据包可分解为数据元素,数据元素的组成可由二进制的一位到多个字节。对各系统之间存在的状态转换关系进行分析,该状态转换关系由状态转换图表示,状态迁移由通信协议中相关数据包的相关数据元素的不同取值确定。多个系统构成系统组,下面以图2所示的系统组为例进行说明。系统组包括飞控系统s0和载荷系统,载荷系统包括载荷控制系统s1、图像处理系统s2和伺服控制系统s3。飞行控制系统s0与载荷控制系统s1之间通过数据总线(例如can、rs422、rs232、rs485等)连接,涉及到双向数据交互,数据交互内容见表1、表2。载荷控制系统s1与图像处理系统s2之间通过数据总线(例如can、rs422、rs232、rs485等)连接,涉及到双向数据交互,数据交互内容见表3、表4;载荷控制系统s1与伺服控制系统s3之间通过数据总线(例如can、rs422、rs232、rs485等)连接,涉及到双向数据交互,数据交互内容见表5、表6。表1飞控系统s0发往载荷控制系统s1的数据表2载荷控制系统s1发往飞控系统s0的数据表3载荷控制系统s1发往图像处理系统s2的数据表4图像处理系统s2发往载荷控制系统s1的数据表5载荷控制系统s1发往伺服控制系统s3的数据字节号数据元素取值范围备注1~2同步头0x7e7e3地址码0x664命令离散值同表1,字节号3。5~6航向角0x7000~0x8fff7~8横滚角0x7000~0x8fff9~11时间码0x000000~0xffffff12校验字4-11字节和表6伺服控制系统s3发往载荷控制系统s1的数据上述表1-表6每个表中的内容组成通信协议的一个数据包,共包含6种不同类型的数据包,表格中每一个参数名称为一个数据元素,共包括30个数据元素。通过观察表1-表6可以发现,飞控系统s0、载荷控制系统s1、图像处理系统s2和伺服控制系统s3之间存在状态转换关系,该状态转换关系包含四种状态,待机状态st0、准备拍照状态st1、拍照状态st2、停止拍照状态st3,四种状态之间的转换关系参见图3。将图3表述的状态转换关系用数学符号抽象表示为状态转换图,如图4a所示。步骤2、对状态转换图进行遍历,将其转换成状态转换树。状态转换图通常都有一个初始节点,有一个或多个终止节点。对于有没有起始节点和终止节点的状态转换图,将状态转换图中第一个既是起点又是终点的状态节点拆分出一个起始节点和一个终止节点,构成有始有终的状态转换图。对于有起始节点、没有终止节点的状态转换图,将状态转换图中的一个状态节点拆分出一个终止节点,构成有始有终的状态转换图。以图4a所示的状态转换图为例进行说明。该状态转换图中没有起始状态和结束状态,不利于选择状态转换序列,在四个状态中,选择一个状态节点,将其分解为只有后续节点没有前续节点的起始节点st0_i和只有前续节点没有后续节点的终止节点st0_o。转变完成的状态图参见图4b。如图4b所示,将状态转换图的起始节点作为转换成的状态转换树的根节点,将连接起始节点st0_i的后续节点st1作为子节点,st1不是终止节点,在父节点中也未曾出现,继续以st1作为父节点,将st1的两个后续节点st0_o和st2分别作为子节点,其中st0_o为终止节点,不再继续转换该分支,继续以st2作为父节点,st2有两个后续节点,分别为st0_o和st3,其中st0_o为终止节点,不再继续转换该分支,继续以st3作为父节点,st3有一个后续节点st2,其中st2在父节点中出现过,说明父节点出现循环,停止转换过程,至此,完成状态转换图中全部节点的转换,转换结果参见图5。步骤3、对状态转换树进行深度优先遍历获得从根节点到叶子节点的各条路径,根据各条路径上的节点生成状态转换序列。按照深度优先原则遍历状态转换树,从状态转换树的树根节点遍历到叶子节点,如果叶子节点已经在状态序列中出现,说明存在循环状态转换,停止遍历,获得从根节点至各个叶子节点的各条路径。各条路径上的节点生成状态转换序列。参见表7。表7状态转换序列和数据元素选择序列如果串行接口通信协议相关数据包的相关数据元素取值的变化与状态循环具有耦合的关系,那么在建立状态转换树时需要增加这种约束关系形成满足条件的状态转换约束,需要在基础状态转换序列增加相应的循环序列满足路径转换。此时,原基础序列为局部非法序列,如表7所示的非法状态转换序列。在步骤s3之后还可以包括如下步骤:s4、根据状态转换序列选择数据包内的数据元素的取值顺序生成测试数据。通过测试数据能够测试系统间的状态转换情况。在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。尽管上面已经示出和描述了本发明的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本发明的限制,本领域的普通技术人员在本发明的范围内可以对上述实施例进行变化、修改、替换和变型。以上本发明的具体实施方式,并不构成对本发明保护范围的限定。任何根据本发明的技术构思所作出的各种其他相应的改变与变形,均应包含在本发明权利要求的保护范围内。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1