一种基于ATML的有效载荷自动测试方法与流程

文档序号:11729271阅读:259来源:国知局
一种基于ATML的有效载荷自动测试方法与流程

本发明涉及一种基于atml的技术方法,具体涉及一种基于atml的有效载荷自动测试方法。



背景技术:

在空间有效载荷系统的研制过程中,系统集成测试是必不可少的重要环节,一般地,有效载荷系统由专业电子仪器设备、数据管理及传输设备等组成。随着空间应用任务领域的扩展,系统规模、功能和工作模式越来越复杂,各设备工作既有独立性,又有相互的关联性,设备内部各模块的工作既有顺序性,又有并发性,系统集成测试不仅要覆盖单设备的工作模式,还要覆盖系统级工作模式,一般为系统中各设备不同工作模式的组合,人工编写测试用例的模式逐渐不能满足测试要求,因此对测试自动化的研究成为一个关键性的课题。

现有的自动测试语言,如goal(groundoperationsaerospacelanguage)、etol(europeantestandoperationslanguage)、atlas2000(abbreviatedtestlanguagesforallsystem2000)等,仅适用于对测试过程或测试信号进行描述,难以对被测系统的结构和行为进行描述,无法自动生成复杂功能系统的测试用例,因此寻找一种适用于描述上述复杂系统结构和行为的模型并结合人工智能技术进行推理是解决问题的关键。

目前,有多种反映系统逻辑行为和运行机制的定性或定量的模型,如马尔可夫过程图、uml语言、petri网等,其中petri网是可用于对系统逻辑行为描述和逻辑性质定性研究的通用网论,适合于在各种抽象级别上描述异步并发系统,但由于其结构不够清晰,描述复杂系统时易于导致模型组合爆炸,uml是适用于面向对象的建模语言,面向对象技术可以自然、清晰地描述系统结构,但是缺乏对系统形式化的描述,因此,将petri网和面向对象技术的优点结合起来是解决复杂大规模系统建模问题的有效途径。

另外,国际上对测试信息标准化的研究也在不断发展,为远程测试的信息交换和共享奠定了基础,相关组织制订了大量的标准,如美国宇航局的goal、欧洲宇航局的etol、arinc发表的atlas标准、ieee制订的atlas2k语言,但多数标准难以与现有的信息技术相融合,开放性不高,最新的ieeestd1671标准:自动测试标记语言atml(automatictestmarkuplanguage),是适用于自动测试设备和测试信息共享的数据交换新标准,其基于扩展标记语言(xml),具有开放性、可交换性等特点,因此,逐渐成为测试信息交换的一个重要发展方向。

kjz阶段,有效载荷的数量越来越多、复杂程度也越来越高,面对空间有效载荷集成测试需求的多样化和测试任务的复杂化,通过实现测试用例的标准化、提高测试数据的远程分发能力,可以极大地方便测试用例等信息的交换、共享和复用,提高远程终端对各类测试数据的获取能力,满足空间有效载荷远程测试的各类需求变得越来越来重要。



技术实现要素:

本发明所要解决的技术问题是:在kjz阶段,有效载荷的数量越来越多、复杂程度也越来越高,面对空间有效载荷集成测试需求的多样化和测试任务的复杂化,难以自动生成复杂测试系统的测试用例,难以实现测试用例的标准化、提高测试数据的远程分发能力,以及测试用例等信息的交换、共享和复用。

本发明的目的在于提供一种基于atml的有效载荷自动测试方法,该方法包括如下步骤:

s1,基于atml中的ieeestd1671.1的测试标准对有效载荷测试用例进行标准化的定义和描述;

s2,采用可扩展标记语言对有效载荷产品接口数据单中的接口信息进行规范化的定义和描述;

s3,在s1定义的测试用例中引用s2定义的接口信息,生成完整的测试序列文件;

s4,设计生成基于s3中生成的测试序列文件的自动测试流程;

