一种改进的移动端应用测试方法和系统
技术领域
本发明涉及测试领域,具体涉及一种改进的移动端应用测试方法和系统。
背景技术
在移动端应用的开发和测试中,ADB(Android Debug Bridge,安卓调试桥)工具的使用非常普遍。借助这个工具,可以方便地进行许多操作,例如安装或卸载应用APP、在设备上执行shell命令,进行文件传输等等。例如,在测试环境下,将多台待测试的安卓移动端通过USB线连接到计算设备上,在计算设备上执行相关命令即可对各移动端进行相应的操作。
然而,由于ADB工具本身的客户端—服务器架构缺乏稳定性,在一台计算设备连接多台设备或长时间执行命令时,该工具的ADB服务会出现崩溃等异常状况,严重影响测试效率。现有技术对于这种情况的处理往往执行重启操作,但不仅无法从根源上解决该技术问题,重启操作也同时中断了测试用例的执行,依然影响测试效率。
发明内容
鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的改进的移动端应用测试方法和系统。
依据本发明的一个方面,提供了一种改进的移动端应用测试方法,其中,计算设备与用于测试应用的多个移动终端连接,则该方法包括:
在各移动终端上分别部署安卓调试桥ADB守护进程;
在所述计算设备上部署ADB服务,以及部署独立于所述ADB服务的多个ADB客户端;所述多个ADB客户端与所述多个移动终端上的多个ADB守护进程一一对应;
各ADB客户端通过ADB服务向对应移动终端上的ADB守护进程发送指令;各ADB守护进程执行所接收的指令并向ADB服务返回结果。
可选地,所述部署独立于所述ADB服务的多个ADB客户端包括:
在所述计算设备上部署独立于所述ADB服务的多个ADB客户端;
或者,在远程设备上部署独立于所述ADB服务的多个ADB客户端。
可选地,所述ADB客户端通过ADB服务向对应移动终端上的ADB守护进程发送指令包括:
在各ADB客户端、所述ADB服务以及各ADB守护进程之间分别建立网络长连接;各ADB客户端、所建立的各网络长连接以及各ADB守护进程之间一一对应;
各ADB客户端通过各自对应网络长连接向各自对应的ADB守护进程发送指令。
可选地,该方法进一步包括:
当所述计算设备与一个新的移动终端连接时,启动一个新的ADB客户端,在新启动的ADB客户端、所述ADB服务以及该新的移动终端上的ADB守护进程之间建立网络长连接。
可选地,所述ADB客户端通过ADB服务向对应移动终端上的ADB守护进程发送指令包括:
ADB客户端向ADB服务发送如下格式的指令:开头的N个字节标识请求的长度,所述N个字节之后的内容为请求的具体内容。
可选地,该方法进一步包括:
所述ADB服务根据各ADB客户端发送的指令返回请求成功/失败的数据。
可选地,所述计算设备与用于测试应用的多个移动终端连接包括:
所述计算设备与每个用于测试应用的移动终端通过点对点模式连接。
依据本发明的另一方面,提供了一种改进的移动端应用测试系统,其中,计算设备与用于测试应用的多个移动终端连接,则该系统包括:
分别部署于所述多个移动终端上的多个ABD守护进程模块;
部署于所述计算设备上的ADB服务模块,以及独立于所述ADB服务模块的多个ADB客户端模块;所述多个ADB客户端模块与所述多个移动终端上多个ADB守护进程模块一一对应;
各ADB客户端模块通过ADB服务模块向对应移动终端上的ADB守护进程模块发送指令;各ADB守护进程模块执行所接收的指令并向ADB服务模块返回结果。
可选地,所述多个ADB客户端模块部署在所述计算设备上;
或者,所述多个ADB客户端模块部署在在远程设备上。
可选地,该系统进一步包括::
网络长连接模块,适于在各ADB客户端模块、所述ADB服务模块以及各ADB守护进程模块之间分别建立网络长连接;各ADB客户端模块、所建立的各网络长连接以及各ADB守护进程模块之间一一对应;
各ADB客户端模块通过各自对应网络长连接向各自对应的ADB守护进程模块发送指令。
可选地,该系统进一步包括:
ADB客户端启动模块,适于在所述计算设备与一个新的移动终端连接时,启动一个新的ADB客户端模块;
所述网络长连接模块,适于在新启动的ADB客户端模块、所述ADB服务模块以及该新的移动终端上的ADB守护进程模块之间建立网络长连接。
可选地,各ADB客户端模块向ADB守护进程模块发送如下格式的指令:开头的N个字节标识请求的长度,所述N个字节之后的内容为请求的具体内容。
可选地,所述ADB服务模块,进一步根据各ADB客户端发送的指令返回请求成功/失败的数据。
可选地,所述计算设备与每个用于测试应用的移动终端通过点对点模式连接。。
由上述可知,本发明的技术方案,在各移动终端上分别部署安卓调试桥ADB守护进程,在所述计算设备上部署ADB服务,以及部署独立于ADB服务的多个ADB客户端,其中,多个ADB客户端与多个移动终端上的多个ADB守护进程一一对应,各ADB客户端通过ADB服务向对应移动终端上的ADB守护进程发送指令,各ADB守护进程执行所接收的指令并向ADB服务返回结果。该技术方案可以有效改善现有技术中计算设备不能够稳定连接多台移动终端的问题,大大提高了测试效率和稳定性。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1示出了根据本发明一个实施例的一种改进的移动端应用测试方法的流程图;
图2示出了根据本发明一个实施例的一种改进的移动端应用测试系统的结构示意图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
图1示出了根据本发明一个实施例的一种改进的移动端应用测试方法的流程图,其中,计算设备与用于测试应用的多个移动终端连接,如图1所示,该方法包括:
步骤S110,在各移动终端上分别部署安卓调试桥ADB守护进程。
步骤S120,在计算设备上部署ADB服务,以及部署独立于ADB服务的多个ADB客户端;多个ADB客户端与多个移动终端上的多个ADB守护进程一一对应。
步骤S130,各ADB客户端通过ADB服务向对应移动终端上的ADB守护进程发送指令;各ADB守护进程执行所接收的指令并向ADB服务返回结果。
ADB工具是谷歌公司提供的用于调试手机及模拟器的工具,一般放在Android SDK(Software Development Kit,软件开发工具包)中,测试人员可以利用它实现各种测试。然而原生ADB工具的缺点在于,其ADB客户端每次执行一次操作都会启动一个独立进程,例如计算设备每连接一台移动终端,都会启动一个独立的进程。而在计算设备连接的移动终端稍多(6-8台)的情况下,进程的消耗和异常进程中处理有误经常导致所有进程的临界资源冲突,进而导致进程崩溃。这样就导致移动终端与计算设备的连接断开,从而严重影响了测试工作。
因此,在该实施例中提供了一种不使用原生ADB工具的,改进的移动端应用测试方法,其中,在各移动终端上分别部署安卓调试桥ADB守护进程(adb daemon),在所述计算设备上部署ADB服务(adb server),以及部署独立于ADB服务的多个ADB客户端(adb client),其中,多个ADB客户端与多个移动终端上的多个ADB守护进程一一对应,各ADB客户端通过ADB服务向对应移动终端上的ADB守护进程发送指令,各ADB守护进程执行所接收的指令并向ADB服务返回结果。该技术方案可以有效改善现有技术中计算设备不能够稳定连接多台移动终端的问题,大大提高了测试效率和稳定性。
在本发明的一个实施例中,图1所示的方法中,部署独立于ADB服务的多个ADB客户端包括:在计算设备上部署独立于ADB服务的多个ADB客户端;或者,在远程设备上部署独立于ADB服务的多个ADB客户端。
在现有技术中,ADB服务和ADB客户端是不可分割的一个整体,而在本实施例中,不仅二者相互独立,而且可以进行分别的部署,更可以实现远程控制。例如,可以将连接各移动终端的计算设备作为中转设备,在远程设备上部署多个客户端,从而极大地方便了测试人员,可以在其他工作环境完成工作。
在本发明的一个实施例中,图1所示的方法中,ADB客户端通过ADB服务向对应移动终端上的ADB守护进程发送指令包括:在各ADB客户端、ADB服务以及各ADB守护进程之间分别建立网络长连接;各ADB客户端、所建立的各网络长连接以及各ADB守护进程之间一一对应;各ADB客户端通过各自对应网络长连接向各自对应的ADB守护进程发送指令。
计算设备和各移动终端可以通过USB数据线等建立物理连接,并且通过数据线建立网络长连接socket连接。在测试过程中,测试人员通过计算设备发送的各个指令可以通过各自的socket连接发送到各移动终端的adb daemon进行执行。具体地,在计算设备与一个新的移动终端连接时,启动一个新的ADB客户端,在新启动的ADB客户端、ADB服务以及该新的移动终端上的ADB守护进程之间建立网络长连接。之后就可以通过该建立好的socket连接进行计算设备与移动终端的通信了。
在本发明的一个实施例中,上述的方法中,ADB客户端通过ADB服务向对应移动终端上的ADB守护进程发送指令包括:ADB客户端向ADB服务发送如下格式的指令:开头的N个字节标识请求的长度,N个字节之后的内容为请求的具体内容。
例如,测试人员执行命令adb version,则ADB客户端执行以下操作:
通过建立的tcp:localhost:5037的socket连接发送字符串“000chost:version”,其中“000c”以十六进制标识请求的长度,“host”指定该请求只发送到ADB服务。
进一步地,ADB服务可以根据各ADB客户端发送的指令返回请求成功/失败的数据。例如,成功则返回4个字节“OKAY”的字符串;失败则返回“FAIL+十六进制长度标识+指定长度的说明失败原因的字符串”的字符串。
在本发明的一个实施例中,上述方法中,计算设备与用于测试应用的多个移动终端连接包括:计算设备与每个用于测试应用的移动终端通过点对点模式连接。例如,使用USB数据线连接或无线点对点模式连接。
图2示出了根据本发明一个实施例的一种改进的移动端应用测试系统的结构示意图,如图2所示,计算设备与用于测试应用的多个移动终端连接,改进的移动端应用测试系统200包括:
分别部署于多个移动终端上的多个ABD守护进程模块210;
部署于计算设备上的ADB服务模块220,以及独立于ADB服务模块220的多个ADB客户端模块230;多个ADB客户端模块230与多个移动终端上多个ADB守护进程模块210一一对应;
各ADB客户端模块230通过ADB服务模块220向对应移动终端上的ADB守护进程模块210发送指令;各ADB守护进程模块210执行所接收的指令并向ADB服务模块返回结果。
在该实施例中提供了一种不使用原生ADB工具的,改进的移动端应用测试系统,其中,在各移动终端上分别部署ABD守护进程模块210,在所述计算设备上部署ADB服务模块220,以及部署独立于ADB服务模块220的多个ADB客户端模块230,其中,多个ADB客户端模块230与多个移动终端上的多个ADB守护进程模块210一一对应,各ADB客户端模块230通过ADB服务模块220向对应移动终端上的ADB守护进程模块210发送指令,各ADB守护进程模块210执行所接收的指令并向ADB服务模块220返回结果。该技术方案可以有效改善现有技术中计算设备不能够稳定连接多台移动终端的问题,大大提高了测试效率和稳定性。
在本发明的一个实施例中,图2所示的系统中,多个ADB客户端模块部署在计算设备上;或者,多个ADB客户端模块部署在在远程设备上。
在现有技术中,ADB服务和ADB客户端是不可分割的一个整体,而在本实施例中,不仅二者相互独立,而且可以进行分别的部署,更可以实现远程控制。例如,可以将连接各移动终端的计算设备作为中转设备,在远程设备上部署多个客户端,从而极大地方便了测试人员,可以在其他工作环境完成工作。
在本发明的一个实施例中,图2所示的系统进一步包括:网络长连接模块,适于在各ADB客户端模块、ADB服务模块以及各ADB守护进程模块之间分别建立网络长连接;各ADB客户端模块、所建立的各网络长连接以及各ADB守护进程模块之间一一对应;各ADB客户端模块通过各自对应网络长连接向各自对应的ADB守护进程模块发送指令。
计算设备和各移动终端可以通过USB数据线等建立物理连接,并且通过数据线建立网络长连接socket连接。在测试过程中,测试人员通过计算设备发送的各个指令可以通过各自的socket连接发送到各移动终端的adb daemon进行执行。具体地,在本发明的一个实施例中,该系统进一步包括:ADB客户端启动模块,适于在计算设备与一个新的移动终端连接时,启动一个新的ADB客户端模块;网络长连接模块,适于在新启动的ADB客户端模块、ADB服务模块以及该新的移动终端上的ADB守护进程模块之间建立网络长连接。之后就可以通过该建立好的socket连接进行计算设备与移动终端的通信了。
在本发明的一个实施例中,上述系统中,各ADB客户端模块向ADB守护进程模块发送如下格式的指令:开头的N个字节标识请求的长度,N个字节之后的内容为请求的具体内容。
例如,测试人员执行命令adb version,则ADB客户端执行以下操作:
通过建立的tcp:localhost:5037的socket连接发送字符串“000chost:version”,其中“000c”以十六进制标识请求的长度,“host”指定该请求只发送到ADB服务。
进一步地,ADB服务可以根据各ADB客户端发送的指令返回请求成功/失败的数据。例如,成功则返回4个字节“OKAY”的字符串;失败则返回“FAIL+十六进制长度标识+指定长度的说明失败原因的字符串”的字符串。
在本发明的一个实施例中,图2所示的系统中,计算设备与每个用于测试应用的移动终端通过点对点模式连接。例如,使用USB数据线连接或无线点对点模式连接。
综上所述,本发明的技术方案,在各移动终端上分别部署安卓调试桥ADB守护进程(adb daemon),在所述计算设备上部署ADB服务(adb server),以及部署独立于ADB服务的多个ADB客户端(adb client),其中,多个ADB客户端与多个移动终端上的多个ADB守护进程一一对应,各ADB客户端通过ADB服务向对应移动终端上的ADB守护进程发送指令,各ADB守护进程执行所接收的指令并向ADB服务返回结果。该技术方案可以有效改善现有技术中计算设备不能够稳定连接多台移动终端的问题,大大提高了测试效率和稳定性,在Windows系统下可以稳定连接40台移动终端,在Linux系统下可以稳定连接70台移动终端,连续测试时长在5天以上,可以保证连接的稳定性。执行的测试包括但不限于:复制文件和数据、截图、点击屏幕坐标等。并且相比较原生ADB工具,操作的效率也有大幅提升,例如遍历安卓系统的全部文件只需30s。
需要说明的是:
在此提供的算法和显示不与任何特定计算机、虚拟装置或者其它设备固有相关。各种通用装置也可以与基于在此的示教一起使用。根据上面的描述,构造这类装置所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本发明实施例的改进的移动端应用测试系统中的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。
应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。
本发明公开了A1、一种改进的移动端应用测试方法,其中,计算设备与用于测试应用的多个移动终端连接,则该方法包括:
在各移动终端上分别部署安卓调试桥ADB守护进程;
在所述计算设备上部署ADB服务,以及部署独立于所述ADB服务的多个ADB客户端;所述多个ADB客户端与所述多个移动终端上的多个ADB守护进程一一对应;
各ADB客户端通过ADB服务向对应移动终端上的ADB守护进程发送指令;各ADB守护进程执行所接收的指令并向ADB服务返回结果。
A2、如A1所述的方法,其中,所述部署独立于所述ADB服务的多个ADB客户端包括:
在所述计算设备上部署独立于所述ADB服务的多个ADB客户端;
或者,在远程设备上部署独立于所述ADB服务的多个ADB客户端。
A3、如A1所述的方法,其中,所述ADB客户端通过ADB服务向对应移动终端上的ADB守护进程发送指令包括:
在各ADB客户端、所述ADB服务以及各ADB守护进程之间分别建立网络长连接;各ADB客户端、所建立的各网络长连接以及各ADB守护进程之间一一对应;
各ADB客户端通过各自对应网络长连接向各自对应的ADB守护进程发送指令。
A4、如A3所述的方法,其中,该方法进一步包括:
当所述计算设备与一个新的移动终端连接时,启动一个新的ADB客户端,在新启动的ADB客户端、所述ADB服务以及该新的移动终端上的ADB守护进程之间建立网络长连接。
A5、如A1-A4中任一项所述的方法,其中,所述ADB客户端通过ADB服务向对应移动终端上的ADB守护进程发送指令包括:
ADB客户端向ADB服务发送如下格式的指令:开头的N个字节标识请求的长度,所述N个字节之后的内容为请求的具体内容。
A6、如A1-A4中任一项所述的方法,其中,该方法进一步包括:
所述ADB服务根据各ADB客户端发送的指令返回请求成功/失败的数据。
A7、如A1所述的方法,其中,所述计算设备与用于测试应用的多个移动终端连接包括:
所述计算设备与每个用于测试应用的移动终端通过点对点模式连接。
本发明还公开了B8、一种改进的移动端应用测试系统,其中,计算设备与用于测试应用的多个移动终端连接,则该系统包括:
分别部署于所述多个移动终端上的多个ABD守护进程模块;
部署于所述计算设备上的ADB服务模块,以及独立于所述ADB服务模块的多个ADB客户端模块;所述多个ADB客户端模块与所述多个移动终端上多个ADB守护进程模块一一对应;
各ADB客户端模块通过ADB服务模块向对应移动终端上的ADB守护进程模块发送指令;各ADB守护进程模块执行所接收的指令并向ADB服务模块返回结果。
B9、如B8所述的系统,其中,
所述多个ADB客户端模块部署在所述计算设备上;
或者,所述多个ADB客户端模块部署在在远程设备上。
B10、如B8所述的系统,其中,该系统进一步包括:
网络长连接模块,适于在各ADB客户端模块、所述ADB服务模块以及各ADB守护进程模块之间分别建立网络长连接;各ADB客户端模块、所建立的各网络长连接以及各ADB守护进程模块之间一一对应;
各ADB客户端模块通过各自对应网络长连接向各自对应的ADB守护进程模块发送指令。
B11、如B10所述的系统,其中,该系统进一步包括:
ADB客户端启动模块,适于在所述计算设备与一个新的移动终端连接时,启动一个新的ADB客户端模块;
所述网络长连接模块,适于在新启动的ADB客户端模块、所述ADB服务模块以及该新的移动终端上的ADB守护进程模块之间建立网络长连接。
B12、如B8-B10中任一项所述的系统,其中,
各ADB客户端模块向ADB守护进程模块发送如下格式的指令:开头的N个字节标识请求的长度,所述N个字节之后的内容为请求的具体内容。
B13、如B8-B10中任一项所述的系统,其中,
所述ADB服务模块,进一步根据各ADB客户端发送的指令返回请求成功/失败的数据。
B14、如B8所述的系统,其中,
所述计算设备与每个用于测试应用的移动终端通过点对点模式连接。