发明内容
本发明实施例所要解决的一个技术问题是:提供一种应用测试方法、装置及***,以在利用安卓***中严苛模式对安卓***中的应用进行测试时,降低测试工作量,提高测试效率。
根据本发明实施例的一个方面,提供的一种应用测试方法,包括:
在安卓***中嵌入测试框架;
在开启严苛模式的安卓***中运行各个待测应用时,通过所述测试框架修改各个所述待测应用的运行规则;
所述安卓***对各个所述待测应用的运行进行监控,形成监控日志。
在基于上述方法的另一个实施例中,所述测试框架为Lazy PHP框架。
在基于上述方法的另一个实施例中,所述Lazy PHP框架包括Hook函数,所述Hook函数包括测试逻辑;在开启严苛模式的安卓***中运行各个待测应用时,所述Hook函数在各个所述待测应用编译过程中根据所述测试逻辑篡改待测应用中函数的调用,以修改各个所述待测应用的运行规则。
在基于上述方法的另一个实施例中,所述测试逻辑包括特征函数、特征函数的位置以及与所述特征函数对应的替代处理。
在基于上述方法的另一个实施例中,所述替代处理包括在所述特征函数运行之前的预处理或/和在所述特征函数运行之后的后处理。
在基于上述方法的另一个实施例中,在形成监控日志之后,所述应用测试方法还包括:对所述监控日志进行反查,确定所述待测应用的源代码中的待处理代码。
在基于上述方法的另一个实施例中,所述安卓***对各个所述待测应用运行中对象的创建和释放进行监控。
根据本发明实施例的另一个方面,提供的一种应用测试装置,包括:
框架嵌入单元,用于在安卓***中嵌入测试框架;
规则修改单元,在开启严苛模式的安卓***中运行各个待测应用时,用于通过所述测试框架修改各个所述待测应用的执行规则;
日志形成单元,用于根据所述安卓***对各个所述待测应用运行的监控形成监控日志。
在基于上述装置的另一个实施例中,所述测试框架为Lazy PHP框架。
根据本发明实施例的再一个方面,提供的一种应用测试***,包括上述任一应用测试装置,以及
智能终端,所述智能终端的操作***为安卓***,所述智能终端安装有至少一个待测应用。
基于本发明上述实施例提供的应用测试方法、装置及***,在安卓***中嵌入测试框架;从而在开启严苛模式的安卓***中运行各个待测应用时,通过所述测试框架修改各个所述待测应用的运行规则;同时所述安卓***对各个所述待测应用的运行进行监控,形成监控日志。对于嵌入测试框架的安卓***,其在开启严苛模式下运行各个待测应用,以监控各个待测应用的运行过程中,能够通过测试框架修改各个待测应用的运行规则,实现安卓***中待测应用监控日志的获取。由于不需要在各个待测应用中***用于实现严苛模式的测试代码,在待测应用的源代码更新之后,对更新后的待测应用进行测试时,无需将更新后的源代码与测试代码重新打包,简化了待测应用的测试步骤,避免对待测应用的打包以及拓扑结构造成影响,降低测试工作量,提高了应用测试效率。
下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。
具体实施方式
现在将参照附图来详细描述本发明的各种示例性实施例。应注意到:除非另外具体说明,否则在这些实施例中阐述的部件和步骤的相对布置、数字表达式和数值不限制本发明的范围。
同时,应当明白,为了便于描述,附图中所示出的各个部分的尺寸并不是按照实际的比例关系绘制的。
以下对至少一个示例性实施例的描述实际上仅仅是说明性的,决不作为对本发明及其应用或使用的任何限制。
对于相关领域普通技术人员已知的技术、方法和设备可能不作详细讨论,但在适当情况下,所述技术、方法和设备应当被视为说明书的一部分。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步讨论。
现有安卓***在实现严苛模式过程中,需要在安卓***中各个应用的源代码中先***用于实现严苛模式的测试代码,然后将应用的源代码和上述测试代码打包成一个程序包,对应用的打包以及其内部的拓扑结构产生影响。且由于应用的测试者并不具备向SVN提交添加其他代码的权限。在应用的源代码修改之后,若要通过Android***的严苛模式测试应用,需要重新修改及提交用于实现严苛模式的测试代码,将应用的源代码和调试代码重新打包。对于优化频繁的应用,每次优化后重新测试时均需重新进行上述操作,工作量繁重,测试效率低。
图1为本发明应用测试方法一个实施例的流程图。如图1所示,该实施例的应用测试方法包括:
S102,在安卓***中嵌入测试框架。
具体的,将测试框架嵌入到安卓***中,使得安卓***在启动的时候不仅要加载安卓***原生的辅助文件,还要加载测试框架的内容,实现测试框架在***环境下的初始化环境布局,为后续的测试做准备。例如,安卓***加载测试框架中的程序包,在加载过程中,该程序包初始化自身环境,将运行过程中需要用到的文件均摆放在指定的文件路径下。
S104,在开启严苛模式的安卓***中运行各个待测应用时,通过测试框架修改各个待测应用的运行规则,同时安卓***对各个待测应用的运行进行监控,形成监控日志。
具体的,安卓***中运行各个待测应用可为安卓***中UI主线程中的所有应用程序。从而实现对安卓***中所有应用的测试。
所述监控日志可包括应用在运行过程中内存占用量,例如,待测应用中对象的建立和释放对内存的影响。
基于本发明上述实施例提供的应用测试方法,在安卓***中嵌入测试框架;从而在开启严苛模式的安卓***中运行各个待测应用时,通过测试框架修改各个待测应用的运行规则,同时安卓***对各个待测应用的运行进行监控,形成监控日志。对于嵌入测试框架的安卓***,其在开启严苛模式下运行各个待测应用,以监控各个待测应用的运行过程中,能够通过测试框架修改各个待测应用的运行规则,实现安卓***中待测应用监控日志的获取。由于不需要在各个待测应用中***用于实现严苛模式的测试代码,在待测应用的源代码更新之后,对更新后的待测应用进行测试时,无需将更新后的源代码与测试代码重新打包,简化了待测应用的测试步骤,避免对待测应用的打包以及拓扑结构造成影响,降低测试工作量,提高了待测应用测试效率。
在基于上述方法的另一个实施例中,所述测试框架可为面向切面的编程框架。具体的,所述测试框架为Lazy PHP框架,也可以简称为LP框架,其能够通过Lazy PHP框架内的程序对操作***应用中函数的调用进行篡改的运行,从而对安卓***中待测应用的运行进行重新定义,在安卓***开启严苛模式时,无需再在待测应用的源代码中***测试代码。后续待测应用的开发者对源代码进行修改后,对应的测试框架无需进行修改即可实现严苛模式下的测试,降低了应用测试的工作量,提高了应用测试效率。
在基于上述方法的另一个实施例中,所述Lazy PHP框架为静态代理框架。所述Lazy PHP框架包括Hook函数,所述Hook函数包括测试逻辑;在开启严苛模式的安卓***中运行各个待测应用时,所述Hook函数在各个所述待测应用编译过程中根据所述测试逻辑篡改待测应用中函数的调用,以修改各个所述待测应用的运行规则。
具体的,所述测试逻辑包括特征函数、特征函数的位置以及与所述特征函数对应的替代处理。所述特征函数的位置可为特征函数在待测应用源程序中的位置。所述替代处理包括在所述特征函数运行之前的预处理或/和在所述特征函数运行之后的后处理。
本实施例中,上述测试框架能够获取待测应用中特征函数在运行之前或/和之后的切面信息,从而获取特征函数相应运行阶段时待测应用在严苛模式下运行的日志信息,以形成监控日志。
在基于上述方法的另一个实施例中,所述安卓***对各个待测应用运行中对象的创建和释放进行监控,形成监控日志。方便确定待测应用运行过程中各个特征函数的运行对***内存的影响。
图2为本发明应用测试方法另一个实施例的流程图。如图2所示,该实施例的应用测试方法包括:
S202,在安卓***中嵌入测试框架。
S204,在开启严苛模式的安卓***中运行各个待测应用时,通过测试框架修改各个待测应用的运行规则,同时安卓***对各个待测应用的运行进行监控,形成监控日志。
S206,对监控日志进行反查,确定待测应用的源代码中的待处理代码。
在基于上述方法的另一个实施例中,所述安卓***对各个待测应用运行中对象的创建和释放进行监控,以形成监控日志,方便确定待测应用运行过程中各个特征函数运行对***内存的影响。然后,对所形成的监控日志进行反查,从而快速确定出导致内存不断消耗的代码,方便开发者对待测应用的源代码进行完善或修改。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
图3为本发明应用测试装置一个实施例的结构示意图。如图3所示,该实施例的应用测试装置包括:
框架嵌入单元101,用于在安卓***中嵌入测试框架;
规则修改单元103,在开启严苛模式的安卓***中运行各个待测应用时,用于通过测试框架修改各个待测应用的执行规则;
日志形成单元105,用于根据安卓***对各个待测应用运行的监控形成监控日志。
具体的,通过框架嵌入单元101将测试框架嵌入到安卓***中,使得安卓***在启动的时候不仅要加载安卓***原生的辅助文件,还要加载测试框架的内容,实现测试框架在***环境下的初始化环境布局,为后续的测试做准备。例如,安卓***加载测试框架中的程序包,在加载过程中,该程序包初始化自身环境,将运行过程中需要用到的文件均摆放在指定的文件路径下。
具体的,安卓***中运行各个待测应用可为安卓***中UI主线程中的所有应用程序。从而实现对安卓***中所有应用的测试。
基于本发明上述实施例提供的应用测试装置,通过框架嵌入单元101在安卓***中嵌入测试框架;然后,在开启严苛模式的安卓***中运行各个待测应用时,使规则修改单元103通过测试框架修改各个待测应用的执行规则,同时日志形成单元105根据安卓***对各个待测应用运行的监控形成监控日志。在对安卓***中应用在严苛模式下进行测试过程中,由于不需要在各个待测应用中***用于实现严苛模式的测试代码,在待测应用的源代码更新之后,对更新后的待测应用进行测试时,无需将更新后的源代码与测试代码重新打包,简化了待测应用的测试步骤,避免对待测应用的打包以及拓扑结构造成影响,降低测试工作量,提高了应用测试效率。
在基于上述装置的另一个实施例中,框架嵌入单元101在安卓***中嵌入的测试框架可为面向切面的编程框架。具体的,所述测试框架为Lazy PHP框架,也可以简称为LP框架,其能够通过Lazy PHP框架内的程序对操作***应用中函数的调用进行篡改的运行,从而对安卓***中待测应用的运行进行重新定义,在安卓***开启严苛模式时,无需再在待测应用的源代码中***测试代码。后续待测应用的开发者对源代码进行修改后,对应的测试框架无需进行修改即可实现严苛模式下的测试,降低了待测应用的测试时的工作量,提高测试效率。
在基于上述装置的另一个实施例中,所述Lazy PHP框架为静态代理框架。所述Lazy PHP框架包括Hook函数,所述Hook函数包括测试逻辑;在开启严苛模式的安卓***中运行各个待测应用时,所述Hook函数在各个所述待测应用编译过程中根据所述测试逻辑篡改待测应用中函数的调用,以修改各个所述待测应用的运行规则。
具体的,所述测试逻辑包括特征函数、特征函数的位置以及与所述特征函数对应的替代处理。所述替代处理包括在所述特征函数运行之前的预处理或/和在所述特征函数运行之后的后处理。
本实施例中,上述测试框架能够获取待测应用中特征函数在运行之前或/和之后的切面信息,从而获取待测应用在严苛模式下运行的日志信息,以形成监控日志。
在基于上述装置的另一个实施例中,所述安卓***对各个待测应用运行中对象的创建和释放进行监控,形成监控日志。方便确定待测应用运行过程中各个特征函数的运行对***内存的影响。
在基于上述装置的另一个实施例中,所述应用测试装置还包括:日志分析单元(图未示),用于对所述监控日志进行反查,确定待测应用的源代码中的待处理代码。
本实施例中,所述安卓***对各个待测应用运行中对象的创建和释放进行监控,以形成监控日志,方便确定待测应用运行过程中各个特征函数运行对***内存的影响。然后,日志分析单元对所形成的监控日志进行反查,从而快速确定出导致内存不断消耗的代码,方便开发者对应用的源代码进行完善或修改。
图4为本发明应用测试***一个实施例的结构示意图。如图4所示,该实施例的应用测试***包括应用测试装置10和智能终端20。智能终端20的操作***为安卓***,智能终端安装有至少一个待测应用。
应用测试装置10可为任一上述实施例中应用测试装置。本实施例中,应用测试装置10包括:
框架嵌入单元101,用于在安卓***中嵌入测试框架;
规则修改单元103,在开启严苛模式的安卓***中运行各个待测应用时,用于通过测试框架修改各个待测应用的执行规则;
日志形成单元105,用于根据安卓***对各个待测应用运行的监控形成监控日志。
由于在智能终端20的操作***(安卓***)中嵌入测试框架,其在开启严苛模式下运行各个待测应用,以监控各个待测应用的运行过程中,能够通过测试框架修改各个待测应用的运行规则,实现安卓***中待测应用监控日志的获取。由于不需要在各个待测应用中***用于实现严苛模式的测试代码,在待测应用的源代码更新之后,对更新后的待测应用进行测试时,无需将更新后的源代码与测试代码重新打包,简化了应用测试的步骤,避免对待测应用的打包以及拓扑结构造成影响,降低了测试的工作量,提高了应用测试效率。
本发明实施例提供了以下技术方案:
1、一种应用测试方法,包括:
在安卓***中嵌入测试框架;
在开启严苛模式的安卓***中运行各个待测应用时,通过所述测试框架修改各个所述待测应用的运行规则;
所述安卓***对各个所述待测应用的运行进行监控,形成监控日志。
2、根据1所述的应用测试方法,所述测试框架为Lazy PHP框架。
3、根据2所述的应用测试方法,所述Lazy PHP框架包括Hook函数,所述Hook函数包括测试逻辑;在开启严苛模式的安卓***中运行各个待测应用时,所述Hook函数在各个所述待测应用编译过程中根据所述测试逻辑篡改待测应用中函数的调用,以修改各个所述待测应用的运行规则。
4、根据3所述的应用测试方法,所述测试逻辑包括特征函数、特征函数的位置以及与所述特征函数对应的替代处理。
5、根据4所述的应用测试方法,所述替代处理包括在所述特征函数运行之前的预处理或/和在所述特征函数运行之后的后处理。
6、根据1至5中任一所述的应用测试方法,在形成监控日志之后,所述应用测试方法还包括:对所述监控日志进行反查,确定所述待测应用的源代码中的待处理代码。
7、根据1至5中任一所述的应用测试方法,所述安卓***对各个所述待测应用运行中对象的创建和释放进行监控。
8、一种应用测试装置,包括:
框架嵌入单元,用于在安卓***中嵌入测试框架;
规则修改单元,在开启严苛模式的安卓***中运行各个待测应用时,用于通过所述测试框架修改各个所述待测应用的执行规则;
日志形成单元,用于根据所述安卓***对各个所述待测应用运行的监控形成监控日志。
9、根据8所述的应用测试装置,所述测试框架为Lazy PHP框架。
10、根据9所述的应用测试装置,所述Lazy PHP框架包括Hook函数,所述Hook函数包括测试逻辑;在开启严苛模式的安卓***中运行各个待测应用时,所述规则修改单元通过所述Hook函数在各个所述待测应用编译过程中根据所述测试逻辑篡改待测应用中函数的调用,以修改各个所述待测应用的运行规则。
11、根据10所述的应用测试装置,所述测试逻辑包括特征函数、特征函数的位置以及与所述特征函数对应的替代处理。
12、根据11所述的应用测试的装置,所述替代处理包括在所述特征函数运行之前的预处理或/和在所述特征函数运行之后的后处理。
13、根据8至12中任一所述的应用测试装置,所述应用测试装置还包括:日志分析单元,用于对所述监控日志进行反查,确定所述待测应用的源代码中的待处理代码。
14、根据8至12中任一所述的应用测试装置,所述安卓***对各个所述待测应用运行中对象的创建和释放进行监控。
15、一种应用测试***,包括8至14中任一所述应用测试装置,以及
智能终端,所述智能终端的操作***为安卓***,所述智能终端安装有至少一个待测应用。
本说明书中各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似的部分相互参见即可。对于***实施例而言,由于其与方法实施例基本对应,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
可能以许多方式来实现本发明的方法、装置和***。例如,可通过软件、硬件、固件或者软件、硬件、固件的任何组合来实现本发明的方法、装置和***。用于所述方法的步骤的上述顺序仅是为了进行说明,本发明的方法的步骤不限于以上具体描述的顺序,除非以其它方式特别说明。此外,在一些实施例中,还可将本发明实施为记录在记录介质中的程序,这些程序包括用于实现根据本发明的方法的机器可读指令。因而,本发明还覆盖存储用于执行根据本发明的方法的程序的记录介质。