CN106354624A - 一种自动化测试方法和装置 - Google Patents
一种自动化测试方法和装置 Download PDFInfo
- Publication number
- CN106354624A CN106354624A CN201510425548.5A CN201510425548A CN106354624A CN 106354624 A CN106354624 A CN 106354624A CN 201510425548 A CN201510425548 A CN 201510425548A CN 106354624 A CN106354624 A CN 106354624A
- Authority
- CN
- China
- Prior art keywords
- case
- bytecode
- internal memory
- logical code
- test
- 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.)
- Granted
Links
- 238000012360 testing method Methods 0.000 title claims abstract description 165
- 238000000034 method Methods 0.000 claims abstract description 77
- 239000010813 municipal solid waste Substances 0.000 claims description 37
- 229940104697 arixtra Drugs 0.000 claims description 7
- KANJSNBRCNMZMV-ABRZTLGGSA-N fondaparinux Chemical compound O[C@@H]1[C@@H](NS(O)(=O)=O)[C@@H](OC)O[C@H](COS(O)(=O)=O)[C@H]1O[C@H]1[C@H](OS(O)(=O)=O)[C@@H](O)[C@H](O[C@@H]2[C@@H]([C@@H](OS(O)(=O)=O)[C@H](O[C@H]3[C@@H]([C@@H](O)[C@H](O[C@@H]4[C@@H]([C@@H](O)[C@H](O)[C@@H](COS(O)(=O)=O)O4)NS(O)(=O)=O)[C@H](O3)C(O)=O)O)[C@@H](COS(O)(=O)=O)O2)NS(O)(=O)=O)[C@H](C(O)=O)O1 KANJSNBRCNMZMV-ABRZTLGGSA-N 0.000 claims description 7
- 230000008569 process Effects 0.000 description 19
- 230000009471 action Effects 0.000 description 6
- 230000006870 function Effects 0.000 description 5
- 238000003860 storage Methods 0.000 description 5
- 230000008901 benefit Effects 0.000 description 4
- 230000008859 change Effects 0.000 description 3
- 238000007906 compression Methods 0.000 description 3
- 238000010586 diagram Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 238000002372 labelling Methods 0.000 description 3
- 238000012795 verification Methods 0.000 description 3
- 238000004590 computer program Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000011017 operating method Methods 0.000 description 2
- 238000011076 safety test Methods 0.000 description 2
- 238000000151 deposition Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000007599 discharging Methods 0.000 description 1
- 238000001035 drying Methods 0.000 description 1
- 230000014759 maintenance of location Effects 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 230000010076 replication Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
Landscapes
- Debugging And Monitoring (AREA)
Abstract
本发明实施例提供了一种自动化测试方法和装置,其中的方法具体包括:从数据库中读取字符串形式的用例逻辑代码;在内存中将所述用例逻辑代码编译为字节码;在内存中执行所述字节码,得到对应测试用例的执行结果。本发明实施例能够避免JAVA文件、Class文件等垃圾文件的出现,还能够避免垃圾数据的出现,因此能够节省计算机系统的磁盘空间。
Description
技术领域
本发明涉及测试技术领域,特别是涉及一种自动化测试方法和一种自动化测试装置。
背景技术
目前,随着计算机技术的迅速发展,软件的应用范围越来越广泛,软件结构也越来越复杂,随之对软件的质量要求也越来越高,为了保证软件产品的质量,软件测试特别是自动化测试越来越受到人们的重视。
现有的测试过程具体包括:编写测试用例,该测试用例通常为JAVA文件;将该JAVA文件编译为Class(类)文件;执行该Class文件得到相应的用例执行结果。
由于现有的测试过程中一个测试用例分别对应一个JAVA文件和一个Class文件,这样,测试用例的数目较多时,这些测试用例对应的众多JAVA文件和Class文件需要占用大量的磁盘空间,容易导致磁盘空间不足的现象,从而拖慢计算机的运行速度。
发明内容
鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的自动化测试方法和相应的自动化测试装置。
依据本发明的一个方面,提供了一种自动化测试方法,包括:
从数据库中读取字符串形式的用例逻辑代码;
在内存中将所述用例逻辑代码编译为字节码;
在内存中执行所述字节码,得到对应测试用例的执行结果。
可选地,所述在内存中将所述用例逻辑代码编译为字节码的步骤,包括:
依据所述用例逻辑代码中依赖关键字,获取所述依赖关键字对应关联包的路径;
利用所述路径加载所述关联包,并利用所述关联包在内存中将所述用例逻辑代码编译为字节码。
可选地,所述在内存中执行所述字节码,得到对应测试用例的执行结果的步骤,包括:
通过反射方式执行所述字节代码对应测试用例的入口方法,得到所述测试用例的执行结果。
可选地,所述在内存中执行所述字节码,得到对应测试用例的执行结果的步骤,包括:
将所述字节码加载到JAVA虚拟机中;
对所述字节码进行格式校验;
在所述字节码的格式校验通过后,通过所述JAVA虚拟机将所述字节码解释为机器指令,并执行所述机器指令。
可选地,在所述从数据库中读取字符串形式的用例逻辑代码的步骤之前,所述方法还包括:
通过功能模块显示用例类型对应的应用程序编程接口API;其中,所述用例类型对应的API用于开发所述用例类型对应测试用例的、字符串形式的用例逻辑代码;
接收通过所述用例类型对应的API开发的字符串形式的用例逻辑代码;
将所述字符串形式的用例逻辑代码存储至所述数据库。
可选地,所述方法还包括:
对所述在内存中将所述用例逻辑代码编译为字节码和/或所述在内存中执行所述字节码过程中的JAVA对象进行垃圾回收。
可选地,所述功能模块为插件。
可选地,所述用例类型包括如下类型中的至少一种:web图形用户界面自动化测试、接口自动化测试、安卓应用自动化测试、数据库测试和安全性测试。
依据本发明的另一方面,提供了一种自动化测试装置,包括:
读取模块,用于从数据库中读取字符串形式的用例逻辑代码;
编译模块,用于在内存中将所述用例逻辑代码编译为字节码;及
执行模块,用于在内存中执行所述字节码,得到对应测试用例的执行结果。
可选地,所述编译模块,包括:
路径获取子模块,用于依据所述用例逻辑代码中依赖关键字,获取所述依赖关键字对应关联包的路径;及
加载执行子模块,用于利用所述路径加载所述关联包,并利用所述关联包在内存中将所述用例逻辑代码编译为字节码。
可选地,所述执行模块,包括:
反射执行子模块,用于通过反射方式执行所述字节代码对应测试用例的入口方法,得到所述测试用例的执行结果。
可选地,所述执行模块,包括:
加载子模块,用于将所述字节码加载到JAVA虚拟机中;
校验子模块,用于对所述字节码进行格式校验;
解释执行子模块,用于在所述字节码的格式校验通过后,通过所述JAVA虚拟机将所述字节码解释为机器指令,并执行所述机器指令。
可选地,所述装置还包括:
显示模块,用于在所述从数据库中读取字符串形式的用例逻辑代码之前,通过功能模块显示用例类型对应的应用程序编程接口API;其中,所述用例类型对应的API用于开发所述用例类型对应测试用例的、字符串形式的用例逻辑代码;
接收模块,用于接收通过所述用例类型对应的API开发的字符串形式的用例逻辑代码;
存储模块,用于将所述字符串形式的用例逻辑代码存储至所述数据库。
可选地,所述装置还包括:
垃圾回收模块,用于对所述在内存中将所述用例逻辑代码编译为字节码和/或所述在内存中执行所述字节码过程中的JAVA对象进行垃圾回收。
可选地,所述功能模块为插件。
可选地,所述用例类型包括如下类型中的至少一种:web图形用户界面自动化测试、接口自动化测试、安卓应用自动化测试、数据库测试和安全性测试。
根据本发明的自动化测试方法和装置,将用例逻辑代码以字符串形式保存至数据库,并且,在接收到测试用例的执行指令时,可以从数据库中读取字符串形式的用例逻辑代码,在内存中将所述用例逻辑代码编译为字节码,并在内存中执行所述字节码,得到对应测试用例的执行结果,其具有如下优点:
首先,由于本发明实施例在内存中执行整个自动化测试流程,且自动化测试流程中的用例逻辑代码、字节码等均在内存中出现,因此,相对于现有方案将JAVA文件编译为Class文件,本发明实施例能够避免JAVA文件、Class文件等垃圾文件的出现,还能够避免垃圾数据的出现,因此能够节省计算机系统的磁盘空间;
其次,在执行完每一个测试用例后,可以对该测试用例所占用的内存空间进行回收,以释放该内存空间给其它测试用例,因此,本发明实施例还能够通过及时释放内存空间有效提升计算机系统的运行速度;
再者,本发明实施例可以通过数据库实现各种测试用例的一体性和完整性,这相对于现有方案对于JAVA文件进行管理,增加了测试用例管理的便捷性。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1示出了根据本发明一个实施例的一种自动化测试方法实施例的步骤流程图;
图2示出了根据本发明一个实施例的一种自动化测试方法实施例的步骤流程图;
图3示出了根据本发明一个实施例的一种自动化测试方法实施例的步骤流程图;
图4示出了根据本发明一个实施例的一种自动化测试装置实施例的结构框图;
图5示出了根据本发明一个实施例的一种自动化测试装置实施例的结构框图;以及
图6示出了根据本发明一个实施例的一种自动化测试装置实施例的结构框图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
参照图1,示出了根据本发明一个实施例的一种自动化测试方法实施例的步骤流程图,具体可以包括如下步骤:
步骤101、从数据库中读取字符串形式的用例逻辑代码;
本发明实施例可以应用于软件的自动化测试装置中。相对于现有将JAVA文件编译为Class文件的自动化测试流程,本发明实施例可以将用例逻辑代码以字符串形式保存至数据库,并且,在接收到测试用例的执行指令时,可以从数据库中读取字符串形式的用例逻辑代码,在内存中将所述用例逻辑代码编译为字节码,并在内存中执行所述字节码,得到对应测试用例的执行结果;由于本发明实施例在内存中执行整个自动化测试流程,且自动化测试流程中的用例逻辑代码、字节码等均在内存中出现,因此,相对于现有方案,本发明实施例能够避免JAVA文件、Class文件等垃圾文件的出现,还能够避免垃圾数据的出现,因此能够节省计算机系统的磁盘空间;另外,在执行完每一个测试用例后,可以对该测试用例所占用的内存空间进行回收,以释放该内存空间给其它测试用例,因此,本发明实施例还能够通过及时释放内存空间有效提升计算机系统的运行速度。
在具体实现中,本发明实施例的自动化测试装置可以提供测试用例的生成接口,以使用户通过该生成接口按照该生成接口对应的规范生成测试用例。其中,该生成接口对应的规范具体可以包括:可以规定测试用例编号、测试标题、重要级别、测试输入、操作步骤、预期结果等测试用例信息的格式,还可以规定这些测试用例信息之间的顺序、及操作步骤对应的用例逻辑,本发明实施例对于该生成接口对应的规范不加以限制。
在实际应用中,可以测试用例的名称为索引,在数据库中以字符串形式存储测试用例的用例逻辑代码,并依据该索引从数据库中读取测试用例对应的用例逻辑代码。其中,可以依据逻辑、功能等特性将用例逻辑代码归属到对应的字段,并利用上述字段对用例逻辑代码进行存储,本发明实施例对于在数据库中以字符串形式存储测试用例的用例逻辑代码的具体过程不加以限制。
步骤102、在内存中将所述用例逻辑代码编译为字节码;
在具体实现中,可以采用基于JDK(JAVA开发包,Java Development Kit)开发的动态编译器,将字符串形式的用例逻辑代码编译为二进制形式的字节码。假设用例逻辑代码具体包括字符串形式的测试用例类名和字符串形式的JAVA代码内容,则动态编译器可以对字符串形式的测试用例类名和字符串形式的JAVA代码内容,动态编译并返回编译好的class对象,其中该class对象用于表示编译得到的字节码。
在本发明的一种应用示例中,动态编译器可以通过StandardJavaFileManager(标准JAVA文档管理)类控制用例逻辑代码的输入、及字节码的输出。在具体实现中,可以首先建立一个DiagnosticCollector(诊断收集)实例,以及通过getStandardFileManager()方法得到一个StandardFileManager对象,最后通过CompilationTask(编译任务)中的call方法编译字符串形式的用例逻辑代码。
上述字符串形式的用例逻辑代码和二进制形式的字节码均可以在内存中执行,这样,在执行完每一个测试用例后,可以对该测试用例所占用的内存空间进行回收,而可以不占用磁盘空间。
在本发明的一种可选实施例中,上述在内存中将所述用例逻辑代码编译为字节码的步骤,具体可以包括:
步骤S11、依据所述用例逻辑代码中依赖关键字,获取所述依赖关键字对应关联包的路径;
步骤S12、利用所述路径加载所述关联包,并利用所述关联包在内存中将所述用例逻辑代码编译为字节码。
在用例逻辑代码的编译过程中可能会存在包的依赖问题,例如,所述用例逻辑代码中A类的编译需要B类的方法,如果缺少B类的方法,则容易出现编译不通过的问题。针对上述问题,本可选实施例可以在所述用例逻辑代码中设计依赖关键字,该依赖关键字可用于描述当前测试用例所需的关联包(如关联包的名称等)。并且,本可选实施例还可以预先存储关联包的路径,这样,在在内存中将所述用例逻辑代码编译为字节码的过程中,可以首先获取所述依赖关键字对应关联包的路径,然后利用所述路径加载所述关联包,并利用所述关联包在内存中将所述用例逻辑代码编译为字节码。在本发明的一种应用示例中,该关联包可以为JAR(JAVA归档文件,Java ArchiveFile)包,该JAR包中可以包含至少一个类。
步骤103、在内存中执行所述字节码,得到对应测试用例的执行结果。
在具体实现中,在动态编译器在内存中将所述用例逻辑代码编译为字节码后,可以将该字节码传递给JVM(JAVA虚拟机,Java Virtual Machine),由JVM在内存中执行所述字节码,得到对应测试用例的执行结果。
在本发明的一种可选实施例中,所述在内存中执行所述字节码,得到对应测试用例的执行结果的步骤,具体可以包括:
步骤S21、通过反射方式执行所述字节代码对应测试用例的入口方法,得到所述测试用例的执行结果。
JAVA反射方式是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法;这种动态获取的信息以及动态调用对象的方法的功能称为JAVA反射方法。
上述测试用例的入口方法作为测试用例的主方法,该主方法中可以包括单元方法,该主方法可用于触发测试用例的执行,并在执行过程中接收每个单元方法的执行结果。
在本发明的另一种可选实施例中,所述在内存中执行所述字节码,得到对应测试用例的执行结果的步骤,具体可以包括:
步骤S31、将所述字节码加载到JAVA虚拟机中;
步骤S32、对所述字节码进行格式校验;
步骤S33、在所述字节码的格式校验通过后,通过所述JAVA虚拟机将所述字节码解释为机器指令,并执行所述机器指令。
可以理解,上述只是作为在内存中执行所述字节码的可选方案,本发明实施例对于在内存中执行所述字节码的具体方案不加以限制。
需要说明的是,在本发明的一种可选实施例中,可以采用日志记录各测试用例的自动化测试流程,以使用户通过该日志获取各测试用例在自动化测试流程中的执行过程。
综上,本发明实施例将用例逻辑代码以字符串形式保存至数据库,并且,在接收到测试用例的执行指令时,可以从数据库中读取字符串形式的用例逻辑代码,在内存中将所述用例逻辑代码编译为字节码,并在内存中执行所述字节码,得到对应测试用例的执行结果,具有如下优点:
首先,由于本发明实施例在内存中执行整个自动化测试流程,且自动化测试流程中的用例逻辑代码、字节码等均在内存中出现,因此,相对于现有方案将JAVA文件编译为Class文件,本发明实施例能够避免JAVA文件、Class文件等垃圾文件的出现,还能够避免垃圾数据的出现,因此能够节省计算机系统的磁盘空间;
其次,在执行完每一个测试用例后,可以对该测试用例所占用的内存空间进行回收,以释放该内存空间给其它测试用例,因此,本发明实施例还能够通过及时释放内存空间有效提升计算机系统的运行速度;
再者,本发明实施例可以通过数据库实现各种测试用例的一体性和完整性,这相对于现有方案对于JAVA文件进行管理,增加了测试用例管理的便捷性。
参照图2,示出了根据本发明一个实施例的一种自动化测试方法实施例的步骤流程图,具体可以包括如下步骤:
步骤201、从数据库中读取字符串形式的用例逻辑代码;
步骤202、在内存中将所述用例逻辑代码编译为字节码;
步骤203、在内存中执行所述字节码,得到对应测试用例的执行结果;
步骤204、对所述在内存中将所述用例逻辑代码编译为字节码和/或所述在内存中执行所述字节码过程中的JAVA对象进行垃圾回收。
相对于图1所示实施例,本实施例可以对所述在内存中将所述用例逻辑代码编译为字节码和/或所述在内存中执行所述字节码过程中的JAVA对象进行垃圾回收,实现对该测试用例所占用的内存空间进行回收,以释放该内存空间给其它测试用例。
垃圾回收是JAVA的一大特性,JAVA可以自主的判断出不再使用的JAVA对象,即废弃的JAVA对象,当JAVA对象不再被引用,或者无法找到JAVA对象时,该JAVA对象即为废弃的JAVA对象,JAVA语言在找到废弃的JAVA对象后,可以将其回收,以使新建的JAVA对象有足够的存储空间。JAVA对象是从JAVA堆中分配存储空间,JAVA堆是JAVA的数据存储区。
在本发明的一种可选实施例中,提供的内存垃圾回收方法具体可以包括标记-清除(mark-sweep)算法、复制算法、标记-压缩算法等。其中,标记-清除方法可以首先遍历所有JAVA对象并标记可到达的JAVA对象,然后扫描堆栈以寻找未标记的JAVA对象(即废弃的JAVA对象),并释放它们的内存,即删除废弃的JAVA对象;标记-压缩方法:标记-压缩方法可以首先遍历JAVA对象并标记可到达的JAVA对象,然后把标记的JAVA对象复制到新的存储空间中,以便进行压缩堆栈。
在本发明的另一种可选实施例中,可以采用分代垃圾回收方法。分代垃圾回收方法将堆分成两个或多个对象,对象按照生存期分组,每一个子堆为一“代”对象服务。垃圾收集器将从最年轻的子堆(这个子堆被称为新生代)中收集这些对象,如果一个对象经历了几次垃圾收集后仍然存活,那么,这个对象就成长为生存期更高的一代,当超过预设的生存期阈值时,该对象会被转移到另外一个子堆(这个子堆被称为老年代)中去。
该分代垃圾回收方法具体可以包括次要垃圾回收(minor GC)和全局垃圾回收(full GC),minor GC主要回收新生代的内存垃圾,且把到达一定生存期的对象转移到老年代,minor GC进行的频率较高;而full GC则同时回收新生代和老年代的内存垃圾。
在本发明的再一种可选实施例中,对于执行时间较长的全局内存垃圾回收,可以采用内存调优方法。比如,减小分代内存中老年区内存大小以降低全局内存垃圾收集的执行时间,或增大老年区内存大小以减少全局内存垃圾收集的执行次数。
在本发明的又一种可选实施例中,可以采用实时RTSJ(Java实时规范,Real-time Specification for Java)。RTSJ在普通的JVM中增加了新的内存区域,即永久内存(Immortal Memory)和作用域内存(Scoped Memory)。其中,永久内存中的对象一旦分配就一直存在,直到JVM退出,因此不会被作为垃圾回收;而作用域内存可以看作是临时性的永久内存,作用域内存也不会引起垃圾回收,但其只在某个范围内有效,离开该范围时,该作用域内存块作为一个整体将被释放掉。RTSJ提出的这些概念,大大降低了代码引起垃圾回收的机会,而且垃圾回收的时刻被限定在可预测的范围之内。
以上对JAVA对象的垃圾回收方案进行了详细介绍,可以理解,本领域技术人员可以根据实际需要采用上述垃圾回收方案的一种或组合,本发明实施例对于具体的垃圾回收方案不加以限制。
参照图3,示出了根据本发明一个实施例的一种自动化测试方法实施例的步骤流程图,具体可以包括如下步骤:
步骤301、通过功能模块显示用例类型对应的应用程序编程接口API;其中,所述用例类型对应的API用于开发所述用例类型对应测试用例的、字符串形式的用例逻辑代码;
步骤302、接收通过所述用例类型对应的API开发的字符串形式的用例逻辑代码;
步骤303、将所述字符串形式的用例逻辑代码存储至所述数据库;
步骤304、从数据库中读取字符串形式的用例逻辑代码;
步骤305、在内存中将所述用例逻辑代码编译为字节码;
步骤306、在内存中执行所述字节码,得到对应测试用例的执行结果。
相对于图1所示实施例,本实施例通过步骤301-步骤303增加了将所述字符串形式的用例逻辑代码存储至所述数据库的具体过程;其中,可以通过功能模块显示用例类型对应的API(应用程序编程接口,Application ProgramInterface),也即,各功能模块均可提供对应用例类型的API,以使用户根据该API开发所述用例类型对应测试用例的、字符串形式的用例逻辑代码。
在本发明的一种应用示例中,所述用例类型具体可以包括如下类型中的至少一种:web图形用户界面自动化测试、接口自动化测试、安卓应用自动化测试、数据库测试和安全性测试。可以针对各用例类型建立相应格式的数据库表,由该数据库表存储对应测试用例的用例逻辑代码。
在本发明的一种可选实施例中,所述功能模块可以为插件。也即,上述功能模块可以热插拔的形式连接至本发明实施例的自动化测试装置,使得本领域技术人员根据实际需要灵活地采用上述功能模块,从而能够增加自动化测试装置所支持用例类型的扩展性。
对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明实施例并不受所描述的动作顺序的限制,因为依据本发明实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本发明实施例所必须的。
参照图4,示出了根据本发明一个实施例的一种自动化测试装置实施例的结构框图,具体可以包括如下模块:
读取模块401,用于从数据库中读取字符串形式的用例逻辑代码;
编译模块402,用于在内存中将所述用例逻辑代码编译为字节码;及
执行模块403,用于在内存中执行所述字节码,得到对应测试用例的执行结果。
在本发明的一种可选实施例中,所述编译模块402,具体可以包括:
路径获取子模块,用于依据所述用例逻辑代码中依赖关键字,获取所述依赖关键字对应关联包的路径;及
加载执行子模块,用于利用所述路径加载所述关联包,并利用所述关联包在内存中将所述用例逻辑代码编译为字节码。
在本发明的另一种可选实施例中,所述执行模块403,具体可以包括:
反射执行子模块,用于通过反射方式执行所述字节代码对应测试用例的入口方法,得到所述测试用例的执行结果。
在本发明的再一种可选实施例中,所述执行模块403,具体可以包括:
加载子模块,用于将所述字节码加载到JAVA虚拟机中;
校验子模块,用于对所述字节码进行格式校验;
解释执行子模块,用于在所述字节码的格式校验通过后,通过所述JAVA虚拟机将所述字节码解释为机器指令,并执行所述机器指令。
由于本发明实施例在内存中执行整个自动化测试流程,且自动化测试流程中的用例逻辑代码、字节码等均在内存中出现,因此,相对于现有方案将JAVA文件编译为Class文件,本发明实施例能够避免JAVA文件、Class文件等垃圾文件的出现,还能够避免垃圾数据的出现,因此能够节省计算机系统的磁盘空间。
参照图5,示出了根据本发明一个实施例的一种自动化测试装置实施例的结构框图,具体可以包括如下模块:
读取模块501,用于从数据库中读取字符串形式的用例逻辑代码;
编译模块502,用于在内存中将所述用例逻辑代码编译为字节码;
执行模块503,用于在内存中执行所述字节码,得到对应测试用例的执行结果;及
垃圾回收模块504,用于对所述在内存中将所述用例逻辑代码编译为字节码和/或所述在内存中执行所述字节码过程中的JAVA对象进行垃圾回收。
本实施例可以对所述在内存中将所述用例逻辑代码编译为字节码和/或所述在内存中执行所述字节码过程中的JAVA对象进行垃圾回收,实现对该测试用例所占用的内存空间进行回收,以释放该内存空间给其它测试用例。
参照图6,示出了根据本发明一个实施例的一种自动化测试装置实施例的结构框图,具体可以包括如下模块:
显示模块601,用于通过功能模块显示用例类型对应的应用程序编程接口API;其中,所述用例类型对应的API用于开发所述用例类型对应测试用例的、字符串形式的用例逻辑代码;
接收模块602,用于接收通过所述用例类型对应的API开发的字符串形式的用例逻辑代码;
存储模块603,用于将所述字符串形式的用例逻辑代码存储至所述数据库;
读取模块604,用于从数据库中读取字符串形式的用例逻辑代码;
编译模块605,用于在内存中将所述用例逻辑代码编译为字节码;及
执行模块606,用于在内存中执行所述字节码,得到对应测试用例的执行结果。
在本发明的一种可选实施例中,所述功能模块可以为插件。上述功能模块可以热插拔的形式连接至本发明实施例的自动化测试装置,使得本领域技术人员根据实际需要灵活地采用上述功能模块,从而能够增加自动化测试装置所支持用例类型的扩展性。
在本发明的另一种可选实施例中,所述用例类型包括如下类型中的至少一种:web图形用户界面自动化测试、接口自动化测试、安卓应用自动化测试、数据库测试和安全性测试。
对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
在此提供的算法和显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与基于在此的示教一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本发明实施例的自动化测试方法和装置中的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。
应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。
本发明公开了A1、一种自动化测试方法,包括:
从数据库中读取字符串形式的用例逻辑代码;
在内存中将所述用例逻辑代码编译为字节码;
在内存中执行所述字节码,得到对应测试用例的执行结果。
A2、如A1所述的方法,所述在内存中将所述用例逻辑代码编译为字节码的步骤,包括:
依据所述用例逻辑代码中依赖关键字,获取所述依赖关键字对应关联包的路径;
利用所述路径加载所述关联包,并利用所述关联包在内存中将所述用例逻辑代码编译为字节码。
A3、如A1所述的方法,所述在内存中执行所述字节码,得到对应测试用例的执行结果的步骤,包括:
通过反射方式执行所述字节代码对应测试用例的入口方法,得到所述测试用例的执行结果。
A4、如A1所述的方法,所述在内存中执行所述字节码,得到对应测试用例的执行结果的步骤,包括:
将所述字节码加载到JAVA虚拟机中;
对所述字节码进行格式校验;
在所述字节码的格式校验通过后,通过所述JAVA虚拟机将所述字节码解释为机器指令,并执行所述机器指令。
A5、如A1所述的方法,在所述从数据库中读取字符串形式的用例逻辑代码的步骤之前,所述方法还包括:
通过功能模块显示用例类型对应的应用程序编程接口API;其中,所述用例类型对应的API用于开发所述用例类型对应测试用例的、字符串形式的用例逻辑代码;
接收通过所述用例类型对应的API开发的字符串形式的用例逻辑代码;
将所述字符串形式的用例逻辑代码存储至所述数据库。
A6、如A1至A5中任一所述的方法,所述方法还包括:
对所述在内存中将所述用例逻辑代码编译为字节码和/或所述在内存中执行所述字节码过程中的JAVA对象进行垃圾回收。
A7、如A5所述的方法,所述功能模块为插件。
A8、如A5所述的方法,所述用例类型包括如下类型中的至少一种:web图形用户界面自动化测试、接口自动化测试、安卓应用自动化测试、数据库测试和安全性测试。
本发明还公开了B9、一种自动化测试装置,包括:
读取模块,用于从数据库中读取字符串形式的用例逻辑代码;
编译模块,用于在内存中将所述用例逻辑代码编译为字节码;及
执行模块,用于在内存中执行所述字节码,得到对应测试用例的执行结果。
B10、如B9所述的装置,所述编译模块,包括:
路径获取子模块,用于依据所述用例逻辑代码中依赖关键字,获取所述依赖关键字对应关联包的路径;及
加载执行子模块,用于利用所述路径加载所述关联包,并利用所述关联包在内存中将所述用例逻辑代码编译为字节码。
B11、如B9所述的装置,所述执行模块,包括:
反射执行子模块,用于通过反射方式执行所述字节代码对应测试用例的入口方法,得到所述测试用例的执行结果。
B12、如B9所述的装置,所述执行模块,包括:
加载子模块,用于将所述字节码加载到JAVA虚拟机中;
校验子模块,用于对所述字节码进行格式校验;
解释执行子模块,用于在所述字节码的格式校验通过后,通过所述JAVA虚拟机将所述字节码解释为机器指令,并执行所述机器指令。
B13、如B9所述的装置,所述装置还包括:
显示模块,用于在所述从数据库中读取字符串形式的用例逻辑代码之前,通过功能模块显示用例类型对应的应用程序编程接口API;其中,所述用例类型对应的API用于开发所述用例类型对应测试用例的、字符串形式的用例逻辑代码;
接收模块,用于接收通过所述用例类型对应的API开发的字符串形式的用例逻辑代码;
存储模块,用于将所述字符串形式的用例逻辑代码存储至所述数据库。
B14、如B9至B13中任一所述的装置,所述装置还包括:
垃圾回收模块,用于对所述在内存中将所述用例逻辑代码编译为字节码和/或所述在内存中执行所述字节码过程中的JAVA对象进行垃圾回收。
B15、如B13所述的装置,所述功能模块为插件。
B16、如B13所述的装置,所述用例类型包括如下类型中的至少一种:web图形用户界面自动化测试、接口自动化测试、安卓应用自动化测试、数据库测试和安全性测试。
Claims (10)
1.一种自动化测试方法,包括:
从数据库中读取字符串形式的用例逻辑代码;
在内存中将所述用例逻辑代码编译为字节码;
在内存中执行所述字节码,得到对应测试用例的执行结果。
2.如权利要求1所述的方法,其特征在于,所述在内存中将所述用例逻辑代码编译为字节码的步骤,包括:
依据所述用例逻辑代码中依赖关键字,获取所述依赖关键字对应关联包的路径;
利用所述路径加载所述关联包,并利用所述关联包在内存中将所述用例逻辑代码编译为字节码。
3.如权利要求1所述的方法,其特征在于,所述在内存中执行所述字节码,得到对应测试用例的执行结果的步骤,包括:
通过反射方式执行所述字节代码对应测试用例的入口方法,得到所述测试用例的执行结果。
4.如权利要求1所述的方法,其特征在于,所述在内存中执行所述字节码,得到对应测试用例的执行结果的步骤,包括:
将所述字节码加载到JAVA虚拟机中;
对所述字节码进行格式校验;
在所述字节码的格式校验通过后,通过所述JAVA虚拟机将所述字节码解释为机器指令,并执行所述机器指令。
5.如权利要求1所述的方法,其特征在于,在所述从数据库中读取字符串形式的用例逻辑代码的步骤之前,所述方法还包括:
通过功能模块显示用例类型对应的应用程序编程接口API;其中,所述用例类型对应的API用于开发所述用例类型对应测试用例的、字符串形式的用例逻辑代码;
接收通过所述用例类型对应的API开发的字符串形式的用例逻辑代码;
将所述字符串形式的用例逻辑代码存储至所述数据库。
6.如权利要求1至5中任一所述的方法,其特征在于,所述方法还包括:
对所述在内存中将所述用例逻辑代码编译为字节码和/或所述在内存中执行所述字节码过程中的JAVA对象进行垃圾回收。
7.如权利要求5所述的方法,其特征在于,所述功能模块为插件。
8.如权利要求5所述的方法,其特征在于,所述用例类型包括如下类型中的至少一种:web图形用户界面自动化测试、接口自动化测试、安卓应用自动化测试、数据库测试和安全性测试。
9.一种自动化测试装置,包括:
读取模块,用于从数据库中读取字符串形式的用例逻辑代码;
编译模块,用于在内存中将所述用例逻辑代码编译为字节码;及
执行模块,用于在内存中执行所述字节码,得到对应测试用例的执行结果。
10.如权利要求9所述的装置,其特征在于,所述编译模块,包括:
路径获取子模块,用于依据所述用例逻辑代码中依赖关键字,获取所述依赖关键字对应关联包的路径;及
加载执行子模块,用于利用所述路径加载所述关联包,并利用所述关联包在内存中将所述用例逻辑代码编译为字节码。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510425548.5A CN106354624B (zh) | 2015-07-17 | 2015-07-17 | 一种自动化测试方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510425548.5A CN106354624B (zh) | 2015-07-17 | 2015-07-17 | 一种自动化测试方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106354624A true CN106354624A (zh) | 2017-01-25 |
CN106354624B CN106354624B (zh) | 2020-09-22 |
Family
ID=57842547
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510425548.5A Active CN106354624B (zh) | 2015-07-17 | 2015-07-17 | 一种自动化测试方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106354624B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108446223A (zh) * | 2018-03-06 | 2018-08-24 | 吉旗(成都)科技有限公司 | 一种基于动态编译的业务场景自动化测试方法 |
CN110008113A (zh) * | 2019-02-20 | 2019-07-12 | 北京三快在线科技有限公司 | 一种测试方法、装置、电子设备 |
CN112860552A (zh) * | 2021-02-02 | 2021-05-28 | 北京房江湖科技有限公司 | 关键字机制运行方法和装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1485740A (zh) * | 2002-09-23 | 2004-03-31 | 上海贝尔有限公司 | 一种基于主机平台的嵌入式模块和子系统的通用测试装置 |
WO2012065845A1 (en) * | 2010-11-16 | 2012-05-24 | Syddansk Universitet | Method for dynamically transforming the bytecode of java virtual machine bootstrap classes |
CN103425584A (zh) * | 2013-08-27 | 2013-12-04 | 上海复深蓝信息技术有限公司 | 基于Java字节码的大型应用回归测试信息处理方法 |
CN103870383A (zh) * | 2012-12-11 | 2014-06-18 | 航天信息股份有限公司 | 基于jvm的测试覆盖率统计方法及系统 |
-
2015
- 2015-07-17 CN CN201510425548.5A patent/CN106354624B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1485740A (zh) * | 2002-09-23 | 2004-03-31 | 上海贝尔有限公司 | 一种基于主机平台的嵌入式模块和子系统的通用测试装置 |
WO2012065845A1 (en) * | 2010-11-16 | 2012-05-24 | Syddansk Universitet | Method for dynamically transforming the bytecode of java virtual machine bootstrap classes |
CN103870383A (zh) * | 2012-12-11 | 2014-06-18 | 航天信息股份有限公司 | 基于jvm的测试覆盖率统计方法及系统 |
CN103425584A (zh) * | 2013-08-27 | 2013-12-04 | 上海复深蓝信息技术有限公司 | 基于Java字节码的大型应用回归测试信息处理方法 |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108446223A (zh) * | 2018-03-06 | 2018-08-24 | 吉旗(成都)科技有限公司 | 一种基于动态编译的业务场景自动化测试方法 |
CN110008113A (zh) * | 2019-02-20 | 2019-07-12 | 北京三快在线科技有限公司 | 一种测试方法、装置、电子设备 |
CN110008113B (zh) * | 2019-02-20 | 2023-08-29 | 北京三快在线科技有限公司 | 一种测试方法、装置、电子设备 |
CN112860552A (zh) * | 2021-02-02 | 2021-05-28 | 北京房江湖科技有限公司 | 关键字机制运行方法和装置 |
CN112860552B (zh) * | 2021-02-02 | 2023-12-15 | 贝壳找房(北京)科技有限公司 | 关键字机制运行方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN106354624B (zh) | 2020-09-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102722432B (zh) | 追踪内存访问的方法和装置 | |
US10114745B2 (en) | Assisted garbage collection in a virtual machine | |
Acar et al. | Selective memoization | |
CN103559449B (zh) | 一种代码改动的检测方法及装置 | |
CN110020943A (zh) | 基于区块链的碳记录和交易方法、设备、区块链节点、计算机介质和系统 | |
CN104079613B (zh) | 用于多租户间共享应用程序对象的方法和系统 | |
US20090327372A1 (en) | Garbage Collection via Multiobjects | |
CN103186468B (zh) | 一种验证软件升级准确性的方法和装置 | |
US7882159B2 (en) | Associative references in a garbage collected programming environment | |
CN102968438B (zh) | 综合监控系统中历史数据存储控制系统 | |
US20120311531A1 (en) | Optimizing an object-oriented program by transforming invocations of synthetic accessor methods | |
CN107678938A (zh) | 一种应用程序的调试方法及设备 | |
CN102339219A (zh) | 用于支持面向对象脚本工具的系统和方法 | |
US20130086569A1 (en) | Packed Data Objects | |
CN106354624A (zh) | 一种自动化测试方法和装置 | |
CN108037967A (zh) | 一种基于多父子结构的菜单加载方法以及电子设备 | |
CN103677778B (zh) | 一种CAP文件Classref常量的解析方法 | |
CN103500206A (zh) | 基于文件存储数据的存储方法及装置 | |
CN103946794A (zh) | 数据特征的滚动升级的系统和方法 | |
CN105224309B (zh) | 一种调取函数的方法和装置 | |
US20110209114A1 (en) | Integrated development environment with automatic working sets | |
CN109032572A (zh) | 一种基于字节码的java程序方法内联的方法 | |
CN108614772A (zh) | 一种并发检测堆缓冲区溢出的架构及方法 | |
CN104750743A (zh) | 一种交易文件勾对系统和方法 | |
CN104978221B (zh) | 实现程序的下载删除的方法及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right |
Effective date of registration: 20240115 Address after: 100088 room 112, block D, 28 new street, new street, Xicheng District, Beijing (Desheng Park) Patentee after: BEIJING QIHOO TECHNOLOGY Co.,Ltd. Address before: 100088 room 112, block D, 28 new street, new street, Xicheng District, Beijing (Desheng Park) Patentee before: BEIJING QIHOO TECHNOLOGY Co.,Ltd. Patentee before: Qizhi software (Beijing) Co.,Ltd. |
|
TR01 | Transfer of patent right |