安卓界面自动化测试方法、装置及系统的制作方法_2

文档序号:8502117阅读:来源:国知局
分配内存的函数在目标进程中的第一地址、用于加载动态链接模块的函数在目标进程中的第二地址和用于获取测试桩加载器模块中目标函数的地址的函数在目标进程中的第三地址,在目标进程中通过依次调用用于加载动态链接模块的函数、用于获取测试桩加载器模块中目标函数的地址的函数和目标函数,在被测进程中创建第一服务端,使得测试端通过该第一服务端对被测进程进行测试。从而在测试过程中无需获取被测应用的程序源代码就可实现自动化测试,而且不需要对应用进行重签名,还可同时测试多个应用或多个进程。并且支持所有的安卓系统,支持使用控件标识定位,支持操作Web页面,由于是在计算机上编写测试用例,因此还可以进行多终端的协同测试。
【附图说明】
[0049]为了更清楚地说明本发明或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
[0050]图1为本发明安卓界面自动化测试方法实施例一的流程图;
[0051]图2为本发明安卓界面自动化测试方法实施例二的流程图;
[0052]图3为本发明安卓界面自动化测试方法实施例三中测试桩注入过程的流程图;
[0053]图4为本发明服务端实施例一的结构示意图;
[0054]图5为本发明测试端实施例一的结构示意图。
【具体实施方式】
[0055]为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明中的附图,对本发明中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0056]图1为本发明安卓界面自动化测试方法实施例一的流程图,如图1所示,本实施例以服务端做为执行主体为例进行说明,服务端是运行在安卓设备上,本实施例的方法可以包括:
[0057]S101、根据测试端发送的测试指令中包含的被测应用的代码查找代码对应的被测应用的进程标识。
[0058]在SlOl之前,还包括:接收测试端发送的测试信令。
[0059]具体来说,服务端接收到测试端发送的测试信令之后,首先根据测试信令中包含的被测应用的代码查找该代码对应的被测应用的进程标识。
[0060]S102、将被测应用的进程标识对应的被测进程附加到目标进程。
[0061]具体是使用Ptrace函数将被测应用的进程标识对应的被测进程附加到目标进程,这时目标进程处于被调试状态,可以对被测进程进行读写内存、读写寄存器等操作。
[0062]S103、分别获取用于分配内存的函数在目标进程中的第一地址、用于加载动态链接模块的函数在目标进程中的第二地址和用于获取测试桩加载器模块中目标函数的地址的函数在目标进程中的第三地址。
[0063]具体地,例如分别获取mmap函数、dlopen函数和dlsym函数在目标进程中的地址,mmap函数用于分配内存,dlopen函数用于加载动态链接模块(so), dlsym函数用于获取测试桩加载器(libexloader.so)模块中目标函数的地址。具体计算方法是先计算各个函数在相应模块中的偏移地址,然后根据模块在目标进程中的基地址加上偏移地址。
[0064]S104、在目标进程中通过依次调用用于加载动态链接模块的函数、用于获取测试桩加载器模块中目标函数的地址的函数和目标函数,在被测进程中创建第一服务端,以使测试端通过第一服务端对被测进程进行测试。
[0065]具体来说,在目标进程中通过依次调用mmap函数、dlopen函数和dlsym函数,即可实现测试桩的动态注入,注入完成时,测试桩已经在被测进程中创建了第一服务端,测试端通过该第一服务端对被测进程进行测试。其中,测试桩是一个独立的测试驱动模块,一般需要在被测程序中运行,运行后能够提供一系列的操作接口,供测试程序访问被测程序的某些功能。
[0066]测试桩已经在被测进程中创建了第一服务端之后,第一服务端监听到来自测试端的测试程序的连接后,与测试端建立连接,建立连接后测试程序会发送一系列的操作指令给第一服务端,第一服务端接收测试程序发送的操作指令并执行操作指令,返回执行结果给测试程序。操作指令包括:获取控件树,或,获取控件文本,或,点击按钮等操作。
[0067]本实施例提供的安卓界面自动化测试方法,通过服务端根据被测应用的代码查找代码对应的被测应用的进程标识后,将被测进程附加到目标进程,接着分别获取mmap函数、dlopen函数和dlsym函数在目标进程中的地址,在目标进程中通过依次调用mmap函数、dlopen函数和dlsym函数,完成测试桩的动态注入,创建了第一服务端,使得测试端通过该第一服务端对被测进程进行测试。从而在测试过程中无需获取被测应用的程序源代码就可实现自动化测试,而且不需要对应用进行重签名,还可同时测试多个应用或多个进程。并且支持所有的安卓系统,支持使用控件标识定位,支持操作Web页面,由于是在计算机上编写测试用例,因此还可以进行多终端的协同测试。
[0068]图2为本发明安卓界面自动化测试方法实施例二的流程图,如图2所示,本实施例以测试端做为执行主体为例进行说明,测试端是运行在计算机上,本实施例的方法可以包括:
[0069]S201、向服务端发送测试指令,测试指令包含被测应用的代码,以使服务端接收到测试指令后根据代码查找代码对应的被测应用的进程标识,在被测应用的进程标识对应的被测进程中创建第一服务端。
[0070]具体来说,测试端向服务端发送测试指令,测试指令包含被测应用的代码,服务端接收到测试端发送的测试信令之后,首先根据测试信令中包含的被测应用的代码查找该代码对应的被测应用的进程标识。接着将被测应用的进程标识对应的被测进程附加到目标进程,然后分别获取mmap函数、dlopen函数和dlsym函数在目标进程中的地址,最后在目标进程中通过依次调用mmap函数、dlopen函数和dlsym函数,即可实现测试桩的动态注入,注入完成时,测试桩已经在被测进程中创建了第一服务端。
[0071]S202、通过第一服务端对被测进程进行测试。
[0072]具体地,通过第一服务端对被测进程进行测试之前,还包括:
[0073]向服务端发送测试程序的连接,以使服务端监听到连接后与测试端建立连接。
[0074]通过第一服务端对被测进程进行测试,具体为:
[0075]测试端向服务端发送操作指令,接收服务端返回的执行结果。其中,操作指令包括:获取控件树,或,获取控件文本,或,点击按钮等操作。
[0076]本实施例提供的安卓界面自动化测试方法,通过测试端向服务端发送测试指令,用于服务端根据被测应用的代码查找代码对应的被测应用的进程标识后,将被测进程附加到目标进程,接着分别获取mmap函数、dlopen函数和dlsym函数在目标进程中的地址,在目标进程中通过依次调用mmap函数、dlopen函数和dlsym函数,完成测试桩的动态注入,创建了第一服务端,测试端通过该第一服务端对被测进程进行测试。从而在测试过程中无需获取被测应用的程
当前第2页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1