一种用于测试脚本的离线调试方法及装置与流程

文档序号:16627959发布日期:2019-01-16 06:17阅读:269来源:国知局
一种用于测试脚本的离线调试方法及装置与流程

本申请涉及系统测试领域,具体涉及一种用于测试脚本的离线调试方法,同时涉及一种用于测试脚本的离线调试装置。



背景技术:

目前智能设备的需求越来越多、系统功能越来越复杂,为确保由智能设备组成的智能化系统正确和可靠的运行,需要投入巨大的测试工作量,自动化测试因而被应用到测试工作中,提高测试效率。

使用自动化技术进行测试需要开发相应的自动化测试脚本,而在测试脚本调试的过程中,需要与智能设备进行不断的交互,所以就需要开启被测试的智能设备,一旦离开被测试的智能设备,那么调试测试脚本的过程,就无法进行,增加了测试环境的依赖性,而且如果智能化系统中的智能设备较多,那么在测试脚本的调试阶段,会浪费很多的资源,例如,电能、网络资源等。

因此,从现有技术可以看出,在智能化系统的自动化测试过程中,测试脚本的调试过程依赖于测试环境,而且在测试脚本的调试过程中,会造成资源的浪费。



技术实现要素:

本申请提供一种用于测试脚本的离线调试方法,以解决在智能化系统的自动化测试过程中,测试脚本的调试过程依赖于测试环境,而且在测试脚本的调试过程中,会造成资源的浪费的问题。

本申请提供的一种用于测试脚本的离线调试方法,包括:

获取被测试系统的程序接口;

将所述程序接口进行封装或重构,模拟被测试系统的程序接口的功能;

测试脚本在离线调试环境下调用所述被测试系统的程序接口时,则将所述调用指向封装或重构的程序接口,并接收所述封装或重构的程序接口的返回值;

若所述测试脚本的预期值与所述封装或重构的程序接口的返回值不同,则修改所述测试脚本。

优选的,在修改所述测试脚本的步骤之后,还包括:

在离线调试环境下对修改后的测试脚本进行调试。

优选的,在接收所述封装或重构的程序接口的返回值的步骤之后,还包括:

若所述测试脚本的预期值与所述封装或重构的程序接口的返回值相同,则所述测试脚本调试通过,保存所述测试脚本;

将保存的测试脚本迁移至真实测试环境。

优选的,使用lua脚本语言开发所述测试脚本。

优选的,所述测试脚本包括:仿真函数代码段、通用代码段、业务代码段以及执行代码段。

优选的,所述仿真函数代码段对应仿真函数模块、通用代码段对应通用模块、业务代码段对应业务模块、执行代码段对应执行模块。

优选的,所述将所述程序接口进行封装或重构的步骤之后,还包括:将所述封装或重构的程序接口的名称与所述被测试系统的程序接口的名称命名为相同的名称。

优选的,所述测试脚本在离线调试环境下调用所述被测试系统的程序接口,则指向封装或重构的程序接口,包括:

所述测试脚本在离线调试环境下调用所述被测试系统的程序接口,根据所述程序接口的名称,指向封装或重构的程序接口。

优选的,所述将封装或重构的所述程序接口的名称与被测试系统的程序接口的名称命名为相同的名称,用于所述测试脚本通过程序接口的名称在离线调试环境下调用所述封装或重构的程序接口;将保存的测试脚本迁移至真实测试环境后,所述测试脚本通过所述程序接口的名称,调用真实测试环境下的所述程序接口。

优选的,所述若所述测试脚本的预期值与所述封装后重构的程序接口的返回值不同,则确定所述测试脚本调试不通过。

与测试脚本的离线调试方法相对应的,本申请同时提供一种用于测试脚本的调试装置,包括;

程序接口获取单元,用于获取被测试系统的程序接口;

封装或重构单元,用于将所述程序接口进行封装或重构,模拟被测试系统的程序接口的功能;

离线调试单元,用于测试脚本在离线调试环境下调用所述被测试系统的程序接口时,则将所述调用指向封装或重构的程序接口,并接收所述封装或重构的程序接口的返回值;

返回值比较单元,用于若所述测试脚本的预期值与所述封装或重构的程序接口的返回值不同,则修改所述测试脚本。

优选的,还包括:

离线调试子单元,用于在离线调试环境下对修改后的测试脚本进行调试。

优选的,还包括:

保存单元,用于若所述测试脚本的预期值与所述封装或重构的程序接口的返回值相同,则所述测试脚本调试通过,保存所述测试脚本;

迁移单元,用于将保存的测试脚本迁移至真实测试环境。

优选的,包括:

测试脚本语言确定子单元,用于使用lua脚本语言开发所述测试脚本。

