CN113835419A - 一种列控设备的测试方法、系统及存储介质 - Google Patents

一种列控设备的测试方法、系统及存储介质 Download PDF

Info

Publication number
CN113835419A
CN113835419A CN202111427630.3A CN202111427630A CN113835419A CN 113835419 A CN113835419 A CN 113835419A CN 202111427630 A CN202111427630 A CN 202111427630A CN 113835419 A CN113835419 A CN 113835419A
Authority
CN
China
Prior art keywords
node
matching
test
logic
data processing
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN202111427630.3A
Other languages
English (en)
Other versions
CN113835419B (zh
Inventor
柯长博
杨凯
薛仁溥
耿宏亮
罗红磊
李胜桂
赵昱
李启翮
刘振玉
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hunan CRRC Times Signal and Communication Co Ltd
Original Assignee
Hunan CRRC Times Signal and Communication Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hunan CRRC Times Signal and Communication Co Ltd filed Critical Hunan CRRC Times Signal and Communication Co Ltd
Priority to CN202111427630.3A priority Critical patent/CN113835419B/zh
Publication of CN113835419A publication Critical patent/CN113835419A/zh
Application granted granted Critical
Publication of CN113835419B publication Critical patent/CN113835419B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B23/00Testing or monitoring of control systems or parts thereof
    • G05B23/02Electric testing or monitoring
    • G05B23/0205Electric testing or monitoring by means of a monitoring system capable of detecting and responding to faults
    • G05B23/0218Electric testing or monitoring by means of a monitoring system capable of detecting and responding to faults characterised by the fault detection method dealing with either existing or incipient faults
    • G05B23/0256Electric testing or monitoring by means of a monitoring system capable of detecting and responding to faults characterised by the fault detection method dealing with either existing or incipient faults injecting test signals and analyzing monitored process response, e.g. injecting the test signal while interrupting the normal operation of the monitored system; superimposing the test signal onto a control signal during normal operation of the monitored system
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B2219/00Program-control systems
    • G05B2219/20Pc systems
    • G05B2219/24Pc safety
    • G05B2219/24065Real time diagnostics

Landscapes

  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • Automation & Control Theory (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本申请提供一种列控设备的测试方法,包括:获取并解析期待表达式,得到匹配节点、逻辑节点和逻辑节点对应的逻辑关系;将匹配节点加载至数据处理线程,并利用数据处理线程执行正则匹配;若正则匹配成功,执行匹配节点对应节点属性的操作;根据逻辑节点的子节点之间的逻辑关系计算逻辑节点的状态;若计算成功,执行逻辑节点对应节点属性的操作;若逻辑节点为根节点,将根节点的状态作为本次联合期待结果。本申请利用当前主流的通用自动测试框架,通过扩展自定义测试库、创建自定义关键字,满足了列控设备测试的特定需求。本申请还提供一种列控设备的测试系统和计算机可读存储介质,具有上述有益效果。

Description

一种列控设备的测试方法、系统及存储介质
技术领域
本申请涉及电子设备测试领域,特别涉及一种列控设备的测试方法、系统及存储介质。
背景技术
针对列控设备的自动测试,需要一套具有联合期待功能的测试引擎。现有的测试方法,有的全新开发一套测试引擎,开发成本较高、可扩展性较差;有的直接利用TCL语言及其Expect扩展包实现,但该语言已不再流行,官方更新和维护的频率很低,很多问题未见修复。
Expect扩展包虽然实现了联合期待功能,但其采用扁平化的列表型的期待格式,存在如下问题:①用于列控设备测试时脚本编写复杂、需要大量设置标志位变相实现复杂逻辑。②Expect是针对交互式应用设计的,只能采用单通道期待,且无法自动删除历史数据,消耗大量计算资源。③Expect无法指定匹配次数,在期待结束前无限重复匹配,导致主引擎计算量大增,计算效率低。
发明内容
本申请的目的是提供一种列控设备的测试方法、测试系统和计算机可读存储介质,能够有效提高测试效率。
为解决上述技术问题,特别是联合期待功能的实现问题,本申请提供一种列控设备的测试方法,具体技术方案如下:
获取期待表达式;其中,所述期待表达式为对单次联合期待中各个匹配条件及其逻辑关系,以及预设操作的描述;
解析所述期待表达式,得到匹配节点、逻辑节点和所述逻辑节点对应的逻辑关系;
将所述匹配节点加载至数据处理线程,以便所述数据处理线程进入匹配状态,并利用所述数据处理线程执行正则匹配;其中,所述数据处理线程与测试分引擎相对应,所述测试分引擎作为所述列控设备的虚拟陪测设备;
若正则匹配成功,执行所述匹配节点对应节点属性的预设操作;
根据逻辑节点的子节点之间的逻辑关系计算所述逻辑节点的状态;若计算成功,执行所述逻辑节点对应节点属性的操作;
若所述逻辑节点为根节点,将所述根节点的状态作为本次联合期待结果。
可选的,还包括:
根据所述列控设备的外部接口类型,确定测试分引擎。
可选的,还包括:
接收到测试分引擎创建请求时,调用创建分引擎关键字创建所述测试分引擎。
可选的,所述获取期待表达式包括:
从测试执行管理器获取测试脚本,并从所述测试脚本中解析自定义的联合期待关键字,再从所述联合期待关键字的字符串参数中得到期待表达式。
可选的,还包括:
分别设置各所述测试分引擎对应的数据处理线程对象的自动清空标识;所述自动清空标识用于定时自动清空所述测试分引擎发送的测试数据;
设置所有所述测试分引擎对应的数据处理线程对象内的单次跳过清空标识;
所述数据处理线程进入匹配状态并执行正则匹配时,关闭所述数据处理线程的自动清空标识。
可选的,若利用所述数据处理线程执行正则匹配时存在匹配成功的匹配节点,还包括:
执行所述匹配节点内所述节点属性的预设操作:
从所述匹配表达式根节点开始递归执行匹配表达式结算;
若在所述匹配表达式结算过程中存在计算成功的目标逻辑节点,则执行所述目标逻辑节点内所述节点属性的预设操作;
若所述匹配节点或所述逻辑节点没有失败属性则配置为通过;
若所述匹配节点或所述逻辑节点包含失败属性,则配置为失败,同时将所述匹配节点或所述逻辑节点的所有上层节点包括所述匹配表达式的根节点均设置为失败;
若所述根节点计算成功,则将所述根节点的状态作为本次联合期待的最终状态。
可选的,若所述逻辑节点不为根节点,还包括:
按照所述期待表达式对应的树型结构进行逻辑关系运算,直至确定根节点的状态,将所述根节点的状态作为本次联合期待结果。
可选的,还包括:
调用打印日志关键字将本次联合期待结果打印为日志,存储至预设数据库或者预设路径;所述日志包含测试通过的测试脚本名称和/或测试失败的测试脚本名称。
本申请还提供一种列控设备的测试系统,包括:
获取模块,用于获取期待表达式;其中,所述期待表达式为对单次联合期待中各个匹配条件及其逻辑关系,以及预设操作的描述;
解析模块,用于解析所述期待表达式,得到匹配节点、逻辑节点和所述逻辑节点对应的逻辑关系;
正则匹配模块,用于将所述匹配节点加载至数据处理线程,以便所述数据处理线程进入匹配状态,并利用所述数据处理线程执行正则匹配;其中,所述数据处理线程与测试分引擎相对应,所述测试分引擎作为所述列控设备的虚拟陪测设备;所述正则匹配针对所述测试分引擎发送至数据处理线程的数据;
操作执行模块,用于若正则匹配成功,执行所述匹配节点对应节点属性的预设操作;
逻辑计算模块,用于根据逻辑节点的子节点之间的逻辑关系计算所述逻辑节点的状态;若计算成功,执行所述逻辑节点对应节点属性的操作;
判断模块,用于若所述逻辑节点为根节点,将所述根节点的状态作为本次联合期待结果。
本申请还提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如上所述的方法的步骤。
本申请提供一种列控设备的测试方法,包括:获取期待表达式;解析所述期待表达式,得到匹配节点、逻辑节点和所述逻辑节点对应的逻辑关系;将所述匹配节点加载至数据处理线程,以便所述数据处理线程进入匹配状态,并利用所述数据处理线程执行正则匹配;其中,所述数据处理线程与测试分引擎相对应,所述测试分引擎作为所述列控设备的虚拟陪测设备;若正则匹配成功,执行所述匹配节点对应节点属性的预设操作;根据逻辑节点的子节点之间的逻辑关系计算所述逻辑节点的状态;若计算成功,执行所述逻辑节点对应节点属性的操作;若所述逻辑节点为根节点,将所述根节点的状态作为本次联合期待结果。
本申请通过采用自定义层次化的匹配表达式,实现对列控设备的测试,通过匹配表达式几种的测试逻辑,实现了“消息级”的测试及故障注入,增强了主引擎的期待功能,而且大大减小了主引擎的计算量,简化了测试流程,同时提高了测试效率。同时利用当前主流的通用自动测试框架,通过扩展自定义测试库、创建自定义关键字,提供了一种具有联合期待功能的测试方法,从而满足了列控设备测试的特定需求。
本申请还提供一种列控设备的测试系统和计算机可读存储介质,具有上述有益效果,此处不再赘述。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本申请实施例所提供的一种列控设备的测试方法的流程图;
图2为本申请实施例所提供的期待表达式对应树型结构逻辑关系示意图;
图3为本申请实施例所提供的一种列控设备的测试系统结构示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
请参考图1,图1为本申请实施例所提供的一种列控设备的测试方法的流程图,该方法包括:
S101:获取期待表达式;
S102:解析所述期待表达式,得到匹配节点、逻辑节点和所述逻辑节点对应的逻辑关系;
S103:将所述匹配节点加载至数据处理线程,以便所述数据处理线程进入匹配状态,并利用所述数据处理线程执行正则匹配;其中,所述数据处理线程与测试分引擎相对应,所述测试分引擎作为所述列控设备的虚拟陪测设备;
S104:若正则匹配成功,执行所述匹配节点对应节点属性的预设操作;
S105:根据逻辑节点的子节点之间的逻辑关系计算所述逻辑节点的状态;若计算成功,执行所述逻辑节点对应节点属性的操作;
S106:若所述逻辑节点为根节点,将所述根节点的状态作为本次联合期待结果。
本申请实施例应用于列控设备的测试过程,基于RobotFramework自动测试框架,根据列控设备测试需求扩展自定义测试库。在本实施例的具体应用过程中,可以采用基于本实施例所实现的能够用于列控设备自动测试的引擎装置。
在测试前,可以根据所述列控设备的外部接口类型,确定测试分引擎。测试分引擎作为列控设备的虚拟陪测设备。即测试分引擎用于模拟被测列控设备运行过程中的其他模块或者设备。在实际测试时,还包括包含测试主引擎,用于控制各测试分引擎,可以通过创建子进程的方式启动测试主引擎。
作为一种优选的应用方式,可以配置测试执行管理器,通过获取子进程的标准输入输出,实现与测试主引擎之间的通信,其可以实现引擎进程监测、执行超时监测、环境恢复控制和异常脚本复测等功能。测试执行管理器可以独立运行,也可以通过Jenkins持续集成工具控制。当然,也可以不采用测试执行管理器,即测试主引擎也可以直接通过Jenkins持续集成工具控制。容易理解的是,测试执行管理器提高了整个测试流程的可操作性和稳定性。
还需要说明的是,当通过Jenkins持续集成工具控制时,可以配置多个节点,也即是说,可在本实施例的基础上,应用本实施例的测试方法分别对多个被测列控设备进行并行测试。测试分引擎可以包括多种功能,例如数据转换或者硬件接口转换等。
若测试分引擎功能为数据转换,当测试分引擎接收到测试主引擎的测试命令字符串时,按照其对应的被测列控设备接口的协议格式进行转换,通过以太网发送给被测列控设备或者接口单元。当测试分引擎接收到被测列控设备或者接口单元的反馈时,按照协议解析后再转换为字符串消息,通过以太网发送给测试主引擎。
测试分引擎根据被测列控设备外部接口类型进行划分,设置相应种类和数量的分引擎。测试分引擎由主引擎统一调度,但各个测试分引擎之间互相独立,不存在通信。
测试分引擎均采用通信层、协议数据处理层和应用处理层的通用结构。其中,通信层统一采用以太网。如果测试分引擎对应的被测列控设备接口不是以太网,则需要经过接口单元进行接口转换。
接口单元功能为硬件接口转换:当接口单元接收到测试分引擎的以太网数据时,转换为其对应的被测列控设备的硬件接口数据,发送给被测列控设备;当接口单元接收到被测列控设备的硬件接口数据时,转换为以太网数据包,通过以太网发送给对应的测试分引擎。
本实施例对于所采用的硬件接口不作具体限定,其可以包括但不限于:RS422、RS232、RS485、继电器IO、MVB、Profibus、CAN等。在一种优选的应用实例中,可以采用可拔插的接口板卡插件,从而实现硬件接口的扩展和替换。
被测的列控设备是指待测试的单个列控设备,外部接口连接测试分引擎或者接口单元。可以理解的是,被测列控设备并不存在陪测设备实物或者模型,所有交互都源自测试脚本,因此本实施例能够实现“消息级”的测试及故障注入。
进一步的,被测列控设备也可以是多个列控设备的组合。可以理解的是,测试分引擎或者接口单元面向的是被测列控设备对外暴露的接口,无需关注被测列控设备本身的结构,也不涉及被测列控设备内部接口。
测试主引擎可以基于RobotFramework自动测试框架,由RobotFramework框架提供测试脚本解析和执行。测试脚本基于RobotFramework测试语言、采用关键字驱动的方式编写,能够使用RobotFramework框架内置测试库中的关键字,也能够使用自定义测试库中的关键字。
自定义测试库提供的关键字可以包括:启动分引擎、创建分引擎、发送测试命令至分引擎、发送应答器报文、打印日志、打印统计结果和联合期待等关键字。自定义测试库的一种实例是采用Python语言编写,再内嵌入RobotFramework框架进行扩展。
启动分引擎关键字功能包括:全部启动测试分引擎进程,同时启动对应的分引擎数据处理线程对象;等待全部测试分引擎注册成功后,再返回执行后续关键字。分引擎数据处理线程对象为独立线程,成员变量还包括:与测试分引擎通信的socket套接字、来自测试分引擎的消息队列、匹配状态标识和单次跳过清空标识。特别的,有任意一个测试分引擎注册超时,则直接判定该测试脚本测试失败。每个测试脚本执行之前,都需要先执行启动分引擎关键字,一种实现方式是在RobotFramework框架的Setup中使用。
创建分引擎关键字功能包括:创建全部分引擎进程;同时创建对应的分引擎数据处理线程对象。每个测试脚本执行完毕,都需要先执行创建分引擎关键字,其一种实现方式是在RobotFramework框架的Teardown中使用。则接收到测试分引擎创建请求时,调用创建分引擎关键字创建相应的测试分引擎。
发送测试命令至分引擎关键字功能包括:将测试脚本中的测试命令字符串,通过与测试分引擎通信的socket套接字,发送至指定测试分引擎。特别的,发送前需设置全体分引擎数据处理线程对象内的单次跳过清空标识,从而跳过一次自动清空来自测试分引擎的消息队列。可以理解的是,跳过一次自动清空能够避免:发送测试命令之后、接下来的联合期待生效之前的时间间隙,接收到的来自分引擎的消息被误删除,从而导致期待失败。
此外,还可以设置所有测试分引擎对应的数据处理线程对象的自动清空标识;自动清空标识用于定时自动清空测试分引擎发送的测试数据;以及设置所有测试分引擎对应的数据处理线程对象内的单次跳过清空标识。
数据处理线程进入匹配状态并执行正则匹配时,关闭数据处理线程的自动清空标识。
数据处理线程具有清空状态和匹配状态两种状态。清空状态下,数据处理线程定时自动清空测试分引擎发送的测试数据;匹配状态下,数据处理线程针对测试分引擎发送的测试数据执行正则匹配,并停止定时自动清空。
特别的,向测试分引擎发送测试命令之前,需设置全体数据处理线程内的单次跳过清空标识,从而跳过一次自动清空。可以理解的是,跳过一次自动清空能够避免:在发送测试命令之后和接下来的匹配状态生效之前的时间间隙,来自测试分引擎的有效数据被误删除,从而导致联合期待失败。
发送应答器报文关键字功能包括:根据当前测试脚本名称,找到对应的存储应答器报文的配置文件,将文件中的应答器ID、应答器位置和应答器报文信息,发送至应答器对应的测试分引擎。
打印日志关键字功能包括:独立于RobotFramework的日志系统,按照测试脚本的要求,独立打印日志。一种实例是打印日志至指定路径的文件,日志文件名由测试脚本名称,以及测试开始时的时间戳转换而来;另一种实例是打印日志至数据库存储
打印统计结果关键字功能包括:独立于RobotFramework的日志系统,独立打印指定格式的统计结果。该统计结果可以包括但不限于:已执行且测试成功的测试脚本名称列表、已执行且测试失败的测试脚本名称列表及其测试失败原因。在打印时,可以打印统计结果至指定路径的文件,统计结果文件名由测试开始时的时间戳转换而来,也可以打印统计结果至数据库存储。
联合期待关键字功能包括:
①解析传入的期待表达式字符串参数,得到匹配表达式和超时节点;匹配表达式是由逻辑节点和匹配节点组成的任意子女数的树形结构,逻辑节点为非叶子节点,匹配节点为叶子节点;
②将各个匹配节点分别加载至其对应的测试分引擎中的数据处理线程,并设置分引擎数据处理线程对象内的匹配状态标识为匹配状态,即停止定时自动清空来自测试分引擎的消息队列;
③对于处于匹配状态的数据处理线程,当接收到测试分引擎的消息时,为其加载的匹配节点执行一次正则匹配;如果匹配成功,则执行该匹配节点内节点属性中配置的操作;
如果当前匹配次数等于最少匹配次数,则设置该匹配节点的状态并记录匹配时间:
如果该匹配节点没有测试失败属性则设置为测试成功,否则设置为测试失败,再将其上层节点也设置为测试失败、一直设置到匹配表达式根节点;
④如果一个或多个匹配节点的状态变化,则从匹配表达式根节点开始采用递归方式执行一次匹配表达式结算;如果结算过程中某个逻辑节点计算成功,则执行该逻辑节点内节点属性中配置的操作,设置该逻辑节点的状态并记录匹配时间:如果该逻辑节点没有测试失败属性则设置为测试成功,否则设置为测试失败,再将其上层节点也设置为测试失败、一直设置到匹配表达式根节点;如果匹配表达式根节点计算成功,则将本次期待的最终状态设置为匹配表达式根节点状态,并向RobotFramework返回期待结果字典;
⑤如果超过了超时节点内设置的超时时间,则执行期待超时操作:
如果超时节点有测试失败属性,则直接将本次期待的最终状态设置为测试失败,并向RobotFramework返回期待结果字典;
如果超时节点有check属性,则将全部有测试失败属性的匹配节点和逻辑节点的状态设置为测试成功,再次从匹配表达式根节点开始采用递归方式执行一次匹配表达式结算,如果匹配表达式根节点计算为测试成功,则将本次期待的最终状态设置为测试成功,否则设置为测试失败,并向RobotFramework返回期待结果字典;
⑥设置数据处理线程内的匹配状态标识为非匹配状态,即定时自动清空来自测试分引擎的消息队列。
期待表达式字符串参数为从测试脚本中获取的一个字符串,作为参数传入联合期待关键字。期待表达式字符串参数实质上为层次化树形结构,能够扩展子节点层级。期待表达式字符串参数可以通过JSON语言描述,测试主引擎通过JSON解析库获取其中的期待表达式信息。
由上文可以看出,期待表达式的节点包括超时节点、逻辑节点和匹配节点三种;其中,逻辑节点和匹配节点组成了匹配表达式。匹配表达式是任意子女数的树形结构,逻辑节点为非叶子节点,匹配节点为叶子节点。编程实现时,一种表示匹配表达式的数据结构实例为二叉树,二叉树的左指针指向第一个子节点,二叉树的右指针指向下一个兄弟节点。二叉树的父指针可以指向父节点。
上文中的期待结果字典可以为一个键值对,内容包括:期待结果;可选的,包括:FAIL原因,以及赋值结果。
期待表达式的一种格式定义实例为,超时节点key值标记为timeout,逻辑节点key值标记为all或seq或any,匹配节点key值标记为item。逻辑节点和匹配节点的状态包括:INIT、PASS、FAIL和FAULT。其中,INIT代表初始状态,PASS代表通过状态,FAIL代表失败状态,FAULT代表消息接收顺序错误状态。进一步的,任意节点的FAIL状态都需要直接传递至匹配表达式根节点,从而导致期待的最终状态设置为FAIL。
超时节点配置期待超时时间和超时后的操作。超时节点必选的节点属性包括time,fail或check,可选节点属性包括message和print。
逻辑节点配置其子节点的逻辑运算关系和计算成功后的操作。其中,all标记代表“且”的关系,即:当子节点都PASS时,本节点计算成功。seq标记代表“且”+“顺序接收”的关系,即:当子节点都PASS且接收顺序正确时,本节点计算成功;当子节点都PASS且接收顺序正确时,本节点设置状态为FAULT。any标记代表“或”的关系,即:当子节点任意一个PASS时,本节点计算成功。可选节点属性:message、print、fail。
匹配节点配置待匹配的正则表达式和满足最少匹配次数之后的操作。必选节点属性包括re,可选节点属性包括total、assign、message、print和fail。
此外,配置了fail属性的逻辑节点和匹配节点为反向期待节点。当逻辑节点计算成功时,如果配置了fail属性,则该节点状态设置为FAIL;否则,该节点状态设置为PASS。当匹配节点满足最少匹配次数时,如果配置了fail属性,则该节点状态设置为FAIL;否则,该节点状态设置为PASS。
需要注意的是,各节点的节点状态中的FAIL,与节点属性中的fail属性并非同一概念,即节点状态均用大写英文字母表示,而节点属性均用小写英文字母表示。
上文节点属性定义如下:
time:期待的超时时间。
fail:逻辑节点计算成功、匹配节点满足最少匹配次数或超时节点超时之后,本次期待直接设置为FAIL。
check:超时后执行CHECK操作:将全部有fail属性的逻辑节点和匹配节点的状态都设置为PASS,再次从匹配表达式根节点开始执行一次匹配表达式结算;如果匹配表达式根节点计算为PASS,则将本次期待的最终状态设置为PASS,否则设置为FAIL。
re:待匹配的正则表达式,及其对应的测试分引擎名称。
total:指定最少重复匹配次数。如果当前匹配次数等于最少重复匹配次数,则设置匹配节点的状态,并记录匹配时间。如果没有total属性,则默认为1,即仅匹配一次。如果需要指定最大重复匹配次数,配合fail属性即可。如果需要指定一个匹配次数范围,如:n~m次,将相同的re写在两个不同的匹配节点;最大匹配m次的节点,配合fail属性即可。
assign:匹配成功后的赋值操作,需要配合re属性使用。格式为:变量名=group(\d*)specify(\d*),其中group括号内为在re中相应小括号的取值;specify括号内为在指定的匹配轮次才执行赋值,可选参数。
group 括号内必须为自然数,与re内小括号的顺序对应。group(1)对应re表达式内第一个括号内的值。特别的,group(0)是匹配到的整个字符串。如果group赋值没有采用specify指定匹配轮次,则始终取最新值,即在期待结束前无限重复匹配。最终的赋值结果会存入期待结果字典中,与期待结果一起返回。如果赋值未成功,则在字典中不存在。
message:匹配成功后,发送测试命令至测试分引擎。如果需要发送多条命令,可以以列表的形式,同时列表内的消息将按顺序发送。发送时需要指定对应的测试分引擎名称,一种可选的格式为:分引擎名称(空格)待发送的命令。
print:匹配成功后的日志打印。
上文仅为本实施例提供的几种可行的节点属性,在上文的基础上,本领域技术人员可以根据测试需要扩展定义新的节点属性。
需要注意的是,total属性与assign属性中的specify的值相互独立,测试主引擎保证total属性和assign属性中的要求,自动计算最少需要的最优匹配次数;当匹配次数达到最优匹配次数后,从加载列表中删除该匹配节点,不再重复匹配,从而减小测试主引擎计算量。
在正则匹配成功后,执行匹配节点对应节点属性的操作,上文已经针对节点属性进行描述,在此不作重复赘述。
此后,需要计算逻辑节点的状态,一旦计算成功,同时执行逻辑节点对应节点属性的操作。当该逻辑节点为根节点时,表明整个期待表达式执行完毕,将根节点的状态作为本次联合期待结果。具体的,本实施例的期待表达式可以按照期待表达式对应的树型结构进行逻辑关系运算,直至确定根节点的状态,将根节点的状态作为本次联合期待结果。参见图2,图2为本申请实施例所提供的期待表达式对应树型结构逻辑关系示意图。
本申请实施例基于RobotFramework自动测试框架,根据列控设备测试需求扩展自定义测试库,能够利用丰富的外部工具、函数库和测试资源,可扩展性强。若测试时包含测试主引擎和测试分引擎,由测试主引擎承担主要逻辑,测试分引擎和接口单元仅承担数据和接口转换的作用,保证了测试逻辑全部在测试脚本中描述。通过采用自定义层次化的匹配表达式,实现对列控设备的测试,通过匹配表达式几种的测试逻辑,实现了“消息级”的测试及故障注入,增强了主引擎的期待功能,而且大大减小了主引擎的计算量,简化了测试流程,同时提高了测试效率。
在具体测试过程中,采用联合期待关键字方法,自定义了一种层次化的期待表达式格式,采用单个字符串参数传递、JSON格式描述、二叉树数据结构实现,不仅增强了主引擎的期待功能,而且简单易用。同时仅匹配对应通道的数据、定时清理不在匹配状态的通道数据、自动计算每个匹配节点的最优匹配次数,大大减小了测试主引擎的计算量,避免主引擎成为性能瓶颈。
下面对本申请实施例提供的一种列控设备的测试系统进行介绍,下文描述的测试系统与上文描述的列控设备的测试方法可相互对应参照。
参见图3,图3为本申请实施例所提供的一种列控设备的测试系统结构示意图,本申请还提供一种列控设备的测试系统,包括:
获取模块,用于获取期待表达式;其中,所述期待表达式为对单次联合期待中各个匹配条件及其逻辑关系,以及预设操作的描述;
解析模块,用于解析所述期待表达式,得到匹配节点、逻辑节点和所述逻辑节点对应的逻辑关系;
正则匹配模块,用于将所述匹配节点加载至数据处理线程,以便所述数据处理线程进入匹配状态,并利用所述数据处理线程执行正则匹配;其中,所述数据处理线程与测试分引擎相对应,所述测试分引擎作为所述列控设备的虚拟陪测设备;
操作执行模块,用于若正则匹配成功,执行所述匹配节点对应节点属性的预设操作;
逻辑计算模块,用于根据逻辑节点的子节点之间的逻辑关系计算所述逻辑节点的状态;若计算成功,执行所述逻辑节点对应节点属性的操作;
判断模块,用于若所述逻辑节点为根节点,将所述根节点的状态作为本次联合期待结果。
本申请还提供了一种计算机可读存储介质,其上存有计算机程序,该计算机程序被执行时可以实现上述实施例所提供的步骤。该存储介质可以包括:U盘、移动硬盘、只读存储器(Read-Only Memory ,ROM)、随机存取存储器(Random Access Memory ,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例提供的系统而言,由于其与实施例提供的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以对本申请进行若干改进和修饰,这些改进和修饰也落入本申请权利要求的保护范围内。
还需要说明的是,在本说明书中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

Claims (10)

1.一种列控设备的测试方法,其特征在于,包括:
获取期待表达式;其中,所述期待表达式为对单次联合期待中各个匹配条件及其逻辑关系,以及预设操作的描述;
解析所述期待表达式,得到匹配节点、逻辑节点和所述逻辑节点对应的逻辑关系;
将所述匹配节点加载至数据处理线程,以便所述数据处理线程进入匹配状态,并利用所述数据处理线程执行正则匹配;其中,所述数据处理线程与测试分引擎相对应,所述测试分引擎作为所述列控设备的虚拟陪测设备;
若正则匹配成功,执行所述匹配节点对应节点属性的预设操作;
根据逻辑节点的子节点之间的逻辑关系计算所述逻辑节点的状态;若计算成功,执行所述逻辑节点对应节点属性的操作;
若所述逻辑节点为根节点,将所述根节点的状态作为本次联合期待结果。
2.根据权利要求1所述的测试方法,其特征在于,还包括:
根据所述列控设备的外部接口类型,确定测试分引擎。
3.根据权利要求2所述的测试方法,其特征在于,还包括:
接收到测试分引擎创建请求时,调用创建分引擎关键字创建所述测试分引擎。
4.根据权利要求1所述的测试方法,其特征在于,所述获取期待表达式包括:
从测试执行管理器获取测试脚本,并从所述测试脚本中解析自定义的联合期待关键字,再从所述联合期待关键字的字符串参数中得到期待表达式。
5.根据权利要求2所述的测试方法,其特征在于,还包括:
分别设置各所述测试分引擎对应的数据处理线程对象的自动清空标识;所述自动清空标识用于定时自动清空所述测试分引擎发送的测试数据;
设置所有所述测试分引擎对应的数据处理线程对象内的单次跳过清空标识;
所述数据处理线程进入匹配状态并执行正则匹配时,关闭所述数据处理线程的自动清空标识。
6.根据权利要求1所述的测试方法,其特征在于,若利用所述数据处理线程执行正则匹配时存在匹配成功的匹配节点,还包括:
执行所述匹配节点内所述节点属性的预设操作:
从所述匹配表达式根节点开始递归执行匹配表达式结算;
若在所述匹配表达式结算过程中存在计算成功的目标逻辑节点,则执行所述目标逻辑节点内所述节点属性的预设操作;
若所述匹配节点或所述逻辑节点没有失败属性则配置为通过;
若所述匹配节点或所述逻辑节点包含失败属性,则配置为失败,同时将所述匹配节点或所述逻辑节点的所有上层节点包括所述匹配表达式的根节点均设置为失败;
若所述根节点计算成功,则将所述根节点的状态作为本次联合期待的最终状态。
7.根据权利要求1所述的测试方法,其特征在于,若所述逻辑节点不为根节点,还包括:
按照所述期待表达式对应的树型结构进行逻辑关系运算,直至确定根节点的状态,将所述根节点的状态作为本次联合期待结果。
8.根据权利要求1所述的测试方法,其特征在于,还包括:
调用打印日志关键字将本次联合期待结果打印为日志,存储至预设数据库或者预设路径;所述日志包含测试通过的测试脚本名称和/或测试失败的测试脚本名称。
9.一种列控设备的测试系统,其特征在于,包括:
获取模块,用于获取期待表达式;其中,所述期待表达式为对单次联合期待中各个匹配条件及其逻辑关系,以及预设操作的描述;
解析模块,用于解析所述期待表达式,得到匹配节点、逻辑节点和所述逻辑节点对应的逻辑关系;
正则匹配模块,用于将所述匹配节点加载至数据处理线程,以便所述数据处理线程进入匹配状态,并利用所述数据处理线程执行正则匹配;其中,所述数据处理线程与测试分引擎相对应,所述测试分引擎作为所述列控设备的虚拟陪测设备;
操作执行模块,用于若正则匹配成功,执行所述匹配节点对应节点属性的预设操作;
逻辑计算模块,用于根据逻辑节点的子节点之间的逻辑关系计算所述逻辑节点的状态;若计算成功,执行所述逻辑节点对应节点属性的操作;
判断模块,用于若所述逻辑节点为根节点,将所述根节点的状态作为本次联合期待结果。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1-8任一项所述的列控设备的测试方法的步骤。
CN202111427630.3A 2021-11-29 2021-11-29 一种列控设备的测试方法、系统及存储介质 Active CN113835419B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111427630.3A CN113835419B (zh) 2021-11-29 2021-11-29 一种列控设备的测试方法、系统及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111427630.3A CN113835419B (zh) 2021-11-29 2021-11-29 一种列控设备的测试方法、系统及存储介质

Publications (2)

Publication Number Publication Date
CN113835419A true CN113835419A (zh) 2021-12-24
CN113835419B CN113835419B (zh) 2022-02-25

Family

ID=78971801

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111427630.3A Active CN113835419B (zh) 2021-11-29 2021-11-29 一种列控设备的测试方法、系统及存储介质

Country Status (1)

Country Link
CN (1) CN113835419B (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114489028A (zh) * 2022-04-01 2022-05-13 北京全路通信信号研究设计院集团有限公司 一种列控系统的测试方法及系统
CN115134819A (zh) * 2022-09-01 2022-09-30 卡斯柯信号(北京)有限公司 一种列控无线闭塞系统的测试方法及装置
CN115333984A (zh) * 2022-08-17 2022-11-11 卡斯柯信号有限公司 一种安全协议通信性能测试系统及方法
CN117874308A (zh) * 2024-03-12 2024-04-12 北京全路通信信号研究设计院集团有限公司 一种列控数据获取方法、装置、电子设备及存储介质

Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1510923A2 (en) * 2003-08-29 2005-03-02 Denso Corporation Microcomputer resource utilization estimation program, microcomputer resource utilization estimation apparatus, and program development method
CN103257650A (zh) * 2013-04-17 2013-08-21 北京全路通信信号研究设计院有限公司 一种用于列车控制系统功能测试的校验系统
CN106527411A (zh) * 2016-12-30 2017-03-22 中车唐山机车车辆有限公司 地铁列车网络控制系统测试装置和系统
CN109298997A (zh) * 2018-08-08 2019-02-01 平安科技(深圳)有限公司 接口测试方法、系统、计算机设备和存储介质
CN109358599A (zh) * 2018-10-18 2019-02-19 湖南中车时代通信信号有限公司 一种列车运行监控装置的自动测试系统、方法及装置
CN109992502A (zh) * 2017-12-30 2019-07-09 中国移动通信集团四川有限公司 应用软件性能自动检测分析方法、装置、设备及介质
CN110825647A (zh) * 2019-11-14 2020-02-21 广东华晟数据固态存储有限公司 一种自动化测试逻辑设备接口的测试方法
CN110989549A (zh) * 2019-11-11 2020-04-10 株洲中车时代软件技术有限公司 用于列车控制系统的软件测试通用自动化控制方法及装置
US10698803B1 (en) * 2019-01-09 2020-06-30 Bank Of America Corporation Computer code test script generating tool using visual inputs
CN111782505A (zh) * 2020-05-26 2020-10-16 株洲中车时代电气股份有限公司 列车系统仿真测试方法、装置、计算机设备和存储介质
CN112631932A (zh) * 2020-12-30 2021-04-09 交控科技股份有限公司 基于接口的自动列车监控系统的子功能独立测试方法

Patent Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1510923A2 (en) * 2003-08-29 2005-03-02 Denso Corporation Microcomputer resource utilization estimation program, microcomputer resource utilization estimation apparatus, and program development method
CN103257650A (zh) * 2013-04-17 2013-08-21 北京全路通信信号研究设计院有限公司 一种用于列车控制系统功能测试的校验系统
CN106527411A (zh) * 2016-12-30 2017-03-22 中车唐山机车车辆有限公司 地铁列车网络控制系统测试装置和系统
CN109992502A (zh) * 2017-12-30 2019-07-09 中国移动通信集团四川有限公司 应用软件性能自动检测分析方法、装置、设备及介质
CN109298997A (zh) * 2018-08-08 2019-02-01 平安科技(深圳)有限公司 接口测试方法、系统、计算机设备和存储介质
CN109358599A (zh) * 2018-10-18 2019-02-19 湖南中车时代通信信号有限公司 一种列车运行监控装置的自动测试系统、方法及装置
US10698803B1 (en) * 2019-01-09 2020-06-30 Bank Of America Corporation Computer code test script generating tool using visual inputs
CN110989549A (zh) * 2019-11-11 2020-04-10 株洲中车时代软件技术有限公司 用于列车控制系统的软件测试通用自动化控制方法及装置
CN110825647A (zh) * 2019-11-14 2020-02-21 广东华晟数据固态存储有限公司 一种自动化测试逻辑设备接口的测试方法
CN111782505A (zh) * 2020-05-26 2020-10-16 株洲中车时代电气股份有限公司 列车系统仿真测试方法、装置、计算机设备和存储介质
CN112631932A (zh) * 2020-12-30 2021-04-09 交控科技股份有限公司 基于接口的自动列车监控系统的子功能独立测试方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
傅李育: "轨交信号系统自动化测试集成平台设计与实现", 《中国优秀硕士学位论文全文数据库 信息科技辑》 *
喻钢 等: "基于脚本技术的高速铁路列控中心系统安全性自动化测试研究", 《铁道学报》 *

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114489028A (zh) * 2022-04-01 2022-05-13 北京全路通信信号研究设计院集团有限公司 一种列控系统的测试方法及系统
CN115333984A (zh) * 2022-08-17 2022-11-11 卡斯柯信号有限公司 一种安全协议通信性能测试系统及方法
CN115333984B (zh) * 2022-08-17 2023-10-31 卡斯柯信号有限公司 一种安全协议通信性能测试系统及方法
CN115134819A (zh) * 2022-09-01 2022-09-30 卡斯柯信号(北京)有限公司 一种列控无线闭塞系统的测试方法及装置
CN115134819B (zh) * 2022-09-01 2022-12-09 卡斯柯信号(北京)有限公司 一种列控无线闭塞系统的测试方法及装置
CN117874308A (zh) * 2024-03-12 2024-04-12 北京全路通信信号研究设计院集团有限公司 一种列控数据获取方法、装置、电子设备及存储介质
CN117874308B (zh) * 2024-03-12 2024-05-24 北京全路通信信号研究设计院集团有限公司 一种列控数据获取方法、装置、电子设备及存储介质

Also Published As

Publication number Publication date
CN113835419B (zh) 2022-02-25

Similar Documents

Publication Publication Date Title
CN113835419B (zh) 一种列控设备的测试方法、系统及存储介质
US8707252B1 (en) Techniques for automatic generation of parsing code
US20070022324A1 (en) Multi-platform test automation enhancement
US20080120521A1 (en) Automated Testing and Control of Networked Devices
US20100205484A1 (en) System and method for demonstrating the correctness of an execution trace in concurrent processing environments
CN103853650A (zh) 一种模糊测试的测试用例生成方法及装置
CN111488271B (zh) 消息中间件的调优方法、系统、电子设备及存储介质
CN111694547A (zh) 一种基于数据状态变化的自动编码数据处理应用设计工具
CN111767217B (zh) Js单元测试案例生成方法及装置
CN114489594A (zh) 一种命令解析器的构建方法、命令解析处理方法及装置
CN117278661B (zh) 一种工业物联网多协议解析方法及系统
CN114416547A (zh) 基于测试用例的测试方法
US6516306B1 (en) Model checking of message flow diagrams
CN107749800B (zh) 一种实现通信设备自动化测试配置隐式删除的方法
CN111274144A (zh) 一种基于网络文件系统操作字接口的单元测试方法与系统
CN115328456A (zh) 基于xml支持自动化测试脚本语言的实现方法
CN111459984B (zh) 基于流式处理的日志数据处理系统及方法
Abadi et al. A TLA solution to the RPC-memory specification problem
EP4246909A1 (en) Method and apparatus for configuring node
Kausch et al. A Theory for Event-Driven Specifications Using Focus and MontiArc on the Example of a Data Link Uplink Feed System
CN115373696B (zh) 软件资源生成的低代码配置方法、系统、设备及存储介质
CN113448605B (zh) 一种软件更新方法、装置、电子设备及存储介质
CN115309654A (zh) 基于tla+形式化规范模型检查的分布式系统测试方法及装置
CN116911804A (zh) 一种基于设备自适应的流程设计测试方法
Bourouis et al. EQNM2L: Towards a Metamodel for Extended Queuing Networks

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant