一种单元测试案例自动化录制和执行方法及装置制造方法及图纸

技术编号:24352879 阅读:47 留言:0更新日期:2020-06-03 01:57
本发明专利技术实施例提供一种单元测试案例自动化录制和执行方法及装置,该录制方法包括:获取Test方法的入参值和出参值;将所述Test方法的入参值和出参值放入DumpInfo对象数组中进行序列化,生成测试案例并保存所述测试案例。该执行方法包括:读取测试案例,反序列化DumpInfo对象数组,得到Test方法的入参值;根据所述Test方法的入参值反射执行所述Test方法。本发明专利技术实施例提供的单元测试案例自动化录制和执行方法及装置,在不侵入应用代码的前提下,通过代码路径或实现类、实现方法的配置,实现在程序运行时动态捕捉到方法的出入参进行案例录制,并实现录制案例的自动化执行。

A method and device for automatic recording and execution of unit test cases

【技术实现步骤摘要】
一种单元测试案例自动化录制和执行方法及装置
本专利技术涉及数据加密解密领域,尤其涉及一种单元测试案例自动化录制和执行方法及装置。
技术介绍
为快速响应市场变化,目前很多公司采用敏捷开发模式,实现快速迭代,为保证迭代质量,迭代过程中通过单元测试、接口测试和集成测试等提升交付质量,其中单元测试作为第一道关口必不可少,否则会导致问题延迟到应用编译发布完成后才发现,此时需要代码修复后重新编译发布,时间成本较高,BUG暴露的越晚成本越高。目前市场上与很多成熟的单元测试框架,如Junit、TestNG等,也有很多的Mock框架如PowerMock、EasyMock等来实现单元测试时的环境隔离,使用该类框架需要测试人员或开发人员分析接口方法逻辑,并手工编写单元测试案例,为保证案例有效性,涉及到资源访问或其它业务逻辑层需要进行模拟mock,案例执行情况也需要人工发起后进行结果分析判断,人力和时间成本较高。为此,很多公司采用自动化的手段实现单元测试案例的编写和执行,以节约开发时间和开发成本,提升测试效率。一种方法是通过预设的单元测试标准,分析源代码结构,根据分析的出入参参数类型进行参数构造,从而生成单元测试案例。另一种方法是通过针对测试数据库进行模拟mock以得到mockAPI,生成包括所述mockAPI的嵌入式关系型数据库,当需要对被测单元进行单元测试时,采用所述嵌入式关系型数据库包括的所述mockAPI对所述被测单元进行单元测试。现有的单元测试案例录制和执行技术存在如下缺陷:单元测试案例自动生成方法还是基于静态代码进行分析,根据预设规则进行参数构造,该方法具有很多的局限性,如java具有多态性,对象需要在程序运行时才能准确判断,通过静态代码分析无法确定;该方法最终生成的只是测试单元的出入参,如果方法内部的判断逻辑和出入参无关,如查询配置表或读取配置文件或调用其它方法等,则该部分逻辑无法完成100%覆盖;针对出参或入参为复杂对象类型的测试单元,需要对象同步提供get和set方法,否则无法完成参数构造;测试单元中某些条件判断如果写法上是直接调用其他方法,根据方法返回结果进行判断,则需要一直分析到最底层方法,一方面会导致效率低下,另一方面,如果底层方法是第三方工具类中的方法,则无法进行分析构造。
技术实现思路
本专利技术实施例为克服上述技术缺陷,提供一种单元测试案例自动化录制和执行方法及装置。第一方面,本专利技术实施例提供一种单元测试案例自动化录制方法,包括:获取Test方法的入参值和出参值;将所述Test方法的入参值和出参值放入DumpInfo对象数组中进行序列化,生成测试案例并保存所述测试案例。第二方面,本专利技术实施例提供一种单元测试案例自动化执行方法,包括:读取测试案例,反序列化DumpInfo对象数组,得到Test方法的入参值;根据所述Test方法的入参值反射执行所述Test方法。第三方面,本专利技术实施例提供一种单元测试案例自动化录制装置,包括:获取单元,用于获取Test方法的入参值和出参值;录制单元,用于将所述Test方法的入参值和出参值放入DumpInfo对象数组中进行序列化,生成测试案例并保存所述测试案例。第四方面,本专利技术实施例提供一种单元测试案例自动化执行装置,包括:读取单元,用于读取测试案例,反序列化DumpInfo对象数组,得到Test方法的入参值;执行单元,用于根据所述Test方法的入参值反射执行所述Test方法。第五方面,本专利技术实施例提供一种电子设备,包括存储器和处理器,所述处理器和所述存储器通过总线完成相互间的通信;所述存储器存储有可被所述处理器执行的程序指令,所述处理器调用所述程序指令能够执行如第一方面或二方面所述的方法。第六方面,本专利技术实施例提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如第一方面或二方面所述的方法。本专利技术实施例提供的一种单元测试案例自动化录制和执行方法及装置,弥补了现有单元测试案例需要人工编写的不足,在不侵入应用代码的前提下,通过代码路径或实现类、实现方法的配置,实现在程序运行时动态捕捉到方法的出入参进行案例录制,并实现录制案例的重放以及自动化执行。特别是针对存量代码,在不对代码进行侵入的前提下,可通过该方式不断积累案例,提升单元测试覆盖率;同时,结合持续集成,将单元测试案例的执行和覆盖率判断作为持续集成的必要步骤,以保证交付到测试环境的代码质量。附图说明图1为本专利技术实施例提供的一种单元测试案例自动化录制方法的流程示意图;图2为本专利技术实施例提供的单元测试案例录制过程示意图;图3为本专利技术实施例提供的一种单元测试案例自动化执行方法的流程示意图;图4为本专利技术实施例提供的单元测试案例执行过程示意图;图5为本专利技术实施例提供的一种单元测试案例自动化录制装置的结构示意图;图6为本专利技术实施例提供的一种单元测试案例自动化执行装置的结构示意图;图7为本专利技术实施例提供的一种电子设备的实体结构示意图。具体实施方式为使本专利技术的目的、技术方案和优点更加清楚,下面将结合本专利技术实施例中的附图,对本专利技术中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本专利技术的一部分实施例,而不是全部的实施例。基于本专利技术中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本专利技术保护的范围。图1为本专利技术实施例提供的一种单元测试案例自动化录制方法的流程示意图,如图1所示,包括:步骤11,获取Test方法的入参值和出参值;步骤12,将所述Test方法的入参值和出参值放入DumpInfo对象数组中进行序列化,生成测试案例并保存所述测试案例。首先介绍一下录制与执行均要使用到的一个JavaBean——DumpInfo,每个DumpInfo对象代表一个方法的入参数数据或者出参数据,一对DumpInfo对象即记录了一个方法的完整数据。Test方法即被测试方法,本专利技术实施例提供的方法是为了实现不影响应用运行的前提下,在运行时动态获取到Test方法的出入参,序列化后进行保存。在Test方法开始处添加一段代码,用于获取Test方法的入参类型和入参值,将数据放入DumpInfo对象数组中并进行序列化后存入文件。在Test方法结束前添加一段代码,用于获取Test方法的出参类型和出参值。进行上述修改后,在类文件被加载方法被执行后,会执行到添加的代码,并将获取到的数据作为一个测试案例存入文件。本专利技术实施例提供的单元测试案例自动化录制方法,弥补了现有单元测试案例需要人工编写的不足,在不侵入应用代码的前提下,通过代码路径或实现类、实现方法的配置,实现在程序运行时动态捕捉到方法的出入参进行测试案例录制,特别是针对存量代码,在不对代码进行侵入的前提下,可通过该方式不断积累测试案例,提升单元测试覆盖率。在上述实施例的基础上,若所本文档来自技高网
...