优选的,包括:

代码段分析子单元,用于对所述测试脚本的代码段进行分析,分析后的所述测试脚本包括:仿真函数代码段、通用代码段、业务代码段以及执行代码段。

优选的,包括:

代码段与模块对应子单元,用于将代码段对应相应模块,所述仿真函数代码段对应仿真函数模块、通用代码段对应通用模块、业务代码段对应业务模块、执行代码段对应执行模块。

优选的,还包括:

命名子单元,用于将所述封装或重构的程序接口的名称与所述被测试系统的程序接口的名称命名为相同的名称。

优选的,所述离线调试单元,包括:

程序接口调用子单元,用于所述测试脚本在离线调试环境下调用所述被测试系统的程序接口,根据所述程序接口的名称,指向封装或重构的程序接口。

优选的,所述命名子单元,包括:

离线调用子单元,用于将封装或重构的所述程序接口的名称与被测试系统的程序接口的名称命名为相同的名称,用于所述测试脚本通过程序接口的名称在离线调试环境下调用所述封装或重构的程序接口;

在线调用子单元,用于将保存的测试脚本迁移至真实测试环境后,所述测试脚本通过所述程序接口的名称,调用真实测试环境下的所述程序接口。

优选的,还包括:

返回值比较子单元,用于所述若所述测试脚本的预期值与所述封装后重构的程序接口的返回值不同,则确定所述测试脚本调试不通过。

与现有技术相比,本申请提供的一种用于测试脚本的离线调试方法,通过将被测试系统的程序接口进行封装或重构,模拟被测试系统的程序接口的功能,测试脚本在离线调试环境下调用被测试系统的接口时,则指向封装或重构的程序接口,并接收封装或重构的程序接口的返回值,然后进一步进行调试,解决了在智能化系统的自动化测试过程中,测试脚本的调试过程依赖于测试环境,而且在测试脚本的调试过程中,会造成资源的浪费的问题。

附图说明

图1是本申请实施例提供的一种用于测试脚本的离线调试方法示意图;

图2是本申请实施例涉及的在线测试脚本用例构成示意图;

图3是本申请实施例涉及的离线测试脚本用例构成示意图;

图4是本申请实施例涉及的测试脚本转换流程图;

图5是本申请实施例提供的用于测试脚本的离线调试装置示意图。

具体实施方式

在下面的描述中阐述了很多具体细节以便于充分理解本申请。但是本申请能够以很多不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本申请内涵的情况下做类似推广,因此本申请不受下面公开的具体实施的限制。

请参看图1,图1是本申请实施例提供的一种用于测试脚本的离线调试方法示意图,下面结合图1进行详细说明。

步骤s101,获取被测试系统的程序接口。

应用程序编程接口,简称api,是一些预先定义的函数,目的是提供应用程序与开发人员基于某些软件或硬件访问一组程序的能力,而又无需访问程序源码,或理解程序内部的工作机制。一般情况下,应用程序编程接口,可以简称为程序接口,所以接下来在本申请中,都将应用程序编程接口称为程序接口。

应用系统进入测试阶段后,通过执行测试用例,对系统进行测试,早期的测试工作,都是测试人员手工执行测试用例来完成测试工作的,所以工作效率低,为了提高测试的工作效率,就需要测试人员掌握一定的测过脚本开发能力,将测试用例转换为自动化测试脚本,通过执行自动化测试脚本,快速的输出测试结果,从而提高了测试的工作效率。自动化测试脚本常被简称为测试脚本,在本实施例中提到的测试脚本也是指自动化测试脚本。一些应用系统的测试脚本通过访问被测试系统的程序接口进行测试,所以需要在开发测试脚本时,获取被测试系统的程序接口。在本实施例中,接下来通过例举智能化系统在测试环境不具备,也就是设备不完备的情况下,通过模拟真实设备的程序接口,来完成离线调试测试脚本的过程,那么,第一步就是获取被测试系统的程序接口,也就是智能化设备的程序接口,以供接下来的步骤使用。

步骤s102,将所述程序接口进行封装或重构,模拟被测试系统的程序接口的功能。

在上一个步骤中,获取了被测试系统的程序接口,也就是智能化设备的接口,而在测试环境不具备的情况下,测试脚本直接调用智能化设备的程序接口不能实现与智能化设备的交互,也就不能够完成测试工作,所以,为了实现仿真测试环境,也为了能够在仿真环境下能够更加快速的完成测试工作,这时就需要将智能化设备的程序接口进行封装或重构,使得在离线调试环境下也能够运行这些程序接口。

