性能测试工具 使用计算机控制 50 台手机进行 adb 操作,怎么实现?

石头鸟 · September 20, 2017 · Last by Demon replied at May 16, 2019 · 8106 hits

各位亲,如果想使用一台计算机(型号可以推荐)连接50台手机进行adb操作,请问怎么选择计算机,构建的过程中要考虑哪些关键点?
PS:现在个人采用usbhub只能进行8台设备的操作,理论值好像是127,现实执行不了,请示下!

共收到 42 条回复 时间 点赞

借助docker不知道可不可以,没试过

adb本身就不够稳定,超过一定数量机器扛不住的。

—— 来自TesterHome官方 安卓客户端

最近我也在研究这个问题,打算抛弃adb了

尝试ADB无线连接? adb connect 192.168.1.101:8888

谢答,可能我没有描述清楚,真实是使用一台服务器或者PC系统可以是win或者linux去驱动和控制20~50台手机,能检测到所有机器的连接,以及进行任务的分发,比如所有机器同时执行monkey等!

可通过无线连接 发送adb命令

codeskyblue 回复

抛弃adb的话,采用什么方案?

june 回复

手机上启动一个http 服务,然后电脑通过wifi 跟手机通讯

codeskyblue 回复

如果http服务好的,但是应用卡死了,该如何操作?
如果http服务无响应,但是测试仍在进行,该如何操作?
如果索性死机了,怎么检测,怎么操作?
都要拆电池装继电器来控制么?

槽神 回复

死机什么的,就直接标记为失败,交给人工处理

codeskyblue 回复

这……这可是50台机器,别闹了好么……楼主很明显想做测试实验室

槽神 回复

说的我好像没有50台手机似的

codeskyblue 回复

好吧,你乐意手动就手动吧

抛弃adb的话,可以用串口板的,走网络更加不可靠。

—— 来自TesterHome官方 安卓客户端

codeskyblue 回复

那有什么好的思路吗?

bauul 回复

谢答,亲不知道你具体方案是怎样的,详细说明下好吗?

Crazyerick 回复

谢答,我觉得可能和PC的电源以及usb传输带宽限制有关系

如果PC的主板总线给USB分配的带宽有限,那就尝试多PC组网,分布式控制手机:
弄一个master控制PC-A、PC-B……
PC-A控制手机1~10
PC-B控制手机11~20
……
你看过jenkins的M-S模式么,命令分发即可

用 docker ,已经有案例支撑了

槽神 回复

是的,但是有个问题,这样的PC利用率不高

石头鸟 回复

我也没实践过,只是知道有这么个方案,另外在手机端起web服务的方式也是比较靠谱的
据我所知,stf就是设备管理的,使用websocket,也有docker实现吧
@Lihuazhang
恒温哥来个案例链接👀

石头鸟 回复

利用率不高的问题很好解决,while(i<100000000000000) {i++;}😂

windows下很不稳定 linux下目前还没试过

石头鸟 回复

这段日子正在尝试这种无线控制的方案。楼上说的那些Wifi稳定性问题,我还真没有遇到过,可能是我的路由器太好了。
安装方面要比adb install快了很多,因为用的Wifi,好一些的手机基本是10M/s。

挂载这么多设备,供电也是个问题!无线adb 可以,但是不知道稳不稳定!

小弥勒 回复

淘宝上有卖那种40多个口的usb 充电板的

淘宝搜微信群控就可以搜到大功率的usb hub

给你个已经验证的思路:
一台PC连接3-5台USB HUB,每台手机 通过usb线连接到hub,也就间接连接到PC上,按照提示安装驱动,理想状态下TOP50机型都能连接到PC并且可以通过adb devices识别。
手机上安装一个apk,用作接受服务器传来的msg,pc上安装一个exe,用来与手机上的apk保持连接并且传输协议, pc与apk之间通过socket或者http进行通信;

运行流程大体如下:
PC上运行模拟器或者其他程序,获得期望的点击、滑动、按键操作等事件,转换成包含操作事件、操作坐标点等信息的proto,通过socket或者http发送给手机apk;
运行在手机的apk接受到服务器发来的信息,解析出动作事件和坐标,在本地还原操作,比如进行点击、滑动、按home或者电源键之类的。

大体思路就是这样

mark 一下 没试过

服务器本身够强大就多开几个虚拟机 把机子分散开,用无线连接的方式。毕竟那么多机器先要保证稳定不断电都能连上pc。。不过这样管理起来比较麻烦,其实脑洞开一点还可以自己写个后台控制,把所有虚拟机连接的手机信息 集合到本机上,用这个后台执行脚本或adb命令的分发 某台机子logcat啥的。我自做过一个局域网内各个主机连接手机执行脚本获取性能数据之类的小工具,应该是可行的,连接的虚拟机尽量用linux,这样会少出很多幺蛾子。😂 小白不懂太深的技术,只能按自己想法来。

执行monkey可以把log设置为5000,然后log保存手机?>/storage/sdcard0/all_apk.log 2>&1 &

有个想法,用usb带网卡的hub连接手机,但是手机得支持usb host 模式,且需要驱动支持😁,然后在手机端写个socket或者http服务

槽神 回复

谢谢帅锅,其实我现在就是采用这种方案,如果可以后面准备换高性能服务器去驱动更多手机;

槽神 回复

亲,我想的是一台PC最少能驱动20台手机,现在最多只能驱动10台,所以说利用率不高呢

ycyzharry 回复

目前自测linux可以支持10台,win下8台

王小夫 回复

我觉得问题在PC机的USB接口,不是USBHUB的问题,测试usbhub支持10台设备是可以的

ctro15547 回复

亲,目前采用的PC机做服务器,性能不强大

codeskyblue 回复

连接了很多手机也出现了各种问题,请问现在你用什么方法呢

石头鸟 #40 · May 23, 2018 作者

自己恢复下,我们通过8核CPU 16GB内存服务器可以实现该需求,此外通过定制工控机也可以达到同样目的,通过USBHU连接50台手机

石头鸟 回复

楼主好,
请问你是用8核,16GB的服务器进行了的通过usbhub链接50台设备么,因为之前尝试过5台左右时,识别到设备没问题,但是发测试任务就会只有两台设备运行任务,而且还有延迟,请问这个怎么解决呢,谢谢

我目前也遇到了这个问题 我们是在ubuntu上想要连接11台设备,但是连接10台后,第十一台就不识别了

需要 Sign In 后方可回复, 如果你还没有账号请点击这里 Sign Up