CN108205494A - 一种自动化测试方法和装置 - Google Patents
一种自动化测试方法和装置 Download PDFInfo
- Publication number
- CN108205494A CN108205494A CN201611187669.1A CN201611187669A CN108205494A CN 108205494 A CN108205494 A CN 108205494A CN 201611187669 A CN201611187669 A CN 201611187669A CN 108205494 A CN108205494 A CN 108205494A
- Authority
- CN
- China
- Prior art keywords
- file
- compiling
- test
- test case
- source file
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3688—Test management for test execution, e.g. scheduling of test suites
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3684—Test management for test design, e.g. generating new test cases
Abstract
本发明公开了一种自动化测试方法和装置。该方法包括:获取需要编译的测试用例的源文件,并对获取到的源文件进行动态编译,生成测试用例的编译文件;创建加载器加载所述编译文件,并将所述加载器设定为当前运行线程的上下文类加载器;设置测试框架的配置文件,使测试框架根据所述上下文类加载器进行类反射获取测试用例的编译文件,以根据测试用例的编译文件进行自动化测试。本发明为测试框架在运行中动态执行最新测试用例提供了手段,使最新测试用例可以即时性加入到正在运行中的测试项目中,无需重新编译测试项目,也不需重启当前测试项目,大大提升了项目的自动化测试效率。
Description
技术领域
本发明涉及软件测试技术领域,特别涉及一种自动化测试方法和装置。
背景技术
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(JavaDevelopment 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,用于设置测试框架的配置文件,使测试框架根据设定的上下文类加载器进行类反射获取测试用例的编译文件,以根据测试用例的编译文件进行自动化测试。
本实施例通过对需要编译的测试用例的源文件进行动态编译,以及通过修改当前运行线程的上下文类加载器使测试框架可以获取到动态加载的测试用例的编译文件,为测试框架在运行中动态执行最新测试用例提供了手段,使最新测试用例可以即时性加入到正在运行中的测试项目中,无需重新编译测试项目,也不需重启当前测试项目,大大提升了项目的自动化测试效率。
本发明装置实施例的各单元的具体工作方式可以参见本发明的方法实施例。
为了便于清楚描述本发明实施例的技术方案,在发明的实施例中,采用了“第一”、“第二”等字样对功能和作用基本相同的相同项或相似项进行区分,本领域技术人员可以理解“第一”、“第二”等字样并不对数量和执行次序进行限定。
以上所述,仅为本发明的具体实施方式,在本发明的上述教导下,本领域技术人员可以在上述实施例的基础上进行其他的改进或变形。本领域技术人员应该明白,上述的具体描述只是更好的解释本发明的目的,本发明的保护范围应以权利要求的保护范围为准。
Claims (10)
1.一种自动化测试方法,其特征在于,所述方法包括:
获取需要编译的测试用例的源文件,并对获取到的源文件进行动态编译,生成测试用例的编译文件;
创建加载器加载所述编译文件,并将所述加载器设定为当前运行线程的上下文类加载器;
设置测试框架的配置文件,使测试框架根据所述上下文类加载器进行类反射获取测试用例的编译文件,以根据测试用例的编译文件进行自动化测试。
2.根据权利要求1所述的方法,其特征在于,所述获取测试用例的源文件,并对获取到的源文件进行动态编译包括:
获取需要编译的测试用例的源文件的完整路径,使用File类获得该完整路径对应的测试用例源文件,并使用File类缓存获取到的每个测试用例的源文件;
判断缓存的每个测试用例的源文件是否存在对应的编译文件,若存在,则移出该编译文件;
创建编译程序,并设定相应的编译参数,对每个测试用例的源文件进行动态编译。
3.根据权利要求2所述的方法,其特征在于,根据下述方法判断缓存的每个测试用例源文件是否存在编译文件:
判断是否存在与测试用例的源文件的名称相同的编译文件,若存在,则移出所述编译文件。
4.根据权利要求2所述的方法,其特征在于,所述编译参数包括类环境信息集合器INameEnvironment、异常处理器IErrorHandlingPolicy、编译参数集合类CompilerOptions、编译结果处理类ICompilerRequestor。
5.根据权利要求1-4任一项所述的方法,其特征在于,所述方法包括:调用编辑器eclipse的Java开发工具JDT对获取到的测试用例的源文件进行动态编译。
6.一种自动化测试装置,其特征在于,该装置包括:
动态编译单元,用于获取需要编译的测试用例的源文件,并对获取到的源文件进行动态编译,生成测试用例的编译文件;
加载单元,用于创建加载器加载所述编译文件,并将所述加载器设定为当前线程的上下文类加载器;
设置单元,用于设置测试框架的配置文件,使测试框架根据设定的上下文类加载器进行类反射获取测试用例的编译文件,以根据测试用例的编译文件进行自动化测试。
7.根据权利要求6所述的装置,其特征在于,所述动态编译单元包括:
获取模块,用于获取需要编译的测试用例的源文件的完整路径,使用File类获得该完整路径对应的测试用例源文件,并使用File类缓存获取到的每个测试用例的源文件;
判断模块,用于判断缓存的每个测试用例的源文件是否存在编译文件,若存在,则移出该编译文件;
编译模块,用于创建编译程序,并设定相应的编译参数,对每个测试用例的源文件进行动态编译。
8.根据权利要求7所述的装置,其特征在于,所述判断模块,具体用于判断是否存在与测试用例的源文件的名称相同的编译文件,若存在,则移出所述编译文件。
9.根据权利要求7所述的装置,其特征在于,所述编译参数包括类环境信息集合器INameEnvironment、异常处理器IErrorHandlingPolicy、编译参数集合类CompilerOptions、编译结果处理类ICompilerRequestor。
10.根据权利要求6-9任一项所述的装置,其特征在于,所述动态编译单元调用编辑器eclipse的Java开发工具JDT对获取到的测试用例的源文件进行动态编译。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611187669.1A CN108205494A (zh) | 2016-12-20 | 2016-12-20 | 一种自动化测试方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611187669.1A CN108205494A (zh) | 2016-12-20 | 2016-12-20 | 一种自动化测试方法和装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN108205494A true CN108205494A (zh) | 2018-06-26 |
Family
ID=62603661
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201611187669.1A Pending CN108205494A (zh) | 2016-12-20 | 2016-12-20 | 一种自动化测试方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108205494A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113190466A (zh) * | 2021-06-08 | 2021-07-30 | 科东(广州)软件科技有限公司 | 自动化测试方法、装置、设备及介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050071831A1 (en) * | 2003-09-26 | 2005-03-31 | International Business Machines Corporation | Method for computer program optimization in a dynamic compilation environment |
CN104793961A (zh) * | 2015-05-10 | 2015-07-22 | 黄伟 | 使用原生Web代码的快速JavaWeb开发方法及系统 |
CN105975397A (zh) * | 2016-07-18 | 2016-09-28 | 浪潮(北京)电子信息产业有限公司 | 一种基于TestNG的集成测试方法及系统 |
CN106201862A (zh) * | 2015-05-25 | 2016-12-07 | 阿里巴巴集团控股有限公司 | web服务压力测试方法及装置 |
-
2016
- 2016-12-20 CN CN201611187669.1A patent/CN108205494A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050071831A1 (en) * | 2003-09-26 | 2005-03-31 | International Business Machines Corporation | Method for computer program optimization in a dynamic compilation environment |
CN104793961A (zh) * | 2015-05-10 | 2015-07-22 | 黄伟 | 使用原生Web代码的快速JavaWeb开发方法及系统 |
CN106201862A (zh) * | 2015-05-25 | 2016-12-07 | 阿里巴巴集团控股有限公司 | web服务压力测试方法及装置 |
CN105975397A (zh) * | 2016-07-18 | 2016-09-28 | 浪潮(北京)电子信息产业有限公司 | 一种基于TestNG的集成测试方法及系统 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113190466A (zh) * | 2021-06-08 | 2021-07-30 | 科东(广州)软件科技有限公司 | 自动化测试方法、装置、设备及介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108073400A (zh) | 软件自动化构建方法、服务器及存储介质 | |
CN103577324B (zh) | 移动应用中隐私信息泄露的静态检测方法 | |
CN104281518B (zh) | 终端应用测试方法、装置、系统、平台及移动终端 | |
CN106407100A (zh) | 一种实现持续集成测试的方法及装置 | |
Ghafari et al. | Automatically identifying focal methods under test in unit test cases | |
US8677316B2 (en) | Enforcement of architectural design during software development | |
CN107463500A (zh) | 测试脚本的调试方法、介质、系统和计算设备 | |
US20130054923A1 (en) | Automatic memory leak detection | |
CN110457211A (zh) | 脚本性能测试方法、装置和设备及计算机存储介质 | |
CN103186463B (zh) | 确定软件的测试范围的方法和系统 | |
CN106354638A (zh) | 基于词法分析的自动测试方法及装置 | |
CN112732561A (zh) | 一种项目部署方法、装置、计算机设备和存储介质 | |
Felderer et al. | A tool-based methodology for system testing of service-oriented systems | |
CN103942140A (zh) | 一种测试程序自动转换方法 | |
CN108205494A (zh) | 一种自动化测试方法和装置 | |
Perez et al. | Generating predicate callback summaries for the android framework | |
CN108897678B (zh) | 静态代码检测方法和静态代码检测系统、存储设备 | |
CN102521135B (zh) | 线性系统的测试方法和装置 | |
CN104375932A (zh) | 一种Java卡代码覆盖率分析方法和装置 | |
WO2013152576A1 (zh) | 一种远程控制自动化工具的实现方法 | |
Chittimalli et al. | GEMS: a generic model based source code instrumentation framework | |
CN108829577A (zh) | 一种应用程序性能的自动化测试方法 | |
CN101937389A (zh) | 一种让代码分析工具获取被检测软件包编译过程的方法 | |
CN107509215A (zh) | 一种无线认证自动化测试方法及系统 | |
CN101296462A (zh) | 一种移动终端软件自动测试的批量执行的方法及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
CB02 | Change of applicant information |
Address after: Room 818, 8 / F, 34 Haidian Street, Haidian District, Beijing 100080 Applicant after: BEIJING ULTRAPOWER SOFTWARE Co.,Ltd. Address before: 100089 Beijing city Haidian District wanquanzhuang Road No. 28 Wanliu new building 6 storey block A Room 601 Applicant before: BEIJING ULTRAPOWER SOFTWARE Co.,Ltd. |
|
CB02 | Change of applicant information | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20180626 |
|
RJ01 | Rejection of invention patent application after publication |