CN114545896A - 一种计算机联锁软件自动测试架构方法及系统 - Google Patents

一种计算机联锁软件自动测试架构方法及系统 Download PDF

Info

Publication number
CN114545896A
CN114545896A CN202210068543.1A CN202210068543A CN114545896A CN 114545896 A CN114545896 A CN 114545896A CN 202210068543 A CN202210068543 A CN 202210068543A CN 114545896 A CN114545896 A CN 114545896A
Authority
CN
China
Prior art keywords
test
script
function
atomic operation
interlocking software
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.)
Pending
Application number
CN202210068543.1A
Other languages
English (en)
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.)
CRSC Research and Design Institute Group Co Ltd
China Railway Signal and Communication Corp Ltd CRSC
Original Assignee
CRSC Research and Design Institute Group Co Ltd
China Railway Signal and Communication Corp Ltd CRSC
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 CRSC Research and Design Institute Group Co Ltd, China Railway Signal and Communication Corp Ltd CRSC filed Critical CRSC Research and Design Institute Group Co Ltd
Priority to CN202210068543.1A priority Critical patent/CN114545896A/zh
Publication of CN114545896A publication Critical patent/CN114545896A/zh
Pending legal-status Critical Current

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

本发明提供一种计算机联锁软件自动测试架构方法及系统,方法包括:通过原子操作库提供测试用例的通用原子操作函数;获取基于指定规范化格式的编程规则编写针对联锁软件测试场景的测试脚本;根据原子操作函数将所述测试脚本翻译成测试程序。本发明提供的计算机联锁软件自动测试架构方法及系统,通过为测试脚本编写人员提供符合测试案例特征的原子操作函数库,隔离测试脚本对测试平台API的依赖,降低了测试脚本的编写难度,简化了测试脚本内容,提高了测试脚本的可读性和可维护性。

Description