s5,根据s1中描述的有效载荷测试用例,在测试用例中设置测试目标的指令判读参数与测试目标的预期结果,在s4中定义自动测试流程中设计参数判读机制,实现参数的自动判读,以校验测试过程中给测试目标发送的指令是否成功。

本发明的有益效果:基于自动测试标记语言atml实现了对有效载荷测试用例的形式化描述,实现了对各级测试用例共享复用、测试用例辅助设计、测试数据自动生成、测试序列自动执行、测试数据自动判读等功能。通过对有效载荷测试基础信息的定义、数据注入信息的标准化定义、遥测参数信息的标准化定义、测试序列的规范化描述,为测试的自动执行提供了数据基础,并且经过实践验证,可以很好地实现空间有效载荷测试用例的描述,大大提高了测试效率,节省了时间和人力。

进一步,所述的s1中描述包括:测试序列的构成、指令发送、数据读取和数据对比、测试序列执行流程,执行判据参数定义,执判读行结果。

进一步,所述s1中定义包括:在atml结构中,选择detailedtestinformation下的节点表示测试用例,detailedtestinformation中的entrypoints、actions、testgroups三个节点表示测试用例执行操作信息。

进一步,所述s1中定义包括:在atml结构中,entrypoints定义为测试序列的入口时间,及定义第一个testgroup的地址或action的地址;actions用于定义测试用例的所有具体操作信息;testgroups用于定义测试用例的序列,testgroups引用actions中的具体操作信息或引用testgroup来生成测试用例序列,其中testgroup为testgroups中的一个节点,action为actions中的一个节点。

进一步,所述指令发送、数据读取和数据对比,在atml结构中选择operationmessageout、operationread和operationcompare分别表示指令发送,数据读取和数据对比的操作。

进一步,所述s1中定义和描述包括:在atml结构中,选择testgroupsequence来描述测试用例的序列结构,选择steps中的节点定义测试用例的执行流程,同时使用steps节点来引用action节点和testgroup节点。

进一步,所述s2中的有效载荷接口信息包括:遥测指令、数据注入信息、遥测参数、工程参数及通信协议信息。

进一步,所述s2中还包括:基于定义的规范化的有效载荷产品接口数据单中的接口信息,开展测试时需从接口数据单中按照标准模板导出测试型号的格式化接口数据的标准的可扩展标记语言文件。

进一步,所述s3中步骤为:

s31,当开展测试任务时,测试系统读取格式化的接口信息的可扩展标记语言文件,用户根据测试任务的需求,利用可扩展标记语言文件提供的测试接口信息编辑设计测试用例;

s32,用户在编辑测试用例时,在可扩展标记语言文件提供的测试接口信息上选择遥测指令信息、数据注入信息、遥测参数、工程参数,编辑测试序列,完成测试序列的编辑后,生成符合s1中根据ieeestd1671规范定义的标准化测试序列的文件。

有益效果:通过对有效载荷接口信息的规范化描述和数字化设计,为有效载荷测试用例的设计提供了基础的数据支持,测试数据的自动生成,并可实现基础信息在有效载荷全任务周期内的重复利用。

进一步,所述s4中步骤为:

s41,找到主测试组的入口点testgroupentrypointid,根据该id找到序列中定义的主测试组testgroupid,根据testgroupid找到主测试组testgroup;

s42,查找s41中主测试组的入口点entrypoint的stepid;

s43,根据s42中的stepid找到对应的step,从该step的description中获取操作时间和执行时间;

s44,判断查找的s43中的引用的是action或是主测试组testgroup,若s43中的step引用的是主测试组testgroup中的节点,则重复s41,查找其引用的主测试组testgroup中的入口点;若该step引用的是action中的节点,则根据引用的actionid找到对应的action;

s45,判读s44中的action定义的执行指令、系统命令或者虚拟指令,然后根据其定义的指令进行操作;

s46,根据s45中的操作,当执行操作时,从operationmessageout中的value属性获取指令数据,向测试目标发送指令,并接收测试目标返回的数据包;