在将智能化设备的程序接口进行封装或重构完成后,将封装或重构的程序名称与被测试系统的程序接口的名称命名为相同的名称。便于在测试脚本在离线调试环境下调试完成后,进行移植。

步骤s103,测试脚本在离线调试环境下调用被测试系统的程序接口,则将所述调用指向封装或重构的程序接口,并接收所述封装或重构的程序接口的返回值。

测试脚本,一般按功能划分为多个模块,每个模块完成不同的功能,如图2所示,图2为本申请实施例涉及的在线测试脚本用例构成示意图,从图2可以看出在线测试脚本包括:通用模块、业务模块、执行模块。通用模块,一般为每个测试脚本重复使用的方法写入通用模块,例如,被测试的系统都需要先登录,才能够进行其他模块的测试,所以就可以将登录模块作为公用模块,同样的,在执行完测试脚本后,都需要退出系统,所以退出模块也可以作为公用模块。公用模块也可以进行封装或重构,方便每个测试脚本快速的进行调用,减少重复的工作量,提高工作效率。业务模块,就是具体的被测试的不同的业务功能模块。是测试脚本核心模块。执行模块,是运行测试脚本,并输出测试的执行结果。在本步骤中,测试脚本是在离线环境下对智能化设备的程序接口的进行调用,所以测试脚本相对于在线测试环境,就增加了一个仿真函数模块,如图3所示,图3为本申请实施例涉及的离线测试脚本用例构成示意图,那么增加了的这个模块就是用于存放被封装或重构的程序接口。

测试脚本可以采用lua脚本语言进行开发,lua是一个小巧的脚本语言,lua由标准c编写而成,几乎在所有操作系统和平台上都可以编译和运行,所以lua是一种兼容性很强的脚本语言,所以在本申请中,测试脚本具体的可以使用lua脚本语言进行开发。

测试脚本的开发可以分为新建测试脚本和修改测试脚本,不管是新建的还是修改的测试脚本都需要在离线测试环境下进行调试。在离线调试的过程中,测试脚本调用被测试系统的程序接口,而被调用的程序接口,在离线调试环境下,由于没有连接智能化设备而无法进行访问,不过,由于测试脚本对智能化设备的程序接口进行了封装或重构,而且封装或重构后的程序接口的名称与被测试系统的程序接口的名称相同,所以当测试脚本在离线调试环境下通过程序接口名称调用被测试系统的程序接口时,则被指向了封装或重构后的程序接口,同时,测试脚本中封装或重构后的程序接口也会模拟调用被测试系统的程序接口的返回值,所以当测试脚本在离线调试环境下调用被测试系统的程序接口时,则指向封装或重构的程序接口,并接收所述封装或重构的程序接口的返回值。下面例举一个对智能电表的用电信息进行采集的测试。

智能电表的作为一个智能化系统,其功能有通信、电表采集、闭环控制、数据存储等功能,这些软件功能在智能化测试平台上需要配置通信插件接口,虚拟设备插件接口,电源插件接口,人机交互接口,针对这些交互接口实现相关基于lua语言开发离线调试。对通信接口进行函数同名封装或重构,同时能够模拟注入通讯报文带入到用例中运行,报文数据格式和通讯插件返回的数据一致。形式如下:

从上面的代码可以看出,第一部分是用来模拟仿真数据的,第二部分就是对电表的通信接口进行同名封装或重构,当测试脚本在离线调试环境下调用智能电表的程序接口时,则指向了封装或重构后的模拟电表函数,当通过模拟电表函数读取智能电表的用电信息时,这时,就从输入仿真数据模块,读取智能电表的用电信息。这样就在离线调试环境下完成了模拟调用智能设备程序接口的工作,同时也从模拟的程序接口获得了返回值。

步骤s104,若所述测试脚本的预期值与所述封装后重构的程序接口的返回值不同,则修改所述测试脚本。

在上一个步骤的例子中,测试脚本在执行过程中,虽然指向了封装或重构后的程序接口,但是测试脚本的执行过程并没有完成,还需要判断测试是否通过,并输出测试的执行结果。在离线的测试环境下,测试脚本获取了模拟的智能电表的用电信息,但是,并不能代表测试通过,还需要将测试脚本的预期值与封装或重构的程序接口的返回值进行比较,若预期值与封装或重构的程序接口的返回值不一致,还需要对测试脚本进行修改。还是以智能电表的用电信息进行采集的测试为例,若测试脚本中的预期值为包括智能电表的id、采集日期、采集时间与智能电表的用电量,当测试脚本在离线调试环境下执行后,获取的返回值中不包括用电量,则测试脚本不通过,那么接下来对测试脚本进行修改,在测试脚本修改完成后,接着在离线调试环境下对修改后的测试脚本进行调试,当修改后的测试脚本的返回值修复了不能获取电量的缺陷后,测试脚本的预期值与进行封装或重构后的模拟的智能电表的用电信息一致,那么测试脚本离线调试通过,然后将测试脚本进行保存。