一种计算机联锁软件自动测试架构方法及系统
技术领域
本发明属于安全计算机技术领域,特别涉及一种计算机联锁软件自动测试架构方法及系统。
背景技术
计算机联锁是运行于铁路车站内的安全控制系统,主要作用是根据调度指令排列进路,控制站内道岔和信号机,给出行车指令。由于联锁系统的安全性及实时性要求,在应用于复杂站场条件的情况下,其联锁逻辑的正确性难以保证,因此需要对联锁系统进行大量的功能性测试。常见的人工测试方案如图1所示:测试人员根据联锁软件需求编写正向和反向的联锁软件测试案例,然后通过在控显程序界面模拟调度员点按鼠标下发控制指令的方式,执行测试案例的操作步骤,然后观察控显程序界面显示的操作结果,判断测试案例执行的正确性,附加的操作为设置联锁室外设备模拟程序,模拟室外设备故障,观测联锁软件是否给出正确的安全防护。这种传统的人工测试方案,由于其编写测试案例的难度大,耗时长,执行测试案例费人力,费时间等原因,正在逐步被自动测试方案替代。
常见的自动测试系统结构如下图2所示,测试平台在既有的联锁程序、模拟程序(包括控显模拟程序和仿真模拟程序)的基础上,额外配置了脚本运行平台和脚本数据表,用于为自动测试脚本提供运行环境。其中,控显模拟程序用于将测试脚本的控制命令转化为控显指令,根据控制命令协议发送给联锁程序;仿真模拟程序用于接收脚本运行平台发送的设备模拟指令,解释后根据设备采驱协议发送到联锁程序,设备模拟指令用于修改和模拟设备操作;数据库用于存储测试日志。
测试时,首先,由脚本运行平台将测试脚本的操作步骤翻译成对应的控显操作指令或模拟室外设备故障指令,然后分别通过控显模拟程序或设备模拟程序(即仿真模拟程序)发送给联锁程序。
脚本运行平台接收联锁程序进行逻辑运算后发送的内部状态信息,通过设置的数据解析规则,解析成对应的联锁逻辑状态或设备状态;
最后,测试脚本通过脚本运行平台检查设备状态接口判断操作指令或模拟指令的执行结果,并将操作日志到数据库中。
现有的计算机联锁软件自动测试脚本编写方案(以下简称测试脚本)具有以下问题:
1、可维护性差。目前测试脚本在编写时,一般按照联锁软件测试规范直接翻译测试用例的操作步骤,所有的测试逻辑都在测试脚本中。并且,测试脚本没有明确的脚本编写规范,可读性差。因此测试脚本在初次测试时,难以确定错误是发生在测试脚本上还是发生在联锁软件上。即使定位了错误是由于测试脚本的编写错误,也难以推广到其他相近功能的测试脚本是否也有相似的错误,更无法做到一处修改更正所有的类似错误。
2、复用程度低。不同制式的联锁功能可能十分相似,但由于测试平台的修改,导致测试脚本与测试平台接口部分发生变化,使得测试脚本难以移植和复用。除此之外,由于测试脚本的内容规范程度低,且包含大量的测试逻辑,难以评估在联锁功能发生变更后,哪些测试脚本能够复用,哪些测试脚本需要做对应的修改。
3、编写难度高。测试平台为保证自身的通用性,提供的测试API一般不包含联锁逻辑,也不符合测试人员常用的操作方式。而测试人员一般也不是联锁的开发人员,在使用测试平台提供的API时,难以将通用化的测试API对应到传统的测试案例操作步骤中,增加了测试脚本的编写难度。除此之外,符合编程语言规范和特性,记录调试信息和日志等工作也会增加脚本编写工作的困难。
现有技术方案中,由于测试脚本直接运行于自动测试平台的脚本运行环境中,受测试平台实现方案影响较大,再加上测试脚本自身的规范性不足,造成了上文所述的可维护性差、复用程度低和编写难度高的不足。
因此,亟需一种易于开发、通用性强、可维护性强的计算机联锁软件自动测试架构方案。
发明内容
针对上述问题,本发明提供一种计算机联锁软件自动测试架构方法,包括:
通过原子操作库提供测试用例的通用原子操作函数;
获取基于指定规范化格式的编程规则编写针对联锁软件测试场景的测试脚本;
根据原子操作函数将所述测试脚本翻译成测试程序。
进一步地,根据原子操作函数将所述测试脚本翻译成测试程序包括:
将测试脚本转化为自动测试操作步骤,并附加测试脚本运行上下文,形成能够运行在测试平台上的测试程序。
进一步地,所述附加测试脚本运行上下文包括附加以下内容:
程序运行依赖、程序调度接口和测试环境初始化;或
程序运行依赖、程序调度接口、测试环境初始化和测试环境场景恢复。
进一步地,测试脚本采用指定规范化格式编写,包括:
采用规范化的测试脚本流程控制和限定范围的测试语言编写测试脚本。
进一步地,包括:
使用与脚本运行平台同样的编程语言,对测试平台提供的测试API封装和扩展,形成原子操作库;所述原子操作库能够为测试用例中出现的所有对测试对象的测试操作步骤提供唯一对应的库函数。
进一步地,所述原子操作库中包含测试对象类函数;
所述测试对象类函数为测试脚本提供测试用例要求的待测对象的操作函数;
所述待测试对象包括进路对象、道岔对象、区段对象和信号机对象中至少一类。
进一步地,测试对象函数能够按照测试要求筛选出满足指定联锁功能测试场景中的全部待测对象,并将全部待测对象组成一个集合或列表。
进一步地,所述测试脚本设置指定测试场景下的对象遍历测试步骤。
进一步地,所述原子操作库中包含操作命令类函数;
操作命令类函数包括模拟控显命令函数和模拟设备状态函数;
模拟控显命令函数用于模拟测试人员通过控显程序发送操作命令;
模拟设备状态函数用于修改当前设备状态,模拟联锁设备异常动作或不受控制场景。
进一步地,操作命令类函数还包括执行对应的状态检查函数;
模拟设备状态函数执行返回前,还调用状态检查函数以保证对应设备的状态已经修改为此函数的期望状态;
状态检查类函数用于向测试脚本返回当前的测试对象状态,以确定测试对象状态是否符合预期。
进一步地,状态检查函数的阻塞时间根据检查场景确定:如果待检查场景可能出现,则按照待检查场景能够延迟最晚时间计算;如果待检查场景不可能出现,则直接返回,以减少等待时间。
进一步地,原子操作库函数中的每一类函数中,还包括以下功能:记录本函数的操作对象和操作内容,作为调式信息记录到运行日志中。
进一步地,脚本解释平台转化规范化脚本内容部分时,包括:
将规范化脚本的操作步骤、检查内容和检查结果记录成日志并存入数据库中,形成本测试脚本的测试报告。
本发明提供一种计算机联锁软件自动测试架构系统,包括:
原子操作库,用于提供测试用例的通用原子操作函数;
脚本解释平台,用于获取基于指定规范化格式的编程规则编写针对联锁软件测试场景的测试脚本;
脚本解释平台,还用于根据原子操作函数将所述测试脚本翻译成测试程序。
本发明提供的计算机联锁软件自动测试架构方法及系统,通过为测试脚本编写人员提供符合测试案例特征的原子操作函数库,隔离测试脚本对测试平台API的依赖,降低测试脚本的编写难度,简化测试脚本内容;通过脚本解释平台限定测试脚本语句范围,并提供测试脚本中的测试语句与原子操作库函数的对应关系,进一步降低测试脚本对测试环境的依赖,减少测试脚本非必要内容,减少测试脚本编写人员工作;通过规范化测试脚本流程结构,提高测试脚本的可读性和可维护性,降低测试脚本复用难度。
本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在说明书、权利要求书以及附图中所指出的结构来实现和获得。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1示出了根据现有技术的人工测试系统结构图;
图2示出了根据现有技术的自动测试系统结构图;
图3示出了根据本发明实施例的自动测试架构与测试平台的结构关系示意图;
图4示出了根据本发明实施例的原子操作库函数示例图;
图5示出了根据本发明实施例的脚本解释平台工作流程示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地说明,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例提供一种计算机联锁软件自动测试架构方法,包括:
通过原子操作库提供测试用例的通用原子操作函数;
获取基于指定规范化格式的编程规则编写针对联锁软件测试场景的测试脚本,所述测试脚本设置指定测试场景下的对象遍历测试步骤;
根据原子操作函数将所述测试脚本翻译成测试程序。
如图3所示,自动测试架构包括原子操作库、脚本解释平台和规范化脚本库。
原子操作库用于为测试脚本提供封装程度高、功能覆盖全面、与测试场景操作相匹配的原子性测试API,即原子操作函数。本发明实施例中,将测试脚本中的测试逻辑和联锁逻辑下移到原子操作库中,解决了测试脚本对测试平台依赖程度高的问题,也能降低测试脚本编写难度。
脚本解释平台用于将规范化脚本转化成测试程序。具体地,将测试脚本转化为自动测试操作步骤(如操作、检查、记录等)并附加测试脚本运行上下文环境,形成能够运行在测试平台上的测试程序。从而避免测试脚本对原子操作库编程语言环境的过度依赖,降低测试脚本的复杂性。
本发明实施例通过规范化脚本库实现指定测试脚本的规范化格式。规范化脚本库用于指定测试脚本的编写的规范化格式,作为用户编写测试脚本的依据。进而脚本解释平台能够对编写的测试脚本进行自动解释。示例性地,规范化脚本库可以是规范描述文档或者用于编写测试脚本的编辑器或接口程序等。采用指定规范化格式编写测试脚本包括:采用规范化的测试脚本流程控制和限定范围的测试语言编写测试脚本。通过指定规范化格式,一方面降低了脚本编写难度,提高测试脚本的可读性和可维护性,降低测试脚本复用评估难度,另一方面方便脚本解释平台将规范化脚本转化成可直接运行的自动测试脚本。
基于规范化脚本库编写的测试脚本是针对联锁软件测试场景的,测试场景是针对联锁软件某一类型的功能的测试用例。因此,测试脚本中不需要出现特定的测试对象,如指定的某一条进路或某一个信号机。而现有的测试平台的脚本编写,需要明确操作的联锁设备对象,即测试对象。本申请针对场景的测试脚本与站场数据无关,适用性强,编写简单。
下面对这三个部分进行详细描述。
原子操作库是对测试平台提供的测试API的进一步封装和扩展,不失一般性地,原子操作库使用与脚本运行平台同样的编程语言。原子操作库的库函数的原子性体现在,测试用例中出现的所有对测试对象的测试操作步骤,均由原子操作库提供一个唯一对应的库函数。原子操作库函数主要包括测试对象类函数、操作命令类函数、状态检查类函数。联锁功能常见的测试对象为进路对象、道岔对象、区段对象、信号机对象等。测试时,针对每个测试场景,对某一类待测试对象进行测试。具体地,待测试对象是进路对象、道岔对象、区段对象或信号机对象的符合指定筛选规则的真子集。
测试对象类函数为测试脚本提供测试用例要求的待测对象的操作函数。测试对象类函数包括一个或多个测试对象函数。测试对象函数能够按照测试要求筛选出满足指定联锁功能测试场景中的全部待测对象,并将全部待测对象组成一个集合或列表。测试脚本设置指定测试场景下的对象遍历测试步骤,能够对所述集合或列表进行遍历测试。每一种测试对象筛选规则都应提供一个测试对象函数。例如联锁功能测试“接车进路与对向同股道迎面进路敌对”(测试场景)要求测试对象类函数提供“查找所有本进路的股道迎面敌对进路”(测试要求,即筛选规则)测试对象函数。
将测试对象列表获取设置在原子操作函数中,在编写测试脚本时,不需要编写者理解复杂的筛选对象逻辑,也不需要指定特定的测试对象,而直接通过规范化的指定语句获取指定测试场景下的所有测试对象,进而通过规范化语句进行遍历测试步骤设置,编写过程简单,与数据无关。本发明实施例采用针对测试场景的对象遍历测试,一方面简化了测试脚本编写,提高了通用性,另一方面,能够实现联锁软件的全面覆盖测试。
操作命令类函数包括模拟控显命令函数和模拟设备状态函数,模拟控显命令函数用于模拟测试人员通过控显程序发送操作命令,模拟设备状态函数用于修改当前设备状态,模拟联锁设备异常动作或不受控制场景。模拟控显命令函数保证每一种控显操作均有一个模拟控显命令函数与其对应。模拟控显命令函数的输入参数为待测试对象,测试脚本直接使用该封装后的函数时,不体现按下某些按钮等具体操作方式。模拟设备状态函数用于将目标设备的状态修改为期望(指定)状态。即,在此模拟设备状态函数执行结束后,对应设备的状态已经修改为此函数的期望状态。进一步地,模拟设备状态函数中还调用执行对应的状态检查函数,用于对设备状态进行检查,设备状态设置失败意味着系统故障,应直接退出测试,设备状态检查成功则继续执行,直到模拟设备状态函数执行结束后返回。例如,“设置道岔位置”模拟设备状态函数在将道岔状态修改成期望状态后,应附加状态检查类函数,检查道岔已确定处于期望位置后再返回执行后续动作。
状态检查类函数用于向测试脚本返回当前的测试对象(如设备)状态,以确定测试对象状态是否符合预期。状态检查函数的阻塞时间根据检查场景确定:如果待检查场景可能(存在一定概率)出现,则按照待检查场景能够延迟最晚时间计算;如果待检查场景不可能出现,则直接返回,以减少等待时间。例如“检查进路锁闭”状态检查函数在被调用时,在联锁接收操作命令的延时时间内,检查进路是否处于选路状态,如果处于选路状态,则认为进路能够进一步锁闭,否则直接返回失败;进路处于选路状态再按照进路选路最大时间检查进路是否锁闭,如果进路在预期时间内锁闭,则进一步检查进路是否锁闭正确,否则返回失败;进路锁闭后,检查进路是否按照配置数据锁闭,如果是则返回成功,否则应在调试信息中报告配置数据错误。避免了直接按照最大等待时间检查进路所有元素是否按照预期锁闭造成的浪费大量测试时间。
原子操作库函数除上述描述的特征之外,每一类函数内还记录本函数的操作对象和操作内容,作为调式信息记录到运行日志中。
图4列出了联锁常用的原子操作函数。原子操作库中包含进路原子操作、道岔原子操作、区段原子操作和信号机原子操作。每种类型的对象分别对应各自的测试对象类函数。基于各自的测试对象类函数,分别设置有对应的控显命令函数和模拟设备状态函数。控显命令函数属于控制命令类函数。模拟设备状态函数属于模拟命令类函数。另外还包括基于测试对象类函数设置的态检查类函数。示例性地,对于进路原子操作,控制命令类函数包括如办理进路函数、解锁进路函数;模拟命令类函数包括如模拟走车函数、模拟接近锁闭函数;状态检查类函数包括如进路已锁闭检查函数和进路已解锁检查函数。对于道岔原子操作,控制命令类函数包括如单道岔定位/反位函数、单锁/单解/封锁/解封道岔函数;模拟命令类函数包括如模拟道岔定位/反位/四开函数;状态检查类函数包括如检查道岔位置函数、检查道岔单锁/封锁函数。对于区段原子操作,控制命令类函数包括如区段封锁/解封函数、区段故障解锁函数;模拟区段占用/空闲函数;状态检查类函数包括如检查区段占用/空闲函数、检查区段进路锁闭/无锁闭函数。对于信号机原子操作,控制命令类函数包括如信号按钮封锁/解封函数、关闭信号函数;模拟命令类函数包括如模拟信号机非受控开放/关闭函数;状态检查类函数包括如检查信号显示函数、检查信号按钮封锁函数。
脚本解释平台作为原子操作库和测试脚本之间的桥梁,为测试脚本提供一种不依赖具体编程语言的测试脚本编写环境。脚本解释平台通过将规范化脚本的格式化语言翻译成对应的原子操作函数,形成自动测试程序的功能测试部分,然后附加符合测试平台编程语言环境的程序上下文,生成能够在脚本运行平台上运行的测试程序。脚本解释平台转化规范化脚本内容部分时,除了原子操作库函数的转化之外,还包括将规范化脚本的操作步骤、检查内容和检查结果记录成日志并存入数据库中,形成本测试脚本的测试报告。
脚本解释平台附加的程序运行上下文内容包括:程序运行依赖(头文件、库文件)、程序调度接口(入口函数)、测试环境初始化(非常站控、上电解锁、设备复位)、测试环境场景恢复(清除遗留进路或锁闭区段、恢复故障设备,该项可选择)等,此部分由具体的测试平台特性定义。
由于脚本解释平台的核心功能为提供规范化脚本测试语句与原子操作库的对应转化和生成测试日志,因此规范化脚本的脚本语句只能在脚本解释平台的限定范围内选择。脚本解释平台的脚本语句的语言形式和语句范围根据实际的测试案例情况定义,并确保任意两个语句之间没有包含关系,例如“办理进路”语句和“办理接车进路”语句不能同时定义,其他同理。
流程控制中的顺序、分支和循环三种结构中,规范化格式允许脚本使用循环结构和顺序结构,循环结构的对象是测试对象函数返回的测试对象集合,顺序结构是对每一个测试对象的操作命令类函数和状态检查类函数。规范化脚本不允许使用分支结构:一方面,测试案例的步骤和结果都是确定的,即规范化脚本中所有的操作都应准确执行,检查结果都应符合预期,非预期的情况都意味着测试脚本或待测程序存在错误,需要人工处理。规范化脚本使用分支结构处理非预期场景对于联锁这种逻辑和场景十分复杂的程序是无能为力的。另一方面,原子操作库函数的执行结果都应该是符合预期的,非预期的结果意味着原子操作库函数实现的有缺陷。这种情况的注意点应放在如何完善原子操作库而不是在规范化脚本中进行额外处理。
测试脚本仅使用循环和顺序结构,保证脚本的规范性、可读性、可维护性,同时也保证脚本解释平台更容易将规范化脚本转化成自动测试脚本。
下面对一个测试用例的编写和解析过程进行说明。
测试用例采用格式化方式编写如下:
测试脚本包括两部分,一部分为对该测试脚本的说明:
“Sw-Case-RUT F-9:接车进路建立后与至同一股道的迎面进路敌对测试目的:接车进路与至同一股道的迎面进路敌对
设计需求编号:SRS_RUT_001
测试需求编号:Sw-Req-F-1”
该测试脚本用于通过“接车进路建立后与至同一股道的迎面进路敌对”这一测试用例,实现对联锁“接车进路与至同一股道的迎面进路敌对”这一场景的过程进行测试的目的。
测试脚本的另一部分为通过规范化格式编写规则生成的测试脚本,不失一般性地,测试脚本在限定范围内使用自然语言编写,简洁易懂:
“查找接车进路
遍历测试对象:
办理进路
检查进路锁闭成功
查找迎面敌对进路
遍历测试对象:
办理进路
检查进路锁闭失败
解锁进路”
其中,“查找接车进路”等测试操作步骤根据指定格式规范的限定范围选择,“遍历测试对象:”属于测试脚本所允许使用的循环控制结构。
脚本解释平台根据测试脚本生成测试程序,如下:
“#Sw-Case-RUT F-9:接车进路建立后与至同一股道的迎面进路敌对
#测试目的:
#接车进路与至同一股道的迎面进路敌对
#追溯关系:
#设计需求编号:SRS_RUT_001
#测试需求编号:Sw-Req-F-1
import ExLibPro
from MyTestLib.ExLib import*
from script.data import*
def main(task_id,case_id,args):
CBILib=ExLibPro.get_task_exlib(task_id,"XSCBIInterface")
if CBILib is not None:
CBILib.set_task_info(task_id,case_id,'9')
CBILib.connected()
time.sleep(2)
#初始化站联继电点位信息
init_station_port_point(CBILib)
#上电解锁
set_interlocking_power_on_unlock(CBILib)
#查找接车进路
route_list1=find_all_receiving_route()
#遍历测试对象
for route1 in route_list1:
#办理进路
select_route(route1)
#检查进路锁闭成功
result=check_route_locked(route1)
#记录日志
set_step_result_detail(“接车进路”,“办理进路%d”%route1['name'],“检查进路锁闭成功:
%s”%result)
#查找迎面敌对进路
route_list2=find_head_on_conflict_route(route1)
#遍历测试对象
for route2 in route_list2:
#办理进路
select_route(route2)
#检查进路锁闭失败
result=not check_route_locked(route2)
#记录日志
set_step_result_detail(“进路%s迎面敌对进路”%route1['name'],“办理进路
%s”%route2['name'],“检查进路锁闭成功:%s”%result)
#解锁进路
release_route(route1)”
图5示出了根据本发明实施例的脚本解释平台工作流程示意图,如图所示,将规范化脚本的功能说明部分直接复制到测试程序中,作为自动测试脚本注释说明。对于规范化脚本的内容部分,由脚本解释平台获取规范化格式的测试脚本后进行解释,转化到该测试程序中:将脚本中的将测试脚本转化为自动测试操作步骤,并附加测试脚本运行上下文,形成能够运行在测试平台上的测试程序。具体的,测试脚本按照代码顺序依次为自动测试脚本注释说明、自动测试脚本运行上下文环境、自动测试脚本功能测试部分、自动测试脚本运行上下文环境。其中在自动测试脚本功能测试部分的上下文主要是程序运行依赖、程序调度接口、测试环境初始化。自动测试脚本功能测试部分之后的上下文主要是测试环境场景恢复。
下面通过如下表格对解释过程进行说明书:
Figure BDA0003481166220000131
Figure BDA0003481166220000141
Figure BDA0003481166220000151
基于相同的发明构思,本发明还提供一种计算机联锁软件自动测试架构系统,系统包括:
原子操作库,用于提供测试用例的通用原子操作函数;
脚本解释平台,用于获取基于指定规范化格式的编程规则编写针对联锁软件测试场景的测试脚本;
脚本解释平台,还用于根据原子操作函数将所述测试脚本翻译成测试程序。
本发明实施例的计算机联锁软件自动测试架构系统能够自动生成用于在测试运行环境中运行的测试程序,系统的具体实现方式可以根据本发明的计算机联锁软件自动测试架构方法的任意实施例获得,不再赘述。
尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

