一种基于Probe的QTE联锁应用软件测试方法及装置与流程

文档序号:17762266发布日期:2019-05-24 21:48阅读:188来源:国知局
一种基于Probe的QTE联锁应用软件测试方法及装置与流程

本发明实施例涉及软件模型测试技术领域,尤其是涉及一种基于probe的qte联锁应用软件测试方法及装置。



背景技术:

scade(safety-criticalapplicationdevelopmentenvironment)高安全性的应用程序开发环境,提出了一种基于模型的图形化开发方式,覆盖了从需求分析到代码实现的整个软件开发流程。scade开发环境实现了直观的图形化需求建模功能,基于模型的标准c代码和开发文档的自动生成功能,以及基于模型的仿真验证和软件测试功能。其严谨的建模理论和经过高安全性验证的代码生成器kcg,保证了软件需求和代码产品的高度同步。

qte(qualifiedtestingenvironment)是scadelifecycle中的重要组件,用于对scade模型进行测试和验证。qte测试基于模型单元编写测试脚本,通过设置“输入-检查输出”的方式对模型功能进行测试,因此具备黑盒测试的特点。同时,执行测试脚本又可以生成模型覆盖率和代码覆盖率统计文件,所以又具备白盒测试的产出。qte测试方法是基于模型单元的测试,通过设置输入-检查输出的方式来对某个模型进行测试,因此测试脚本针对的是该模型的输入和输出,不关心中间变量。因此当系统内部各个模型耦合度较低时,qte测试方法能够很好地针对各个模型进行独立测试。

然而,当系统中各个模型耦合度很高时,测试用例通常会涉及多个模型的部分功能,qte测试方法只能以这些模型的顶层模型作为测试对象进行测试,涉及的输入量会急剧增多,使得编写测试脚本的工作量大量增加,并且增加了出错率和调试难度,脚本的可读性和可维护性也都大大降低。另一方面,qte测试也无法对耦合度较高的模型中的某些功能逻辑进行测试。

在实际应用中,发明人发现现有的qte测试方法无法对耦合度较高的模型中某一逻辑模块进行测试,一方面无法实现对模型各逻辑模块进行完整的测试,另一方面由于对模型整体进行测试涉及到较多的输入量,编写测试脚本的工作量较大。



技术实现要素:

本发明要解决现有的qte测试方法无法对耦合度较高的模型中某一逻辑模块进行测试,一方面无法实现对模型各逻辑模块进行完整的测试,另一方面由于对模型整体进行测试涉及到较多的输入量,编写测试脚本的工作量较大的问题。

针对以上技术问题,本发明的实施例提供了一种基于probe的qte联锁应用软件测试方法,包括:

获取在目标应用软件对应的目标模型中加注的各probe对应的相对路径;其中,probe加注在所述目标模型中需进行中间变量测试的各目标逻辑模块上;

在qte环境下,根据各目标逻辑模块之间的输入输出关系和各probe对应的相对路径编写用于对各目标逻辑模块进行测试的测试脚本文件;

执行编写的测试脚本文件,得到对各目标逻辑模块进行测试的测试结果,输出由测试结果生成的测试报告。

本发明的实施例提供了一种基于probe的qte联锁应用软件测试装置,包括:

获取模块,用于获取在目标应用软件对应的目标模型中加注的各probe对应的相对路径;其中,probe加注在所述目标模型中需进行中间变量测试的各目标逻辑模块上;

生成模块,用于在qte环境下,根据各目标逻辑模块之间的输入输出关系和各probe对应的相对路径编写用于对各目标逻辑模块进行测试的测试脚本文件;

测试模块,用于执行编写的测试脚本文件,得到对各目标逻辑模块进行测试的测试结果,输出由测试结果生成的测试报告。

本实施例提供了一种电子设备,包括:

至少一个处理器、至少一个存储器、通信接口和总线;其中,

所述处理器、存储器、通信接口通过所述总线完成相互间的通信;

所述通信接口用于该电子设备和其它电子设备的通信设备之间的信息传输;

所述存储器存储有可被所述处理器执行的程序指令,所述处理器调用所述程序指令能够执行以上任一项所述的方法。

本实施例提供了一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令使所述计算机执行以上所述的方法。

