计算机联锁系统自动生成测试用例的方法转让专利

申请号 : CN201410108892.7

文献号 : CN103838675B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 刘翔陈云张伟秦怀阳

申请人 : 上海富欣智能交通控制有限公司

摘要 :

本发明公开了一种计算机联锁系统自动生成测试用例的方法,包括如下步骤:采用XML文件描述的设备元素并形成站场基本数据;采用XML文件描述的测试模板元素并形成测试模板文件;根据站场基本数据和测试模板文件自动生成测试用例;自动生成测试用例主要包括步骤:遍历测试模板元素,对每一个测试模板元素都生成一个单独的测试用例集文件,通过测试模板元素的属性中的设备类型值获取基本数据文件,依次循环基本数据文件从而获取待测设备元素,生成一个原始测试用例,对各原始测试用例进行设备名和期望值的替换;依次循环相关设备的基本数据文件,对每一个相关设备都生成一个测试用例。本发明能提高联锁系统的测试效率和准确率。

权利要求 :

1.一种计算机联锁系统自动生成测试用例的方法,其特征在于,包括如下步骤:步骤一、形成站场基本数据,站场基本数据由多个基本数据文件组成,每一个基本数据文件对应于一类轨旁设备的所有联锁逻辑相关基本数据,每一个基本数据文件由多个采用XML文件描述的设备元素组成,每一设备元素对应于一个轨旁设备的所有联锁逻辑相关基本数据;

步骤二、形成测试模板文件,所述测试模板文件由多个测试模板集组成,每一个测试模板集对应于一类功能相关测试集;各类功能的所述测试模板集由多个测试模板子集组成,各所述测试模板子集对应于一类功能中各子功能的相关测试集;各所述测试模板子集由多个采用XML文件描述的测试模板元素组成,每一个测试模板元素描述了一类联锁逻辑的测试场景;

步骤三、根据所述站场基本数据和所述测试模板文件自动生成测试用例,包括如下分步骤:步骤31、加载所述测试模板文件;

步骤32、依次循环所述测试模板文件并依次遍历所述测试模板文件中的每一个测试模板元素所对应的测试场景;

步骤33、检测所述测试模板元素的语法格式,取值范围,逻辑关系,确保生成的测试用例能被正确识别;

步骤34、对每一个所述测试模板元素都生成一个单独的测试用例集文件,该测试用例集文件中包含其对应的所述测试模板元素的测试场景下针对同类设备的所有的测试用例;

通过每一个所述测试模板元素生成所对应的测试用例集文件的步骤包括如下的步骤35至步骤310;

步骤35、所述测试模板元素的属性中的设备类型值指明了待测设备的类型,所述待测设备的类型为适合所述测试模板元素的测试场景的设备类型,通过所述测试模板元素的属性中的设备类型值获取所述站场基本数据中的所述待测设备的类型所对应的所述基本数据文件;

步骤36、依次循环所述待测设备的类型所对应的所述基本数据文件从而获取待测设备元素,使得该基本数据文件中的每一个待测设备元素都至少包括一个测试用例覆盖;

步骤37、为每个所述待测设备元素所对应的待测设备生成一个原始测试用例;

步骤38、根据所述待测设备的类型所对应的所述基本数据文件对各所述原始测试用例进行设备名的替换;

根据所述待测设备的类型所对应的所述基本数据文件对各所述原始测试用例进行设备名的替换的方法包括如下步骤:若所述基本数据文件中的所述待测设备的类型和所述原始测试用例中的设备类型一致,则所述原始测试用例中所对应的设备为所述待测试设备,则所述原始测试用例中的设备类型的值替换为所述待测设备元素的设备名称;

若所述基本数据文件中的所述待测设备的类型和所述原始测试用例中的设备类型不一致,则所述原始测试用例中所对应的设备为所述待测试设备的相关设备,则所述原始测试用例中的设备类型的值替换为所述基本数据文件中的相关设备元素的设备名称;

步骤39、根据所述待测设备的类型所对应的所述基本数据文件对各所述原始测试用例进行期望状态值的替换;

根据所述待测设备的类型所对应的所述基本数据文件对各所述原始测试用例进行期望状态值的替换的方法包括如下步骤:若所述基本数据文件中的所述待测设备的类型和所述原始测试用例中的设备类型一致,则所述原始测试用例中所对应的设备为所述待测试设备,则所述原始测试用例中的期望状态值替换为所述待测设备元素的期望状态值;