Claims (14)

1.一种计算机联锁软件自动测试架构方法,其特征在于,包括:
通过原子操作库提供测试用例的通用原子操作函数;
获取基于指定规范化格式的编程规则编写针对联锁软件测试场景的测试脚本;
根据原子操作函数将所述测试脚本翻译成测试程序。
2.根据权利要求1所述的计算机联锁软件自动测试架构方法,其特征在于,根据原子操作函数将所述测试脚本翻译成测试程序包括:
将测试脚本转化为自动测试操作步骤,并附加测试脚本运行上下文,形成能够运行在测试平台上的测试程序。
3.根据权利要求2所述的计算机联锁软件自动测试架构方法,其特征在于,所述附加测试脚本运行上下文包括附加以下内容:
程序运行依赖、程序调度接口和测试环境初始化;或
程序运行依赖、程序调度接口、测试环境初始化和测试环境场景恢复。
4.根据权利要求1所述的计算机联锁软件自动测试架构方法,其特征在于,测试脚本采用指定规范化格式编写,包括:
采用规范化的测试脚本流程控制和限定范围的测试语言编写测试脚本。
5.根据权利要求1所述的计算机联锁软件自动测试架构方法,其特征在于,包括:
使用与脚本运行平台同样的编程语言,对测试平台提供的测试API封装和扩展,形成原子操作库;所述原子操作库能够为测试用例中出现的所有对测试对象的测试操作步骤提供唯一对应的库函数。
6.根据权利要求1所述的计算机联锁软件自动测试架构方法,其特征在于,
所述原子操作库中包含测试对象类函数;
所述测试对象类函数为测试脚本提供测试用例要求的待测对象的操作函数;
所述待测试对象包括进路对象、道岔对象、区段对象和信号机对象中至少一类。
7.根据权利要求6所述的计算机联锁软件自动测试架构方法,其特征在于,
测试对象函数能够按照测试要求筛选出满足指定联锁功能测试场景中的全部待测对象,并将全部待测对象组成一个集合或列表。
8.根据权利要求1所述的计算机联锁软件自动测试架构方法,其特征在于,所述测试脚本设置指定测试场景下的对象遍历测试步骤。
9.根据权利要求1所述的计算机联锁软件自动测试架构方法,其特征在于,
所述原子操作库中包含操作命令类函数;
操作命令类函数包括模拟控显命令函数和模拟设备状态函数;
模拟控显命令函数用于模拟测试人员通过控显程序发送操作命令;
模拟设备状态函数用于修改当前设备状态,模拟联锁设备异常动作或不受控制场景。
10.根据权利要求9所述的计算机联锁软件自动测试架构方法,其特征在于,
操作命令类函数还包括执行对应的状态检查函数;
模拟设备状态函数执行返回前,还调用状态检查函数以保证对应设备的状态已经修改为此函数的期望状态;
状态检查类函数用于向测试脚本返回当前的测试对象状态,以确定测试对象状态是否符合预期。
11.根据权利要求10所述的计算机联锁软件自动测试架构方法,其特征在于,
状态检查函数的阻塞时间根据检查场景确定:如果待检查场景可能出现,则按照待检查场景能够延迟最晚时间计算;如果待检查场景不可能出现,则直接返回,以减少等待时间。
12.根据权利要求11所述的计算机联锁软件自动测试架构方法,其特征在于,
原子操作库函数中的每一类函数中,还包括以下功能:记录本函数的操作对象和操作内容,作为调式信息记录到运行日志中。
13.根据权利要求1-12中任一项所述的计算机联锁软件自动测试架构方法,其特征在于,
脚本解释平台转化规范化脚本内容部分时,包括:
将规范化脚本的操作步骤、检查内容和检查结果记录成日志并存入数据库中,形成本测试脚本的测试报告。
14.一种计算机联锁软件自动测试架构系统,其特征在于,包括:
原子操作库,用于提供测试用例的通用原子操作函数;
脚本解释平台,用于获取基于指定规范化格式的编程规则编写针对联锁软件测试场景的测试脚本;
脚本解释平台,还用于根据原子操作函数将所述测试脚本翻译成测试程序。
CN202210068543.1A 2022-01-20 2022-01-20 一种计算机联锁软件自动测试架构方法及系统 Pending CN114545896A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210068543.1A CN114545896A (zh) 2022-01-20 2022-01-20 一种计算机联锁软件自动测试架构方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210068543.1A CN114545896A (zh) 2022-01-20 2022-01-20 一种计算机联锁软件自动测试架构方法及系统

