掌桥专利:专业的专利平台
掌桥专利
首页

联锁软件自动测试方法

文献发布时间:2023-06-19 10:29:05


联锁软件自动测试方法

技术领域

本发明涉及软件测试领域,尤其涉及一种基于场景和形式化描述的联锁软件自动测试方法。

背景技术

计算机联锁系统是列车在站内安全运行的保障,是铁路信号领域的安全关键系统,能够完成自动外部输入获取(含人机交互)、联锁逻辑运算、输出外部设备的控制指令等一系列功能。其中,联锁逻辑运算的安全性和可靠性影响着整个车站设备的实时状态,对行车安全有着至关重要的作用。因此需要对联锁系统软件设计进行充分和完备的安全性测试。测试是保证联锁系统功能正确的重要途径,能够反映联锁系统功能与规范的一致性关系,测试用例生成是测试的关键和基础。测试用例是包含输入、执行条件和输出的一组输入-输出关系,用于测试某个程序是否满足某个特定需求。测试人员根据预先的输入以及执行条件,观察输出结果与预期结果是否一致来确定系统的正确性。

在联锁系统的开发及项目应用过程中,存在如下问题,使得提升联锁软件测试的可靠性,提高联锁软件自动化测试水平和速度势在必行。

(1)由于各个联锁软件的供应商对于联锁软件从开发模式,应用设计过程存在不统一性,造成测试的难度很大。

(2)计算机联锁承担的功能越来越复杂,传统的测试无法完整覆盖所有的安全需求,存在将安全风险遗留到现场的可能。

(3)系统功能的增加,工期的缩短,使得联锁功能性测试不充分。

(4)目前计算机联锁系统的测试主要采用人工测试的方法,预先设定好每一步测试的内容,然后一步步往下进行测试,观察显示结果是否和预期结果一致。但是人工测试工作量巨大,而且效率不髙,同时容易造成人为的失误。

(5)目前联锁软件的测试方法主要以软件代码为中心来设计测试用例,系统测试的通用性和灵活性不足。开发过程中,鉴于开发人员的代码设计风格和思路不同,对于同一个需求,不同的开发人员编写的程序不完全一样,就需要针对每行代码或者每个模块设计测试用例,测试效率极低而且费时较多。

发明内容

本发明提出了一种联锁软件自动测试方法,基于联锁软件应用场景及形式化描述建立联锁软件应用场景的通用测试用例本脚本,再基于联锁软件的输入数据形成特定应用的测试用例,从而自动测试联锁软件。

为了达到上述目的,本发明提出了一种联锁软件的自动测试方法,基于联锁软件的应用场景分析联锁软件所包含的所有联锁设备对象,并采用形式化语言建立与联锁设备对象一一对应的站场对象模型,根据所述站场对象模型中的对象变量设计联锁软件应用场景的通用测试用例脚本,并依据联锁软件的测试输入数据形成特定应用的测试用例,从而根据该测试用例自动测试联锁软件。

进一步地,所述特定应用的测试用例的生成方法,包含以下步骤:

S101、分析联锁软件应用场景及其所包含的所有联锁设备对象,并分析应用场景下联锁设备对象关联的联锁逻辑变量;

S102、基于形式化语言建立联锁设备对象的站场对象模型,并建立站场对象模型的对象变量与联锁设备对象的联锁逻辑变量间的一一映射关系;

S103、基于站场对象模型及其对象变量设计联锁软件应用场景的通用测试用例脚本;

S104、处理联锁软件的测试输入数据,并依据该测试输入数据对通用测试用例脚本进行实例化,生成特定应用的测试用例。

进一步地,所述根据特定应用的测试用例自动测试联锁软件的方法,包含以下步骤:

S201、对联锁软件进行系统初始化,建立联锁软件测试的环境模型;

S202、读取特定应用的联锁软件输入数据,提取该输入数据中的联锁逻辑变量,并获取联锁逻辑变量与对象变量间的映射关系;

S203、依据联锁逻辑变量与对象变量间的映射关系,将特定应用场景的测试用例中的执行语句转换成联锁软件输入数据中输入变量的赋值;

S204、联锁软件根据输入变量的赋值进行联锁运算,并输出联锁软件输出变量的数值;

S205、通过判断联锁软件输出变量的数值是否满足预期设置的结果,从而判断联锁软件是否满足要求。

进一步地,所述步骤S101中分析联锁软件应用场景及其所包含的所有联锁设备对象的方法,包含:分析联锁软件应用场景的功能并将其划分为若干测试场景模块,分别分析每个测试场景模块包含的联锁设备对象及其对应的属性,从而识别联锁软件所包含的所有联锁设备对象,以保证测试需求的完整性和充分性。