s47,从operationread中获取作为执行判据的判读参数信息,然后通过在接口数据单中找到需要判读参数信息在s46中获取到数据包中的对应位置,并获取其值;

s48,将s47中获得的值与operationcompare中定义的期望值及其类型进行比对,判断该指令是否执行成功;

s49,查找s43中的step对应的下一个stepid,重复s43。

进一步,所述s41中还包括:同时开始“操作时间轴”计时,并通过下行数据包中的时间码参数实时更新“执行时间轴”。

进一步,所述的s45测试执行序列流程还包括:

若s44中的action定义为执行指令或系统命令,则使用“操作时间轴”的当前时间与其定义的操作时间进行对比,若“操作时间轴”的当前时间达到了操作时间,则执行该action定义的操作;

若s44中的action定义为虚拟指令,则使用“执行时间轴”的当前时间与其定义的执行时间进行对比,若“执行时间轴”的当前时间达到了执行时间,则执行该action定义的操作。

进一步,所述的s5中步骤为:

s51,根据s1中描述的有效载荷测试用例,在测试用例中设置测试目标的指令判读参数与测试目标的预期结果,设计参数自动判读流程;

s52,利用s51中描述的判读参数,根据s45中的操作,发送指令时,从operationmessageout中的value属性获取指令数据,测试系统向测试目标发送指令,并接收测试目标返回的数据包;

s53,从operationread中获取作为执行判据的判读参数信息,并在接口数据单中找到对应参数及其取值范围;

s54,将s52中获得的值与operationcompare中定义的期望值及其类型进行比对,判断该指令是否执行成功。

上述进一步的有益效果:基于自动测试标记语言atml实现了对有效载荷测试用例的形式化描述,实现了对各级测试用例共享复用、测试数据自动生成、测试序列自动执行、测试数据自动判读等功能。

附图说明

图1为本发明的一种基于atml的有效载荷自动测试方法的流程图;

图2为本发明设计的自动测试系统的流程图;

图3为本发明设计到自动判读的流程图;

图4为测试用例自动解析执行原理图。

具体实施方式

如图1中所示,一种基于atml的有效载荷自动测试方法,该方法包括如下的步骤:

s1,基于atml中的ieeestd1671.1的测试标准对有效载荷测试用例进行标准化的定义和描述;

s2,采用可扩展标记语言(xml)对有效载荷产品接口数据单(ids)中的接口信息进行了规范化的定义和描述;

s3,在s1定义的测试用例中引用s2定义的接口信息,生成完整的测试序列文件;

s4,设计生成基于s3中生成的测试序列文件的自动测试流程;

s5,根据s1中描述的有效载荷测试用例,在测试用例中设置测试目标的指令判读参数与测试目标的预期结果,在s4中定义自动测试流程中设计参数判读机制,实现参数的自动判读,以校验测试过程中给测试目标发送的指令是否成功。

如图2所示,步骤s4中的自动测试流程步骤如下:

s41,找到主测试组的入口点testgroupentrypointid,根据该id找到序列中定义的主测试组testgroupid,根据testgroupid找到主测试组testgroup;

s42,查找s41中主测试组的入口点entrypoint的stepid;

s43,根据s42中的stepid找到对应的step,从该step的description中获取操作时间和执行时间;

s44,判断查找的s43中的引用的是action或是主测试组testgroup,若s43中的step引用的是主测试组testgroup中的节点,则重复s41,查找其引用的主测试组testgroup中的入口点;若该step引用的是action中的节点,则根据引用的actionid找到对应的action;

s45,判读s44中的action定义的执行指令、系统命令或者虚拟指令,然后根据其定义的指令进行操作;

s46,根据s45中的操作,当执行操作时,从operationmessageout中的value属性获取指令数据,向测试目标发送指令,并接收测试目标返回的数据包;

s47,从operationread中获取作为执行判据的判读参数信息,然后通过在接口数据单中找到需要判读参数信息在s46中获取到数据包中的对应位置,并获取其值;

