CN104834586B - 安卓界面自动化测试方法、装置及系统 - Google Patents
安卓界面自动化测试方法、装置及系统 Download PDFInfo
- Publication number
- CN104834586B CN104834586B CN201410046661.8A CN201410046661A CN104834586B CN 104834586 B CN104834586 B CN 104834586B CN 201410046661 A CN201410046661 A CN 201410046661A CN 104834586 B CN104834586 B CN 104834586B
- Authority
- CN
- China
- Prior art keywords
- test
- tested
- function
- module
- server
- 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.)
- Active
Links
Landscapes
- Debugging And Monitoring (AREA)
- Stored Programmes (AREA)
Abstract
本发明提供一种安卓界面自动化测试方法、装置及系统,该方法包括:根据被测应用的代码查找代码对应的被测应用的进程标识后,将被测进程附加到目标进程,接着分别获取用于分配内存的函数在目标进程中的第一地址、用于加载动态链接模块的函数在目标进程中的第二地址和用于获取测试桩加载器模块中目标函数的地址的函数在目标进程中的第三地址,在目标进程中通过依次调用三个函数,在被测进程中创建第一服务端,使得测试端通过该第一服务端对被测进程进行测试。在测试过程中无需获取被测应用的程序源代码就可实现自动化测试,而且不需要对应用进行重签名,还可同时测试多个应用或多个进程。
Description
技术领域
本发明涉及通信技术领域,尤其涉及一种安卓界面自动化测试方法、装置及系统。
背景技术
安卓界面(Android UI)自动化测试是一种通过模拟用户操作,能够自动发现Android应用中存在的缺陷的测试方法,可减少测试人员的大量重复手工测试操作,对于提高测试效率和提升测试质量具有很高的应用价值。
现有的一种Android UI自动化测试方法大致如下:首先在架构上分为测试端和服务端,测试端运行在计算机上,服务端运行在安卓设备上,测试端进行测试之前,需要在服务端将测试驱动代码和被测应用的程序源代码进行编译得到最终的被测程序,然后在安卓设备上运行被测程序,接着开始运行测试端,测试端的测试用例代码通过特定的接口层协议访问安卓设备中的接口层驱动代码,服务端调用安卓设备提供的框架操作安卓控件,由此来进行测试。
可以看出,上述方法在进行测试之前,必须获取被测应用的程序源代码,不同的被测应用的程序源代码是不同的,在无法获得被测应用的程序源代码的情况下,测试无法进行。
发明内容
本发明提供一种安卓界面自动化测试方法、装置及系统,在测试过程中无需获取被测应用的程序源代码就可实现自动化测试,而且不需要对应用进行重签名,还可同时测试多个应用或多个进程。
第一方面,本发明提供一种安卓界面自动化测试方法,包括:
根据测试端发送的测试指令中包含的被测应用的代码查找所述代码对应的被测应用的进程标识;
将所述被测应用的进程标识对应的被测进程附加到目标进程;
分别获取用于分配内存的函数在所述目标进程中的第一地址、用于加载动态链接模块的函数在所述目标进程中的第二地址和用于获取测试桩加载器模块中目标函数的地址的函数在所述目标进程中的第三地址;
在所述目标进程中通过依次调用所述用于加载动态链接模块的函数、所述用于获取测试桩加载器模块中目标函数的地址的函数和所述目标函数,在所述被测进程中创建第一服务端,以使所述测试端通过所述第一服务端对所述被测进程进行测试。
进一步地,所述根据测试端发送的测试指令中包含的被测应用的代码查找所述代码对应的被测应用的进程标识之前,还包括:
接收所述测试端发送的所述测试信令。
进一步地,所述在所述目标进程中通过依次调用所述用于加载动态链接模块的函数、所述用于获取测试桩加载器模块中目标函数的地址的函数和所述目标函数,在所述被测进程中创建第一服务端之后,还包括:
监听到来自所述测试端的测试程序的连接后,与所述测试端建立连接;
接收所述测试程序发送的操作指令并执行所述操作指令,返回执行结果给所述测试程序。
进一步地,所述操作指令包括:获取控件树,或,获取控件文本,或,点击按钮。
第二方面,本发明提供一种安卓界面自动化测试方法,包括:
向服务端发送测试指令,所述测试指令包含被测应用的代码,以使所述服务端接收到所述测试指令后根据所述代码查找所述代码对应的被测应用的进程标识,在所述被测应用的进程标识对应的被测进程中创建第一服务端;
通过所述第一服务端对所述被测进程进行测试。
进一步地,所述通过所述第一服务端对所述被测进程进行测试之前,还包括:
向所述服务端发送测试程序的连接,以使所述服务端监听到所述连接后与所述测试端建立连接。
进一步地,所述通过所述第一服务端对所述被测进程进行测试,包括:
向所述服务端发送操作指令;
接收所述服务端返回的执行结果。
进一步地,所述操作指令包括:获取控件树,或,获取控件文本,或,点击按钮。
第三方面,本发明提供一种服务端,包括:
查找模块,用于根据测试端发送的测试指令中包含的被测应用的代码查找所述代码对应的被测应用的进程标识;
处理模块,用于将所述被测应用的进程标识对应的被测进程附加到目标进程;
获取模块,用于分别获取用于分配内存的函数在所述目标进程中的第一地址、用于加载动态链接模块的函数在所述目标进程中的第二地址和用于获取测试桩加载器模块中目标函数的地址的函数在所述目标进程中的第三地址;
创建模块,用于在所述目标进程中通过依次调用所述用于加载动态链接模块的函数、所述用于获取测试桩加载器模块中目标函数的地址的函数和所述目标函数,在所述被测进程中创建第一服务端,以使所述测试端通过所述第一服务端对所述被测进程进行测试。
进一步地,所述服务端还包括:
接收模块,用于在所述查找模块根据测试端发送的测试指令中包含的被测应用的代码查找所述代码对应的被测应用的进程标识之前,接收所述测试端发送的所述测试信令。
进一步地,所述处理模块还用于在所述目标进程中通过依次调用所述用于加载动态链接模块的函数、所述用于获取测试桩加载器模块中目标函数的地址的函数和所述目标函数,在所述被测进程中创建第一服务端之后,监听来自所述测试端的测试程序的连接;
所述处理模块还用于监听到来自所述测试端的测试程序的连接后,与所述测试端建立连接;
所述接收模块还用于接收所述测试程序发送的操作指令;
所述处理模块还用于执行所述操作指令;
所述服务端还包括:发送模块,用于返回执行结果给所述测试程序。
进一步地,所述操作指令包括:获取控件树,或,获取控件文本,或,点击按钮。
第四方面,本发明提供一种测试端,包括:
发送模块,用于向服务端发送测试指令,所述测试指令包含被测应用的代码,以使所述服务端接收到所述测试指令后根据所述代码查找所述代码对应的被测应用的进程标识,在所述被测应用的进程标识对应的被测进程中创建第一服务端;
处理模块,用于通过所述第一服务端对所述被测进程进行测试。
进一步地,所述发送模块还用于在所述处理模块通过所述第一服务端对所述被测进程进行测试之前,向所述服务端发送测试程序的连接,以使所述服务端监听到所述连接后与所述测试端建立连接。
进一步地,所述发送模块还用于向所述服务端发送操作指令;
所述测试端还包括:
接收模块,用于接收所述服务端返回的执行结果。
进一步地,所述操作指令包括:获取控件树,或,获取控件文本,或,点击按钮。
第五方面,本发明提供一种测试系统,包括第三方面所述的服务端和第四方面所述的测试端。
本发明提供的安卓界面自动化测试方法、装置及系统,通过服务端根据被测应用的代码查找代码对应的被测应用的进程标识后,将被测进程附加到目标进程,接着用于分配内存的函数在目标进程中的第一地址、用于加载动态链接模块的函数在目标进程中的第二地址和用于获取测试桩加载器模块中目标函数的地址的函数在目标进程中的第三地址,在目标进程中通过依次调用用于加载动态链接模块的函数、用于获取测试桩加载器模块中目标函数的地址的函数和目标函数,在被测进程中创建第一服务端,使得测试端通过该第一服务端对被测进程进行测试。从而在测试过程中无需获取被测应用的程序源代码就可实现自动化测试,而且不需要对应用进行重签名,还可同时测试多个应用或多个进程。并且支持所有的安卓系统,支持使用控件标识定位,支持操作Web页面,由于是在计算机上编写测试用例,因此还可以进行多终端的协同测试。
附图说明
为了更清楚地说明本发明或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明安卓界面自动化测试方法实施例一的流程图;
图2为本发明安卓界面自动化测试方法实施例二的流程图;
图3为本发明安卓界面自动化测试方法实施例三中测试桩注入过程的流程图;
图4为本发明服务端实施例一的结构示意图;
图5为本发明测试端实施例一的结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明中的附图,对本发明中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1为本发明安卓界面自动化测试方法实施例一的流程图,如图1所示,本实施例以服务端做为执行主体为例进行说明,服务端是运行在安卓设备上,本实施例的方法可以包括:
S101、根据测试端发送的测试指令中包含的被测应用的代码查找代码对应的被测应用的进程标识。
在S101之前,还包括:接收测试端发送的测试信令。
具体来说,服务端接收到测试端发送的测试信令之后,首先根据测试信令中包含的被测应用的代码查找该代码对应的被测应用的进程标识。
S102、将被测应用的进程标识对应的被测进程附加到目标进程。
具体是使用Ptrace函数将被测应用的进程标识对应的被测进程附加到目标进程,这时目标进程处于被调试状态,可以对被测进程进行读写内存、读写寄存器等操作。
S103、分别获取用于分配内存的函数在目标进程中的第一地址、用于加载动态链接模块的函数在目标进程中的第二地址和用于获取测试桩加载器模块中目标函数的地址的函数在目标进程中的第三地址。
具体地,例如分别获取mmap函数、dlopen函数和dlsym函数在目标进程中的地址,mmap函数用于分配内存,dlopen函数用于加载动态链接模块(so),dlsym函数用于获取测试桩加载器(libexloader.so)模块中目标函数的地址。具体计算方法是先计算各个函数在相应模块中的偏移地址,然后根据模块在目标进程中的基地址加上偏移地址。
S104、在目标进程中通过依次调用用于加载动态链接模块的函数、用于获取测试桩加载器模块中目标函数的地址的函数和目标函数,在被测进程中创建第一服务端,以使测试端通过第一服务端对被测进程进行测试。
具体来说,在目标进程中通过依次调用mmap函数、dlopen函数和dlsym函数,即可实现测试桩的动态注入,注入完成时,测试桩已经在被测进程中创建了第一服务端,测试端通过该第一服务端对被测进程进行测试。其中,测试桩是一个独立的测试驱动模块,一般需要在被测程序中运行,运行后能够提供一系列的操作接口,供测试程序访问被测程序的某些功能。
测试桩已经在被测进程中创建了第一服务端之后,第一服务端监听到来自测试端的测试程序的连接后,与测试端建立连接,建立连接后测试程序会发送一系列的操作指令给第一服务端,第一服务端接收测试程序发送的操作指令并执行操作指令,返回执行结果给测试程序。操作指令包括:获取控件树,或,获取控件文本,或,点击按钮等操作。
本实施例提供的安卓界面自动化测试方法,通过服务端根据被测应用的代码查找代码对应的被测应用的进程标识后,将被测进程附加到目标进程,接着分别获取mmap函数、dlopen函数和dlsym函数在目标进程中的地址,在目标进程中通过依次调用mmap函数、dlopen函数和dlsym函数,完成测试桩的动态注入,创建了第一服务端,使得测试端通过该第一服务端对被测进程进行测试。从而在测试过程中无需获取被测应用的程序源代码就可实现自动化测试,而且不需要对应用进行重签名,还可同时测试多个应用或多个进程。并且支持所有的安卓系统,支持使用控件标识定位,支持操作Web页面,由于是在计算机上编写测试用例,因此还可以进行多终端的协同测试。
图2为本发明安卓界面自动化测试方法实施例二的流程图,如图2所示,本实施例以测试端做为执行主体为例进行说明,测试端是运行在计算机上,本实施例的方法可以包括:
S201、向服务端发送测试指令,测试指令包含被测应用的代码,以使服务端接收到测试指令后根据代码查找代码对应的被测应用的进程标识,在被测应用的进程标识对应的被测进程中创建第一服务端。
具体来说,测试端向服务端发送测试指令,测试指令包含被测应用的代码,服务端接收到测试端发送的测试信令之后,首先根据测试信令中包含的被测应用的代码查找该代码对应的被测应用的进程标识。接着将被测应用的进程标识对应的被测进程附加到目标进程,然后分别获取mmap函数、dlopen函数和dlsym函数在目标进程中的地址,最后在目标进程中通过依次调用mmap函数、dlopen函数和dlsym函数,即可实现测试桩的动态注入,注入完成时,测试桩已经在被测进程中创建了第一服务端。
S202、通过第一服务端对被测进程进行测试。
具体地,通过第一服务端对被测进程进行测试之前,还包括:
向服务端发送测试程序的连接,以使服务端监听到连接后与测试端建立连接。
通过第一服务端对被测进程进行测试,具体为:
测试端向服务端发送操作指令,接收服务端返回的执行结果。其中,操作指令包括:获取控件树,或,获取控件文本,或,点击按钮等操作。
本实施例提供的安卓界面自动化测试方法,通过测试端向服务端发送测试指令,用于服务端根据被测应用的代码查找代码对应的被测应用的进程标识后,将被测进程附加到目标进程,接着分别获取mmap函数、dlopen函数和dlsym函数在目标进程中的地址,在目标进程中通过依次调用mmap函数、dlopen函数和dlsym函数,完成测试桩的动态注入,创建了第一服务端,测试端通过该第一服务端对被测进程进行测试。从而在测试过程中无需获取被测应用的程序源代码就可实现自动化测试,而且不需要对应用进行重签名,还可同时测试多个应用或多个进程。并且支持所有的安卓系统,支持使用控件标识定位,支持操作Web页面,由于是在计算机上编写测试用例,因此还可以进行多终端的协同测试。
下面采用一个具体的实施例,对图1和图2所示方法实施例的技术方案进行详细说明。
图3为本发明安卓界面自动化测试方法实施例三中测试桩注入过程的流程图,如图3所示,过程包括:
S301、根据测试端发送的测试指令中包含的被测应用的代码查找代码对应的被测应用的进程标识。
S302、将被测应用的进程标识对应的被测进程附加到目标进程,具体为调用Ptrace函数将被测进程附加到目标进程。
S303、分别获取mmap函数、dlopen函数和dlsym函数在目标进程中的地址。
S304、在目标进程中调用dlopen函数加载测试桩加载器(libexloader.so)。
S305、在目标进程中调用dlsym函数获取libexloader.so模块中目标函数(loadDex函数)的地址。
S306、在目标进程中调用loadDex函数。
其中,S306具体为:
S306a、获取JNIEnv指针。
S306b、调用ClassLoader.getSystemClassLoader获取ClassLoader类实例。
S306c、创建DexClassLoader类实例,加载测试桩类。
S306d、调用DexClassLoader.findClass获取测试桩类。
S306e、调用测试桩类的入口函数。
S307、创建Socket服务端线程,监听测试端发送的连接。
S308、调用Ptrace函数恢复被测进程运行。
上述过程完成后,即实现了测试桩的动态注入,注入完成时,测试桩已经在被测进程中创建了Socket服务端,用于监听测试端发送的连接。Socket服务端监听到来自测试端的测试程序的连接后,与测试端建立连接,建立连接后测试程序会发送一系列的操作指令给第一服务端,第一服务端接收测试程序发送的操作指令并执行操作指令,返回执行结果给测试程序。操作指令包括:获取控件树,或,获取控件文本,或,点击按钮等操作。Socket服务端监听到来自测试端的测试程序的连接后,与测试端建立连接,建立连接后测试程序会发送一系列的操作指令给第一服务端,第一服务端接收测试程序发送的操作指令并执行操作指令,返回执行结果给测试程序。操作指令包括:获取控件树,或,获取控件文本,或,点击按钮等操作。
图4为本发明服务端实施例一的结构示意图,服务端运行在安卓设备上,如图4所示,本实施例的服务端可以包括:查找模块11、处理模块12、获取模块13和创建模块14,其中,查找模块11用于根据测试端发送的测试指令中包含的被测应用的代码查找代码对应的被测应用的进程标识。处理模块12用于将被测应用的进程标识对应的被测进程附加到目标进程。获取模块13用于分别获取用于分配内存的函数在目标进程中的第一地址、用于加载动态链接模块的函数在目标进程中的第二地址和用于获取测试桩加载器模块中目标函数的地址的函数在目标进程中的第三地址。创建模块14用于在目标进程中通过依次调用用于加载动态链接模块的函数、用于获取测试桩加载器模块中目标函数的地址的函数和目标函数,在被测进程中创建第一服务端,以使测试端通过第一服务端对被测进程进行测试。
进一步地,服务端还包括:接收模块,该接收模块用于在查找模块根据测试端发送的测试指令中包含的被测应用的代码查找代码对应的被测应用的进程标识之前,接收测试端发送的测试信令。
进一步地,处理模块12还用于:在目标进程中通过依次调用用于加载动态链接模块的函数、用于获取测试桩加载器模块中目标函数的地址的函数和目标函数,在被测进程中创建第一服务端之后,监听来自测试端的测试程序的连接。
处理模块12还用于:监听到来自测试端的测试程序的连接后,与测试端建立连接。接收模块还用于接收测试程序发送的操作指令。
处理模块12还用于执行操作指令。
服务端还包括:发送模块,该发送模块用于返回执行结果给测试程序。
其中,操作指令包括:获取控件树,或,获取控件文本,或,点击按钮。
本实施例的服务端,可以用于执行图1所示方法实施例的技术方案,其实现原理类似,此处不再赘述。
本实施例提供的服务端,通过查找模块根据被测应用的代码查找代码对应的被测应用的进程标识后,处理模块将被测进程附加到目标进程,接着获取模块分别获取mmap函数、dlopen函数和dlsym函数在目标进程中的地址,创建模块在目标进程中通过依次调用mmap函数、dlopen函数和dlsym函数,完成测试桩的动态注入,创建了第一服务端,使得测试端通过该第一服务端对被测进程进行测试。从而在测试过程中无需获取被测应用的程序源代码就可实现自动化测试,而且不需要对应用进行重签名,还可同时测试多个应用或多个进程。并且支持所有的安卓系统,支持使用控件标识定位,支持操作Web页面,由于是在计算机上编写测试用例,因此还可以进行多终端的协同测试。
图5为本发明测试端实施例一的结构示意图,测试端运行在计算机上,如图5所示,本实施例的测试端可以包括:发送模块21和处理模块22,其中,发送模块21用于向服务端发送测试指令,测试指令包含被测应用的代码,以使服务端接收到测试指令后根据代码查找代码对应的被测应用的进程标识,在被测应用的进程标识对应的被测进程中创建第一服务端。处理模块22用于通过第一服务端对被测进程进行测试。
进一步地,发送模块21还用于:在处理模块通过第一服务端对被测进程进行测试之前,向服务端发送测试程序的连接,以使服务端监听到连接后与测试端建立连接。
进一步地,发送模块还用于:向服务端发送操作指令;
测试端还包括:接收模块,该接收模块用于接收服务端返回的执行结果。其中,操作指令包括:获取控件树,或,获取控件文本,或,点击按钮。
本实施例的装置,可以用于执行图2所示方法实施例的技术方案,其实现原理类似,此处不再赘述。
本实施例提供的测试端,通过发送模块向服务端发送测试指令,用于服务端根据被测应用的代码查找代码对应的被测应用的进程标识后,将被测进程附加到目标进程,接着分别获取mmap函数、dlopen函数和dlsym函数在目标进程中的地址,在目标进程中通过依次调用mmap函数、dlopen函数和dlsym函数,完成测试桩的动态注入,创建了第一服务端,进而处理模块通过该第一服务端对被测进程进行测试。从而在测试过程中无需获取被测应用的程序源代码就可实现自动化测试,而且不需要对应用进行重签名,还可同时测试多个应用或多个进程。并且支持所有的安卓系统,支持使用控件标识定位,支持操作Web页面,由于是在计算机上编写测试用例,因此还可以进行多终端的协同测试。
本发明提供的测试系统,包括图4所示的服务端和图5所示的测试端。
本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
Claims (16)
1.一种安卓界面自动化测试方法,其特征在于,包括:
根据测试端发送的测试指令中包含的被测应用的代码查找所述代码对应的被测应用的进程标识;
将所述被测应用的进程标识对应的被测进程附加到目标进程;
分别获取用于分配内存的函数在所述目标进程中的第一地址、用于加载动态链接模块的函数在所述目标进程中的第二地址和用于获取测试桩加载器模块中目标函数的地址的函数在所述目标进程中的第三地址;
在所述目标进程中通过依次调用所述用于加载动态链接模块的函数、所述用于获取测试桩加载器模块中目标函数的地址的函数和所述目标函数,在所述被测进程中创建第一服务端,以使所述测试端通过所述第一服务端对所述被测进程进行测试。
2.根据权利要求1所述的方法,其特征在于,所述根据测试端发送的测试指令中包含的被测应用的代码查找所述代码对应的被测应用的进程标识之前,还包括:
接收所述测试端发送的测试信令。
3.根据权利要求1或2所述的方法,其特征在于,所述在所述目标进程中通过依次调用所述用于加载动态链接模块的函数、所述用于获取测试桩加载器模块中目标函数的地址的函数和所述目标函数,在所述被测进程中创建第一服务端之后,还包括:
监听到来自所述测试端的测试程序的连接后,与所述测试端建立连接;
接收所述测试程序发送的操作指令并执行所述操作指令,返回执行结果给所述测试程序。
4.根据权利要求3所述的方法,其特征在于,所述操作指令包括:获取控件树,或,获取控件文本,或,点击按钮。
5.一种安卓界面自动化测试方法,其特征在于,包括:
向服务端发送测试指令,所述测试指令包含被测应用的代码,以使所述服务端接收到所述测试指令后根据所述代码查找所述代码对应的被测应用的进程标识,在所述被测应用的进程标识对应的被测进程中创建第一服务端;
通过所述第一服务端对所述被测进程进行测试。
6.根据权利要求5所述的方法,其特征在于,所述通过所述第一服务端对所述被测进程进行测试之前,还包括:
向所述服务端发送测试程序的连接,以使所述服务端监听到所述连接后与所述测试端建立连接。
7.根据权利要求6所述的方法,其特征在于,所述通过所述第一服务端对所述被测进程进行测试,包括:
向所述服务端发送操作指令;
接收所述服务端返回的执行结果。
8.根据权利要求7所述的方法,其特征在于,所述操作指令包括:获取控件树,或,获取控件文本,或,点击按钮。
9.一种服务端,其特征在于,包括:
查找模块,用于根据测试端发送的测试指令中包含的被测应用的代码查找所述代码对应的被测应用的进程标识;
处理模块,用于将所述被测应用的进程标识对应的被测进程附加到目标进程;
获取模块,用于分别获取用于分配内存的函数在所述目标进程中的第一地址、用于加载动态链接模块的函数在所述目标进程中的第二地址和用于获取测试桩加载器模块中目标函数的地址的函数在所述目标进程中的第三地址;
创建模块,用于在所述目标进程中通过依次调用所述用于加载动态链接模块的函数、所述用于获取测试桩加载器模块中目标函数的地址的函数和所述目标函数,在所述被测进程中创建第一服务端,以使所述测试端通过所述第一服务端对所述被测进程进行测试。
10.根据权利要求9所述的服务端,其特征在于,所述服务端还包括:
接收模块,用于在所述查找模块根据测试端发送的测试指令中包含的被测应用的代码查找所述代码对应的被测应用的进程标识之前,接收所述测试端发送的测试信令。
11.根据权利要求10所述的服务端,其特征在于,所述处理模块还用于在所述目标进程中通过依次调用所述用于加载动态链接模块的函数、所述用于获取测试桩加载器模块中目标函数的地址的函数和所述目标函数,在所述被测进程中创建第一服务端之后,监听来自所述测试端的测试程序的连接;
所述处理模块还用于监听到来自所述测试端的测试程序的连接后,与所述测试端建立连接;
所述接收模块还用于接收所述测试程序发送的操作指令;
所述处理模块还用于执行所述操作指令;
所述服务端还包括:发送模块,用于返回执行结果给所述测试程序。
12.根据权利要求11所述的服务端,其特征在于,所述操作指令包括:获取控件树,或,获取控件文本,或,点击按钮。
13.一种测试端,其特征在于,包括:
发送模块,用于向服务端发送测试指令,所述测试指令包含被测应用的代码,以使所述服务端接收到所述测试指令后根据所述代码查找所述代码对应的被测应用的进程标识,在所述被测应用的进程标识对应的被测进程中创建第一服务端;
处理模块,用于通过所述第一服务端对所述被测进程进行测试;
所述发送模块还用于向所述服务端发送操作指令;
所述操作指令包括:获取控件树,或,获取控件文本,或,点击按钮。
14.根据权利要求13所述的测试端,其特征在于,所述发送模块还用于在所述处理模块通过所述第一服务端对所述被测进程进行测试之前,向所述服务端发送测试程序的连接,以使所述服务端监听到所述连接后与所述测试端建立连接。
15.根据权利要求14所述的测试端,其特征在于,所述测试端还包括:
接收模块,用于接收所述服务端返回的执行结果。
16.一种测试系统,其特征在于,包括权利要求9~12任一所述的服务端和权利要求13~15任一所述的测试端。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410046661.8A CN104834586B (zh) | 2014-02-10 | 2014-02-10 | 安卓界面自动化测试方法、装置及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410046661.8A CN104834586B (zh) | 2014-02-10 | 2014-02-10 | 安卓界面自动化测试方法、装置及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104834586A CN104834586A (zh) | 2015-08-12 |
CN104834586B true CN104834586B (zh) | 2018-11-20 |
Family
ID=53812492
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410046661.8A Active CN104834586B (zh) | 2014-02-10 | 2014-02-10 | 安卓界面自动化测试方法、装置及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104834586B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107454124B (zh) * | 2016-05-31 | 2020-11-03 | 创新先进技术有限公司 | 设备自动化方法及装置 |
CN108959061B (zh) * | 2017-05-19 | 2023-04-25 | 腾讯科技(深圳)有限公司 | 应用功能管理方法、终端以及装置 |
CN111475416B (zh) * | 2020-04-08 | 2024-03-19 | 网易(杭州)网络有限公司 | 调试方法、装置、系统及存储介质 |
CN112965711B (zh) * | 2021-03-04 | 2024-09-13 | 北京金山云网络技术有限公司 | 作业测试方法和装置、电子设备和存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1744056A (zh) * | 2004-09-04 | 2006-03-08 | 华为技术有限公司 | 一种应用程序的自动测试方法 |
CN102053911A (zh) * | 2010-12-30 | 2011-05-11 | 东莞宇龙通信科技有限公司 | 基于Android的自动化测试方法、系统及移动终端 |
CN102195970A (zh) * | 2010-03-10 | 2011-09-21 | 微软公司 | 基于客户端会话的调试 |
CN102831053A (zh) * | 2011-06-17 | 2012-12-19 | 阿里巴巴集团控股有限公司 | 一种测试执行的调度方法及装置 |
CN103019942A (zh) * | 2012-12-31 | 2013-04-03 | 广东欧珀移动通信有限公司 | 一种基于安卓系统的待测应用自动测试方法和系统 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5629239B2 (ja) * | 2011-05-23 | 2014-11-19 | インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation | ソフトウェアの動作をテストする装置及び方法 |
-
2014
- 2014-02-10 CN CN201410046661.8A patent/CN104834586B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1744056A (zh) * | 2004-09-04 | 2006-03-08 | 华为技术有限公司 | 一种应用程序的自动测试方法 |
CN102195970A (zh) * | 2010-03-10 | 2011-09-21 | 微软公司 | 基于客户端会话的调试 |
CN102053911A (zh) * | 2010-12-30 | 2011-05-11 | 东莞宇龙通信科技有限公司 | 基于Android的自动化测试方法、系统及移动终端 |
CN102831053A (zh) * | 2011-06-17 | 2012-12-19 | 阿里巴巴集团控股有限公司 | 一种测试执行的调度方法及装置 |
CN103019942A (zh) * | 2012-12-31 | 2013-04-03 | 广东欧珀移动通信有限公司 | 一种基于安卓系统的待测应用自动测试方法和系统 |
Also Published As
Publication number | Publication date |
---|---|
CN104834586A (zh) | 2015-08-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106383786B (zh) | 一种接口压力性能测试方法、装置及电子设备 | |
CN103838665B (zh) | 一种rfid自动化测试装置及方法 | |
WO2016206505A1 (zh) | 自动化测试系统及测试方法 | |
CN103425574B (zh) | 一种测试应用程序的方法及装置 | |
CN104572043B (zh) | 一种对客户端应用的控件进行实时埋点的方法及装置 | |
CN104834586B (zh) | 安卓界面自动化测试方法、装置及系统 | |
CN106933729A (zh) | 一种基于云平台的测试方法和系统 | |
CN106155907A (zh) | 一种自动化测试方法、装置和计算设备 | |
CN105653438B (zh) | 安卓设备的跨进程自动化测试方法和装置 | |
CN102479084A (zh) | 一种Android终端获取日志的方法及装置 | |
CN104679631A (zh) | 用于基于Android系统的设备的测试方法及系统 | |
CN107463500A (zh) | 测试脚本的调试方法、介质、系统和计算设备 | |
CN113553257B (zh) | 测试方法、装置、存储介质及电子设备 | |
CN103455413A (zh) | 一种通讯终端交互场景测试数据处理方法、装置和系统 | |
CN107992424A (zh) | 自动化测试分析方法、应用服务器及计算机可读存储介质 | |
CN109558328A (zh) | 一种代码覆盖率的测试方法、系统、装置及可读存储介质 | |
CN102222001A (zh) | 环境部署装置和环境部署方法 | |
CN105786694A (zh) | 一种自动化测试系统及方法以及移动终端 | |
CN102270174B (zh) | 自动化测试方法和装置 | |
CN104915292B (zh) | 一种linux内核模块动态打桩的系统 | |
CN110262932A (zh) | Android平板测试方法、系统以及计算机可读存储介质 | |
CN109144850A (zh) | 移动终端的交互通信的测试方法及系统 | |
CN108009093A (zh) | 一种软件测试方法、装置及系统 | |
CN104679648A (zh) | 跨应用的自动化测试方法 | |
CN104090845B (zh) | 一种游戏自动测试方法、系统及相关设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |