SoloPi [Soloπ] 我的 Soloπ体验尝试,录制回放篇

大东 · 2019年07月20日 · 9340 次阅读
本帖已被设为精华帖!

0x01 关于 Soloπ

Soloπ开源地址

MTSC 大会上,Soloπ算是一次正式的在公众前亮相。
可能有许多参过会的同学都不一定知道 Soloπ是什么,我一开始也没反应过来,其实这个是蚂蚁金服的乐舟老师分享的议题《移动测试2.0+》里介绍的产品。

简单的来说,Soloπ是一款可以让你脱离 PC,仅仅只是在手机里,就能帮助你完成自动化测试、专项测试以及一机多控能力的产品。听起来是不是跟早几年腾讯的 GT 很像?后面我会简单跟腾讯 GT(随身测)做个对比。

脱离 PC 完成自动化,这个概念其实并不新颖了,许多手机厂商自己的测试应该也有不少类似的效果,对于一般用户来说,也有一些类似于按键精灵的软件,有些需要 root,也有不需要 root 的。比如说像AutomationClikerMacroDroid等软件,有兴趣的可以去搜索一下,多数需要付费才能体验完整的功能。

但是 SoloPi 有点不一样的是,它的定位不是简单的手机屏幕触控录制回放。而是把需要通过 PC 端 Client 来捕获元素,通过元素信息来进行自动化的一套完整移植到了手机端内。并且在此基础之上,拓展了一机多控等功能。
具体原理就不解释了,可以去看看Soloπ官方发的帖子,里面有很详细的介绍。

无线ADB

0x02 Soloπ与 Tencent GT

产品 自动化测试 专项测试 一机多控 接入成本
Soloπ(仅 android) 支持,可在设备上快速完成自动化用例录制,支持编辑 支持监控 CPU、内存、响应耗时、帧率、电池、网络、启动等性能指标,并能够对 CPU 和内存进行模拟施压 支持 安装一个 apk 即可
GT(iOS&Android) 不支持 在 soloπ的基础之上,还支持卡顿代码调用栈、页面加载速度、页面布局渲染速度、IO 使用情况、分线程 CPU 时间片统计 不支持 需要 app 集成 GT sdk

看完以上的表格,你就会明白,虽然都是打着场测的名号,但是它们完全不一样;
GT 专注于性能场测,而 Soloπ专注于自动化&一机多控,以及一些比较简单的性能采集;

GT 相比于 Soloπ在性能分析上能做得更加全面与深入,但是接入成本远比 Soloπ要高;
但 Soloπ在性能这一块,有一个模拟施压的能力,这个功能其实非常有用,能够模拟一些手机在高压场景下才会出现的问题。

说回 Soloπ,我们用它的话,其实更多的是解决 UI 自动化问题,以及需要突击的施压场景。

接下来分享一些我在使用 Soloπ的录制回放功能的一些体验感受。

0x03 使用体验

第一次玩的同学还是建议看一下Soloπ的官方文档,Soloπ文档还是很齐全的。

1.1 下载安装

2.1 录制回放

说实话,操作真的是非常简单:

  • 打开 Soloπ App
  • 一系列授权操作
  • 点击录制回放
  • 选择被测 App
  • 设定用例名称和信息
  • 开始操作
  • 结束操作
  • 选择用例回放

一系列操作下来,基本可以无脑完成。
而 soloπ它本身也实现了 99%Appium 中的操作行为,你只需要在里面点按选择即可。(官方的文档已经很全了,我就不一一讲解步骤了)

基本上包含了:

  • 点击动作
  • 输入动作
  • 滑动手势(包括控件滑动)
  • 断言操作
  • 截图断言(Unity 以及其他游戏类框架,无法获取空间元素的,可以通过截图比较来操作)
    • 这里其实有很多内容可以讲,通过截图断言其实真的可以解决许多问题,但是截图比较的有效性、准确性、兼容性是否能达标,我还没来得及去尝试,所以今天这个话题就不展开来讲了。
  • 手机操作(音量、home 键、截图等等)
  • 执行 adb 命令
  • 等待操作
  • 弹窗自动处理(这个很重要,能够解决不同手机的权限弹窗、异常弹窗处理)
  • 性能录制
  • 响应耗时计算
  • scheme 跳转
  • 清理数据等等等等等

基本上是你能想得到的都有。

2.2 用例逻辑控制

如果说你想像写代码一样,写if/else, 写while循环的话,Soloπ也支持的。但是目前的版本好像不能在录制的时候就补这个逻辑。
你必须录制完一个流程后,到用例编辑功能页里去,才能加入if/elsewhile等逻辑。

