本发明涉及嵌入式软件测试领域,特别是涉及一种可扩展的通用嵌入式软件通信接口测试方法及装置。
背景技术:
嵌入式软件通常需要利用各种通信接口(如:串口、can、以太网)来传输数据,开发人员会根据具体需求设计传输时使用的通信接口协议,虽然部分协议是基于某些常见标准通信协议(如:modbus、can1.0、can2.0),但是用户数据本身的组织方式,都是自定义的,不同领域,不同专业甚至不同项目之间的通信接口协议定义方式都是不同的,这导致了嵌入式软件通信接口协议结构的多样性和未知性,给嵌入式软件通信接口测试及相关测试工具和装置的研制带来很大的困扰。
目前,嵌入式软件通信接口测试主要有两种方式:一种是采用专门研制的调试或测试程序;另一种则是采用通用的软件通信接口测试工具。专门研制的调试或测试程序只能用于某个具体项目的通信接口测试,不能应用到采用不同通信协议的其它项目中。通用的软件通信接口测试工具一般都具备通信协议的描述能力,能够建立通信协议的描述模型,并实现基于该模型的数据编码、传输、解码功能,非常适合软件测试人员开展嵌入式软件通信接口测试工作。
目前,已知的通用软件通信接口测试工具或多或少都存在以下的缺陷,限制了工具的使用范围和使用效率,具体表现如下:
1、协议描述能力不强,无法描述可变结构报文、多层嵌套结构报文等一些复杂的报文结构,碰到特殊通信协议时工具无法使用。
2、不能应对协议中数据字段编解码、报文匹配、报文校验等方法的未知扩展,无法用于某些特殊项目。
3、只具备协议数据层的编解码能力,不具备语义层的编解码能力,测试人员需要自行处理数据的语义信息的转换,影响了测试效率。
技术实现要素:
本发明的目的是为了克服上述背景技术的不足,提供一种可扩展的通用嵌入式软件通信接口测试方法及装置,使其针对目前通信协议测试工具无法描述一些复杂报文结构、无法对数据字段编解码、报文匹配、报文校验等方法进行扩展以及缺少语义层编解码能力等缺陷,使通信接口测试装置具备更强大的协议描述能力、动态可扩展性和多层次的协议数据编解码能力。
本发明提供的一种可扩展的通用嵌入式软件通信接口测试方法,包括如下步骤:s1、根据待测软件的接口类型选择测试需要实用的接口板卡,与测试主机连接;s2、使用通信接口测试工具对连接的接口板卡进行配置;s3、使用协议编辑工具对待测软件通信接口协议进行建模,得到通信接口协议描述模型数据;s4、协议编辑工具根据通信接口协议描述模型数据生成通信接口协议插件;s5、使用通信接口测试工具加载通信接口协议插件,并为每个接口通道指定通信接口协议对象。
在上述技术方案中,所述通信接口协议描述模型包括静态结构描述模型和动态算法描述模型两个部分。
在上述技术方案中,所述静态结构描述模型定义组成通信接口协议的静态结构要素、要素静态属性以及要素间的关联结构,并采用层次结构来组织协议的要素。
在上述技术方案中,所述静态结构描述模型各要素节点如下:1)项目节点,项目节点是协议模型的根节点,一个协议模型只包含一个项目节点,项目节点的基本属性包括项目名称、项目说明;2)协议节点,协议节点描述的是某个通信接口传输或发送的数据报文集合,每个项目包含多个协议节点,协议节点的基本属性包括协议名称、协议说明;3)报文节点,报文节点描述的是某个具体的数据报文,每个协议包含多个报文节点,各报文通过报文匹配算法来进行识别,报文节点的基本属性包括报文名称、报文说明;4)字段节点,字段是组成报文的基本单元,每个报文包含多个字段节点,报文按照字段出现的先后顺序来组织,字段节点的基本属性包括字段名称、字段说明、字段类型、字段长度、字段默认值。
在上述技术方案中,所述字段节点的类型包括:单值字段、复合字段、子字段和组合字段,其中,单值字段是通信协议结构树中的叶子节点,是按数据字节来组织数据;复合字段是由若干个子字段构成的字段,复合字段按数据字节来组织数据;子字段也是通信协议结构树中的叶子节点,按数据位来组织数据;组合字段包含任何多个单值字段、复合字段或另外的组合字段,组合字段包含控制字段属性,通过配置组合字段及其控制字段实现字段的多层次嵌套结构,从而描述更复杂的协议结构。
在上述技术方案中,所述动态算法描述模型用于描述通信接口协议中的各种转换、匹配和校验规则。
在上述技术方案中,所述动态算法描述模型各部分如下:1)报文匹配算法,用于数据解码过程中从数据中提取相匹配的报文,算法输入为待解码数据,输出为当前报文对象是否匹配该数据的标志;报文匹配算法包括缺省的报文匹配算法和自定义报文匹配算法,缺省的报文匹配算法是通过设置指定位置的字段期望值来进行匹配,满足项目要求;自定义报文匹配算法,用户可以自己编写脚本,定制特殊的匹配规则,实现了报文匹配算法的动态可扩展性;2)报文校验算法,用于嵌入式软件中报文校验字段确认数据传输中是否出现错误,用户通过自己编写脚本,定制专属的校验字段值计算规则,通过这种方式可以实现报文校验算法的动态可扩展性;报文匹配算法中的每种算法指定报文校验算法计算开始字节索引、结束字节索引、校验字段索引和校验字段长度参数;3)字段编解码算法,采用多层次的数据编解码过程提供常用的字段编解码算法,通过提供语义层编码、数据层编码、数据层解码、语义层解码四种报文字段转换算法来实现字段值在数据层和语义层的转换;还提供了各种字段编解码算法的自定义机制,用户通过编写脚本的方式,定制专门的数据转换算法,既可以定制数据层的转换算法,也可以定制语义层的转换算法,实现了字段编码算法的动态可扩展性。
在上述技术方案中,还包括步骤s6、使用通信接口测试工具开始通信接口测试,测试过程中检查是否需要调整通信接口协议描述模型;如果需要调整,则通过协议编辑工具加载原有通信接口协议描述模型数据进行修改,随后进入步骤s4;如果不需要调整,则结束测试。
本发明还提供了一种可扩展的通用嵌入式软件通信接口测试装置,包括如下部分:配置模块:使用通信接口测试工具对连接的接口板卡进行配置;建模模块:使用协议编辑工具对待测软件通信接口协议进行建模,得到通信接口协议描述模型数据;协议插件模块:协议编辑工具根据通信接口协议描述模型数据生成通信接口协议插件;通信接口测试加载模块:使用通信接口测试工具加载通信接口协议插件,并为每个接口通道指定通信接口协议对象;通信接口测试操作模块:使用通信接口测试工具开始通信接口测试,测试过程中检查是否需要调整通信接口协议描述模型;如果需要调整,则通过协议编辑工具加载原有通信接口协议描述模型数据进行修改,随后进入协议插件模块;如果不需要调整,则结束测试。
本发明可扩展的通用嵌入式软件通信接口测试方法及装置,具有以下有益效果:本发明提出一种新的描述能力很强的通信接口协议描述模型,该模型既能够描述固定长度报文、可变长度报文等常见报文结构,也能够描述可变结构报文和多层嵌套结构报文等复杂报文结构;并在此基础上提出了一种协议描述模型动态扩展方法,通过该方法可以在不改变原有系统的基础上向模型中任意增加自定义的数据字段编解码、报文匹配和报文校验方法;同时,还提供了协议数据多层次的编解码能力,能够支持协议数据在数据层和语义层的双向自由转换。
本发明具备良好的通用性和扩展性,能够描述更多类型的通信接口协议,可以覆盖更多的嵌入式测试项目,扩大了通信接口测试装置的应用范围;本发明具备协议数据语义层的自动转换能力,能显著提升测试人员在通信接口测试过程中的测试效率。
附图说明
图1为本发明可扩展的通用嵌入式软件通信接口测试方法所需的硬件载体结构示意图;
图2为本发明可扩展的通用嵌入式软件通信接口测试方法的流程示意图;
图3为本发明可扩展的通用嵌入式软件通信接口测试方法步骤s3的通信接口协议描述模型中静态结构描述模型的结构示意图;
图4为本发明可扩展的通用嵌入式软件通信接口测试方法步骤s3的通信接口协议描述模型中动态算法描述模型的多层次的数据编解码流程示意图;
图5为本发明可扩展的通用嵌入式软件通信接口测试装置的结构示意图。
具体实施方式
下面结合附图及实施例对本发明作进一步的详细描述,但该实施例不应理解为对本发明的限制。
本发明中软件通信接口测试装置是一个由软件和硬件组成的系统,如图1所示,其中硬件部分由一台测试主机和若干接口板卡组成,接口板卡与测试主机相连,测试主机通过各接口板卡来进行数据的收发,接口板卡种类和数量都可以根据具体软件项目进行动态调整。
本发明包含的软件部分运行在测试主机上,包含协议编辑工具和通信接口测试工具两个部分,协议编辑工具负责描述通信接口协议描述模型,并生成通信接口协议插件,通信接口测试工具负责加载通信接口协议插件,配置通信接口板卡和接口通道,执行测试数据的收发和编解码功能。本发明可扩展的通用嵌入式软件通信接口测试方法的具体工作流程如图2所示。
通信接口协议描述模型是本发明的核心,是实现通用动态可扩展以及数据多层次编解码的能力的关键。如图3所示,通信接口协议描述模型包含静态结构描述模型和动态算法描述模型两个部分。
静态结构描述模型对组成通信接口协议的静态结构要素、要素静态属性以及要素间的关联结构进行了定义。本发明采用层次结构来组织协议的要素,各要素节点如下:
1)项目节点,项目节点是协议模型的根节点,一个协议模型只包含一个项目节点,项目节点的基本属性包括项目名称、项目说明等。
2)协议节点,协议节点描述的是某个通信接口传输或发送的数据报文集合,每个项目包含多个协议节点,协议节点的基本属性包括协议名称、协议说明等。
3)报文节点,报文节点描述的是某个具体的数据报文,每个协议包含多个报文节点,各报文通过报文匹配算法来进行识别,报文节点的基本属性包括报文名称、报文说明等。
4)字段节点,字段是组成报文的基本单元,每个报文包含多个字段节点,报文按照字段出现的先后顺序来组织,字段节点的基本属性包括字段名称、字段说明、字段类型、字段长度、字段默认值等。
本发明中报文字段类型包括:单值字段、复合字段、子字段和组合字段,其中单值字段是通信协议结构树中的叶子节点;复合字段是由若干个子字段构成的字段,复合字段按数据字节来组织数据;子字段也是通信协议结构树中的叶子节点,但是与单值字段不同的是,它是按数据位来组织数据的,而单值字段则是按数据字节来组织数据;组合字段没有具体含义,它可以包含任何多个单值字段、复合字段或另外的组合字段,组合字段包含控制字段属性,通过配置组合字段及其控制字段就可以实现字段的多层次嵌套结构,从而描述更复杂的协议结构。
动态算法描述模型对通信接口协议中的各种转换、匹配、校验规则进行描述,具体如下:
1)报文匹配算法,用于数据解码过程中从数据中提取相匹配的报文,算法输入为待解码数据,输出为当前报文对象是否匹配该数据的标志。本发明提供了缺省的报文匹配算法,该算法是通过设置指定位置(如报文头、报文尾)的字段期望值来进行匹配,能够满足大部分项目要求;本发明还提供了自定义报文匹配算法,用户可以自己编写脚本,定制特殊的匹配规则,这种自定义匹配算法实现了报文匹配算法的动态可扩展性。
2)报文校验算法,嵌入式软件中各报文通常都会设置报文校验字段用于确认数据传输中是否出现错误,不同协议所采取的报文校验方式是不同的,这种不同体现在很多方面,如校验字段的位置、长度、字节序、校验字段值计算方法、参与计算的数据开始位置和结束位置等。本发明提供了常见的报文匹配算法,如累加和、异或和、crc等,并且每种算法还可以指定校验计算开始字节索引、结束字节索引、校验字段索引和校验字段长度等参数,这些报文匹配算法能满足大多数项目的需求;本发明还提供了自定义报文校验算法,用户通过自己编写脚本,定制专属的校验字段值计算规则,通过这种方式可以实现报文校验算法的动态可扩展性。
3)字段编解码算法,本发明采用多层次的数据编解码过程,如图4所示,通信接口测试过程中,通信中传输的数据是数据的存储值,展示给用户浏览的数据是语义值,本发明通过提供语义层编码、数据层编码、数据层解码、语义层解码等四种报文字段转换算法来实现字段值在数据层和语义层的转换。本发明除了提供了常用的编解码算法来满足大部分项目要求外,还提供了各种编解码方法的自定义机制,用户可以通过编写脚本的方式,定制专门的数据转换算法,既可以定制数据层的转换算法,也可以定制语义层的转换算法,实现了字段编码算法的动态可扩展性。
如图5所示,本发明可扩展的通用嵌入式软件通信接口测试装置,包括如下部分:
配置模块:使用通信接口测试工具对连接的接口板卡进行配置;
建模模块:使用协议编辑工具对待测软件通信接口协议进行建模,得到通信接口协议描述模型数据;
协议插件模块:协议编辑工具根据通信接口协议描述模型数据生成通信接口协议插件;
通信接口测试加载模块:使用通信接口测试工具加载通信接口协议插件,并为每个接口通道指定通信接口协议对象;
通信接口测试操作模块:使用通信接口测试工具开始通信接口测试,测试过程中检查是否需要调整通信接口协议描述模型;如果需要调整,则通过协议编辑工具加载原有通信接口协议描述模型数据进行修改,随后进入协议插件模块;如果不需要调整,则结束测试。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
本说明书中未作详细描述的内容属于本领域专业技术人员公知的现有技术。