进一步地,所述步骤S102中基于形式化语言建立联锁设备对象的站场对象模型的方法,包含:分别对联锁软件中的联锁设备对象建立对象模型,并根据联锁设备对象的设备属性在联锁数据中的逻辑状态定义,采用形式化建模语言,建立联锁设备的面向对象的站场对象模型。

进一步地,所述联锁设备对象的联锁逻辑变量以及站场对象模型的对象变量均包含输入变量、输出变量及逻辑中间变量。

进一步地,采用正则表达式对联锁设备对象的联锁逻辑变量与站场对象模型的对象变量间的一一映射关系进行匹配,从而能够快速检索到同一类设备具有相同功能时定义的对象变量。

进一步地,所述步骤S103中,采用形式化语言编写基于站场对象模型及其对象变量的联锁软件应用场景的通用测试用例脚本。

进一步地,所述步骤S104中处理联锁软件的测试输入数据的方法,包括:识别该测试输入数据中的联锁设备对象信息、布尔逻辑变量、站场拓扑结构连接关系及站场设备对象的属性信息。

进一步地,所述步骤S104中测试用例脚本实例化时,对当前测试用例对应的测试输入数据中包含的站场设备对象及其相关联的逻辑变量的所有组合关系进行实例化。

本发明具有以下优势:

本发明基于联锁软件的应用场景及形式化语言编写联锁软件的通用测试用例脚本,再依据联锁软件的输入数据对测试用例进行实例化,生成特定应用的测试用例,从而根据该测试用例实现联锁软件的自动测试。本发明的测试用例实例化时,测试覆盖率高,而且可以一次性生成具有相同功能场景的联锁设备对象对应的测试用例,通用性强,可执行度高。本发明对同一套联锁逻辑规则下的不同测试站的联锁软件进行测试时,仅需替换联锁软件的输入数据,即可复用联锁软件的通用测试用例脚本对联锁软件进行自动测试。当联锁逻辑规则升级时,可通过更新联锁设备对象的联锁逻辑变量与站场对象模型的对象变量间的映射关系,无需对通用测试用例脚本进行大幅度变更,从而节省了维护成本。

附图说明

图1为联锁软件测试用例的生成方法的流程图;

图2为根据测试用例进行联锁软件自动测试的方法流程图。

具体实施方式

以下结合附图和具体实施例对本发明作进一步详细说明。根据下面说明和权利要求书,本发明的优点和特征将更清楚。需说明的是,附图均采用非常简化的形式且均使用非精准的比率,仅用以方便、明晰地辅助说明本发明实施例的目的。

各个供应商开发的联锁软件以铁路行业技术标准为设计依据,具有相同的功能应用场景,无论开发模式如何变化,联锁软件最终的应用场景是不变的。本发明提出了一种联锁软件的自动测试方法,基于联锁软件的应用场景分析联锁软件所包含的所有联锁设备对象,并采用形式化语言建立与联锁设备对象一一对应的站场对象模型,根据所述站场对象模型中的对象变量设计联锁软件应用场景的通用测试用例脚本,再依据联锁软件的测试输入数据形成特定应用的测试用例,从而根据该测试用例自动测试联锁软件。

如图1所示,所述联锁软件的测试用例的生成方式,具体包含以下步骤:

S101、分析联锁软件应用场景及其所包含的所有联锁设备对象,并分析应用场景下联锁设备对象关联的联锁逻辑变量。

具体地,分析联锁软件应用场景的功能,根据联锁软件应用场景的功能划分为若干测试场景模块,可分为:道岔应用场景、信号机与进路联锁应用场景、道岔与进路控制场景,区段与进路控制场景等。分析识别每个测试场景模块包含的联锁设备对象及对应的属性,从而识别联锁软件所包含的所有联锁设备对象,以保证测试需求的完整性及充分性。联锁设备对象包含但不限于:列车信号机、调车信号机、单动道岔、双动道岔、交叉渡线、道岔区段、无岔区段。

所述联锁逻辑变量包含输入变量、输出变量及逻辑中间变量。其中,输入变量是外部设备输入给联锁系统的接口变量,如来自轨旁设备的表示轨道电路空闲/占用的状态变量,表示道岔位置的状态变量等;输出变量是联锁系统输出给外部系统的变量,如联锁系统将道岔的动作命令输出给转辙机以控制道岔动作,将信号机点灯命令输出给信号机以控制信号机点亮允许信号等;逻辑中间变量是联锁系统根据外部输入进行联锁逻辑运算产生的中间过程变量。逻辑中间变量又包含关系、时间变量以及函数等,所述关系是两个及以上站场对象间关联的描述,如进路始端信号机,用于描述进路对象与信号机对象的关系;所述时间变量描述联锁系统中涉及延时的变量;所述函数用于定义单个对象变量或多个对象变量间的组合。