若所述基本数据文件中的所述待测设备的类型和所述原始测试用例中的设备类型不一致,则所述原始测试用例中所对应的设备为所述待测试设备的相关设备,则所述原始测试用例中的期望状态值替换为所述基本数据文件中的相关设备元素的期望状态值;

步骤310、依次循环所述待测设备的相关设备的类型所对应的基本数据文件,重复步骤

37至步骤39,使每一个所述相关设备都生成一个测试用例;

步骤311、保存生成的所有测试用例,生成运行日志。

2.如权利要求1所述的方法,其特征在于:步骤一中的所述轨旁设备的类型包括信号机、道岔或区段。

3.如权利要求1或2所述的方法,其特征在于:所述设备元素包括设备ID、待测试的设备类型、待测试的设备名、控制区域和相关设备。

4.如权利要求1所述的方法,其特征在于:各所述测试模板集所对应的功能类型包括进路功能、道岔功能或区段功能。

5.如权利要求1或4所述的方法,其特征在于:所述测试模板元素包含:测试ID,待测试的设备类型,测试输入值,测试步骤,待操作的相关设备,设备操作命令以及期望的返回值。

说明书 :

计算机联锁系统自动生成测试用例的方法

技术领域

[0001] 本发明涉及一种计算机联锁系统的自动化测试方法,特别是涉及一种计算机联锁系统自动生成测试用例的方法。

背景技术

[0002] 安全是铁路运输生产永恒的主题,而计算机联锁系统是保障铁路车站列车和机车作业安全的关键系统,所以为保证系统的安全性必须对其进行高效、充分的测试。
[0003] 由于联锁系统业务逻辑关系的复杂性,手工测试存在测试不充分,测试效率低下以及劳动强度大等弊端,而自动化测试能够替代人工操作,做到测试的规范化、程序化和简单化,从而提高工作效率、缩短试验时间,并能消除人工操作而导致的失误。
[0004] 对于任何的自动化测试系统,如果没有测试案例即测试用例(Test Case),测试都无法正常进行,现有的联锁系统自动化测试研究多侧重于自动化测试平台的搭建,如图1所示,是现有联锁系统测试平台的示意图;现有联锁系统测试平台包括人机对话层1、联锁运算层2、I/O模块3和监控对象层4。人机对话层1包括测试机5、调度监督机(ATS)6和管理维护机7;测试机5中需要安装测试软件8,测试软件8包括测试程序、测试用例、测试输出和测试结论。联锁运算层2包括多个互相热备份的装有VxWorks系统的计算机即VxWorks CPU9;人机对话层1和联锁运算层2之间通过工业以太网相连。联锁运算层2和I/O模块3之间通过CAN总线相连。轨旁设备4一般包括道岔、轨道电路和信号机等。对联锁系统进行测试时,测试机5负责模拟调度监督机6以及相关的轨旁设备4。测试步骤为:运行测试机5中的测试程序,加载测试用例,通过以太网将轨旁设备4的操作命令发送给联锁系统即VxWorks CPU9,联锁逻辑处理完成后,由I/O模块3将输出数据以及轨旁设备4的状态返回给测试机5,测试机5根据测试输出给出测试结论。
[0005] 现有技术中对测试案例的自动化生成较少涉及,而联锁系统需要进行大量重复的测试案例设计,如需对每个道岔都进行各种场景下定操、反操的操作,在现有大多数的计算机联锁自动化测试中,测试案例的生成大多依靠有经验的技术工人手工完成,自动化程度不高,耗时费力且容易产生错误,效率以及正确性难以保证。

发明内容

