一种A661Widget动态参数校验自动化测试方法与流程
未命名
07-26
阅读:188
评论:0
一种a661widget动态参数校验自动化测试方法技术领域:
:1.采用arinc661标准接口实现的航空电子驾驶舱显示系统a661server软件开发与验证领域。
背景技术:
::2.a661标准定义了widgetlibrary库,widgetlibrary用于实现应用程序定义文件(uadf)设计,以及应用程序(ua)与a661widget之间的动态交互。3.其中a661标准对widget定义了以下内容:4.1)widget参数定义,包含了定义时参数类型(‘d’),运行时动态参数类型(‘r’),部分参数既属于定义时参数也属于运行时参数(‘dr’)。widget参数定义覆盖widget所有属性参数;5.2)widget静态结构定义,定义了widget在uadf文件中创建时结构,用于a661server解析并实现静态显示;6.3)widget运行时消息结构定义(可交互widget特有),定义了widget运行时阶段所有可交互事件结构,用于事件触发时,实现与ua之间的消息通信。7.4)widget动态参数定义,包含参数名、类型、大小、参数id、参数结构,所有运行时参数可以通过setparameter运行时消息实现ua端到a661server端交互。8.目前,a661server动态测试环境与技术,可实现通过仿真测试ua以及仿真测试uadf设计,通过a661server测试引擎实现基于需求开展对a661server(包含a661widget)动态测试。测试过程主要包含基于需求的测试用例设计、测试用例(或测试程序)执行,基于需求的测试用例设计过程主要以文本形式的软件需求作为输入,按照测试用例模板、测试用例设计方法,由测试工程师人工逐个测试用例进行设计,定义测试描述、测试需求、测试步骤等。采用人工设计的方法,测试用例充分性与正确性难以保证,工作量大,由于缺乏自动化方法,导致人力资源需求量大,时间周期长。9.在开展a661server测试过程中,需要对a661widget动态参数有效性校验需求进行测试,覆盖所有widget的所有动态参数.技术实现要素:10.本发明的目的是为了将a661server需求中widget动态参数校验部分需求的测试由人工测试用例设计与测试,通过自动化方法转化为全面自动化测试,实现该部分需求的测试无需测试人员开展测试用例设计与测试执行等测试活动,规避人为设计测试用例过程中引入的错误以及测试用例充分性不足等问题同时保证软件质量,极大限度地缩短了测试周期并节省人力成本。11.技术方案:一种a661widget动态参数校验自动化测试方法,所述方法包括:12.步骤1:定义规范化输入接口文件,输入接口文件用于定义自动化测试用例生成所需的信息,包括测试用例文件模板、widgetid、widgetname、parametertype、参数结构、被测软件需求、异常消息、测试类型和测试用例输入相关信息;13.步骤2:定义规范化输出接口文件格式,输出接口文件用于a661server测试激励,通过运行时消息发送命令,周期同a661server通信,发送a661widget运行时参数动态setparameter消息;依据a661标准,定义规范化的输出接口文件格式;14.步骤3:根据规范化输入接口文件,生成测试用例信息库;解析规范化输入接口文件,通过对输入接口文件的检索和处理,获得所有a661widget动态参数校验测试用例所需信息,生成测试用例信息库;15.步骤4:根据测试用例信息库,自动生成运行时消息文件;所述运行时消息文件实现从具体的动态参数校验测试用例输入值到实际发送的a661运行时消息的转化;依据a661标准中定义的动态参数及消息结构,通过自动化手段将动态参数数据封装成完整setparameter运行时消息,按照规范化输出接口文件格式,生成widget运行时参数运行时消息文件;作为测试用例中动态发送a661消息命令参数;16.步骤5:使用所述测试用例文件模板为输入,从所述测试用例信息库和运行时消息文件列表中提取生成测试用例所需信息,依据自定义的正常/鲁棒的测试用例模板,自动生成规范化的测试用例文件;17.步骤6:测试uadf:依据软件高层需求,创建通用的测试ua对应的uadf文件,a661采用的是client-server模式,在a661server端自动加载解析测试uadf,在client端模拟测试ua实现与a661server之间的交互,通过自动化测试框架加载规范化的动态参数校验测试用例文件运行,并自动生成测试结果,全面实现了a661widget动态参数校验测试自动化。18.具体的,步骤1包括:19.步骤11:定义a661widget数据文件,依据a661标准定义所有widgets的dr参数、r参数的parametername、parametertype、数据类型;20.步骤12:定义a661标准常量文件,依据a661标准,定义a661标准常量文件的通用结构,包括parametertype、布尔类型常量、整型常量、widget扩展结构、运行时命令等的常量定义;21.步骤13:定义widgetid配置文件,定义所有a661widget数据文件和widgetid的对应关系;22.步骤14:定义需求追溯文件,以a661widget软件需求为输入,根据不同的widgetname,识别出widget动态参数校验软件需求,建立widgetname和动态参数校验软件高层需求之间的追溯关系,并以规范化的xml文件格式定义需求追溯文件;23.步骤15:定义测试用例设计文件,依据a661标准定义的参数结构parameterstructure对所有widgets的动态参数进行分类;对于每种参数结构对应的动态参数,依据do-178b的要求,进行正常和鲁棒测试用例设计,确定各动态参数所需测试正常与鲁棒数据值;并依据软件需求与a661标准,确定a661server对于鲁棒测试用例输入进行处理后返回的异常消息;并按照测试用例设计结构,完成a661widget动态运行时参数测试用例设计定义;24.步骤16:定义动态参数校验测试用例文件模板,包含测试用例文件框架以及测试用例文件名、测试用例描述、测试需求追溯、测试步骤;25.步骤17:widget静态参数定义文件,依据测试用例设计文件中动态参数正常/鲁棒的用例设计,定义测试uadf设计时widget中相关静态参数maxstringlength、maxformatstringlength、maxlegendstringlength、maxnumberofentries的设置,确保静态参数的设值与用例设计相匹配;依据a661标准定义所有存在上述静态参数的widget的widgetname、widgetid、parametername、数据类型、静态参数设值。26.具体的,步骤2包括:27.定义规范化的输出接口文件格式,用于规范运行时消息文件格式,具体格式定义如下:[0028][0029]具体的,步骤3包括:[0030]遍历widgetid配置文件,获取所有widget的列表,列表中包含widgetid、widgetname以及widget数据文件的信息;[0031]遍历widget列表中的每个widget,解析需求追溯文件,基于widgetname关键字检索需求追溯文件,获取该widget对应的动态参数校验需求;[0032]解析a661widget数据文件,通过关键字检索该widget数据文件,获取该widget包含的所有动态参数信息列表,包含parametertype及数据类型;遍历动态参数列表,解析测试用例设计文件,通过parametertype关键字检索获取该参数对应的参数结构以及测试用例设计集合;[0033]对于测试用例设计集合中的每个测试用例进行处理,根据测试类型字段设置测试用例的测试类型,同时依据不同的参数结构,随机数开关、用于生成随机数的最大/最小值等信息,获取测试用例的输入值及对应的异常消息。[0034]具体的,步骤4包括:[0035]步骤41:对于测试用例信息库中的每一个测试用例信息,提取parametertype、测试用例输入值,并以此作为关键字,检索常量定义列表,获取对应的十六进制唯一标识,该十六进制数值将作为规范化输出接口文件相关字段的命令值;提取参数结构信息,对于a661标准中4.5.4.5中定义的18种参数结构,分别定义相应参数结构的输出函数,该输出函数规范化输出接口文件格式定义的要求,对不同参数结构中的不同字段分别定义相应的命令值及行注释信息,获得{a661_parameterstructure}结构;[0036]步骤42:根据a661标准table4.5.4.2-1表,扩展{a661_parameterstructure}结构,获得a661_cmd_set_parameter、widgetid、commandsize以及unusedpad字段的命令值及行注释信息,得到a661运行时参数设置命令结构信息;根据a661标准table4.5.4.1-1表将a661运行时参数设置命令结构信息扩展成完整的运行时块结构信息;[0037]步骤43:遍历测试用例信息库并查阅常量定义列表,将每一个测试用例的输入都被封装成一个运行时块结构,并以输出接口文件格式将运行时块结构最终输出保存为一个运行时消息文件;通过遍历测试用例信息库,逐一生成所有测试用例输入的运行时消息文件。[0038]具体的,步骤5包括:[0039]步骤51:生成单个测试用例结构;[0040]步骤52:根据单个测试用例结构,生成单个测试用例文件结构;[0041]步骤53:根据单个测试用例文件结构,生成测试用例文件集合。[0042]7.根据权利要求6所述的方法,其特征在于,步骤5具体包括:[0043]步骤51:定义a661widget动态参数校验正常/鲁棒测试用例模板;测试用例模板包含测试用例描述、测试需求追溯、测试步骤;基于测试用例信息库、运行时消息文件和常量定义列表,更新正常/鲁棒测试用例结构模板中相应字段的内容,生成单个测试用例结构;[0044]步骤52:依据widgetname,将该widget包含的所有动态参数的所有测试用例结构生成所需的元素进行封装,得到测试用例文件信息结构;依据动态参数校验测试用例文件模板,定义动态参数校验测试用例文件结构模板;依据单个测试用例结构的生成方法对测试用例文件信息结构中测试用例信息集合中的每一个测试用例进行逐一生成,得到测试用例文件的所有测试用例结构;使用得到的测试用例文件所有测试用例结构更新动态参数校验测试用例文件结构模板中相应部分的内容,得到单个测试用例文件结构;[0045]步骤53:遍历测试用例信息库,逐一生成各widget对应的测试用例文件结构,最终得到所有测试用例文件结构集合列表;通过遍历测试用例文件结构集合列表,逐一生成各widget对应的测试用例文件。[0046]具体的,步骤6包括:[0047]测试uadf应当支持所有widget的所有动态参数的校验,定义uadf设计约束,明确layerid,与生成的运行时消息文件中layerident保持一致;[0048]uadf中的widget包含所有的widget类型,且widgetid与widgetid配置文件中的配置一致;[0049]widget静态参数maxstringlength、maxformatstringlength、maxlegendstringlength、maxnumberofentries的设置应当与widget静态参数定义文件设置一致。[0050]综上所述,本发明的有益效果如下:[0051]1)自动化生成动态参数运行时消息文件,解决了由测试人员手动设计需要熟悉具体消息结构、以及设计过程中可能引入错误的问题,节省了运行时消息设计与调试运行时间;[0052]2)通过规范化动态参数运行时消息文件命名规则,能直观理解正常与鲁棒测试目的、及期望结果,如测试失败,能快速直观显性问题现象,有助于快速定位软件问题;[0053]3)以规范化输入接口文件、运行时消息文件、测试用例模板作为输入,自动化生成测试用例文件,将原本人工编写测试用例的过程,完全转化为自动化过程,且正确性与充分性得到有效保证;[0054]4)本发明实现了a661widget动态参数校验需求测试全面自动化,原本多人多月的测试工作量,直接转化为计算机自动处理执行,极大限度的缩短了周期以及人力成本。附图说明[0055]图1为动态参数校验测试用例文件生成原理图;[0056]图2为测试用例信息库生成过程原理图;[0057]图3为运行时消息文件自动生成原理图;[0058]图4为测试用例文件自动生成原理图。具体实施方式[0059]实施例一[0060]本技术在当前a661server动态测试技术基础上,通过抽样并规范化定义widget动态参数检验相关属性、规范化各参数类型参数校验用例设计所需类别、期望结果,并作为输入采用自动化方法生成各参数数据setparameter运行时消息文件以及对应测试用例文件,自动加载运行并生成测试结果,全面实现了a661widget动态参数校验测试自动化。[0061]本技术提供一种a661widget动态参数校验自动化测试方法,包含以下过程:[0062]步骤1:规范化输入接口文件定义:输入接口文件用于定义自动化测试用例生成所需的信息,包括测试用例文件模板、widgetid、widgetname、parametertype、参数结构、被测软件需求、异常消息、测试类型和测试用例输入相关信息。[0063]其中,测试类型包括正常和鲁棒。[0064]步骤2:规范化输出接口文件格式定义:输出接口文件用于a661server测试激励,通过运行时消息发送命令,周期同a661server通信,发送a661widget运行时参数动态setparameter消息。依据a661标准,同时考虑文件的可读性和可维护性,定义规范化的输出接口文件格式。[0065]步骤3:测试用例信息库生成:解析规范化输入接口文件,通过对输入接口文件的检索和处理,获得所有a661widget动态参数校验测试用例所需信息,生成测试用例信息库。测试用例信息库将作为运行时消息文件和测试用例文件自动生成的基础。[0066]步骤4:运行时消息文件自动生成:运行时消息文件即输出接口文件,该文件的生成主要实现从具体的动态参数校验测试用例输入值到实际发送的a661运行时消息的转化。依据a661标准中定义的动态参数及消息结构,通过自动化手段将动态参数数据封装成完整setparameter运行时消息,按照规范化输出接口文件格式,生成widget运行时参数运行时消息文件。作为测试用例中动态发送a661消息命令参数。[0067]步骤5:测试用例文件自动生成:为满足自动化测试的需要,以测试用例文件模板为输入,从测试用例信息库和运行时消息文件列表中提取生成测试用例所需信息,依据自定义的正常/鲁棒的测试用例模板,自动生成规范化的测试用例文件。[0068]步骤6:测试uadf设计:测试人员依据软件高层需求,创建通用的测试ua对应的uadf文件,该uadf文件支持所有widget的所有动态参数的校验。a661采用的是client-server模式,在a661server端自动加载解析测试uadf,在client端模拟测试ua实现与a661server之间的交互,通过自动化测试框架加载规范化的动态参数校验测试用例文件运行,并自动生成测试结果,全面实现了a661widget动态参数校验测试自动化。[0069]具体的,步骤1包括:[0070]步骤11:a661widget数据文件定义,依据a661标准定义所有widgets的“dr”、“r”参数的parametername、parametertype、数据类型。[0071]步骤12:a661标准常量文件定义,依据a661标准,定义a661标准常量文件的通用结构,主要包括parametertype、布尔类型常量、整型常量、widget扩展结构、运行时命令等的常量定义。常量定义中包括名称、数据大小以及对应的十六进制唯一标识。[0072]步骤13:widgetid配置文件定义,定义所有a661widget数据文件和widgetid的对应关系。[0073]步骤14:需求追溯文件定义,以a661widget软件需求为输入,根据不同的widgetname,识别出widget动态参数校验软件需求,建立widgetname和动态参数校验软件高层需求之间的追溯关系,并以规范化的xml文件格式定义需求追溯文件。[0074]步骤15:测试用例设计文件定义,依据a661标准定义的参数结构parameterstructure对所有widgets的动态参数进行分类。对于每种参数结构对应的动态参数,依据do-178b的要求,进行正常和鲁棒测试用例设计,确定各动态参数所需测试正常与鲁棒数据值。并依据软件需求与a661标准,确定a661server对于鲁棒测试用例输入进行处理后返回的异常消息。定义测试用例设计文件结构,主要包含parameterstructure、parametertype、测试类型(正常或鲁棒)、测试用例输入、随机数生成开关、用于生成随机数的最大/最小值以及鲁棒测试对应的异常消息。并按照测试用例设计结构,完成a661widget动态运行时参数测试用例设计定义。[0075]步骤16:动态参数校验测试用例文件模板定义,主要包含测试用例文件框架以及测试用例文件名、测试用例描述、测试需求追溯、测试步骤等。测试用例文件框架,定义测试用例各部分内容标识以及各部分开始结束标识;测试用例文件名定义体现测试用例文件主要测试目的;测试用例描述,定义测试用例输入条件和期望结果,描述字段包含固定和可变两部分组成,可变部分来源实际测试用例信息;测试需求追溯定义当前所测试的动态参数校验需求编号;测试步骤定义包含固定的测试命令描述和具体测试命令参数,测试命令参数依据当前测试用例实际动态运行时消息文件及测试用例实际结果确定。[0076]步骤17:widget静态参数定义文件,依据测试用例设计文件中动态参数正常/鲁棒的用例设计,定义测试uadf设计时widget中相关静态参数maxstringlength、maxformatstringlength、maxlegendstringlength、maxnumberofentries的设置,确保静态参数的设值与用例设计相匹配。依据a661标准定义所有存在上述静态参数的widget的widgetname、widgetid、parametername、数据类型、静态参数设值。[0077]具体的,步骤2包括:[0078]规范化的输出接口文件格式定义,用于规范运行时消息文件格式,具体格式定义如下:[0079][0080][0081]举例来说,{a661_parameterstructure}的结构格式参考样式说明如下:[0082][0083]规范化的输出接口文件每一行的信息均由命令值、注释标识“#”及行注释组成,其中命令值字段为十六进制数值,行注释中的数值描述均为十进制数值。[0084]输出接口文件的结构按照a661标准组织为一个三层的层级结构:[0085]1)最外层为运行时块结构,由b0和d0、000000(32位对齐)关键字标识运行时块结构开始和结束,其中b0为运行时块结构起始标识,d0为运行时块结构的结束标识;运行时块结构依次包含layerident、contextnumber、blocksize,在blocksize与d0结束标识之间为次外层a661运行时参数设置命令结构;[0086]2)次外层为a661运行时参数设置命令结构,由ca02关键字作为起始标识,命令结构依次包含commandsize、widgetid、0000(32位对齐),在0000(32位对齐)后为最里层a661动态参数结构;[0087]3)最里层为a661动态参数结构,该结构主要包含动态参数id、参数值、32位对齐,a661动态参数结构与实际动态参数类型对应,具体结合a661widget动态参数类型,依据a661标准4.5.4.5章节中定义的各类型参数结构确定,其格式及注释内容均与标准一致。[0088]具体的,步骤3包括:遍历widgetid配置文件,获取所有widget的列表,列表中包含widgetid、widgetname以及widget数据文件的信息。遍历widget列表中的每个widget,解析需求追溯文件,基于widgetname关键字检索需求追溯文件,获取该widget对应的动态参数校验需求;解析a661widget数据文件,通过关键字检索该widget数据文件,获取该widget包含的所有动态参数信息列表,包含parametertype及数据类型;遍历动态参数列表,解析测试用例设计文件,通过parametertype关键字检索获取该参数对应的参数结构以及测试用例设计集合。对于测试用例设计集合中的每个测试用例进行处理,根据测试类型字段设置测试用例的测试类型(正常/鲁棒),同时依据不同的参数结构,随机数开关、用于生成随机数的最大/最小值等信息,获取测试用例的输入值及对应的异常消息。[0089]可以看出,通过对规范化的输入接口文件的处理,提取出每一个a661widget动态参数校验测试用例信息,最终生成所有widget的所有动态参数的测试用例信息库。每个动态参数校验测试用例信息包括widgetid、widgetname、parametertype、参数结构、异常消息、测试类型(正常/鲁棒)、测试用例输入值、动态参数校验需求。[0090]具体的,步骤4包括:[0091]步骤41:对于测试用例信息库中的每一个测试用例信息,提取parametertype、测试用例输入值,并以此作为关键字,检索常量定义列表,获取对应的十六进制唯一标识,该十六进制数值将作为规范化输出接口文件相关字段的命令值。提取参数结构信息,对于a661标准中4.5.4.5中定义的18种参数结构,分别定义相应参数结构的输出函数,该输出函数根据规范化输出接口文件格式定义的要求,对不同参数结构中的不同字段分别定义相应的命令值及行注释信息,获得{a661_parameterstructure}结构。[0092]步骤42:根据a661标准table4.5.4.2-1表,扩展{a661_parameterstructure}结构,获得a661_cmd_set_parameter、widgetid、commandsize以及unusedpad字段的命令值及行注释信息,得到a661运行时参数设置命令结构信息。根据a661标准table4.5.4.1-1表将a661运行时参数设置命令结构信息扩展成完整的运行时块结构信息。[0093]步骤43:遍历测试用例信息库并查阅常量定义列表,将每一个测试用例的输入都被封装成一个运行时块结构,并以输出接口文件格式将运行时块结构最终输出保存为一个运行时消息文件。通过遍历测试用例信息库,逐一生成所有测试用例输入的运行时消息文件。[0094]其中,运行时消息文件的命名规则如下:[0095](1)非数组参数[0096]常规类型[0097]《widgetname》-[valid/invalid]-《parametertype》_value[0098]string[0099]《widgetname》-[valid/invalid]-《parametertype》_《string》+《padding》withstringsizeof《stringsize》[0100](2)数组参数[0101]二个元素数组类型[0102]《widgetname》-[valid/invalid]-《parametertype》_《value1》,《value2》[0103]stringarray多元素数组类型[0104]《widgetname》-[valid/invalid]-《arrayname》_《arrayitemname》_《value》[0105]《widgetname》-[valid/invalid]-《arrayname》_stringandsize_《string》+《padding》and《stringsize》[0106]enabelarray/picturearray/1bytearray/2bytearray多元素数组类型[0107]《widgetname》-[valid/invalid]-《arrayname》_《arrayitemname》_《value》[0108]《widgetname》-[valid/invalid]-《arrayname》_parametervalue_《value》[0109]entrypopuparray/entrylistarray多元素数组类型[0110]《widgetname》-[valid/invalid]-《arrayname》_《arrayitemname》_《value》[0111]《widgetname》-[valid/invalid]-《arrayname》_《cellitemname》_《value》。[0112]需要说明的是,根据文件结构解析a661标准常量文件,获取所有常量定义列表。基于常量定义列表和测试用例信息库,可以进行运行时消息文件的自动生成。[0113]具体的,步骤5包括:[0114]步骤51:单个测试用例结构生成[0115]定义a661widget动态参数校验正常/鲁棒测试用例模板。测试用例模板包含测试用例描述、测试需求追溯、测试步骤。正常测试用例的测试步骤为:清空异常消息缓存,向a661server发送运行时消息文件,接收来自a661server的消息,检查异常消息缓存是否为空。鲁棒测试用例的测试步骤为:清空异常消息缓存,向a661server发送运行时消息文件,接收来自a661server的异常消息并存储在异常消息缓存中,检查接收到的异常消息与期望的异常消息是否一致。[0116]基于测试用例信息库、运行时消息文件和常量定义列表,进行测试用例结构的自动生成。从测试用例信息库中的每一个测试用例中提取测试类型信息,根据正常/鲁棒测试用例模板定义正常/鲁棒测试用例结构模板。从测试用例信息库中的测试用例中提取parametertype、widgetname和测试用例输入值信息,更新测试用例描述中的可变字段,同时结合固定字段描述,得到测试用例描述,如果是鲁棒测试用例,还需要额外提取异常消息信息,得到完整的鲁棒测试用例描述;从测试用例信息库中的测试用例中提取动态参数校验需求信息,得到测试需求追溯;获取测试用例对应的运行时消息文件名称,得到a661server测试激励步骤的测试命令参数;如果是鲁棒测试用例,还需要从测试用例信息库中的测试用例中提取widgetid信息,结合之前获取的parametertype和异常消息信息,得到a661server测试期望步骤的测试命令参数。[0117]使用上述的测试用例描述、测试需求追溯、测试激励步骤的测试命令参数和测试期望步骤的测试命令参数,更新正常/鲁棒测试用例结构模板中相应字段的内容,生成单个测试用例结构。[0118]步骤52:单个测试用例文件结构生成[0119]依据widgetname,将该widget包含的所有动态参数的所有测试用例结构生成所需的元素进行封装,得到测试用例文件信息结构,封装的信息包括widgetname、测试用例信息集合、a661block消息文件名称列表。其中测试用例信息集合为测试用例信息库的子集,包含该widget的所有测试用例信息。a661block消息文件名称列表是与测试用例信息集合一一对应的运行时消息文件名称列表。一个测试用例文件信息结构对应一个测试用例文件。[0120]其中:测试用例文件命名规则如下:[0121]a661wl_《widgetname》rtparamvalid_hlr[0122]依据动态参数校验测试用例文件模板,定义动态参数校验测试用例文件结构模板。依据测试用例文件命名规则更新测试用例文件名称信息,同时依据单个测试用例结构的生成方法对测试用例文件信息结构中测试用例信息集合中的每一个测试用例进行逐一生成,得到测试用例文件的所有测试用例结构。使用得到的测试用例文件所有测试用例结构更新动态参数校验测试用例文件结构模板中相应部分的内容,得到单个测试用例文件结构。[0123]步骤53:测试用例文件集合生成[0124]遍历测试用例信息库,逐一生成各widget对应的测试用例文件结构,最终得到所有测试用例文件结构集合列表。通过遍历测试用例文件结构集合列表,逐一生成各widget对应的测试用例文件。[0125]具体的,步骤6包括:测试uadf应当支持所有widget的所有动态参数的校验,定义uadf设计约束,明确layerid,与生成的运行时消息文件中layerident保持一致。uadf中的widget应当包含所有的widget类型,且widgetid应当与widgetid配置文件中的配置一致。在uadf中相关widget设计时,应当确保在测试某一动态参数时,其他相关参数不影响期望结果,widget静态参数maxstringlength、maxformatstringlength、maxlegendstringlength、maxnumberofentries的设置应当与widget静态参数定义文件设置一致。[0126]综上所述,本发明的有益效果如下:[0127]1)自动化生成动态参数运行时消息文件,解决了由测试人员手动设计需要熟悉具体消息结构、以及设计过程中可能引入错误的问题,节省了运行时消息设计与调试运行时间;[0128]2)通过规范化动态参数运行时消息文件命名规则,能直观理解正常与鲁棒测试目的、及期望结果,如测试失败,能快速直观显性问题现象,有助于快速定位软件问题;[0129]3)以规范化输入接口文件、运行时消息文件、测试用例模板作为输入,自动化生成测试用例文件,将原本人工编写测试用例的过程,完全转化为自动化过程,且正确性与充分性得到有效保证;[0130]4)本发明实现了a661widget动态参数校验需求测试全面自动化,原本多人多月的测试工作量,直接转化为计算机自动处理执行,极大限度的缩短了周期以及人力成本。[0131]实施例二[0132]为了更好地理解本发明,下面通过附图和实施例对本发明作进一步详细说明。[0133]步骤1:规范化输入接口文件定义[0134]以xml格式定义a661widget数据文件、a661标准常量文件、widgetid配置文件、需求追溯文件、测试用例设计文件和a661widget静态参数定义文件;以xlsx格式定义动态参数校验测试用例文件模板,输入接口文件使用过程如图1所示,具体实施例如下:[0135]步骤11:a661widget数据文件定义如下:[0136][0137][0138]步骤12:a661标准常量文件定义如下:[0139]《consts》[0140]《!‑‑comment‑‑》[0141]《constname="constname"size="n"》0xxxyy《/const》…[0142]《/consts》[0143]步骤13:widgetid配置文件定义如下:[0144][0145]步骤14:需求追溯文件定义如下:[0146][0147]步骤15:测试用例设计文件定义如下:[0148][0149]步骤16:动态参数校验测试用例文件模板为excel格式文件,该excel模板定义如下:[0150]测试用例文件开始标识:[0151]startofalltests[0152]测试用例文件结束标识:[0153]endofalltests[0154]测试用例开始标识:[0155]startoftestcase[0156]测试用例结束标识:[0157]endoftestcase[0158]a661widget动态参数校验正常测试用例定义如下:[0159]测试用例描述:[0160]thea661serverdoesn'tsendana661_notify_exceptioneventwhenthedr/rparameter[parametertype]of[widgetname]issettovalidvalue[测试用例输入值][0161]测试需求追溯:[0162][动态参数校验需求][0163]测试步骤:[0164]1.reset_bufferexception.a661_exceptiontype[0165]2.reset_bufferexception.oem.a661_exceptionreason[0166]3.reset_bufferexception.oem.widgetident[0167]4.reset_bufferexception.oem.paramident[0168]5.send_hexa_opaque_from_file[0169]runtimemessage.a661_message_block[运行时消息文件名称][0170]6.wait2[0171]7.check_bufferexception.a661_exceptiontypenull[0172]8.check_bufferexception.oem.a661_exceptionreasonnull[0173]9.check_bufferexception.oem.widgetidentnull[0174]10.check_bufferexception.oem.paramidentnull[0175]a661widget动态参数校验鲁棒测试用例定义如下:[0176]测试用例描述:[0177]thea661serversendsana661_notify_exception([异常消息])eventwhenthedr/rparameter[parametertype]of[widgetname]issettoinvalidvalue[测试用例输入值][0178]测试需求追溯:[0179][动态参数校验需求][0180]测试步骤:[0181]1.reset_bufferexception.a661_exceptiontype[0182]2.reset_bufferexception.oem.a661_exceptionreason[0183]3.reset_bufferexception.oem.widgetident[0184]4.reset_bufferexception.oem.paramident[0185]5.send_hexa_opaque_from_fileruntimemessage.a661_message_block[运行时消息文件名称][0186]6.wait2[0187]7.checkexception.a661_exceptiontypeequalsa661_err_set_aborted[0188]8.checkexception.oem.a661_exceptionreasonequals[异常消息][0189]9.checkexception.oem.widgetidentequals[widgetid][0190]10.checkexception.oem.paramidentequals[parametertype十六进制标识][0191]步骤17:widget静态参数定义文件定义如下:[0192][0193][0194]步骤2:规范化输出接口文件格式定义[0195]规范化输出接口文件格式定义参照实施例一步骤2所述。[0196]步骤3:测试用例信息库生成[0197]通过对a661widget数据文件、widgetid配置文件、需求追溯文件以及测试用例设计文件的解析和处理,获得测试用例信息库。具体实施过程如图2所示。[0198]测试用例信息库对应的数据结构如下:[0199]id为45时,对应的输出接口文件,即运行时消息文件示例如下:[0223][0224][0225]运行时消息文件以文本格式保存为.hexa文件。[0226]步骤5:测试用例文件自动生成[0227]根据动态参数校验测试用例文件模板,定义动态参数校验测试用例文件的数据存储结构和正常/鲁棒测试用例的数据存储结构。基于测试用例信息库、运行时消息文件和常量定义列表进行测试用例文件的自动生成。自动化的测试用例文件生成包含单个测试用例结构生成、单个测试用例文件结构生成及批量测试用例文件生成三个阶段。具体实施过程如图4所示。[0228]以label控件a661_visible参数为例,a661_visible设置为false的正常测试用例如下:[0229]测试用例描述:[0230]thea661serverdoesn'tsendana661_notify_exceptioneventwhenthedr/rparametera661_visibleoflabelissettovalidvaluefalse[0231]测试需求追溯:[0232]a661wl_hlr_2027[0233]测试步骤:[0234]1.reset_bufferexception.a661_exceptiontype[0235]2.reset_bufferexception.oem.a661_exceptionreason[0236]3.reset_bufferexception.oem.widgetident[0237]4.reset_bufferexception.oem.paramident[0238]5.send_hexa_opaque_from_file[0239]runtimemessage.a661_message_block[0240]label-valid-a661_visible_a661_false.hexa[0241]6.wait2[0242]7.check_bufferexception.a661_exceptiontypenull[0243]8.check_bufferexception.oem.a661_exceptionreasonnull[0244]9.check_bufferexception.oem.widgetidentnull[0245]10.check_bufferexception.oem.paramidentnull[0246]a661_visible设置为2的鲁棒测试用例如下:[0247]测试用例描述:[0248]thea661serversendsana661_notify_exception(oem_err_invalid_parameter_value)eventwhenthedr/rparametera661_visibleoflabelissettoinvalidvalue2[0249]测试需求追溯:[0250]a661wl_hlr_2027[0251]测试步骤:[0252]1.reset_bufferexception.a661_exceptiontype[0253]2.reset_bufferexception.oem.a661_exceptionreason[0254]3.reset_bufferexception.oem.widgetident[0255]4.reset_bufferexception.oem.paramident[0256]5.send_hexa_opaque_from_file[0257]runtimemessage.a661_message_block[0258]label-invalid-a661_visible_2.hexa[0259]6.wait2[0260]7.checkexception.a661_exceptiontypeequals[0261]a661_err_set_aborted[0262]8.checkexception.oem.a661_exceptionreasonequalsoem_err_invalid_parameter_value[0263]9.checkexception.oem.widgetidentequals0x2d[0264]10.checkexception.oem.paramidentequals0xb530[0265]步骤6:测试uadf设计[0266]通过scadeuapagecreator创建测试uadf文件,layerid设为81。uadf创建时,应当绘制所有的widgets,且widget的页面布局、父子关系应与软件高层需求一致。设置每个widget的widgetid,widgetid的设值与widgetid配置文件一致。设置每个widget的静态参数,静态参数的设置不能影响到动态参数的测试用例的期望结果。[0267]以label为例,widgetid配置文件对应信息如下:[0268][0269][0270]因此在测试uadf设计时将label控件对应的widgetident属性设置为45,maxstringlength属性设置为32。当前第1页12当前第1页12
技术特征:
1.一种a661 widget动态参数校验自动化测试方法,其特征在于,所述方法包括:步骤1:定义规范化输入接口文件,输入接口文件用于定义自动化测试用例生成所需的信息;步骤2:定义规范化输出接口文件格式,输出接口文件用于a661server测试激励,通过运行时消息发送命令,周期同a661 server通信,发送a661 widget运行时参数动态set parameter消息;依据a661标准,定义规范化的输出接口文件格式;步骤3:根据规范化输入接口文件,生成测试用例信息库;解析规范化输入接口文件,通过对输入接口文件的检索和处理,获得所有a661 widget动态参数校验测试用例所需信息,生成测试用例信息库;步骤4:根据测试用例信息库,自动生成运行时消息文件;依据a661标准中定义的动态参数及消息结构,通过自动化手段将动态参数数据封装成完整set parameter运行时消息,按照规范化输出接口文件格式,生成widget运行时参数运行时消息文件,作为测试用例中动态发送a661消息命令参数;步骤5:使用测试用例文件模板为输入,从测试用例信息库和运行时消息文件列表中提取生成测试用例所需信息,依据自定义的正常/鲁棒的测试用例模板,自动生成规范化的测试用例文件;步骤6:依据软件高层需求,创建通用的测试ua对应的uadf文件,a661采用的是client-server模式,在a661 server端自动加载解析测试uadf,在client端模拟测试ua实现与a661 server之间的交互,通过自动化测试框架加载规范化的动态参数校验测试用例文件运行,并自动生成测试结果。2.根据权利要求1所述的方法,其特征在于,自动化测试用例生成所需的信息,包括测试用例文件模板、widget id、widget name、parameter type、参数结构、被测软件需求、异常消息、测试类型和测试用例输入相关信息。3.根据权利要求2所述的方法,其特征在于,步骤1包括:步骤11:定义a661 widget数据文件,依据a661标准定义所有widgets的dr参数、r参数的parameter name、parameter type、数据类型;步骤12:定义a661标准常量文件,依据a661标准,定义a661标准常量文件的通用结构,包括parameter type、布尔类型常量、整型常量、widget扩展结构、运行时命令等的常量定义;步骤13:定义widgetid配置文件,定义所有a661 widget数据文件和widget id的对应关系;步骤14:定义需求追溯文件,以a661 widget软件需求为输入,根据不同的widget name,识别出widget动态参数校验软件需求,建立widget name和动态参数校验软件高层需求之间的追溯关系,并以规范化的xml文件格式定义需求追溯文件;步骤15:定义测试用例设计文件,依据a661标准定义的参数结构parameter structure对所有widgets的动态参数进行分类;对于每种参数结构对应的动态参数,依据do-178b的要求,进行正常和鲁棒测试用例设计,确定各动态参数所需测试正常与鲁棒数据值;并依据软件需求与a661标准,确定a661 server对于鲁棒测试用例输入进行处理后返回的异常消息;按照测试用例设计结构,完成a661widget动态运行时参数测试用例设计定义;
步骤16:定义动态参数校验测试用例文件模板,包含测试用例文件框架以及测试用例文件名、测试用例描述、测试需求追溯、测试步骤;步骤17:widget静态参数定义文件,依据测试用例设计文件中动态参数正常/鲁棒的用例设计,定义测试uadf设计时widget中相关静态参数maxstringlength、maxformatstringlength、maxlegendstringlength、maxnumberofentries的设置,确保静态参数的设值与用例设计相匹配;依据a661标准定义所有存在上述静态参数的widget的widget name、widget id、parameter name、数据类型、静态参数设值。4.根据权利要求1所述的方法,其特征在于,步骤3包括:遍历widgetid配置文件,获取所有widget的列表,列表中包含widget id、widget name以及widget数据文件的信息;遍历widget列表中的每个widget,解析需求追溯文件,基于widget name关键字检索需求追溯文件,获取该widget对应的动态参数校验需求;解析a661 widget数据文件,通过关键字检索该widget数据文件,获取该widget包含的所有动态参数信息列表,包含parametertype及数据类型;遍历动态参数列表,解析测试用例设计文件,通过parameter type关键字检索获取该参数对应的参数结构以及测试用例设计集合;对于测试用例设计集合中的每个测试用例进行处理,根据测试类型字段设置测试用例的测试类型,同时依据不同的参数结构,随机数开关、用于生成随机数的最大/最小值等信息,获取测试用例的输入值及对应的异常消息。5.根据权利要求1所述的方法,其特征在于,步骤4包括:步骤41:对于测试用例信息库中的每一个测试用例信息,提取parameter type、测试用例输入值,并以此作为关键字,检索常量定义列表,获取对应的十六进制唯一标识,该十六进制数值将作为规范化输出接口文件相关字段的命令值;提取参数结构信息,对于a661标准中4.5.4.5中定义的18种参数结构,分别定义相应参数结构的输出函数,该输出函数根据规范化输出接口文件格式定义的要求,对不同参数结构中的不同字段分别定义相应的命令值及行注释信息,获得{a661_parameterstructure}结构;步骤42:根据a661标准table 4.5.4.2-1表,扩展{a661_parameterstructure}结构,获得a661_cmd_set_parameter、widget id、command size以及unusedpad字段的命令值及行注释信息,得到a661运行时参数设置命令结构信息;根据a661标准table4.5.4.1-1表将a661运行时参数设置命令结构信息扩展成完整的运行时块结构信息;步骤43:遍历测试用例信息库并查阅常量定义列表,将每一个测试用例的输入都被封装成一个运行时块结构,并以输出接口文件格式将运行时块结构最终输出保存为一个运行时消息文件;通过遍历测试用例信息库,逐一生成所有测试用例输入的运行时消息文件。6.根据权利要求1所述的方法,其特征在于,步骤5包括:步骤51:生成单个测试用例结构;步骤52:根据单个测试用例结构,生成单个测试用例文件结构;步骤53:根据单个测试用例文件结构,生成测试用例文件集合。7.根据权利要求6所述的方法,其特征在于,步骤5具体包括:步骤51:定义a661 widget动态参数校验正常/鲁棒测试用例模板;测试用例模板包含
测试用例描述、测试需求追溯、测试步骤;基于测试用例信息库和运行时消息文件列表,更新正常/鲁棒测试用例结构模板中相应字段的内容,生成单个测试用例结构;步骤52:依据widget name,将该widget包含的所有动态参数的所有测试用例结构生成所需的元素进行封装,得到测试用例文件信息结构;依据动态参数校验测试用例文件模板,定义动态参数校验测试用例文件结构模板;依据单个测试用例结构的生成方法对测试用例文件信息结构中测试用例信息集合中的每一个测试用例进行逐一生成,得到测试用例文件的所有测试用例结构;使用得到的测试用例文件所有测试用例结构更新动态参数校验测试用例文件结构模板中相应部分的内容,得到单个测试用例文件结构;步骤53:遍历测试用例信息库,逐一生成各widget对应的测试用例文件结构,最终得到所有测试用例文件结构集合列表;通过遍历测试用例文件结构集合列表,逐一生成各widget对应的测试用例文件。8.根据权利要求1所述的方法,其特征在于,步骤6包括:测试uadf应当支持所有widget的所有动态参数的校验,定义uadf设计约束,明确layer id,与生成的运行时消息文件中layerident保持一致;uadf中的widget包含所有的widget类型,且widget id与widgetid配置文件中的配置一致;widget静态参数maxstringlength、maxformatstringlength、maxlegendstringlength、maxnumberofentries的设置应当与widget静态参数定义文件设置一致。
技术总结
本申请提供一种A661Widget动态参数校验自动化测试方法,所述方法包括:步骤1:定义规范化输入接口文件;步骤2:定义规范化输出接口文件格式;步骤3:根据规范化输入接口文件,生成测试用例信息库;步骤4:根据测试用例信息库,自动生成运行时消息文件;步骤5:自动生成规范化的测试用例文件;步骤6:依据软件高层需求,创建通用的测试UA对应的UADF文件。创建通用的测试UA对应的UADF文件。创建通用的测试UA对应的UADF文件。
技术研发人员:王丽 肖前远 李想 赵中华
受保护的技术使用者:中国航空无线电电子研究所
技术研发日:2023.04.27
技术公布日:2023/7/25
版权声明
本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
飞行汽车 https://www.autovtol.com/