本发明的实施例提供了一种基于probe的qte联锁应用软件测试方法及装置,在创建目标模型的过程中,预先在各需要进行中间变量测试的目标逻辑模块上加注probe。由模型生成代码后,通过仿真运行查找到各probe的相对路径。在qte环境下编写用于对目标逻辑模块进行测试的测试脚本文件时,通过各probe的相对路径可以获取目标逻辑模块输出或输入的中间变量,通过这些中间变量即可实现对模型中的任一目标逻辑模块进行测试。相比于仅能对整个模型进行测试的方法,对模型内的逻辑模块的测试提高了对模型各逻辑分支测试的覆盖率。另一方面,由于减少了输入量,该方法大大降低了编写测试脚本的工作量。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是本发明一个实施例提供的scade开发环境中的开发工具示意图;

图2是本发明另一个实施例提供的基于probe的qte联锁应用软件测试方法的流程示意图;

图3是本发明一个实施例提供的获取probe的相对路径示意图;

图4是本发明一个实施例提供的将probe相对路径引入测试脚本中的示意图;

图5是本发明一个实施例提供的对测试脚本文件进行管理的示意图;

图6是本发明一个实施例提供的“办理普通进路”的模型的数据流示意图;

图7是本发明一个实施例提供的基于probe的qte联锁应用软件测试装置的结构框图;

图8是本发明一个实施例提供的电子设备的结构框图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

以下对本发明提供的方法的应用背景进行简单介绍,图1是本实施例提供的scade开发环境中的开发工具示意图,参见图1,scade开发环境中主要包含的开发工具有scadearchitecture、scadelifecycle、scadesuite和scadedisplay。scadearchitecture用于进行需求分析,scadedisplay用于提供人机交互界面,scadesuite提供了一种创建模型的环境,通过逻辑符号建立逻辑关系,在scadesuite中生成代码。scadelifecycle提供了各种测试环境,例如,可以在qte环境下编写对模型进行测试的测试脚本,运行测试脚本实现对模型的测试。qte适用于对低耦合,高内聚的模型进行测试。

由于qte是通过对模型设置输入-检查输出的方式记性测试的,所以qte仅能用于对模型整体或者低耦合度的模型的模块进行测试。对高耦合的模型,由于无法对某一逻辑模块进行输入参数的设置和输出参数的获取,因而无法实现对模型中某一逻辑模块的测试。

然而,在scadesuite中的simulator仿真环境下,存在一种probe功能,probe是用来监视仿真过程中一些变量的变化的,在仿真运行完成后probe的内存空间也不会被释放。本申请提供的方法正是利用probe的这一特性,将probe加注到模型中各需要被测试的逻辑模块上,通过probe设置逻辑模块的输入,获取逻辑模块的输出,实现对逻辑模块的测试。

图2为本实施例提供的基于probe的qte联锁应用软件测试方法的流程示意图,参见图2,该方法包括:

201:获取在目标应用软件对应的目标模型中加注的各probe对应的相对路径;其中,probe加注在所述目标模型中需进行中间变量测试的各目标逻辑模块上;

202:在qte环境下,根据各目标逻辑模块之间的输入输出关系和各probe对应的相对路径编写用于对各目标逻辑模块进行测试的测试脚本文件;

203:执行编写的测试脚本文件,得到对各目标逻辑模块进行测试的测试结果,输出由测试结果生成的测试报告。

本实施例提供的方法由用于对模型进行测试的测试设备执行。在scadesuite环境下创建模型时,在需要进行测试的逻辑模块上加注probe。当由模型生成代码时,加注的probe也生成相应的代码。通过在scadesuite环境下的仿真运行查找到各probe的相对路径。只有通过相对路径,才能控制probe获取到各逻辑模块中间变量。图3为本实施例提供的获取probe的相对路径示意图,在仿真运行的过程中,通过probe对应的propertiesofpro_switchbelongoverlapld中的path即可读取到probe的相对路径。

由于需要通过probe的相对路径获取目标逻辑模块的中间变量,因此在编写对目标逻辑模块进行测试的测试脚本文件时需将probe的相对路径编写到测试脚本文件中。例如,图4为将probe相对路径引入测试脚本中的示意图,在图4所示的测试脚本文件中实线框内的内容就是probe相对路径。

由于联锁应用软件逻辑复杂,依据逻辑时序,先执行的测试脚本文件的probe输出可能作为后续测试脚本文件的输入,因此需要根据各目标逻辑模块之间的输入输出关系编写各probe的测试脚本文件,并按照测试脚本文件的执行顺序,将测试脚本文件在脚本控制程序procedure中顺序排列。图5为本实施例提供的对测试脚本文件进行管理的示意图,参见图5,各测试脚本文件(.sss文件)在procedure中顺序排列,通过统一的测试用例编号进行管理。进行测试时,只需要启动该procedure即可实现对各目标逻辑模块的测试。

