52

安卓设备集群管理 atx-server · TesterHome

 6 years ago
source link: https://testerhome.com/topics/11546?
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

ATX 安卓设备集群管理 atx-server

codeskyblue · 2018年01月07日 · 最后由 苦瓜 回复于 2020年05月11日 · 9779 次阅读
本帖已被设为精华帖!

众所周知,安卓单台设备的 UI 自动化测试已经比较完善了,有数不清的自动化框架或者工具。但是介绍多设备管理的内容并不多,当手里的手机多了之后,要做自动化测试平台,这块的东西又不得不碰。我是一位比较喜欢实践的人,和同事在一起开发过简单的多设备管理系统,也用过开源的,后来又自己开发过。前前后后大概经历了 4 个不同的版本。

  • 第一个版本是是将 adb 的服务封装成 HTTP 接口,可以调用 adb forward,install,并且利用 screencap 和 input keyevent 这些基本命令实现了一个简单的远程控制界面(速度很慢,但是基本能用)。为了解决截图慢的问题,我还买过两个摄像头。
  • 第二版版本是直接改造的 openstf,本来第一个版本还在开发中,突然有同事对我说:“哎,你有没有见过这个项目呀openstf,好像跟你们最近开发的项目挺像的”,还发了一个链接过来。我当时就看了不超过 10 分钟,我就决定把第一个版本给废掉了。然后花了两个星期的时间把 openstf 的每一行代码都读了一遍(实际时间更长,因为读了很多遍)。后来在 openstf 上也加了不少功能,翻翻 openstf 的 pr 历史,也可以看到很多我的提交。这个项目教会了我很多,让我重新认识了 nodejs,让我了解了 rethinkdb
  • 第三个版本出来的很意外,原来是试试看的项目,就是用 Go 语言重写 openstf,写了一个多星期,发现改造起来也不是很难嘛,而且还让 openstf 的架构变简单了很多(openstf 的搭建比较头疼),之后内部组织重组,各种变动,从最开始最多 5 个人开发,到现在又是我一个人开发,实在应了那句话 “计划赶不上变化”。人多的时候架子铺的太大,坑挖的有点多,代码维护起来也很累,过了一段时间实在不想管这个项目了。
  • 第四个版本:虽然我不想管第三个版本了,但是多设备管理的需求还是没消失,还是要硬着头皮维护下去。某个清空万里的好日子,突然灵机一动,把 atx-agent 给写了出来。这才意思到,就算没有数据线,就算没有 adb,也是可以做设备自动化的嘛。关于 atx-agent 的介绍在杭州第三期沙龙分享过一次。基于 atx-agent 带来的无线连接技术,设备管理平台的硬件管理一下子就方便了好多好多,再也不用弄那些树莓派了,拉网线,还要烧代码 provider 代码的 sd 卡了。现在只要给保证手机是有电的就 OK。软件层面实现一个 atx-server 管理一下众多的 atx-agent 就足够了。然后把 openstf 中的 minicap 和 minitouch 整合进 atx-agent 里面,远程控制功能就也有了。UI 自动化则是使用了基于 atx-agent 的python uiautomator2,虽没有 appium 这么庞大和 NB,但是麻雀虽小五脏俱全,只要你会 python,各种 UI 自动化都能搞定。

基本架构图

atx-agent运行在手机的内部,为手机增加了远程控制,自动化的功能。atx-server最重要的功能,是将atx-agent汇总到一个网页上展示,并提供一个 API 可以获取所有设备的列表。

d1cd5c61-ba5c-4b82-a950-9ac4426b1c0b.png!large

点击设备最右侧的那个眼睛图标,就可以进入远程控制界面。功能比较简单,但是基本功能够用了。

11e45c8f-2c22-492e-bb7a-c99b5eadd2e9.gif!large

目前只试过 80 台设备,更多的设备应该也不成问题,不知道上限是多少,手机多的可以帮我测试下。

关于UI 自动化, uiautomator2这个项目只需要知道设备的 ip 就可以运行自动化了,包括安装运行,推送文件,各种功能都有。在这个项目之上外加一个 Jenkins 之类的运行脚本的服务,稍加处理就是一个自动化测试平台了。美滋滋

辛辛苦苦终于写完了,希望看文章的人多思考思考,笔者非常期待思维的碰撞,欢迎留言。

项目地址: https://github.com/openatx/atx-server

附上 cynic 的实践文章:atx 安卓集群管理 安装运行及自动化的实践


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK