一种自动化测试方法和装置与流程

文档序号:14784974发布日期:2018-06-27 22:08阅读:153来源:国知局
一种自动化测试方法和装置与流程

本发明涉及软件测试技术领域,特别涉及一种自动化测试方法和装置。



背景技术:

TestNG即Testing Nest Generation,下一代测试技术,是一套根据JUnit和NUnit思想构建的利用注释来强化测试功能的一个测试框架,TestNG既可以用来做单元测试,也可以用来做集成测试。

传统的TestNG使用方法是创建TestNG测试项目,编写好TestNG测试类,然后编译TestNG项目执行测试。这种传统的TestNG测试方法有较为明显的缺点:

如果要修改或增加TestNG测试类,就要重新编译项目,正在运行中的TestNG项目无法直接执行新用例;如果多人同时编写多个测试用例类,就需要编写用例人员针对自己用例来编译项目;如果多个用例都需执行就需要有人每次整理大家的测试用例进行编译在执行测试,修改一处就需要重新编译,需要反反复复重启项目才可以执行新的用例,从而使多人编写测试用例增加了复杂度,难以维护和同步,使测试变得缓慢不连续,增加了测试成本。



技术实现要素:

鉴于上述问题,根据本发明的一个目的,本发明提供了一种自动化测试方法和装置,以解决现有TestNG测试框架使用方式复杂度高,难以维护和同步,使测试变得缓慢不连续,增加了测试成本的问题。

为达到上述目的,本发明的技术方案是这样实现的:

一方面,本发明提供了一种自动化测试方法,该方法包括:

获取需要编译的测试用例的源文件,并对获取到的源文件进行动态编译,生成测试用例的编译文件;

创建加载器加载所述编译文件,并将所述加载器设定为当前运行线程的上下文类加载器;

设置测试框架的配置文件,使测试框架根据所述上下文类加载器进行类反射获取测试用例的编译文件,以根据测试用例的编译文件进行自动化测试。

另一方面,本发明提供了一种自动化测试装置,该装置包括:

动态编译单元,用于获取需要编译的测试用例的源文件,并对获取到的源文件进行动态编译,生成测试用例的编译文件;

加载单元,用于创建加载器加载所述编译文件,并将所述加载器设定为当前线程的上下文类加载器;

设置单元,用于设置测试框架的配置文件,使测试框架根据设定的上下文类加载器进行类反射获取测试用例的编译文件,以根据测试用例的编译文件进行自动化测试。

本发明实施例的有益效果是:本发明通过对需要编译的测试用例的源文件进行动态编译,以及通过修改当前运行线程的上下文类加载器使测试框架可以获取到动态加载的测试用例的编译文件,为测试框架在运行中动态执行最新测试用例提供了手段,使最新测试用例可以即时性加入到正在运行中的测试项目中,无需重新编译测试项目,也不需重启当前测试项目,大大提升了项目的自动化测试效率。

附图说明

图1为本发明实施例提供的自动化测试方法流程图;

图2为本发明实施例提供的基于JDT和TestNG测试框架的自动化测试方法流程图;

图3为本发明实施例提供的自动化测试装置结构框图。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。

基于传统的TestNG使用方式复杂度高,难以维护和同步,增加测试成本的现状,本发明对需要编译的测试用例的源文件进行动态编译,通过修改当前运行线程的上下文类加载器使测试框架可以获取到动态加载的测试用例的编译文件,进而可利用测试框架加载编译后的测试用例进行自动化测试。

图1为本发明实施例提供的自动化测试方法流程图,如图1所示,该方法包括:

S100,获取需要编译的测试用例的源文件,并对获取到的源文件进行动态编译,生成测试用例的编译文件。

本实施例可通过下述方法获取测试用例的源文件,并对获取到的源文件进行动态编译:

获取需要编译的测试用例的源文件的完整路径,使用File类获得该完整路径对应的测试用例的源文件,并使用File类缓存获取到的每个测试用例的源文件。

判断缓存的每个测试用例的源文件是否存在对应的编译文件,若存在,则移出该编译文件;实现时,可判断是否存在与测试用例的源文件的名称相同的编译文件,若存在,则移出该同名称的编译文件。

创建编译程序,并设定相应的编译参数,对每个测试用例的源文件进行动态编译;在实际应用中,可调用编辑器eclipse的Java开发工具JDT对获取到的测试用例的源文件进行动态编译。

其中,编辑器eclipse是一个开放源代码的、基于Java的可扩展开发平台,就其本身而言,它是一个框架和一组服务,用于通过插件组件构建开发环境。JDT(Java Development Tools)是eclipse提供的一组API,可实现动态编译。

S120,创建加载器加载编译文件,并将加载器设定为当前线程的上下文类加载器。

S140,设置测试框架的配置文件,使测试框架根据上下文类加载器进行类反射获取测试用例的编译文件,以根据测试用例的编译文件进行自动化测试。

本实施例通过对需要编译的测试用例的源文件进行动态编译,以及通过修改当前运行线程的上下文类加载器使测试框架可以获取到动态加载的测试用例的编译文件,为测试框架在运行中动态执行最新测试用例提供了手段;即本实施例通过结合动态编译和上下文类加载器的类反射机制,使最新测试用例可以即时性加入到正在运行中的测试项目中,无需重新编译测试项目,也不需重启当前测试项目,大大提升了项目的自动化测试效率。

