本发明涉及自动化测试领域,特别涉及一种基于动态脚本模板的测试方法及装置。
背景技术:
自动化测试是把以人为驱动的测试行为转化为机器执行的一种过程。现有的自动化测试引擎,通常通过对不同测试工具的应用程序接口(API)进行封装,形成测试引擎的内部基类函数集,并按测试用例中的被测功能点,组合成一系列函数从而形成测试脚本模板。在执行测试时,通过应用组合引擎内部一系列基类函数形成的自动化测试脚本,调用测试工具API,驱动测试设备执行测试。
现有的技术方案是从无到有、从单一到多元化整合的过程,是自动化测试经验的累积,对被测系统的适应性、测试时间、测试环境都有很大的要求。
现有技术方案在实际应用中范围较广,但是存在一些不可避免的缺点:
扩展性差。现有的通用自动化测试引擎技术中,内部基类函数集是基于不同的出发点和思路进行开发的,在面对不同的测试工具、不同的被测设备、不同的测试环境时,均有很大的区别,因此导致自动化测试引擎功能单一且难以复用。这使得自动化测试工具的版本升级或被测对象\业务的变更,都需要重新花费大量的人力物力重新开发测试引擎中封装的基类函数,降低测试效率。
自动化程度较低。尽管根据各类测试需求和测试工具软件的技术特点可开发出多种多样的测试引擎,但各工具和引擎之间缺乏整体的设计思路,难以融合使用。现有技术方案中,当测试工具进行工具版本或环境的变更,或测试工具、被测设备种类增加等信息时,测试工具无法与测试引擎进行信息交互,因此测试引擎侧无法自动化同步更新升级,极易导致测试执行的失败,造成各种测试步骤的半自动化局面。
依赖性高。现有的技术方案仅能实现将测试任务发出去,再把测试结果收集回来,无法根据测试需求对测试脚本进行自动化的编译和校验,对测试执行人员脚本编译的技术水平,系统的熟悉程度及业务知识存在全面性的依赖。
技术实现要素:
本发明提供了一种基于动态脚本模板的测试方法及装置,其目的是为了解决现有的自动化测试引擎拓展性差、自动化程度较低以及依赖性高的问题。
为了达到上述目的,本发明的实施例提供了一种基于动态脚本模板的测试方法,应用于测试服务器,测试方法包括:
接收测试工具上的代理服务客户端采集的测试工具的第一参数和与测试工具连接的被测设备的第二参数;
根据第一参数和第二参数在动态数据库中筛选查询出可复用的函数或脚本;
对函数或脚本利用关键字词典进行映射,并封装成脚本模板;
接收测试需求,并根据测试需求和脚本模板生成执行脚本;
将执行脚本和关键字词典的版本号发送至代理服务客户端,并指示由代理服务客户端解析并执行。
优选地,测试方法还包括:
接收测试工具发送的接入申请;
根据接入申请,向测试工具发送代理服务客户端的安装包,并在测试工具上安装并启动代理服务客户端。
优选地,对函数或脚本利用关键字词典进行映射,并封装成脚本模板的步骤,具体包括:
以测试对象、测试动作、测试参数作为关键字词典中的一组关键字,从可复用的函数或脚本中筛选出关键字所需的基础函数或脚本,并将基础函数或脚本封装成脚本模板。
优选地,将基础函数封装成脚本模板的步骤之后,测试方法还包括:
将脚本模板发送至代理服务客户端,指示代理服务客户端对脚本模板进行验证并接收代理服务客户端的反馈:
若代理服务客户端反馈为验证通过,则将脚本模板存储至脚本模板库;
若代理服务客户端反馈为验证不通过,则获取代理反馈的该脚本模板的对应的基础函数或脚本,并重新将基础函数或脚本封装成脚本模板。
优选地,接收测试需求,并根据测试需求和脚本模板生成执行脚本的步骤,具体包括:
接收测试需求并从测试需求中提取包括测试对象、测试动作以及测试参数的测试关键字;
为测试关键字匹配脚本模板库里的脚本模板,并将用户输入的数据嵌入到匹配的脚本模板中,生成执行脚本。
优选地,将执行脚本和关键字词典的版本号发送至代理服务客户端,并指示由代理服务客户端解析并执行的步骤,具体包括:
将执行脚本和关键字词典的版本号发送至代理服务客户端,使代理服务客户端根据关键字词典的版本号获取相应的关键字词典;
指示由代理服务客户端根据相应的关键字词典解析并执行执行脚本。
为了实现上述目的,本发明的实施例还提供了一种基于动态脚本模板的测试方法,应用于测试工具,测试方法包括:
采集测试工具的第一参数和与测试工具连接的被测设备的第二参数,并将第一参数和第二参数发送给测试服务器;
接收测试服务器发送的执行脚本和关键字词典的版本号,并根据测试服务端的执行指示,解析并执行执行脚本,其中执行脚本由测试服务器根据测试需求和脚本模板生成。
优选地,测试方法还包括:
接收到测试服务端对脚本模板进行验证的验证指示时,对脚本模板进行验证并向测试服务器反馈验证结果。
优选地,接收测试服务器发送的执行脚本和关键字词典的版本号,并根据测试服务端的执行指示,解析并执行执行脚本的步骤,具体包括:
接收测试服务端发送的执行脚本和关键字词典的版本号,根据关键字词典的版本号获取相应的关键字词典;
根据相应的关键字词典解析并执行执行脚本。
为了实现上述目的,本发明的实施例还提供了一种基于动态脚本模板的测试装置,应用于测试服务器,测试装置包括:
接收模块,用于接收测试工具上的代理服务客户端采集的测试工具的第一参数和与测试工具连接的被测设备的第二参数;
筛选模块,用于根据第一参数和第二参数在动态数据库中筛选查询出可复用的函数或脚本;
封装模块,用于对函数或脚本利用关键字词典进行映射,并封装成脚本模板;
生成模块,用于接收测试需求,并根据测试需求和脚本模板生成执行脚本;
发送模块,用于将执行脚本和关键字词典的版本号发送至代理服务客户端,并指示由代理服务客户端解析并执行。
优选地,测试装置还包括:
申请接收模块,用于接收测试工具发送的接入申请;
启动模块,用于根据接入申请,向测试工具发送代理服务客户端的安装包,并在测试工具上安装并启动代理服务客户端。
优选地,封装模块具体用于:
以测试对象、测试动作、测试参数作为关键字词典中的一组关键字,从可复用的函数或脚本中筛选出关键字所需的基础函数或脚本,并将基础函数或脚本封装成脚本模板。
优选地,测试装置还包括:
指示验证模块,用于在封装模块将基础函数封装成脚本模板的步骤之后,
将脚本模板发送至代理服务客户端,指示代理服务客户端对脚本模板进行验证并接收代理服务客户端的反馈:
若代理服务客户端反馈为验证通过,则将脚本模板存储至脚本模板库;
若代理服务客户端反馈为验证不通过,则获取代理反馈的该脚本模板的对应的基础函数或脚本,并重新将基础函数或脚本封装成脚本模板。
优选地,生成模块具体包括:
接收子模块,用于接收测试需求并从测试需求中提取包括测试对象、测试动作以及测试参数的测试关键字;
匹配子模块,用于为测试关键字匹配脚本模板库里的脚本模板,并将用户输入的数据嵌入到匹配的脚本模板中,生成执行脚本。
优选地,发送模块具体包括:
发送子模块,用于将执行脚本和关键字词典的版本号发送至代理服务客户端,使代理服务客户端根据关键字词典的版本号获取相应的关键字词典;
指示子模块,用于指示由代理服务客户端根据相应的关键字词典解析并执行执行脚本。
为了实现上述目的,本发明的实施例还提供了一种基于动态脚本模板的测试装置,应用于测试工具,测试装置包括:
采集模块,用于采集测试工具的第一参数和与测试工具连接的被测设备的第二参数,并将第一参数和第二参数发送给测试服务器;
执行模块,用于接收测试服务器发送的执行脚本和关键字词典的版本号,并根据测试服务端的执行指示,解析并执行执行脚本,其中执行脚本由测试服务器根据测试需求和脚本模板生成。
优选地,测试装置还包括:
验证模块,用于接收到测试服务端对脚本模板进行验证的验证指示时,对脚本模板进行验证并向测试服务器反馈验证结果。
优选地,执行模块具体包括:
获取子模块,用于接收测试服务端发送的执行脚本和关键字词典的版本号,根据关键字词典的版本号获取相应的关键字词典;
解析子模块,用于根据相应的关键字词典解析并执行执行脚本。
本发明的上述方案至少包括以下有益效果:
本发明提供的基于动态脚本的测试方法及装置,通过对预置在动态数据库中函数或脚本利用关键字词典进行映射,并动态生成脚本模板;当接收到具体的测试需求时,通过关键字词典映射查找到相应的脚本模板即可生成具体的执行脚本,再将执行脚本发送至代理服务客户端;整个过程在测试服务器内部动态完成,测试需求至执行脚本的自动转化,提高了测试的自动化程度,且降低了对测试人员脚本开发技术的需求,大大减少了人员的投入成本。
附图说明
图1为本发明的第一实施例提供的基于动态脚本模板的测试方法的基本步骤流程图;
图2为本发明的第二实施例提供的基于动态脚本模板的测试方法的基本步骤流程图;
图3为本发明的第三实施例提供的基于动态脚本模板的测试方法的基本步骤流程图;
图4为本发明的第四实施例提供的基于动态脚本模板的测试方法的基本步骤流程图;
图5为本发明的第五实施例提供的基于动态脚本模板的测试装置的结构示意图;
图6为本发明的第六实施例提供的基于动态脚本模板的测试方法的基本步骤流程图;
图7为本发明的第七实施例提供的基于动态脚本模板的测试装置的结构示意图;
图8为本发明的第一实施例具体场景示意图;
图9为本发明的第三实施例具体场景示意图。
具体实施方式
为使本发明要解决的技术问题、技术方案和优点更加清楚,下面将结合附图及具体实施例进行详细描述。
现有的自动化测试引擎,通常通过对不同测试工具的应用程序接口(API)进行封装,形成测试引擎的内部基类函数集,并按测试用例中的被测功能点,组合成一系列函数从而形成测试脚本模板,存在拓展性差、自动化程度较低以及依赖性高的问题。本发明针对现有的问题,提供了一种基于动态脚本模板的测试方法及装置。
第一实施例
参见图1,本发明的第一实施例提供了一种基于动态脚本模板的测试方法,应用于测试服务器,测试方法包括:
步骤101,接收测试工具上的代理服务客户端采集的测试工具的第一参数和与测试工具连接的被测设备的第二参数。
其中,第一参数可以包括测试工具的操作系统的系统版本信息和工具版本信息,其中,操作系统可以是windows系统、Linux系统或者、Android系统等;第二参数包括被测设备的硬件版本号和被测设备系统的软件版本号。
步骤102,根据第一参数和第二参数在动态数据库中筛选查询出可复用的函数或脚本。
其中,需在动态数据库中预置当前通用的多种函数或脚本。
步骤103,对函数或脚本利用关键字词典进行映射,并封装成脚本模板。
其中,对步骤102中已筛选出的可复用的函数或脚本利用关键字词典进行映射,使每个可复用的函数或脚本与一组或多组关键字形成映射关系,并封装成脚本模板用以生成具体的执行脚本。
步骤104,接收测试需求,并根据测试需求和脚本模板生成执行脚本。
其中,从测试需求中提取关键字,并根据步骤103中的映射关系,匹配与测试需求相对应的脚本模板,并将测试需求中的具体参数嵌入到脚本模板中,形成用以执行本测试需求的执行脚本。
步骤105,将执行脚本和关键字词典的版本号发送至代理服务客户端,并指示由代理服务客户端解析并执行。
本发明的上述实施例中,测试服务器可以作为软硬测试探针、仪器仪表、服务器计算机、手持或膝上性设备、移动设备(比如移动电话)、小型计算机、大型计算机、无人机的软件系统。
通常情况下,现有的通用自动化测试引擎技术中,当自动化测试工具的版本升级或被测对象\业务的变更,都需要重新花费大量的人力物力重新开发测试引擎中封装的基类函数;而本发明的上述实施例中,当测试工具接入时,根据测试工具的第一参数和被测设备的第二参数在动态数据库中筛选查询出与之相对应的函数或脚本,直接调用即可,无需在重新开发,增加了自动化测试引擎的复用性,提高了测试效率。
本发明的上述实施例中,通过对预置在动态数据库中函数或脚本利用关键字词典进行映射,并动态生成脚本模板;当接收到具体的测试需求时,通过关 键字词典映射查找到相应的脚本模板即可生成具体的执行脚本,再将执行脚本发送至代理服务客户端;本发明利用关键字映射的方式封装脚本模板,实现跨测试工具、跨被测设备、跨测试环境的动态变化的测试引擎,大大降低测试工具、被测设备、测试环境的耦合度,提高测试系统的可复用性,大幅度提升测试效率及成功率。整个过程在测试服务器内部动态完成,测试需求至执行脚本的自动转化,提高了测试的自动化程度,且降低了对测试人员脚本开发技术的需求,大大减少了人员的投入成本。
优选地,本发明的上述实施例中,该测试方法还包括:
接收测试工具发送的接入申请;
根据接入申请,向测试工具发送代理服务客户端的安装包,并在测试工具上安装并启动代理服务客户端。
参见图8,图8为本发明的上述实施例的一个具体场景示意图,其中,当测试服务器接收测试工具发送的接入申请,也就是说,当测试工具首次接入到测试服务器时,首先向测试工具发送代理服务客户端的安装包,需要说明的是,测试服务器需从接入申请中获取测试工具的操作系统的版本信息以及工具的基本信息,并选择与测试工具的操作系统的版本信息相匹配的安装包并向测试工具发送。
第二实施例
如图2所示,本发明的第二实施例提供了一种基于动态脚本模板的测试方法,应用于测试服务器,该测试方法包括:
步骤201,接收测试工具上的代理服务客户端采集的测试工具的第一参数和与测试工具连接的被测设备的第二参数;其中,第一参数为测试工具的操作系统的版本信息,第二参数为被测设备的软硬件版本号。
步骤202,根据第一参数和第二参数在动态数据库中筛选查询出可复用的函数或脚本。
步骤203,以测试对象、测试动作、测试参数作为关键字词典中的一组关键字,从可复用的函数或脚本中筛选出关键字所需的基础函数或脚本,并将基础函数或脚本封装成脚本模板。
步骤204,接收测试需求,并根据测试需求和脚本模板生成执行脚本。
步骤205,将执行脚本和关键字词典的版本号发送至代理服务客户端,并指示由代理服务客户端解析并执行。
下面以PING函数为例,介绍一下本实施例,其中PING是Windows、Unix和Linux系统下的一个命令。PING也属于一个通信协议,是TCP/IP协议的一部分,利用“PING”命令可以检查网络是否连通,可以很好地帮助用户分析和判定网络故障。其中,应用格式为:Ping空格IP地址。
PING函数的脚本模板如下:
也就是说,当以"xxxx(测试对象)"、PING(测试操作)、IP地址(测试参数)为一组关键字时,从可复用的函数或脚本中筛选出关键字所需的基础函数或脚本,并将基础函数或脚本封装成上述脚本模板。
本发明的上述实施例中,以测试对象、测试动作、测试参数作为关键字词典中的一组关键字,从可复用的函数或脚本中筛选出关键字所需的基础函数或脚本,并将基础函数或脚本封装成脚本模板。也就是说,关键字为关键字词典 的索引,对应的是该组关键字对应的脚本模板;其中,一组(或多组)关键字对应一个脚本模板,一方面使脚本模板的封装更有针对性,提高了测试效率;另一方面提高了动态数据库中的函数或脚本的复用性。
第三实施例
如图3所示,本发明的第三实施例提供了一种基于动态脚本模板的测试方法,应用于测试服务器,该测试方法包括:
步骤301,接收测试工具上的代理服务客户端采集的测试工具的第一参数和与测试工具连接的被测设备的第二参数。其中,第一参数为测试工具的操作系统的版本信息,第二参数为被测设备的软硬件版本号。
步骤302,根据第一参数和第二参数在动态数据库中筛选查询出可复用的函数或脚本。
步骤303,以测试对象、测试动作、测试参数作为关键字词典中的一组关键字,从可复用的函数或脚本中筛选出关键字所需的基础函数或脚本,并将基础函数或脚本封装成脚本模板。
步骤304,将脚本模板发送至代理服务客户端,指示代理服务客户端对脚本模板进行验证并接收代理服务客户端的反馈;
步骤305,若代理服务客户端反馈为验证通过,则将脚本模板存储至脚本模板库;
步骤306,若代理服务客户端反馈为验证不通过,则获取代理反馈的该脚本模板的对应的基础函数或脚本,并重新将基础函数或脚本封装成脚本模板。
步骤307,接收测试需求,并根据测试需求和脚本模板生成执行脚本;
步骤308,将执行脚本和关键字词典的版本号发送至代理服务客户端,并指示由代理服务客户端解析并执行。
参见图9,图9为本发明上述实施例的一个具体场景示意图,其中,当形成关键字词典中的脚本模板之后,将脚本模板与关键字词典(关键字词典用于代理服务客户端进行验证)一起发送至代理服务客户端,指示代理服务客户端对脚本模板进行验证并接收代理服务客户端的反馈;
若理服务客户端反馈为验证通过,则将脚本模板存储至脚本模板库;
若代理服务客户端反馈为验证不通过,则通过若代理服务客户端反馈的脚 本模板的错误代码,查找相应的基础函数或脚本,并重新将基础函数或脚本封装成脚本模板。
本发明的上述实施例中,为测试工具设置了自动校验流程,当脚本模板生成以后,还需要经过代理服务客户端的验证并验证通过时才能存储至脚本模板库中,用于以后的自动化测试;而测试不通过的脚本模板还需重新封装,直至验证通过为止。自动校验流程的设置,避免了功能性问题导致的测试执行失败。本发明的上述实施例中,步骤307具体包括:
接收测试需求并从测试需求中提取包括测试对象、测试动作以及测试参数的测试关键字;
为测试关键字匹配脚本模板库里的脚本模板,并将用户输入的数据嵌入到匹配的脚本模板中,生成执行脚本。
其中,当接收到测试需求时,直接从测试需求中提取测试关键字,并为测试关键字匹配脚本模板库里的脚本模板中,并将用户输入的数据嵌入到匹配的脚本模板中,生成该测试需求的执行脚本。
下面仍以PING函数为例,介绍一下本实施例,当接收到测试需求时,从测试需求中提取到pingAddress.txt、PING以及“1、60、1、F、1、5、32(用户输入的测试参数”的关键字,首先为该组关键匹配脚本模板;再将用户输入的数据嵌入到脚本模板中,生成执行脚本如下:
本发明的上述实施例中,执行人员在向测试服务器中输入包含测试关键字的测试需求即可,测试服务器自动编译执行脚本,无需再通过人工编译,减小了执行人员的工作量以及整个自动化测试过程对执行人员的依赖性。
第四实施例
如图4所示,本发明的第四实施例提供了一种基于动态脚本模板的测试方法,应用于测试服务器,该测试方法包括:
步骤401,接收测试工具上的代理服务客户端采集的测试工具的第一参数和与测试工具连接的被测设备的第二参数;其中,第一参数为测试工具的操作系统的版本信息,第二参数为被测设备的软硬件版本号。
步骤402,根据第一参数和第二参数在动态数据库中筛选查询出可复用的函数或脚本。
步骤403,以测试对象、测试动作、测试参数作为关键字词典中的一组关键字,从可复用的函数或脚本中筛选出关键字所需的基础函数或脚本,并将基础函数或脚本封装成脚本模板。
步骤404,接收测试需求,并根据测试需求和脚本模板生成执行脚本。
步骤405,将执行脚本和关键字词典的版本号发送至代理服务客户端,使代理服务客户端根据关键字词典的版本号获取相应的关键字词典。
步骤406,指示由代理服务客户端根据相应的关键字词典解析并执行执行脚本。
本发明的上述实施例中,将关键字词典的版本号发送至代理服务客户端,目的是为了确保执行脚本的编译过程与解析过程采用的是同一个版本号的关键字词典,确保测试服务端与测试工具之间的信息交互有效,避免执行脚本的解析过程出错,影响测试过程。
第五实施例
参见图5,本发明的第五实施例提供了一种基于动态脚本模板的测试装置, 应用于测试服务器,该测试装置包括:
接收模块501,用于接收测试工具上的代理服务客户端采集的测试工具的第一参数和与测试工具连接的被测设备的第二参数。
筛选模块502,用于根据第一参数和第二参数在动态数据库中筛选查询出可复用的函数或脚本。
封装模块503,用于对函数或脚本利用关键字词典进行映射,并封装成脚本模板。
生成模块504,用于接收测试需求,并根据测试需求和脚本模板生成执行脚本。
发送模块505,用于将执行脚本和关键字词典的版本号发送至代理服务客户端,并指示由代理服务客户端解析并执行。
优选地,该测试装置还包括:
申请接收模块,用于接收测试工具发送的接入申请;
启动模块,用于根据接入申请,向测试工具发送代理服务客户端的安装包,并在测试工具上安装并启动代理服务客户端。
优选地,封装模块具体用于:
以测试对象、测试动作、测试参数作为关键字词典中的一组关键字,从可复用的函数或脚本中筛选出关键字所需的基础函数或脚本,并将基础函数或脚本封装成脚本模板。
优选地,该测试装置还包括:
指示验证模块,用于在封装模块将基础函数封装成脚本模板的步骤之后,
将脚本模板发送至代理服务客户端,指示代理服务客户端对脚本模板进行验证并接收代理服务客户端的反馈:
若代理服务客户端反馈为验证通过,则将脚本模板存储至脚本模板库;
若代理服务客户端反馈为验证不通过,则获取代理反馈的该脚本模板的对应的基础函数或脚本,并重新将基础函数或脚本封装成脚本模板。
优选地,生成模块具体包括:
接收子模块,用于接收测试需求并从测试需求中提取包括测试对象、测试动作以及测试参数的测试关键字;
匹配子模块,用于为测试关键字匹配脚本模板库里的脚本模板,并将用户输入的数据嵌入到匹配的脚本模板中,生成执行脚本。
优选地,发送模块具体包括:
发送子模块,用于将执行脚本和关键字词典的版本号发送至代理服务客户端,使代理服务客户端根据关键字词典的版本号获取相应的关键字词典;
指示子模块,用于指示由代理服务客户端根据相应的关键字词典解析并执行执行脚本。
第六实施例
参见图6,本发明的第六实施例还提供了一种基于动态脚本模板的测试方法,应用于测试工具,该测试方法包括:
步骤601,采集测试工具的第一参数和与测试工具连接的被测设备的第二参数,并将第一参数和第二参数发送给测试服务器。
步骤602,接收测试服务器发送的执行脚本和关键字词典的版本号,并根据测试服务端的执行指示,解析并执行执行脚本,其中执行脚本由测试服务器根据测试需求和脚本模板生成。
优选地,该测试方法还包括:
接收到测试服务端对脚本模板进行验证的验证指示时,对脚本模板进行验证并向测试服务器反馈验证结果。
优选地,接收测试服务器发送的执行脚本和关键字词典的版本号,并根据测试服务端的执行指示,解析并执行执行脚本的步骤,具体包括:
接收测试服务端发送的执行脚本和关键字词典的版本号,根据关键字词典的版本号获取相应的关键字词典;
根据相应的关键字词典解析并执行执行脚本。
第七实施例
参见图7,本发明的第七实施例还提供了一种基于动态脚本模板的测试装置,应用于测试工具,该测试装置包括:
采集模块701,用于采集测试工具的第一参数和与测试工具连接的被测设备的第二参数,并将第一参数和第二参数发送给测试服务器;
执行模块702,用于接收测试服务器发送的执行脚本和关键字词典的版本 号,并根据测试服务端的执行指示,解析并执行执行脚本,其中执行脚本由测试服务器根据测试需求和脚本模板生成。
优选地,该测试装置还包括:
验证模块,用于接收到测试服务端对脚本模板进行验证的验证指示时,对脚本模板进行验证并向测试服务器反馈验证结果。
优选地,执行模块具体包括:
获取子模块,用于接收测试服务端发送的执行脚本和关键字词典的版本号,根据关键字词典的版本号获取相应的关键字词典;
解析子模块,用于根据相应的关键字词典解析并执行执行脚本。
需要说明的是,本发明实施例提供的基于动态脚本模板的测试装置是应用上述方法的装置,即上述方法的所有实施例均适用于该装置,且均能达到相同或相似的有益效果。
以上所述是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明所述原理的前提下,还可以作出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。