别问我怎么进用例编辑页,我一开始也找了好一圈。用例编辑页只有【全部用例】的列表下,才能操作。具体请看官方的用例编辑教程
非常详细了,我就不一一列举咯!

但是看完教程,我不禁沉思,我这样一套下来,花费的时间其实还蛮长的,如果说你要编写大量交互复杂的用例,这个方式其实是要慢于在电脑写脚本的。
不过对于 UI 自动化测试,我相信这个已经足够使用了。

2.3 用例导出以及导入(用例分发)

做 UI 自动化的一个比较大的目的,就是为了能够在不同的手机上进行回归测试。那我们在一个手机上录制的用例,如何同步到其他设备进行运行?

其实在《移动测试2.0+》里的大图里,有一部分是讲到 Soloπ手机端跟云端通信,将用例同步到云端,云端再下发给其他用例。这个是一个比较好的方案,我相信蚂蚁内部应该也是这么来走的。
但是开源出来的只有一个 app,如果说,想要实现大图里的这个云端管理流,还得配合你们公司的基础建设来二次开发实现。

所以目前在仅有一个 apk 的情况下,你想把你的用例分发到其他设备,还是老老实实得一个一个拿出来,再一个一个导入到其他手机里去把。

导致我们现在的用例导出导入流程是:

  • 进入全部用例页面
  • 长按用例 A
  • 选择导出用例
  • 此时用例会被导出到设备的 /storage/emulated/0/solopi/export/ 目录下
  • 通过 adb 命令将用例获取到当前目录 export 下 adb -s device_id_1 pull /storage/emulated/0/solopi/export/ ./export/
  • 再将用例推送到 device2 里去 adb -s device_id_2 push ./export/ /storage/emulated/0/solopi/import/
  • 然后在 device2 中打开 soloπ,进入设置页面进行导入操作

说到这,要给个差评,现在用例只支持单个用例导出,如果录制了多个用例,必须一个一个来手动在 app 里导出,然后你才能拿到导出后的用例文件。官方可以早点把批量导出的功能提供给用户。哈哈。

2.4 录制回放的报告

关于报告这一块,其实 soloπ做得挺好的,在一个小小的手机屏幕中,能够详细得看到每一个步骤运行的结果,结构都比较清晰,用例截图、运行日志都比较完善,易于分析👍。

2.5 录制回放的效果

录制回放的产品有不少,但是真正做得好的没几个。
早期的一些录制回放,要么基于坐标,兼容性差,没有可延续性;
要么必须依赖 PC,依赖许许多多组件,无法真正的『移动端测试』;
而 Soloπ正是通过通过无线 ADB+AccessbilityService 等能力,将这套流程正式移动端化并且产品化做得都还挺不错。
体验和 demo 效果真的是挺震撼的,非常不错。

但是对于截图断言等一些深入些的功能还没来得及体验,等体验后,如果有尿点我会回来吐槽的,哈哈。

0x0x

对于需要这种脱离 USB 线的模式的团队,Soloπ是非常值得尝试的。且开源的 soloπ也可以进行二次开发,做云端对接等等,如果有比较好的编程能力且有这样的基础设施,基于 Soloπ,能玩的东西也很多,正如 移动测试2.0+ 里所勾勒的大图那样,真要把这个大图闭环了,那确实是 2.0+。

下一次我会去玩一下模拟性能施压的能力,看看是否真的能帮助我们的产品发现性能问题。

今天就先到这。有任何不对的地方请大家指正交流。谢谢阅读,回头见。

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
共收到 13 条回复 时间 点赞
恒温 将本帖设为了精华贴 07月21日 11:41

很不错哦

写得很赞,浅显易懂呀。

这周也要试玩一下

点个赞,写的非常清晰。👍

很赞,抽时间玩玩 。

👍🏻👍🏻👍🏻

在小米 6 下安装了 APK,录制钉钉的聊天操作,点击开始执行后,被测 app 钉钉,非常卡,连正常的聊天打字都特别慢,等录完后,页面就卡住了,测试 apk 点不动 被测 apk 也点不动 有老铁遇到和我一样的问题吗

看样子如果用来测试微信小程序的话,应该也是可以的吧。

王华 回复

我在 Soloπ的 issues 里面看到一个类似的反馈:
https://github.com/alipay/SoloPi/issues/5

唐衡 回复

换了一个手机就没问题了

我用华为 Mate8 手机测试了一个公司的 app 录制,登录 app 需要输入密码,调用的是华为手机原有的输入法,估计是调用了密码键盘,所以没法输入任何字母,问下楼主或者其他人用 Soloπ也是这样吗?

秦川风 回复

我也这样,我换个小米试试

simple [精彩盘点] TesterHome 社区 2019 年 度精华帖 中提及了此贴 12月24日 22:45
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册