s48,将s47中获得的值与operationcompare中定义的期望值及其类型进行比对,判断该指令是否执行成功;

s49,查找s43中的step对应的下一个stepid,重复s43。

如图3所示的,步骤s5中的自动判断流程步骤如下:

s51,根据s1中描述的有效载荷测试用例,在测试用例中设置测试目标的指令判读参数与测试目标的预期结果,设计参数自动判读流程;

s52,利用s51中描述的判读参数,根据s45中的操作,发送指令时,从operationmessageout中的value属性获取指令数据,测试系统向测试目标发送指令,并接收测试目标返回的数据包;

s53,从operationread中获取作为执行判据的判读参数信息,并在接口数据单中找到对应参数及其取值范围;

s54,将s52中获得的值与operationcompare中定义的期望值及其类型进行比对,判断该指令是否执行成功。

1、atml概述

ieee标准委员会下的测试信息集成(testinformationintergration)分委员会发布了自动测试标记语言的标准集(简称atml,automatedtestmarkuplanguage),该标准使用可扩展标记语言(xml,extensiblemarkuplanguage)驱动测试系统开展节点间测试信息的标准化交换。xml具有强大的描述能力和良好的数据格式,具有内容与形式分离、扩展性强、跨平台性好等优点,并适用于通过网络在不同系统间进行数据的交换。atml对被测产品的数据设计、测试策略及需求、测试程序、测试结果信息管理和测试系统执行等相关信息进行了全面的规范,规范包括公用模块、测试描述、仪器描述、uut描述、测试配置、测试适配器、测试平台、测试结果、故障诊断等多个标准,具体说明如下表1所示

表1atml标准体系

其中“测试描述”标准(ieeestd1671.1)对测试的流程和操作进行了详细的描述,非常适用于对有效载荷测试用例的形式化表示,可实现对测试用例的标准化设计。符合testdescription标准的xml文件以“td:testdescription”为根节点,其下的detailedtestinformation节点描述了详细的测试信息,其中entrypoints、actions、testgroups为常用元素。entrypoints用于定义测试的入口点。actions用于定义具体的测试项,其下包含的提供多种测试操作类型的operations元素,适用于描述有效载荷测试的各类操作信息。testgroups定义测试组,可以引用多个action节点,实现以一定测试步骤完成一组特定的测试任务。另外,action元素也可以对testgroup进行调用,因此可以方便实现多个测试用例的组合和对已有测试用例的复用。testgroup的子元素step中包含对action的引用,action元素也可以实现对testgroup的调用,globalsignals中定义的全局信号供action加载使用。

2、测试用例标准化描述

基于atml的测试用例信息表示

有效载荷测试用例描述参考了ieeestd1671中的ieee1671.1,即测试描述(testdescription)部分。本发明使用ieee1671.1(testdescription)定义了有效载荷测试中关于测试细则的描述,包括测试序列的构成、指令发送、数据注入发送、测试序列执行流程,执行判据参数定义,执判读行结果等内容。

本发明结合型号任务对有效载荷测试用例的属性进行了梳理,整理得到如下表所示的测试用例模板。表格中各列填写内容如下表2所示。

表2有效载荷测试用例模板

根据有效载荷测试用例的特点,选择detailedtestinformation下的部分节点表示测试用例。下面介绍测试执行操作信息定义使用到的atml规范节点。detailedtestinformation由entrypoints、actions、testgroups三个必选节点组成。

entrypoints定义测试序列的入口时间,及定义第一个testgroup或action的id。

actions用于定义测试用例的所有具体操作,test是actiontype基类的派生类,继承了actiontype的所有节点。使用test→behavior→operations节点表示测试用例的具体操作。atml提供多种operationtype,如operationread、operationchange、operationreset等18种,本发明选择使用了operationmessageout、operationread和operationcompare分别表示指令发送,数据读取和数据对比。outcomes是test的必选节点,本发明使用outcomes表示事件执行成功或失败的描述内容。parameters是test的可选节点,使用test→parameters表示指令包含的具体参数。