【技术保护点】
1.一种单元测试案例自动化录制方法,其特征在于,包括:/n获取Test方法的入参值和出参值;/n将所述Test方法的入参值和出参值放入DumpInfo对象数组中进行序列化,生成测试案例并保存所述测试案例。/n

【技术特征摘要】
1.一种单元测试案例自动化录制方法,其特征在于,包括:
获取Test方法的入参值和出参值;
将所述Test方法的入参值和出参值放入DumpInfo对象数组中进行序列化,生成测试案例并保存所述测试案例。


2.根据权利要求1所述的方法,其特征在于,若所述Test方法中调用了Mock方法,所述方法还包括:
获取所述Mock方法的入参值和出参值;
根据调用顺序将所述Mock方法的入参值和出参值放入所述DumpInfo对象数组中进行序列化,保存到所述测试案例中。


3.根据权利要求1或2所述的方法,其特征在于,在所述生成测试案例之后,保存所述测试案例之前,所述方法还包括:
基于MD5算法,根据所述Test方法的入参值HashCode和所述Test方法的出参值HashCode获取所述测试案例的摘要;
根据所述测试案例的摘要查找已保存的案例中,是否存在与所述测试案例的摘要一致的案例,若存在,则不进行重复保存;
若不存在与所述测试案例的摘要一致的案例,获取所述Test方法的布尔数组,所述Test方法的布尔数组用于表示所述Test方法的分支覆盖情况;
将所述Test方法的布尔数组与已保存的案例的布尔数组比对,若一致,则所述测试案例不进行保存,其中所述已保存的案例的布尔数组用于表示所述已保存的案例对应的方法的分支覆盖情况。


4.一种单元测试案例自动化执行方法,其特征在于,包括:
读取测试案例,反序列化DumpInfo对象数组,得到Test方法的入参值;
根据所述Test方法的入参值反射执行所述Test方法。

【专利技术属性】
技术研发人员:徐健
申请(专利权)人:中国移动通信集团上海有限公司中国移动通信集团有限公司
类型:发明
国别省市:上海;31

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1