离线调试测试完成的脚本,是为了对真实测试环境下的系统进行测试,所以接下来需要对测试脚本进行迁移。离线测试脚本调试环境与在线测试脚本执行环境相似,对比图2和图3就可以看出,离线调试环境下只是比在线调试环境下多了一个仿真函数模块,而通用模块和执行模块也是相同的,所以在迁移过程中,只需要将业务模块的测试脚本进行迁移即可,然后由在线测试环境执行测试脚本。

具体的,测试脚本从生成到离线调试,再从离线调试环境迁移至在线测试环境的流程如图4所示,图4为本申请实施例涉及的测试脚本转换流程图。从图4中可以看出,首先将描述性测试用例在通用编译器平台上转换成测试脚本,然后进行离线调试,测试脚本的生成过程包括:编写时序、编写主业务流程、编写业务处理、模拟数据注入、脚本调试等步骤,在通用编译器平台上测试脚本调试完成后,然后将脚本移植入库,接着测试用例执行在线调试审核,如果在线高度审核通过,那么就在自动化测试平台上运行,对系统进行测试。

本申请实施例同时提供一种用于测试脚本的离线调试装置,如图5所示,图5为本申请实施例提供的用于测试脚本的离线调试装置示意图。本申请提供的一种用于测试脚本的离线调试装置500,其特征在于,包括:

程序接口获取单元501,用于获取被测试系统的程序接口;

封装或重构单元502,用于将所述程序接口进行封装或重构,模拟被测试系统的程序接口的功能;

离线调试单元503,用于测试脚本在离线调试环境下调用所述被测试系统的程序接口时,则将所述调用指向封装或重构的程序接口,并接收所述封装或重构的程序接口的返回值;

返回值比较单元504,用于若所述测试脚本的预期值与所述封装或重构的程序接口的返回值不同,则修改所述测试脚本。

可选的,还包括:

离线调试子单元,用于在离线调试环境下对修改后的测试脚本进行调试。

可选的,还包括:

保存单元,用于若所述测试脚本的预期值与所述封装或重构的程序接口的返回值相同,则所述测试脚本调试通过,保存所述测试脚本;

迁移单元,用于将保存的测试脚本迁移至真实测试环境。

可选的,包括:

测试脚本语言确定子单元,用于使用lua脚本语言开发所述测试脚本。

可选的,包括:

代码段分析子单元,用于对所述测试脚本的代码段进行分析,分析后的所述测试脚本包括:仿真函数代码段、通用代码段、业务代码段以及执行代码段。

可选的,包括:

代码段与模块对应子单元,用于将代码段对应相应模块,所述仿真函数代码段对应仿真函数模块、通用代码段对应通用模块、业务代码段对应业务模块、执行代码段对应执行模块。

可选的,还包括:

命名子单元,用于将所述封装或重构的程序接口的名称与所述被测试系统的程序接口的名称命名为相同的名称。

可选的,所述离线调试单元,包括:

程序接口调用子单元,用于所述测试脚本在离线调试环境下调用所述被测试系统的程序接口,根据所述程序接口的名称,指向封装或重构的程序接口。

可选的,所述命名子单元,包括:

离线调用子单元,用于将封装或重构的所述程序接口的名称与被测试系统的程序接口的名称命名为相同的名称,用于所述测试脚本通过程序接口的名称在离线调试环境下调用所述封装或重构的程序接口;

在线调用子单元,用于将保存的测试脚本迁移至真实测试环境后,所述测试脚本通过所述程序接口的名称,调用真实测试环境下的所述程序接口。

可选的,还包括:

返回值比较子单元,用于若所述测试脚本的预期值与所述封装后重构的程序接口的返回值不同,则确定所述测试脚本调试不通过。

本申请虽然实施例公开如上,但其并不是用来限定本申请,任何本领域技术人员在不脱离本申请的精神和范围内,都可以做出可能的变动和修改,因此本申请的保护范围应当以本申请权利要求所界定的范围为准。

在一个典型的配置中,计算设备包括一个或多个处理器(cpu)、输入/输出接口、网络接口和内存。

内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(ram)和/或非易失性内存等形式,如只读存储器(rom)或闪存(flashram)。内存是计算机可读介质的示例。

1、计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(pram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、快闪记忆体或其他内存技术、只读光盘只读存储器(cd-rom)、数字多功能光盘(dvd)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括非暂存电脑可读媒体(transitorymedia),如调制的数据信号和载波。

2、本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。

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