testgroups用于定义测试用例的序列,引用actions中的具体操作或testgroup生成测试用例序列。atml结构中包含多种testgrouptype,如testgroupsequence、testgroupparallel、testgroupserial等5种,本发明选择testgroupsequence类型用于描述测试用例的序列结构,testgroupsequence类型除集成testgrouptype子节点外,还包括steps和entrypoints节点,steps节点定义了测试用例的执行流程和步骤,支持引用action和testgroup,能满足模块化设计的要求,本发明使用steps节点引用action和其他testgroup,实现对测试用例序列的描述。testgroupsequence→entrypoints用于定义steps中第一个steps的id。

通过选取testdescription规范中的部分节点描述有效载荷测试用例的所有元素信息,实现了将有效载荷测试用例表示为符合atml标准的testdescription实例文档,以通用的标准化数据组织结构为不同测试系统所用。有效载荷测试用例中对atml节点元素的使用如下表3所示。

表3有效载荷测试用例元素说明

1)“序号”列填写测试用例的序号,在atml结构中使用“step→id”属性表示。

2)“操作时间”表示该条测试操作(指令)发出的时间,在atml结构中使用“step→description”属性表示,数据格式为“操作时间/执行时间”,使用“/”为分隔符区分。

3)“执行时间”表示注入事件执行时间,在atml结构中与“操作时间”共同使用“step→description”表示,数据格式为“操作时间/执行时间”,使用“/”为分隔符区分。

4)测试组,用于表示testgroup的名称,在atml结构中使用“testgroup-->name”表示。

5)“执行类型”表示该条操作的类型,通过对型号任务测试用例指令类型的分析,将其分为系统命令、执行指令和虚拟指令,在atml结构中使用“action→attribute→customtype”属性表示,指令类型具体说明如下。

“系统命令”表示测试系统自身的命令信息,包括系统命令发送操作、反馈信息读取操作以及反馈信息对比操作等。

“执行指令”表示发送到前端设备的命令,包括指令、数据注入、总线数据发送等。

“虚拟指令”是指数据注入中所含的执行事件,并非要发送出去的真实指令。当数据注入码值发送到被测设备后,测试系统在本地进行同步计时,当被测设备相应的注入事件执行时,测试系统本地进行相应的反馈信息(遥测参数)读取操作,并判读对比反馈的信息。

6)“操作名称”分为“代号”和“名称”,分别填写系统命令、指令、数据注入和注入事件的代号和名称,在atml结构中使用“operationtype→name”和“operationtype→description”属性表示,如果发送的是文件,则使用“operationmessageout→document→text”表示。

7)“判读操作(参数名称)”表示需进行数据判读的遥测参数,根据不同的读数据和数据对比场景使用“operationread→name”、“operationread→description”和“operationcompare→name”“operationcompare→description”表示。

8)“预期结果”表示各测试操作对应遥测参数的预期结果,用于对比校验指令执行的结果,在atml结构中使用“operationcompare→comparelimits”表示,支持参数格式为“值”或“范围”。

9)“实测结果”表示测试用例的实测结果,在atml结构中使用“action→outcomes→value”属性表示。

依据测试用例需要包含的信息,参考ieee1671.1(testdescription)的定义,选取其中的主线元素用以定义和描述控制序列的结构。按此结构生成的测试用例兼容ieee1671.1符合atml语法规范。

3、测试用例辅助设计

测试用例的辅助设计,使用xml结构的文件定义测试序列中需要用到的对象,如遥测指令、数据注入、遥测参数、工程参数及通信协议。在航天领域是通过ids(接口数据单,其实就是一堆表格描述的),这一部分称之辅助设计,就是把表单里的数据,定义成xml文档的格式,这样就便于软件自动读取数据了。