本实施例提供的方法相当于对复杂的模型解耦合,使得qte的测试不局限于单个模型功能。同时当目标模型规模过大时,又可以规避不关心的输入量,只关心与当前系统测试用例相契合的场景而忽略其他场景,可以减少脚本编写的工作量和维护难度,降低测试的时间开销,提高测试效率。

本实施例提供了一种基于probe的qte联锁应用软件测试方法,在创建目标模型的过程中,预先在各需要进行中间变量测试的目标逻辑模块上加注probe。由模型生成代码后,通过仿真运行查找到各probe的相对路径。在qte环境下编写用于对目标逻辑模块进行测试的测试脚本文件时,通过各probe的相对路径可以获取目标逻辑模块输出或输入的中间变量,通过这些中间变量即可实现对模型中的任一目标逻辑模块进行测试。相比于仅能对整个模型进行测试的方法,对模型内的逻辑模块的测试提高了对模型各逻辑分支测试的覆盖率。另一方面,由于减少了输入量,该方法大大降低了编写测试脚本的工作量。

具体来说,实现对某一模型内的逻辑模块进行测试的过程包括以下几个步骤:

(1)scadesuite环境下,在系统模型中需要检查中间变量的地方逐个加注probe,模型生成代码时,同时保证probe正确生成;

(2)scadesuite环境下进入仿真工具simulator,编译通过后运行仿真,逐层追踪逻辑分支,找到之前加注的各个probe,在其属性里获取其编译时的相对路径;

(3)scadelifecycle的qte测试环境下,将获取的相对路径写入脚本;

(4)在测试脚本中添加各个场景下的模型输入,并添加对probe期望输出值的检验;

(5)将编写的多个测试脚本文件依据逻辑时序在脚本控制程序procedure中顺序排列,执行procedure实现对加注了probe的逻辑模块的测试。

进一步地,在上述实施例的基础上,所述获取在目标应用软件对应的目标模型中加注的各probe对应的相对路径,包括:

在scadesuite环境下,在每一目标逻辑模块的输入和输出位置均加注probe,将加注probe后得到的模型作为所述目标模型;

在由所述目标模型生成代码后,在scadesuite环境下进行仿真运行,在仿真运行的过程中,查找各probe对应的相对路径。

在建立目标模型的过程中,在目标模型中需要进行中间变量测试的目标逻辑模块的输入和输出分别加注probe,生成代码后,进行仿真运行,在仿真运行的过程中获取各probe对应的相对路径。

本实施例提供了一种基于probe的qte联锁应用软件测试方法,在仿真运行过程中获取各probe对应的相对路径,是后续生成相应的测试脚本文件的基础。

进一步地,在上述实施例的基础上,所述在qte环境下,根据各目标逻辑模块之间的输入输出关系和各probe对应的相对路径编写用于对各目标逻辑模块进行测试的测试脚本文件,包括:

在qte环境下,对于每一probe,根据设定的输入参数和各目标逻辑模块之间的输入输出关系确定与所述probe对应的测试脚本文件中用于进行测试的输入数据;

将所述probe对应的相对路径作为读取对所述probe所在的目标逻辑模块进行测试的输出值的路径,设置对所述probe所在的目标逻辑模块进行测试的期望输出值;

根据所述probe对应的输入数据、相对路径和期望输出值生成与所述probe对应的测试脚本文件,将生成的测试脚本文件按照各目标逻辑模块之间的输入输出关系在脚本控制程序中顺序排列。

用于进行测试的输入数据即输入值。probe对应的测试脚本文件需包含probe的相对路径、对测试的逻辑模块设置的输入数据或者期望输出值。

以系统测试用例“办理普通进路”为例,图6为本实施提供的“办理普通进路”的模型的数据流示意图,参见图6,“办理普通进路”这一功能涉及的模型包括“输入处理模块”、“联锁逻辑处理模块”。由于“办理普通进路”关心的是进路能否成功建立,相关的数据为最终的进路状态、区段状态和信号机状态是否正确,与其他数据无关,因此不需要设置整个“顶层模块”的输入和检查所有输出。根据图6所示的模型可知,仅需要设置“输入处理模块:进路数据处理模块:办理进路模块”这一子模块的三个输入即可。

本实施例提供了一种基于probe的qte联锁应用软件测试方法,当需要对某一功能测试时,可能仅需要对某些逻辑模块进行测试即可,由于通过本实施例提供的方法不再需要对整体进行测试,大大减少了输入量,提高了测试效率。

