Android 设备集群管理 atx-server

RamsdenRichard 发布于8天前 阅读46次
0 条评论

背景介绍

众所周知,安卓单台设备的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-server  |
             |              |
             +--+-------+--++
                |       |  |
                |       |  +--------------------------+
            +---+       +-------+                     |
            |                   |                     |
            |                   |                     |
+-----------v----+       +------v---------+       +---v------------+
| Android        |       | Android        |       | Android        |
|                |       |                |       |                |
|      +---------+       |      +---------+       |      +---------+
|      |atx-agent|       |      |atx-agent|       |      |atx-agent|
|      |         |       |      |         |       |      |         |
+------+---------+       +------+---------+       +------+---------+

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

Android 设备集群管理 atx-server

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

Android 设备集群管理 atx-server

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

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

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

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

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

查看原文: Android 设备集群管理 atx-server

  • brownbear
  • tinytiger
  • blackpanda
  • heavyswan
  • tinyostrich
  • lazyduck
  • crazyswan
  • blackrabbit
需要 登录 后回复方可回复, 如果你还没有账号你可以 注册 一个帐号。