[0006] 本发明所要解决的技术问题是提供一种计算机联锁系统自动生成测试用例的方法,能提高联锁系统的测试效率和准确率。
[0007] 为解决上述技术问题,本发明提供的计算机联锁系统自动生成测试用例的方法包括如下步骤:
[0008] 步骤一、形成站场基本数据,站场基本数据由多个基本数据文件组成,每一个基本数据文件对应于一类轨旁设备的所有联锁逻辑相关基本数据,每一个基本数据文件由多个采用XML文件描述的设备元素组成,每一设备元素对应于一个轨旁设备的所有联锁逻辑相关基本数据。
[0009] 步骤二、形成测试模板文件,所述测试模板文件由多个测试模板集组成,每一个测试模板集对应于一类功能相关测试集;各类功能的所述测试模板集由多个测试模板子集组成,各所述测试模板子集对应于一类功能中各子功能的相关测试集;各所述测试模板子集由多个采用XML文件描述的测试模板元素组成,每一个测试模板元素描述了一类联锁逻辑的测试场景。
[0010] 步骤三、根据所述站场基本数据和所述测试模板文件自动生成测试用例,包括如下分步骤:
[0011] 步骤31、加载所述测试模板文件。
[0012] 步骤32、依次循环所述测试模板文件并依次遍历所述测试模板文件中的每一个测试模板元素所对应的测试场景。
[0013] 步骤33、检测所述测试模板元素的语法格式,取值范围,逻辑关系,确保生成的测试用例能被正确识别。
[0014] 步骤34、对每一个所述测试模板元素都生成一个单独的测试用例集文件,该测试用例集文件中包含其对应的所述测试模板元素的测试场景下针对同类设备的所有的测试用例;通过每一个所述测试模板元素生成所对应的测试用例集文件的步骤包括如下的步骤35至步骤310。
[0015] 步骤35、所述测试模板元素的属性中的设备类型值指明了待测设备的类型,所述待测设备的类型为适合所述测试模板元素的测试场景的设备类型,通过所述测试模板元素的属性中的设备类型值获取所述站场基本数据中的所述待测设备的类型所对应的所述基本数据文件。
[0016] 步骤36、依次循环所述待测设备的类型所对应的所述基本数据文件从而获取待测设备元素,使得该基本数据文件中的每一个待测设备元素都至少包括一个测试用例覆盖。
[0017] 步骤37、为每个所述待测设备元素所对应的待测设备生成一个原始测试用例。
[0018] 步骤38、根据所述待测设备的类型所对应的所述基本数据文件对各所述原始测试用例进行设备名的替换。
[0019] 步骤39、根据所述待测设备的类型所对应的所述基本数据文件对各所述原始测试用例进行期望状态值的替换。
[0020] 步骤310、依次循环所述待测设备的相关设备的类型所对应的基本数据文件,重复步骤37至步骤39,使每一个所述相关设备都生成一个测试用例;
[0021] 步骤311、保存生成的所有测试用例,生成运行日志。
[0022] 进一步的改进是,步骤一中的所述轨旁设备的类型包括信号机、道岔或区段。
[0023] 进一步的改进是,所述设备元素包括设备ID、待测试的设备类型、待测试的设备名、控制区域和相关设备。
[0024] 进一步的改进是,各所述测试模板集所对应的功能类型包括进路功能、道岔功能或区段功能。
[0025] 进一步的改进是,所述测试模板元素包含:测试ID,待测试的设备类型,测试输入值,测试步骤,待操作的相关设备,设备操作命令以及期望的返回值。
[0026] 进一步的改进是,步骤38中根据所述待测设备的类型所对应的所述基本数据文件对各所述原始测试用例进行设备名的替换的方法包括如下步骤:
[0027] 若所述基本数据文件中的所述待测设备的类型和所述原始测试用例中的设备类型一致,则所述原始测试用例中所对应的设备为所述待测试设备,则所述原始测试用例中的设备类型的值替换为所述待测设备元素的设备名称。
[0028] 若所述基本数据文件中的所述待测设备的类型和所述原始测试用例中的设备类型不一致,则所述原始测试用例中所对应的设备为所述待测试设备的相关设备,则所述原始测试用例中的设备类型的值替换为所述基本数据文件中的相关设备元素的设备名称。
[0029] 进一步的改进是,步骤39中根据所述待测设备的类型所对应的所述基本数据文件对各所述原始测试用例进行期望状态值的替换的方法包括如下步骤:
[0030] 若所述基本数据文件中的所述待测设备的类型和所述原始测试用例中的设备类型一致,则所述原始测试用例中所对应的设备为所述待测试设备,则所述原始测试用例中的期望状态值替换为所述待测设备元素的期望状态值。
[0031] 若所述基本数据文件中的所述待测设备的类型和所述原始测试用例中的设备类型不一致,则所述原始测试用例中所对应的设备为所述待测试设备的相关设备,则所述原始测试用例中的期望状态值替换为所述基本数据文件中的相关设备元素的期望状态值。
[0032] 本发明能实现测试用例的自动生成,能提高测试案例的生成效率,从而能提高整个联锁系统的测试效率;还能减少手工的工作量,降低错误率,从而能提高联锁系统的的准确率;能确保针对每种测试场景,测试案例的覆盖率为100%。