进一步地,在上述各实施例的基础上,所述执行编写的测试脚本文件,得到对各目标逻辑模块进行测试的测试结果,输出由测试结果生成的测试报告,包括:

通过所述脚本控制程序执行与每一probe对应的测试脚本文件,得到与每一probe对应的输出值,根据每一probe对应的输出值和设定的期望输出值得到对probe所在的目标逻辑模块进行测试的测试结果,生成包括各目标逻辑模块的测试结果的测试报告,输出所述测试报告。

若probe对应的输出值符合设定的期望输出值,则测试结果为通过,否则,测试结果为不通过。根据各probe对应的测试结果生成列表,作为测试报告,通过显示装置输出该测试报告。

在图6所示的实例中,设置“输入处理模块:进路数据处理模块:办理进路模块”这一子模块的三个输入后,通过probe获取“输入处理模块”的中间变量(中间变量包括进路状态、区段状态、信号机状态),检查这些值是否符合期望,此时经过输入处理后,办理条件检查应为“通过”、进路状态应为“进路初选状态”。

由于“输入处理模块:进路数据处理模块:办理进路模块”这一子模块的输出作为“联锁逻辑处理模块:进路逻辑处理模块”的输入量,因此,在对获取“输入处理模块”的中间变量进行检测后,再在“联锁逻辑处理模块:进路逻辑处理模块”中获取其中间变量。检查进路状态是否为开放、区段状态是否为锁闭、信号机状态是否为点亮,即可验证办理进路的命令输入后,联锁系统是否能够成功建立进路。

此外,在图6所示的用例中,办理联锁相关业务时可能需要经过多个软件周期完成,当设备状态不满足时,系统会进行等待,当设备状态满足时,系统就会在包括进路初选、选排、初锁、开放、异常等状态之间进行转移。编写多个脚本用不同的输入来表征各个进路状态转移的前提条件,并用probe获取其处理后的结果,不检查无关的输出,就能显而易见地模拟各种场景下功能块的输出结果,将以上这些脚本整合在一起,用以模拟办理业务整个过程的状态流转,验证联锁系统功能的正确性。

本实施例提供了一种基于probe的qte联锁应用软件测试方法,通过probe的测试脚本文件中设置的期望输出值实现对测试结果的判断,生成测试报告,实现了对模型中各逻辑模块的测试。

进一步地,在上述各实施例的基础上,还包括:

针对任一probe对应的相对路径,若所述probe的相对路径为通过所述probe的名称查询到的文件夹,则所述probe不能用于对所述probe所在的目标逻辑模块进行测试,标记所述probe。

若通过名称搜索找到probe,则获取的相对路径将不完整,不可使用。

进一步地,在上述各实施例的基础上,所述qte环境下用于对测试脚本文件进行编译的编译器与所述目标模型所在的scadesuite环境中的编译器相同。

本实施例提供了一种基于probe的qte联锁应用软件测试方法,通过在检测到不可用probe的相对路径时进行标记便于及时解决相关问题,同时相同的编译器避免了测试过程出错,保证测试顺利进行。

以图6所示的用例为例,命令输入阶段需要在“输入处理模块”进行处理,包括处理联锁数据、zc数据、vobc数据、屏蔽门数据、leu数据、ats数据等,其中联锁数据又包括如图中进路数据、物理区段数据等11类输入,包括40多个结构体数组,1000个以上的变量,输出为这些数据相应的处理结果。如果以图中的顶层模块作为目标模型进行测试,输入输出量十分庞大。而通过本实施例提供的方法,设置的输入量和检查的中间量与原来相比不足10%,不过由于存在加注probe和追踪probe路径的工作,因此整体工作量能降低70%左右。并且,当模型中存在导入的手写代码时,由于导入的模块在模型中不产生输出,只存在中间变量,使用probe能获取这些中间变量进行测试,提高了用例对模型各个逻辑分支测试的覆盖率,测试的效率和完备性都得到了显著提升。

可见,本实施例提供的方法,利用probe内存空间不会在仿真执行之后就立刻释放的特性,在模型生成的代码编译时和qte脚本使用相同的编译器,通过搜寻的路径信息将probe引入qte测试脚本中,设计相应的测试方法,使测试的灵活性得到明显提升。

