在社区看到小伙伴们都是在做手机端自动化测试的,机顶盒也算是个新的应用场景吧。接触 Sonic 时间不长,也算一路探索、踩坑过来,目前平台基本可用,于是我这只菜鸟想写点东西记录一下😁。还望大佬们多多指教,也欢迎有同业务场景的童鞋一起交流学习~

Sonic 官网:https://sonic-cloud.cn/

平台作者: @ZhouYixun

背景

我们部门主要做的是 IPTV 相关的业务,也就少不了和机顶盒打交道。因为业务及设备的特殊性,目前的测试验证主要还是依靠人工。
去年底领导说起测试的工作规划时,有意搭建一套测试管理平台,并提到了很火的 Sonic 云真机平台,希望可以借此做一些回归测试的工作,提高效率,解放人力。很荣幸,领导把搭建平台的任务交给了我,于是开启了探索之路~

使用体验

没记错的话,我是从 2.0.0 版本开始使用的,中间因为测试任务紧张,搁置了一段时间,目前在用 2.4.2,2.5 改动很大,期待。有部署文档 + 容器化 部署还是很简单的,平台页面简洁,丝滑流畅,体验很不错。
但由于我这边设备安卓版本太低,中间出现很多问题,一度无法往下进行,好在有 Eason 和社区伙伴的帮助,问题得以解决,这些放到后边再说🕶

平台展示

修改内容以及使用情况

根据这边的情况,我做了一些修改,主要是前端的改动。

  1. 设备中心页,默认图替换成了机顶盒,添加了机顶盒厂家的配置信息和 logo,搜索和设备信息隐藏了电池、分辨率、cpu 等用不到的
    img

  2. 设备远控小窗,我把底部模拟按键改成了上下左右导航、确认、返回、主页共 7 个按键,方便模拟遥控器操作。
    右侧隐藏了拨号、相机、电池模拟等用不到的功能按键,添加了设置按键。

    img

  3. 用例及执行
    因为安卓 4 的盒子无法获取控件元素,暂时没想到更好的办法,我这里就直接采取复刻遥控器按键的方式来操作了。把常用按键设置为公共步骤。
    img
    img

安卓 9 可以获取控件,但有些无法点击,就采用控件和模拟按键混合的方式。
img

问题

这里记录一下期间遇到的问题。

  1. 远控设备,安装 sonic 及 uiautomator2 的 apk 提示 INSTALL_FAILED_OLDER_SDK 这个报错原因就是你设备的安卓版本低于 apk 最低支持的版本,这里放个对照表。 img

我是暴力把 build.gradle 里面 minSdk 改成了 19(希望作者不要打我🤣),并重新打了包,替换掉 agent/plugins 里面的 3 个 apk 文件。
img
img

然后 sonic-apk 的 version 要和 agent 版本对应起来,不然这里会检查不通过,出现报错或者图像一直准备中的情况。
img

  1. 获取元素控件失败
    这个也是因为安卓版本低的问题,因为 UiAutomator2 不支持低于安卓 5 的版本,尝试使用 UiAutomator 没能成功,暂时搁置。目前手上有一些安卓 9 的盒子,是可以获取到的。
    img

  2. 远控时,视频播放黑屏
    这个也基本确认是机顶盒厂商做了某种屏蔽(目前无解),手机远控播放是没问题的。

  3. 执行测试控件报错,电量不足
    agent 有对电量的判断,机顶盒获取不到电量,我这里简单处理了一下。
    img

  4. 获取到的某些元素,执行点击控件元素操作,没有报错,但是点击无响应
    这个和研发同事确认了,因为机顶盒的原因,有些位置(比如顶部 tab)是没有加单点触控事件的,所以一些模拟触摸、点击的操作也就没有响应。这种位置还是采取模拟遥控器按键的方式。
    img

结语

最后再吹一波,我记得之前遇到性能监测没有数据的问题,大佬帮忙排查,半夜给我发了个新包,早上看到消息还是挺惊讶的,周末也是在改,他改我验证。能真切的感受到是想把产品做好的。社区的回复很快,快到,不像是开源的,哈哈😀。希望 Sonic 越来越好,膜拜膜拜!


↙↙↙阅读原文可查看相关链接,并与作者交流