附图说明

[0033] 下面结合附图和具体实施方式对本发明作进一步详细的说明:
[0034] 图1是现有联锁系统测试平台的示意图;
[0035] 图2是本发明实施例方法的流程图。

具体实施方式

[0036] 如图2所示,是本发明实施例方法的流程图。本发明实施例计算机联锁系统自动生成测试用例的方法包括如下步骤:
[0037] 步骤一、形成站场基本数据,站场基本数据由多个基本数据文件组成,每一个基本数据文件对应于一类轨旁设备的所有联锁逻辑相关基本数据,每一个基本数据文件由多个采用XML文件描述的设备元素组成,每一设备元素对应于一个轨旁设备的所有联锁逻辑相关基本数据。
[0038] 较佳为,所述轨旁设备的类型包括信号机、道岔或区段。所述设备元素包括设备ID、待测试的设备类型、待测试的设备名、控制区域和相关设备。
[0039] 如下所述的设备元素描述了名为SW0201的道岔的所有联锁逻辑相关基本数据,该道岔名为SW0201,即要测试的设备主体,控制区域为1,设备ID号为5,设备类型为单动道岔,定位相关进路为X0203-X0214,X0202-X0207和X0207-X0302,反位相关进路为X0203-X0210,X0202-X0209和X0209-X0302,区段名为GC0201。算法将会利用该XML元素生成针对单动道岔SW0201的测试用例集。
[0040] 一个设备元素元素描述了一个道岔的所有相关基本数据,多个设备元素构成了道岔相关的基本数据文件,道岔,信号机,区段等文件共同构成了站场基本数据。
[0041]
[0042] 步骤二、形成测试模板文件,所述测试模板文件由多个测试模板集组成,每一个测试模板集对应于一类功能相关测试集;各类功能的所述测试模板集由多个测试模板子集组成,各所述测试模板子集对应于一类功能中各子功能的相关测试集;各所述测试模板子集由多个采用XML文件描述的测试模板元素组成,每一个测试模板元素描述了一类联锁逻辑的测试场景。
[0043] 较佳为,各所述测试模板集所对应的功能类型包括进路功能、道岔功能或区段功能。所述测试模板元素包含:测试ID,待测试的设备类型,测试输入值,测试步骤,待操作的相关设备,设备操作命令以及期望的返回值。
[0044] 站场基本数据提供了测试案例即测试用例的业务逻辑基本数据,而测试模板则是提供生成测试案例的模板文件,描述了一类联锁逻辑的测试场景,测试模板元素也是按照固定格式写成的XML文件。
[0045] 如下所述的测试模板元素描述了进路功能中进路建立后移动道岔子功能的单动道岔定位子功能的测试模板,其包含了测试ID即Case ID,待测试的设备类型,测试输入值,测试步骤,待操作的相关轨旁设备,轨旁设备操作命令以及期望的返回值等。
[0046] 该测试模板(Case Template)元素描述的测试场景为:“建立进路时,如果道岔位置不是进路要求位置,道岔会被移动,原来是定位,建立进路后会被转动到反位(该进路为该道岔在反位的进路)”,多个测试模板元素构成的测试模板文件描述了进路建立后移动道岔的相关测试集,多个测试模板文件描述了进路功能相关测试集,进路功能,道岔功能,区段功能等模板文件共同构成了测试模板文件。
[0047]
[0048] 步骤三、根据所述站场基本数据和所述测试模板文件自动生成测试用例,包括如下分步骤:
[0049] 步骤31、加载所述测试模板文件,所述测试模板文件提供了联锁逻辑所有的测试场景。
[0050] 步骤32、依次循环所述测试模板文件并依次遍历所述测试模板文件中的每一个测试模板元素所对应的测试场景。
[0051] 步骤33、检测所述测试模板元素的语法格式,取值范围,逻辑关系,确保生成的测试用例能被正确识别。
[0052] 步骤34、对每一个所述测试模板元素都生成一个单独的测试用例集文件,该测试用例集文件中包含其对应的所述测试模板元素的测试场景下针对同类设备的所有的测试用例;通过每一个所述测试模板元素生成所对应的测试用例集文件的步骤包括如下的步骤35至步骤310。
[0053] 步骤35、所述测试模板元素的属性中的设备类型(Device Type)值指明了待测设备的类型,所述待测设备的类型为适合所述测试模板元素的测试场景的设备类型,通过所述测试模板元素的属性中的设备类型值获取所述站场基本数据中的所述待测设备的类型所对应的所述基本数据文件。
[0054] 步骤36、依次循环所述待测设备的类型所对应的所述基本数据文件从而获取待测设备元素,使得该基本数据文件中的每一个待测设备元素都至少包括一个测试用例覆盖。
[0055] 步骤37、为每个所述待测设备元素所对应的待测设备生成一个原始测试用例。原始测试用例和所对应的所述测试模板元素类似的,二者的不同之处为,在所述测试模板元素的基础上,原始测试用例增加了不同的编号即Case ID来区分;本发明实施例对原始测试用例CaseID的值进行了细化,从而方便以后测试结果统计。
[0056] 步骤38、根据所述待测设备的类型所对应的所述基本数据文件对各所述原始测试用例进行设备名的替换。
[0057] 根据所述待测设备的类型所对应的所述基本数据文件对各所述原始测试用例进行设备名的替换的方法包括如下步骤:
[0058] 若所述基本数据文件中的所述待测设备的类型和所述原始测试用例中的设备类型一致,则所述原始测试用例中所对应的设备为所述待测试设备,则所述原始测试用例中的设备类型的值替换为所述待测设备元素的设备名称(Name)。
[0059] 若所述基本数据文件中的所述待测设备的类型和所述原始测试用例中的设备类型不一致,则所述原始测试用例中所对应的设备为所述待测试设备的相关设备,则所述原始测试用例中的设备类型的值替换为所述基本数据文件中的相关设备元素的设备名称。
[0060] 步骤39、根据所述待测设备的类型所对应的所述基本数据文件对各所述原始测试用例进行期望状态值的替换。
[0061] 根据所述待测设备的类型所对应的所述基本数据文件对各所述原始测试用例进行期望状态值的替换的方法包括如下步骤:
[0062] 若所述基本数据文件中的所述待测设备的类型和所述原始测试用例中的设备类型一致,则所述原始测试用例中所对应的设备为所述待测试设备,则所述原始测试用例中的期望状态值替换为所述待测设备元素的期望状态值(ExpectStatus)。
[0063] 若所述基本数据文件中的所述待测设备的类型和所述原始测试用例中的设备类型不一致,则所述原始测试用例中所对应的设备为所述待测试设备的相关设备,则所述原始测试用例中的期望状态值替换为所述基本数据文件中的相关设备元素的期望状态值。
[0064] 步骤310、依次循环所述待测设备的相关设备的类型所对应的基本数据文件,重复步骤37至步骤39,使每一个所述相关设备都生成一个测试用例。
[0065] 基本数据中的相关设备是与待测设备相关的设备,测试用例中用相关设备的输出值来验证待测设备的操作响应是否正确,待测试设备的同类相关设备大多不止一个,用逗号分隔;但由于组合关系过于复杂,所以在一个测试场景中大多只会出现一类相关设备。
[0066] 若测试模板中的出现了多类相关设备,不需要对算法进行大的修改,在步骤310之后再增加一次循环即可实现。即当增加一种类型的相关设备时,依次循环所增加的相关设备的类型所对应的基本数据文件,对所增加类型中的每一个相关设备都生成一个测试案例。
[0067] 步骤311、保存生成的所有测试案例,生成运行日志。
[0068] 本发明实施例方法为一种通用算法,可以采用任何具体的编程语言来实现,在铁路信号计算机联锁控制系统的测试中用C#语言实现了测试案例的自动生成。
[0069] 以上通过具体实施例对本发明进行了详细的说明,但这些并非构成对本发明的限制。在不脱离本发明原理的情况下,本领域的技术人员还可做出许多变形和改进,这些也应视为本发明的保护范围。