Publications (1)

Publication Number Publication Date
CN114545896A true CN114545896A (zh) 2022-05-27

Family

ID=81671611

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210068543.1A Pending CN114545896A (zh) 2022-01-20 2022-01-20 一种计算机联锁软件自动测试架构方法及系统

Country Status (1)

Country Link
CN (1) CN114545896A (zh)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020032538A1 (en) * 2000-05-09 2002-03-14 Lee Young-Seok Software test system and method
CN104778124A (zh) * 2015-04-13 2015-07-15 上海新炬网络信息技术有限公司 一种软件应用自动化测试方法
CN105677568A (zh) * 2016-01-11 2016-06-15 上海富欣智能交通控制有限公司 铁路信号计算机联锁系统的测试场景生成方法
CN105701014A (zh) * 2016-01-11 2016-06-22 上海富欣智能交通控制有限公司 铁路信号计算机联锁系统的自动化测试方法
CN109032941A (zh) * 2018-07-20 2018-12-18 郑州云海信息技术有限公司 测试用例驱动的可持续集成接口自动化测试方法及系统

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020032538A1 (en) * 2000-05-09 2002-03-14 Lee Young-Seok Software test system and method
CN104778124A (zh) * 2015-04-13 2015-07-15 上海新炬网络信息技术有限公司 一种软件应用自动化测试方法
CN105677568A (zh) * 2016-01-11 2016-06-15 上海富欣智能交通控制有限公司 铁路信号计算机联锁系统的测试场景生成方法
CN105701014A (zh) * 2016-01-11 2016-06-22 上海富欣智能交通控制有限公司 铁路信号计算机联锁系统的自动化测试方法
CN109032941A (zh) * 2018-07-20 2018-12-18 郑州云海信息技术有限公司 测试用例驱动的可持续集成接口自动化测试方法及系统

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
于艳: "《软件测试策略、设计及其自动化实战》", pages: 81 - 82 *