本实施例可利用现有开发工具对测试用例的源文件进行动态编译,如利用Java开发工具JDT对待编译的源文件进行动态编译,此时用户侧只需上传测试用例的源文件,Java开发工具JDT即可自动地对上传的源文件进行动态编译,无需用户执行编译操作,有效地节省了测试成本。

为详细说明本实施例的自动化测试方法,下面通过一个具体实现方案进行说明。

在本实现方案中,利用Java平台,并基于Java开发工具JDT和TestNG测试框架进行自动化测试,图2为本实施例提供的基于JDT和TestNG测试框架的自动化测试方法流程图,如图2所示,自动化测试流程如下:

S200,获取测试用例的.java文件,并动态编译成.class文件。

具体的,获取测试用例的.java文件(即源文件)的完整路径,使用File类获得该完整路径对应的.java文件,并使用File类缓存获取到的每个.java文件;

根据缓存的每个.java文件的名称判断当前是否存在同名称的.class文件(即编译文件),若存在,则移除该.class文件,以保证最终编译好的.class文件对应最新版本的.java文件(或修改后的.java文件);

创建编译程序,并设定相应的编译参数,对每个.java文件进行动态编译;如创建编译程序Compiler,设定类环境信息集合器INameEnvironment、异常处理器IErrorHandlingPolicy、编译参数集合类CompilerOptions、编译结果处理类ICompilerRequestor等编译参数,调用编译器eclipse的Java开发工具JDT对获取到的测试用例的.java文件进行动态编译,得到编译后的.class文件。

S220,加载编译好的.class文件,执行测试用例。

具体的,创建加载器URLClassLoader加载编译好的.class文件;将java平台上当前运行线程的上下文类加载器修改为已加载了编译文件的加载器URLClassLoader;设定TestNG测试框架的配置文件,使TestNG测试框架根据上下文类加载器进行类反射获取测试用例的编译文件,以根据测试用例的编译文件进行自动化测试。

本具体实现方案通过调用编辑器eclipse的Java开发工具JDT编译Java平台上的测试用例的源文件,通过修改Java平台当前运行线程的上下文类加载器使TestNG测试框架可以获取到动态加载的测试用例.class文件,为TestNG测试框架在运行中动态执行最新测试用例提供了手段,使最新测试用例可以即时性加入到正在运行中的测试项目中,而无需重新编译TestNG项目,也不需重启当前TestNG项目,从而大大提升了项目的自动化测试效率。

基于与上述方法实施例相同的技术构思,本发明实施例还提供了一种自动化测试装置。

图3为本发明实施例提供的自动化测试装置结构框图,如图3所示,该装置包括:动态编译单元31、加载单元32和加载单元32;

动态编译单元31,用于获取需要编译的测试用例的源文件,并对获取到的源文件进行动态编译,生成测试用例的编译文件。

本实施例的动态编译单元31包括:获取模块、判断模块和编译模块;其中,

获取模块,用于获取测试用例的源文件的完整路径,使用File类获得该完整路径对应的测试用例源文件,并使用File类缓存获取到的每个测试用例的源文件;

判断模块,用于判断缓存的每个测试用例的源文件是否存在编译文件,若存在,则移出该编译文件;判断模块具体用于判断是否存在与测试用例的源文件的名称相同的编译文件,若存在,则移出所述编译文件;

编译模块,用于创建编译程序,并设定相应的编译参数,对每个测试用例源文件进行动态编译,所述编译参数包括类环境信息集合器INameEnvironment、异常处理器IErrorHandlingPolicy、编译参数集合类CompilerOptions、编译结果处理类ICompilerRequestor。

在实际应用中,动态编译单元31调用编译器eclipse的Java开发工具JDT对获取到的测试用例的源文件进行动态编译。

加载单元32,用于创建加载器加载编译文件,并将加载器设定为当前运行线程的上下文类加载器。

设置单元33,用于设置测试框架的配置文件,使测试框架根据设定的上下文类加载器进行类反射获取测试用例的编译文件,以根据测试用例的编译文件进行自动化测试。

本实施例通过对需要编译的测试用例的源文件进行动态编译,以及通过修改当前运行线程的上下文类加载器使测试框架可以获取到动态加载的测试用例的编译文件,为测试框架在运行中动态执行最新测试用例提供了手段,使最新测试用例可以即时性加入到正在运行中的测试项目中,无需重新编译测试项目,也不需重启当前测试项目,大大提升了项目的自动化测试效率。

本发明装置实施例的各单元的具体工作方式可以参见本发明的方法实施例。

为了便于清楚描述本发明实施例的技术方案,在发明的实施例中,采用了“第一”、“第二”等字样对功能和作用基本相同的相同项或相似项进行区分,本领域技术人员可以理解“第一”、“第二”等字样并不对数量和执行次序进行限定。

以上所述,仅为本发明的具体实施方式,在本发明的上述教导下,本领域技术人员可以在上述实施例的基础上进行其他的改进或变形。本领域技术人员应该明白,上述的具体描述只是更好的解释本发明的目的,本发明的保护范围应以权利要求的保护范围为准。

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