Appetizer 实战 1:多设备控制 + 录制重放实现完整多设备测试流程

我啃 2017-01-19 10:22:45
测试人员在找到一个问题之后从上报到修复通常是一个比较漫长而且需要大量交流的过程。很多时候开发人员常常会有以下抱怨:
“你怎么弄奔溃的?”,“我这里好好的啊”,“你从什么状态开始操作的?”,诸如此类。
大量的问来问去的语言交流使得修复的时间变长,影响进度(测试是个漂亮妹妹除外)。
虽然不同公司可能存在不同的上报流程(github上的开源项目有些不厌其扰也搞了模板),但归根结底修复的人只希望得到一个测试人员提供的可以重现的测试流程,跑一遍,重现问题。这里我们向大家分享一下如何结合多设备控制以及屏幕操作的录制重放,在多设备上实现可重现的测试流程。鉴于公司的制度和流程不同,并不一定完全适用,大家挑有用的用就是了。

# 介绍
最简单的录制重放,就是那一个摄像头把测试全称录下来,这样虽然能够看到测试做了什么,但是和看电影一样,修复者没法参与。所以今天使用的是我们开源的[appetizer-toolkit](https://github.com/appetizerio/appetizer-toolkit),这个命令行工具的原理是录制触摸屏上操作,然后存成一个trace文件,下一次可以从一样的状态重放。这样听上去有点像按键精灵,当然比按键精灵要做得好,时间控制非常准确,准确到可以重放音乐手游;支持多点触摸,因为是触屏操作,所以怎么奇怪的手势都可以支持;同样,因为录制的是触屏操作,所以如果应用中间需要切换到其他应用去打开文件什么的也是没有问题的;最后,用现在的命令行工具,可以灵活结合重放以及一些常用的控制命令,例如启动应用,输入文字,并不一定要录制在屏幕上按输入法输入文字;

# 配置环境
1. 首先,到github页面去下载最新版本的[appetizer-toolkit](https://github.com/appetizerio/appetizer-toolkit),支持三个操作系统,必须是64位机器(32位的怎么办?重装吧)。直接就下载对应平台的可执行文件就可以了,linux和mac的比较简单,下载后就一个可执行文件,windows上需要下载`appetizer-toolkit-win.zip`后解压,得到一个文件夹里面有主可执行文件 `appetizer-toolkit-win.exe`
2. 确认adb 都装好了(废话吧,是嘛),确认adb在PATH环境变量里面。这里以windows为例,测试一下 `appetizer-toolkit-win devices list` 输出应该一串json,看看连在电脑上的设备有没有在里面


* 如果找不到`adb`,用`./appetizer-toolkit-win.exe adb detectadb`确认一下是否找到了adb可执行文件,如果没有,检查环境变量设置
* 如果发现有遗漏的设备,用`adb devices`检查一下设备是否是online状态,一般有些需要重新插拔
* 如果工具丢出一堆crash stacktrace,请到我们的QQ群(见最下面)去反映一下


# 调整设备到初始状态
执行`appetizer-toolkit-win.exe devices list`获取目前已经连接的设备。每个设备由一个serialno标识(和`adb devices`得到的一样)。`appetizer-toolkit-win.exe devices control`系列命令是`adb`的多机扩展,可以同时控制多个设备。
该命令的第一个参数是设备列表,可以是单个设备的serialno,也可以是一系列设备的serialno,用逗号隔开,例如`serialno1,serialno2`。
以下是控制命令的子命令:
```bash
DEVICE=serialno1,serialno2 # 设备序列号列表,注意不要有空格
./appetizer-toolkit-win.exe devices control $DEVICE uninstall com.helloworld # 卸载应用
./appetizer-toolkit-win.exe devices control $DEVICE install hellworld.apk # 安装应用
./appetizer-toolkit-win.exe devices control $DEVICE kill_all # 杀掉后台应用
./appetizer-toolkit-win.exe devices control $DEVICE launch_pkg com.helloworld # 启动应用
./appetizer-toolkit-win.exe devices control $DEVICE shell input keyevent KEYCODE_HOME # 模拟按HOME按键
./appetizer-toolkit-win.exe devices control $DEVICE shell pm grant pkg android.permission.SOME_PERMISSION # 赋予权限(小米弹框除外)
./appetizer-toolkit-win.exe devices control $DEVICE shell "input keyboard text 'Paste%stext%son%sAndroid%sDevice'" # 输入一段文本, Android 6.0前
./appetizer-toolkit-win.exe devices control $DEVICE shell "input keyboard text 'Paste text on Android Device'" # 输入一段文本, Android 6.0后
./appetizer-toolkit-win.exe devices control $DEVICE shell screenrecord /sdcard/demo.mp4 # 录制屏幕video(4.4+)
```
常见初始状态,包括关闭所有后台程序,回到桌面,打开待测应用,这些步骤可以用`appetizer-toolkit-win.exe`的命令行完成。其中`./appetizer-toolkit-win.exe devices control $DEVICE shell`还能用来在多个设备上执行同一个shell命令,用法和`adb shell`类似。一些有用的资料:
* [keyevent 虚拟按键列表(英文)](http://www.android-doc.com/reference/android/view/KeyEvent.html)
* [adb shell命令集(英文)](http://stackoverflow.com/documentation/android/1051/adb-android-debug-bridge):替换`adb`为`appetizer`即可

# 录制重放屏幕操作
1. 运行`appetizer-toolkit-win.exe trace record trace.txt --device serialno`就开始录制一个设备上接下去所有的屏幕操作了。启动录制后appetizer toolkit程序会继续接受命令行输入,输入`exit`回车即可结束录制。
下面的截图这样就算录制成功了

2. 可以用`appetizer-toolkit-win.exe trace info trace.txt`确认一下录制的trace的情况,比如:
```json
{"contacts": 1, "description": "", "height": 1920, "length": 2.4815590000071097, "records": 52, "valid": true, "width": 1080}
```
表示这是个合法的trace (valid),总计2.48秒,在一个1920x1080的设备上录制的,单点触摸(contacts),记录了52个屏幕事件
2. 重放一下刚才录制的trace,确保问题可以重现。重放命令是`appetizer-toolkit-win.exe trace replay trace.txt serialno`
3. 可以录制多段重放,在段与段间可以用 `appetizer-toolkit-win.exe devices screenshot 1.jpg --device serialno` 来保存设备屏幕截图
4. 录制重放是支持多点触摸的,支持对时间精确度高的复杂手势,重放效果见视频
https://www.appetizer.io

# Python脚本
命令行工具可以通过命令行调用,也可以通过Python调用,Appetizer toolkit的[Python SDK](https://github.com/appetizerio/appetizer-toolkit-py)提供了Python接口来使用所有toolkit的功能。
[中文文档在此](https://github.com/appetizerio/appetizer-toolkit-py/wiki/%E4%B8%AD%E6%96%87%E6%96%87%E6%A1%A3)


* Slack(用的人可能比较少,也贴一下):https://appetizer.typeform.com/to/QGf3G0
* Bug report: https://github.com/appetizerio/appetizer-toolkit/issues/
...全文
345 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

80,330

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