有效载荷测试用例的设计需要基于有效载荷产品的接口信息,如指令、数据注入、遥测参数等信息。有效载荷产品的接口信息来自产品的接口数据单(ids),因此,课题结合有效载荷测试用例设计的需求,采用可扩展标记语言(xml)对有效载荷产品ids中的部分接口信息进行了规范化的定义和描述,包括遥测指令、数据注入、遥测参数、工程参数及通信协议等信息。通过对有效载荷接口信息的规范化描述和数字化设计,为有效载荷测试用例的设计提供了基础的数据支持,实现了对有效载荷测试用例的辅助设计、测试数据的自动生成,并可实现基础信息在有效载荷全任务周期内的重复利用。

另外,在有效载荷接口信息的基础上,针对不同型号的测试任务定义了测试基础信息的通用模型,旨在设计通用的数据模型,提高有效载荷测试信息的可用性和利用效率,测试基础信息包括有效载荷接口信息、测试执行序列、测试系统信息,有效载荷接口信息主要来源于有效载荷的ids数据库,用户可从ids数据库中按照标准模板导出指令、数据注入、遥测参数等信息的标准xml文件,当开展测试任务时,测试系统读取xml文件,用户根据测试任务的需求,利用xml文件提供的基础测试信息编辑设计测试用例。

用户在编辑测试用例(执行序列集)时,可直接以拖拽的方式从测试基础信息结构树上选择指令、数据注入等的数据源,用于执行序列的编辑。完成执行序列的编辑后,符合ieeestd1671规范的atml实例文件可生成数据注入文件,并支持数据注入的反演,测试系统也支持atml测试用例文件的导出与导入功能,实现测试执行序列的重复利用。

atml解析执行技术

atml是基于可扩展标记语言xml的信息建模标准,其数据结构为格式规范、层次化的树状结构。xml的文档对象模型(dom,documentobjectmodel)是w3c组织定义的一个独立于平台和语言的接口。dom是以层次结构组织的节点或信息片断的集合,标准化了处理xml的api。dom的核心概念是节点(node),dom将文档中的各要素(元素、属性、注释、文本及处理指令等)映射为一个对象,这个对象称为节点。在内存中,这些节点按层次关系形成一个文档树模型。整棵树是一个节点,树中的每一个节点也是一棵树(子数)。dom就是这棵树的对象描述,并通过标准接口访问树中的节点,以实现对xml文档内容的存取。这种层次结构允许用户在树中方便地导航、寻找指定的信息。因此,基于dom来实现atml的解析处理器,可提高对atml规范的测试序列的处理能力。如图4所示,首先由dom解析器实现对atml文档结构的解析,分析测试用例信息,完成对关键元素的提取。然后转换为测试用例自动执行程序可理解的测试信息,由测试用例自动执行程序根据元素信息完成对测试操作的时序分析,并根据测试操作类型按时序自动输出指令、数据注入、系统信息等各种测试操作信息。

测试数据自动判读

本发明使用action元素及不同类型的operations描述测试操作信息,包括指令发送、数据注入、参数判断、测试数据读取等操作。action是测试描述规范中的最小测试单位,用于表示测试事件

使用atml标准测试描述中action元素下的operationcompare表示测试用例中的参数判读,其中“attributes→name”表示判读的参数代号,“description”表示判读参数的名称,使用“comparelimits”表示参数判读的预期结果,使用“test→outcomes→outcome→value”定义实测结果。

对于非虚拟指令(如系统命令、执行指令等),根据操作时间,当达到操作时间时读取当前收到的包,判断其是否符合判读数据所定义的条件、范围等要求;

对于虚拟指令,在发出数据注入指令时启动计时器线程,每100ms查询一次本地存储的执行时间码与下行数据包中的前端时间码是否一致,如果两个时间一致,则进行相应判读,判读所需信息与atml结构属性对应的关系。

在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。

尽管上面已经示出和描述了本发明的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本发明的限制,本领域的普通技术人员在本发明的范围内可以对上述实施例进行变化、修改、替换和变型。

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