S102、基于形式化语言建立联锁设备对象的站场对象模型,并建立站场对象模型的对象变量与联锁设备对象的联锁逻辑变量间的一一映射关系。

具体地,分别对联锁软件中的联锁设备对象建立对象模型,并根据联锁设备对象的设备属性在联锁数据中的逻辑状态定义,采用形式化建模语言,建立联锁设备的面向对象的站场对象模型。所述站场对象模型包含系统类、信号机类、道岔类、轨道区段类、进路类及其各站场设备子类等,各站场设备子类下构建站场设备的对象属性。站场对象模型横跨了所有应用场景,降低各设备类的耦合性和信号设备的建模难度。

站场对象模型的对象变量同样也包含:输入变量、输出变量及中间逻辑变量。采用正则表达式对联锁设备对象的联锁逻辑变量与站场对象模型的对象变量间的一一映射关系进行匹配,从而能够快速检索到同一类设备具有相同功能时定义的对象变量,并能使测试用例执行时对应到联锁内部逻辑运算。

S103、基于站场对象模型及其对象变量设计联锁软件应用场景的通用测试用例脚本。

具体地,采用形式化语言编写基于站场对象模型及其对象变量的联锁软件应用场景的通用测试用例脚本,所述通用测试用例脚本是对联锁软件应用场景的逻辑形式化模型描述,其具有通用性,适应于使用相同联锁逻辑规则的不同的测试站。

S104、处理联锁软件的测试输入数据,并依据该测试输入数据对通用测试用例脚本进行实例化,生成特定应用的测试用例。

具体地,对所述测试输入数据进行处理,以获取测试需要的联锁信息及接口信息。处理联锁软件的测试输入数据的方法,包括:识别该测试输入数据中的联锁设备对象信息、布尔逻辑变量、站场拓扑结构连接关系及站场设备对象的属性信息,以便上述数据可以被识别读取。通用测试用例脚本实例化时,对当前测试用例对应的测试输入数据中包含的所有站场设备对象及其关联的联锁逻辑变量的所有组合关系进行实例化,测试覆盖率高。具体地,通用测试用例脚本进行实例化时,遍历当前测试用例涉及的站场中的全部设备对象的测试输入数据,并将处理后的测试输入数据代入到通用测试用例脚本中。而且,测试用例脚本实例化过程中,可以一次性生成具有相同功能场景的信号设备对应的测试用例,使得测试用例通用性强,执行度高。

如图2所示,所述根据测试用例进行联锁软件的自动测试方法,具体包含以下步骤:

S201、对联锁软件进行系统初始化,建立联锁软件测试的环境模型;以使联锁软件满足执行测试用例的初始条件;

S202、读取特定应用的联锁软件输入数据,提取该输入数据中的联锁逻辑变量,并获取联锁逻辑变量与对象变量间的映射关系;

S203、依据联锁逻辑变量与对象变量间的映射关系,将特定应用场景的测试用例中的执行语句转换成联锁软件输入数据中输入变量的赋值;

S204、联锁软件根据输入变量的赋值进行联锁运算,并输出联锁软件输出变量的数值;

联锁软件根据输入变量的赋值,按照联锁软件输入数据中的联锁布尔运算逻辑进行联锁运算,并根据运算结果输出联锁软件输出变量的返回值,即输出变量的数值。

S205、通过判断联锁软件输出变量的数值是否满足预期设置的结果,从而判断联锁软件是否满足要求。

具体地,特定应用场景的测试用例执行时,遍历当前测试用例设计的站场中全部联锁设备对象,并将测试用例中执行的操作和预期结果在实例化时对应到联锁逻辑变量,以联锁逻辑变量中的输出变量的数值自动判断联锁软件的正确性,减少了传统测试过程中操作执行、执行结果确认的过程中的接口交互,缩短了测试时间。同时,对联锁软件功能场景的测试延伸到对联锁逻辑变量的跟踪运算,使自动测试过程可追溯,增加了测试结果的可信任度。

本发明可对同一套联锁逻辑规则下的不同测试站的联锁软件进行测试,仅需替换联锁软件的输入数据,即可复用联锁软件的通用测试用例脚本对联锁软件进行自动测试。当联锁逻辑规则升级时,可通过更新联锁设备对象的联锁逻辑变量与站场对象模型的对象变量间的映射关系,无需对通用测试用例脚本进行大幅度变更,从而节省了维护成本。

尽管本发明的内容已经通过上述优选实施例作了详细介绍,但应当认识到上述的描述不应被认为是对本发明的限制。在本领域技术人员阅读了上述内容后,对于本发明的多种修改和替代都将是显而易见的。因此,本发明的保护范围应由所附的权利要求来限定。

相关技术
  • 一种联锁工具软件的自动化测试方法
  • 一种基于Probe的QTE联锁应用软件测试方法及装置
技术分类

06120112568601