Similar Documents

Publication Publication Date Title
US7890806B2 (en) Auto-executing tool for developing test harness files
US6986125B2 (en) Method and apparatus for testing and evaluating a software component using an abstraction matrix
US7689973B2 (en) Language for development of test harness files
US20110145653A1 (en) Method and system for testing complex machine control software
Soltani et al. A guided genetic algorithm for automated crash reproduction
US7702958B2 (en) Auto-recording tool for developing test harness files
CN109656820B (zh) 基于cbtc的智能自动化测试系统
Wu et al. Scenario-based system design with colored petri nets: an application to train control systems
CN113268415A (zh) 一种基于测试用例的联锁规则自动测试系统及方法
CN113742215A (zh) 一种自动配置和调用测试工具进行测试分析的方法及系统
CN116955207A (zh) 识别测试用例完成软硬件的自动化测试方法、系统及介质
CN114545896A (zh) 一种计算机联锁软件自动测试架构方法及系统
CN115892146A (zh) 一种联锁系统与外部系统接口交互码位的自动测试方法
CN113204484B (zh) 一种面向软件生命周期的装备软件测试性设计方法
CN112988597B (zh) 一种基于状态迁移的自动测试可视化方法及系统
CN115599758A (zh) 一种跨平台日志框架以及日志信息采集方法
De Nicola et al. A hybrid testing methodology for railway control systems
US8141039B2 (en) Method and system for consolidating machine readable code
US20230305938A1 (en) Method and device for determining coverage in hil testing, and storage medium
Bouwman A model-based test platform for rail signalling systems
Menghi et al. Theodore: A trace checker for cps properties
CN112988596B (zh) 一种基于状态迁移的自动测试方法及系统
Mangelaars Visual Explanations of Runtime Verification Verdicts
KR100299623B1 (ko) 클라이언트 프로그램과 서버 프로그램의 통합 디버깅 방법
CN113434412A (zh) Atc自动测试系统及atc自动测试方法

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