另一方面,当模型耦合度较高时,需要以顶层模型作为测试对象,庞大的输入输出量使得编写用例将消耗大量时间,如果测试的对象是底层模型,又容易忽略模块整体的功能性,以及各个底层模型之间的关联性。本实施例提供的方法规避繁琐的输入设置和输出检查,同时具备黑盒测试和白盒测试的特点,是一种高度灵活的灰盒测试方案,提高了qte测试的效率和覆盖率。可见,本实施例提供的方法减少qte脚本的编写难度和复杂度,增加脚本可读性和可维护性,提高测试效率和质量。

图7示出了本发明的实施例提供的一种基于probe的qte联锁应用软件测试装置的结构框图,参见图7,本实施例提供的基于probe的qte联锁应用软件测试装置包括获取模块701、生成模块702和测试模块703,其中,

获取模块701,用于获取在目标应用软件对应的目标模型中加注的各probe对应的相对路径;其中,probe加注在所述目标模型中需进行中间变量测试的各目标逻辑模块上;

生成模块702,用于在qte环境下,根据各目标逻辑模块之间的输入输出关系和各probe对应的相对路径编写用于对各目标逻辑模块进行测试的测试脚本文件;

测试模块703,用于执行编写的测试脚本文件,得到对各目标逻辑模块进行测试的测试结果,输出由测试结果生成的测试报告。

本实施例提供的基于probe的qte联锁应用软件测试装置适用于上述实施例中提供的基于probe的qte联锁应用软件测试方法,在此不再赘述。

本发明的实施例提供了一种基于probe的qte联锁应用软件测试装置,在创建目标模型的过程中,预先在各需要进行中间变量测试的目标逻辑模块上加注probe。由模型生成代码后,通过仿真运行查找到各probe的相对路径。在qte环境下编写用于对目标逻辑模块进行测试的测试脚本文件时,通过各probe的相对路径可以获取目标逻辑模块输出或输入的中间变量,通过这些中间变量即可实现对模型中的任一目标逻辑模块进行测试。相比于仅能对整个模型进行测试的方法,对模型内的逻辑模块的测试提高了对模型各逻辑分支测试的覆盖率。另一方面,由于减少了输入量,该方法大大降低了编写测试脚本的工作量。

图8是示出本实施例提供的电子设备的结构框图。

参照图8,所述电子设备包括:处理器(processor)801、存储器(memory)802、通信接口(communicationsinterface)803和总线804;

其中,

所述处理器801、存储器802、通信接口803通过所述总线804完成相互间的通信;

所述通信接口803用于该电子设备和其它电子设备的通信设备之间的信息传输;

所述处理器801用于调用所述存储器802中的程序指令,以执行上述各方法实施例所提供的方法,例如包括:获取在目标应用软件对应的目标模型中加注的各probe对应的相对路径;其中,probe加注在所述目标模型中需进行中间变量测试的各目标逻辑模块上;在qte环境下,根据各目标逻辑模块之间的输入输出关系和各probe对应的相对路径编写用于对各目标逻辑模块进行测试的测试脚本文件;执行编写的测试脚本文件,得到对各目标逻辑模块进行测试的测试结果,输出由测试结果生成的测试报告。

本实施例提供一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令使所述计算机执行上述各方法实施例所提供的方法,例如包括:获取在目标应用软件对应的目标模型中加注的各probe对应的相对路径;其中,probe加注在所述目标模型中需进行中间变量测试的各目标逻辑模块上;在qte环境下,根据各目标逻辑模块之间的输入输出关系和各probe对应的相对路径编写用于对各目标逻辑模块进行测试的测试脚本文件;执行编写的测试脚本文件,得到对各目标逻辑模块进行测试的测试结果,输出由测试结果生成的测试报告。

本实施例公开一种计算机程序产品,所述计算机程序产品包括存储在非暂态计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,计算机能够执行上述各方法实施例所提供的方法,例如,包括:获取在目标应用软件对应的目标模型中加注的各probe对应的相对路径;其中,probe加注在所述目标模型中需进行中间变量测试的各目标逻辑模块上;在qte环境下,根据各目标逻辑模块之间的输入输出关系和各probe对应的相对路径编写用于对各目标逻辑模块进行测试的测试脚本文件;执行编写的测试脚本文件,得到对各目标逻辑模块进行测试的测试结果,输出由测试结果生成的测试报告。

本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:rom、ram、磁碟或者光盘等各种可以存储程序代码的介质。

以上所描述的电子设备等实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。

最后应说明的是:以上各实施例仅用以说明本发明的实施例的技术方案,而非对其限制;尽管参照前述各实施例对本发明的实施例进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明的实施例各实施例技术方案的范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1