发明内容
有鉴于此,本发明提供了一种测试逻辑的生成方法及装置,以克服现有技术中由于采用脚本方式和替换不同的接口程序执行对不同功能电子产品的测试需要通过编程的方式来实现而导致的,对使用者专业要求高、自动测试平台适用性低的问题。
为实现上述目的,本发明提供如下技术方案:
一种测试逻辑的生成方法,包括:
获取配置文件的结构;
根据所述配置文件的结构生成解析引擎和执行引擎,并将测试软件中的逻辑控制部分与功能模块部分分离;
采用所述配置文件描述所述功能模块,描述内容包括所述功能模块的功能特性及配置;
根据所述功能模块的功能特性及配置,采用所述配置文件描述出目标测试逻辑。
可选的,所述将测试软件中的逻辑控制部分与功能模块部分分离,包括:将测试软件分为应用程序、逻辑管理模块、模块集合和基础库;
所述应用程序用于为用户提供协议定制的界面,并控制测试动作的开始和停止以及所述基础库的初始化;
所述逻辑管理模块用于在所述应用程序运行后,基于所述应用程序配置的协议调度所述模块集合中的模块;
所述模块集合由用户或开发商预先配置;
所述基础库封装多种应用程序编程接口函数,用于为所述模块集合中的模块的实现提供基础。
可选的,还包括:
采用动态库方式将所述模块集合中不存在的模块添加至所述模块集合中。
可选的,所述动态库包括多个函数,所述多个函数用于实现创建模块、销毁模块、指定模块的配置文件路径、获取模块类的名称和运行模块。
可选的,所述配置文件包括:可扩展标记语言文件、初始化文件和二进制文件。
可选的,所述目标测试逻辑的描述内容包括将模块集合中的模块分为多个工作组,包括:
获取测试逻辑配置文件中的第一个工作组,并执行工作组流程;
所述工作组流程包括:判断所述工作组是否为阻塞式;如果是,在阻塞式工作线程中运行所述工作组中的模块;如果否,则创建一个非阻塞式工作线程,并在所述非阻塞式工作线程中运行所述工作组中的模块;
判断所述测试逻辑配置文件中是否存在下一个工作组,如果存在,则获取所述下一个工作组并执行所述工作组流程,直至所有的工作组都执行过所述工作组流程。
可选的,所述运行所述工作组中的模块,包括:
获取所述工作组中的第一个模块并执行;
获取模块返回值,并根据所述返回值获取下一个模块的描述名称;
判断当前工作线程中是否存在符合所述描述名称的模块;
如果是,则获取符合所述描述名称的模块并执行;
如果否,判断当前工作组中是否存在下一模块;如果存在,则获取下一模块并执行。
一种测试逻辑的生成装置,包括:
结构获取模块,用于预先获取配置文件的结构;
软件划分模块,用于根据所述配置文件的结构生成解析引擎和执行引擎,并将测试软件中的逻辑控制部分与功能模块部分分离;
模块描述模块,用于采用所述配置文件描述所述功能模块,描述内容包括所述功能模块的功能特性及配置;
测试逻辑描述模块,用于根据所述功能模块的功能特性及配置,采用所述配置文件描述出目标测试逻辑。
可选的,所述软件划分模块包括:划分子模块,用于将测试软件分为应用程序、逻辑管理模块、模块集合和基础库;所述应用程序用于为用户提供协议定制的界面,并控制测试动作的开始和停止以及所述基础库的初始化;所述逻辑管理模块用于在所述应用程序运行后,基于所述应用程序配置的协议调度所述模块集合中的模块;所述模块集合由开发商预先配置,或由用户根据实际情况配置;所述基础库封装多种应用程序编程接口函数,用于为所述模块集合中的模块的实现提供基础。
可选的,还包括:
模板添加模块,用于采用动态库方式将所述模块集合中不存在的模块添加至所述模块集合中。
经由上述的技术方案可知,与现有技术相比,本发明实施例公开了一种测试逻辑的生成方法,所述方法基于配置语言来设计解析和执行引擎,并分离逻辑控制与模块配置内容,测试软件中执行特定动作的模块和整个测试逻辑也采用上述配置语言来统一描述,从而用户可以通过应用程序提供的界面,根据测试软件中已被描述和分离的具有特定测试功能的模块来定义目标测试逻辑需完成的动作及动作顺序。该方法在测试不同功能的电子产品时,能够使用户方便的自由定义测试功能及测试顺序,不需要用户再专门编写特定功能的程序。同时本发明还公开了一种测试逻辑的生成装置,所述装置同样不需要用户在面对不同功能电子产品的测试问题时专门编写测试程序,对使用者的专业水平要求低,适用性强。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例一
图1为本发明实施例公开的测试逻辑生成方法的流程图,图2为本发明实施例公开的测试软件的结构流程图,参见图1和图2所示,所述方法可以包括:
步骤101:获取配置文件的结构;
配置文件的结构可以包括两部分内容,一是具有执行单元的相关参数设置,即指示怎样执行动作;二是具有执行单元的逻辑控制设置,即指示跳转、条件和是否阻塞等动作走向的相关内容。由于每一种配置文件都具有特定的格式,这个格式必须能够被测试软件解析,因此需要预先确定配置文件的结构。
本发明实施例中,所述配置文件可以是可扩展标记语言文件、初始化文件和二进制文件中的一种,也可以是现有技术中的其他配置语言。
需要说明的是,并不是每一次生成测试逻辑都需要执行步骤101,如果需要生成多组不同的测试逻辑,且所述多组不同的测试逻辑都可以采用同一种配置文件的格式来描述和配置,那么在第一次生成测试逻辑时,执行步骤101,后面几组的测试逻辑生成过程中则不需要再执行步骤101,只需从下述的步骤102开始执行。
步骤102:根据所述配置文件的结构生成解析引擎和执行引擎,并将测试软件中的逻辑控制部分与功能模块部分分离。
在步骤101获取配置文件的结构之后,测试软件可以根据所述配置文件设计解析和执行引擎,用以测试逻辑的执行,并可以通过所述应用程序按照所述配置文件的格式生成配置界面,使得用户可以通过该配置界面修改配置参数,并执行逻辑。
步骤102中,所述将测试软件中的逻辑控制部分与功能模块部分分离,具体可以包括将测试软件分为应用程序、逻辑管理模块、模块集合和基础库;所述应用程序用于为用户提供协议定制的界面,并控制测试动作的开始和停止以及所述基础库的初始化;所述逻辑管理模块用于在所述应用程序运行后,基于所述应用程序配置的协议调度所述模块集合中的模块;所述模块集合由用户预先配置;所述基础库封装多种应用程序编程接口函数,用于为所述模块集合中是模块的实现提供基础。具体的结构和关系可以参见图2,图2中,模块集合中以电源模块、DIO模块、1553模块、延时模块和通知模块为例,基础库以1553操作API(应用程序编程接口)、DIO操作API、电源操作API和与应用程序通信API为例。
步骤102后,经过对测试软件的划分,才能够将控制逻辑和模块的实际功能分离,从而实现通过配置的改变来改变测试流程,实现用户根据电子产品的功能自主定义测试逻辑。
步骤103:采用所述配置文件描述所述功能模块,描述内容包括所述功能模块的功能特性及配置。
本发明实施例中,所述模块采用动态库来实现,在模块的描述文件中,通过文件路径的方式描述相应的模块以及其配置内容。当前测试软件支持的模块可以在配置界面中进行修改,例如添加、移动和删除。
步骤104:根据所述功能块的功能特性及配置,采用所述配置文件描述出目标测试逻辑。
其中,所述目标测试逻辑的描述内容可以包括将模块集合中的模块分为多个工作组,则具体操作流程可以参见图3,图3为本发明实施例公开的工作组逻辑执行流程图,如图3所示,可以包括:
步骤301:获取测试逻辑配置文件中的第一个工作组。
在对模块集合中的模块划分工作组时,可以给划分好的工作组进行编号,这样,在步骤301中可以方便的获取第一个工作组。
步骤302:判断所述工作组是否为阻塞式,如果否,进入步骤303;如果是,进入步骤304。
工作组指定了模块的运行方式,分为阻塞式和非阻塞式两种。阻塞式的工作组使用应用程序的主工作线程,而每一个非阻塞式工作组都需要具有各自独立的工作线程,跳转动作只能出现在同一个工作线程中。
步骤303:创建一个非阻塞式工作线程。
在工作组为非阻塞式工作组时,需要为所述非阻塞式的工作组单独建立一个工作线程。
步骤304:在相应的工作线程中运行工作组中的模块。
如果是阻塞式工作组,则在应用程序的主工作线程中运行工作组中的模块;如果是非阻塞式工作组,则在为其单独建立的工作线程中运行所述非阻塞式工作组中的模块。
步骤305:判断所述测试逻辑配置文件中是否存在下一个工作组,如果是,进入步骤306。
步骤306:获取所述下一个工作组,并进入步骤302。
步骤306中,如果判断结果为否,则流程结束。
上述步骤302~步骤304可以统称为工作组流程,在对第一个工作组执行完工作组流程后,判断所述测试逻辑配置文件中是否存在下一个工作组,如果存在,则获取所述下一个工作组并执行所述工作组流程,直至所有的工作组都执行过所述工作组流程。
图4为图3所示实施例公开的工作组中模块逻辑执行流程图,参见图4所示,可以包括:
步骤401:获取所述工作组中的第一个模块。
步骤402:执行模块。
步骤403:获取模块返回值,并根据所述返回值获取下一个模块的描述名称。
步骤404:判断当前工作线程中是否存在符合所述描述名称的模块,如果是,进入步骤405;如果否,进入步骤406。
步骤405:获取符合所述描述名称的模块,并进入步骤402。
步骤406:判断当前工作组中是否存在下一模块,如果存在,进步步骤407。
如果判断结果为不存在,则流程结束。
步骤407:获取下一模块,并进入步骤402。
本发明实施例中,一个模块是一个模块以及模块配置的一份拷贝,从而能够实现针对不同的模块进行单独的配置。其中,模块可以包含两部分内容,一是模板实例运行配置内容,二是模板实例的跳转定义,即模板实例运行完毕后,应该跳转至哪一个模板实例。每一个模板实例在所述目标测试逻辑中具有唯一的名称。
本实施例中,所述测试逻辑的生成方法基于配置语言来设计解析和执行引擎,并分离逻辑控制与模块配置内容,测试软件中执行特定动作的模块和整个测试逻辑也采用上述配置语言来统一描述,从而用户可以通过应用程序提供的界面,根据测试软件中已被描述和分离的具有特定测试功能的模块来定义目标测试逻辑需完成的动作及动作顺序。该方法在测试不同功能的电子产品时,能够使用户方便的自由定义测试功能及测试顺序,不需要用户再专门编写特定功能的程序。
实施例二
图5为本发明实施例公开的另一测试逻辑生成方法的流程图,参见图5所示,所述方法可以预先获取配置文件的结构,可以包括步骤:
步骤501:根据所述配置文件的结构生成解析引擎和执行引擎,并将测试软件中的逻辑控制部分与功能模块部分分离。
本发明实施例中,所述配置文件可以是可扩展标记语言文件、初始化文件和二进制文件中的一种,也可以是现有技术中的其他配置语言。
所述将测试软件中的逻辑控制部分与功能模块部分分离,具体可以包括:将测试软件分为应用程序、逻辑管理模块、模块集合和基础库;所述应用程序用于为用户提供协议定制的界面,并控制测试动作的开始和停止以及所述基础库的初始化;所述逻辑管理模块用于在所述应用程序运行后,基于所述应用程序配置的协议调度所述模块集合中的模块;所述模块集合由用户预先配置;所述基础库封装多种应用程序编程接口函数,用于为所述模块集合中是模块的实现提供基础。
步骤502:采用动态库方式将所述模块集合中不存在的模块添加至所述模块集合中。
其中,所述动态库具备特定的接口,能够实现模块的第三方扩充。配合提供模块配置文件,可以将所述模块集合中不存在的模块添加至所述模块的描述文件中。
所述动态库包括多个函数,能够实现多种功能,例如:实现创建模块、销毁模块、指定模块的配置文件路径、获取模块类的名称和运行模块等功能,由于动态库的每一个函数都有特定唯一的名称,从而所述动态库具备特定的接口。具体的,创建模块的过程可以返回能够唯一标识模块的句柄;销毁模块的过程可以包括通过句柄下回模块;定模块的配置文件路径可以包括设置模块的运行参数,将模块的配置文件与模块进行绑定;获取模块类的名称可以包括获取模块类的描述字符串,用于UI显示;运行模块可以包括指定上下文运行模块。
步骤503:采用所述配置文件描述所述模块集合中的模块,描述内容包括所述模块的功能特性及配置。
步骤504:根据所述模块的功能特性及配置,采用所述配置文件描述出目标测试逻辑。
本实施例中,所述测试逻辑的生成方法基于配置语言来设计解析和执行引擎,并分离逻辑控制与模块配置内容,测试软件中执行特定动作的模块和整个测试逻辑也采用上述配置语言来统一描述,从而用户可以通过应用程序提供的界面,根据测试软件中已被描述和分离的具有特定测试功能的模块来定义目标测试逻辑需完成的动作及动作顺序。该方法在测试不同功能的电子产品时,能够使用户方便的自由定义测试功能及测试顺序,不需要用户再专门编写特定功能的程序。且能够通过动态数据库实现专业水平高的用户对编程内容的扩充,方便专业水平高的用户使用。
上述本发明公开的实施例中详细描述了方法,对于本发明的方法可采用多种形式的装置实现,因此本发明还公开了一种装置,下面给出具体的实施例进行详细说明。
实施例三
图6为本发明实施例公开的测试逻辑生成装置的结构框图,参见图6所示,所述测试逻辑生成装置60可以包括:
结构获取模块601,用于预先获取配置文件的结构。
软件划分模块602,用于根据所述配置文件的结构生成解析引擎和执行引擎,并将测试软件中的逻辑控制部分与功能模块部分分离。
所述装置会预先获取配置文件的结构,配置文件的结构可以包括两部分内容,一是具有执行单元的相关参数设置,即指示怎样执行动作;二是具有执行单元的逻辑控制设置,即指示跳转、条件和是否阻塞等动作走向的相关内容。通过结构获取模块预先获取配置文件的结构,测试软件可以根据所述配置文件设计解析和执行引擎,用以测试逻辑的执行,并可以通过所述应用程序按照所述配置文件的格式生成配置界面,使得用户可以通过该配置界面修改配置参数,并执行逻辑。
本发明实施例中,所述配置文件可以是可扩展标记语言文件、初始化文件和二进制文件中的一种,也可以是现有技术中的其他配置语言。
其中,所述软件划分模块602可以包括子划分模块,用于将测试软件分为应用程序、逻辑管理模块、模块集合和基础库;所述应用程序用于为用户提供协议定制的界面,并控制测试动作的开始和停止以及所述基础库的初始化;所述逻辑管理模块用于在所述应用程序运行后,基于所述应用程序配置的协议调度所述模块集合中的模块;所述模块集合由用户预先配置;所述基础库封装多种应用程序编程接口函数,用于为所述模块集合中是模块的实现提供基础。
模块描述模块603,用于采用所述配置文件描述所述功能模块,描述内容包括所述功能模块的功能特性及配置。
本发明实施例中,所述功能模块采用动态库来实现,在功能模块的描述文件中,通过文件路径的方式描述相应的功能模块以及其配置内容。
测试逻辑描述模块604,用于根据所述功能模块的功能特性及配置,采用所述配置文件描述出目标测试逻辑。
本实施例中,所述测试逻辑生成装置能够采用配置语言来设计解析和执行引擎,并分离逻辑控制与模块配置内容,测试软件中执行特定动作的模块和整个测试逻辑也采用上述配置语言来统一描述,从而用户可以通过应用程序提供的界面,根据测试软件中已被描述和分离的具有特定测试功能的模块来定义目标测试逻辑需完成的动作及动作顺序。该方法在测试不同功能的电子产品时,能够使用户方便的自由定义测试功能及测试顺序,不需要用户再专门编写特定功能的程序。
实施例四
图7为本发明实施例公开的另一测试逻辑生成装置的结构框图,参见图7所示,所述测试逻辑生成装置70可以包括:
结构获取模块601,用于预先获取配置文件的结构。
软件划分模块602,用于根据所述配置文件的结构生成解析引擎和执行引擎,并将测试软件中的逻辑控制部分与功能模块部分分离。
其中,所述软件划分模块602可以包括子划分模块,用于将测试软件分为应用程序、逻辑管理模块、模块集合和基础库;所述应用程序用于为用户提供协议定制的界面,并控制测试动作的开始和停止以及所述基础库的初始化;所述逻辑管理模块用于在所述应用程序运行后,基于所述应用程序配置的协议调度所述模块集合中的模块;所述模块集合由用户预先配置;所述基础库封装多种应用程序编程接口函数,用于为所述模块集合中是模块的实现提供基础。
模板添加模块701,用于采用动态库方式将所述模块集合中不存在的模块添加至所述模块集合中。
其中,所述动态库具备特定的接口,能够实现模块的第三方扩充。配合提供模块配置文件,可以将所述模块集合中不存在的模块添加至所述模块的描述文件中。
模块描述模块603,用于采用所述配置文件描述所述模块集合中的模块,描述内容包括所述模块的功能特性及配置。
测试逻辑描述模块604,用于根据所述模块的功能特性及配置,采用所述配置文件描述出目标测试逻辑。
本实施例中,所述测试逻辑的生成装置可以基于配置语言来设计解析和执行引擎,并分离逻辑控制与模块配置内容,测试软件中执行特定动作的模块和整个测试逻辑也采用上述配置语言来统一描述,从而用户可以通过应用程序提供的界面,根据测试软件中已被描述和分离的具有特定测试功能的模块来定义目标测试逻辑需完成的动作及动作顺序。该方法在测试不同功能的电子产品时,能够使用户方便的自由定义测试功能及测试顺序,不需要用户再专门编写特定功能的程序。且能够通过动态数据库实现专业水平高的用户对编程内容的扩充,方便专业水平高的用户使用。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
还需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。