Appetizer Appetizer 移动开发 DevOps 平台发布

appetizer.io · 发布于 2016年11月03日 · 最后由 appetizer.io 回复于 2017年04月01日 · 2502 次阅读
本帖已被设为精华帖!

Appetizer.io交流 QQ群:467889502, slack群组:https://ken234.typeform.com/to/QGf3G0

介绍

Appetizer 是一个面向移动开发程序员的 DevOps 平台,旨在提高软件开发人员进行产品交互、测试、维护的效率,以适应移动开发快速迭代的特点,加强开发人员的职能,简化移动平台App的开发流程,达到解放开发者,提高生产力的目的。

Appetizer 1.0.x 处于Beta阶段,广泛征集大家的意见以及bug report。

平台支持

Appetizer 客户端是一个基于 Electron 开发的跨平台的 Web App,可以运行在 Windows、Mac OS、Linux 三个平台。目前 Appetizer 1.0.1 版本暂时只支持 Android 设备的功能,2.3+,并且不需要ROOT。Appetizer 提供的功能可用广泛用于原生App(基于Android View)、Web App(WebView或者H5或者Cordova框架的)、Hybrid App、手机游戏(Unity3DCocos2D-x 框架)。在将来会扩充更多支持,同时支持 iOS 平台。

Appetizer 平台支持

获取 Appetizer

Appetizer 1.0.1 所有功能免费使用,只需要按照如下步骤:

  1. 下载 Appetizer 软件客户端到开发机
  2. 注册 Appetizer 账号,或使用 GitHub 账号授权登录
  3. 使用账号登录 Appetizer 客户端

下载 Appetizer 客户端

官方网站首页提供mac, Windows和Linux的Appetizer客户端。

下载 Appetizer

注册账号

  • 通过 Appetizer.io 主页链接进入账号注册页面,填写表单进行注册。页面采用 HTTPS 协议,加密存储密码,无需担心密码泄漏。

Appetizer 注册页面

  • GitHub 授权账号: Appetizer 支持使用 GitHub 授权账号作为第三方账号登录,点击后会跳转到 GitHub OAuth 授权页面,点击授权即可登录。账号在功能上和注册一样,账号登录后的主页面会缺少修改密码的功能,因为无需密码登录。Appetizer 账号系统会读取用户 GitHub 的部分个人信息,但不能使用 GitHub 账号的邮箱直接登录,只能通过 GitHub 授权的方式进行登录。第一次通过第三方平台登录的账号可以认为是在 Appetizer 账号系统上创建的全新的账号。

GitHub 授权登录

Appetizer 功能

第一次在开发机上打开 Appetizer 客户端,需要进行登录,方法同下载时在网站上的登录,可以使用之前注册的账号或者 GitHub 授权账号登录。

主界面

设置ADB路径

Appetizer 需要开发机上已经安装 Android SDK,同时 adb 需要在 PATH 环境变量中。启动Appetizer后,如果 Appetizer 可以获取 adb 的路径,则会直接进入主界面,否则会弹框要求指定 adb 路径。通常 Windows 上此路径在 C:\Users\<UserName>\AppData\Local\Android\sdk\,MacOS 上此路径在 /Users/<UserName>/Library/Android/sdk/platform-tools/,Linux 上在 Android-sdk/platform-tools/

请求指定adb路径

选择正确的 adb 路径后,Appetizer 会告知 adb 已经被检测到,并进入主界面,adb 路径只需要指定一次,在特殊情况下(例如Android SDK被移动位置等),可通过主界面的 Settings 来重新指定。

多设备控制

将至少一台Android设备通过 USB 连接到开发机,点击左侧导航 Device Control 进入多设备管理界面,点击右侧功能按钮 Refresh Devices 可以检测已经正确连接的设备(要求 adb debugging 功能已经打开)。当设备正确连接时,Appetizer 界面上就会显示所有设备及其参数和样例图片,否则请检测 USB 连接或者 ADB debugging 是否已经授权。在界面的右侧 Filter Tab 选项卡中,可以根据设备名称、屏幕分辨率、系统版本对系统上的 Android 设备进行筛选。

点击每个设备的 Select Device 按钮能够选中设备,Appetizer 的相关功能都会基于选中的设备运行。Filter Tab 下方是 Appetizer 提供的对多设备的一些基本的批量控制命令,例如可以对选中的设备进行批量执行,包括安装应用、删除应用、重启和运行Shell命令等。这些功能需要选定至少一台设备。

例如在下图中,选中五台设备,通过 Run Shell Command 执行 cat /system/build.prop | grep ro.product ,可以同时在五台设备上执行该命令,并查看五台设备的返回输出。

在多台设备上执行 Shell 命令

值得注意的是 Appetizer 处理提供基本的批量控制功能外,还提供了三项特色功能,如下。

镜像操作 Mirror Touches

镜像操作需要选择至少两台设备进行操作,其中一台为 master 设备,其余为 slave 设备。镜像操作会自动将 master 设备的触摸屏输入(坐标位置)实时传给所有的 slave 设备,从而达到使用一台设备控制多台设备的效果。镜像操作广泛支持短按(tap)、长按(long click)、拖动(swipe)以及复杂的手势轨迹。同时该功能支持多点触控,因此可以完成图片、网页缩放等操作。

注意:镜像操作要求master设备与所有设备的纵宽比相同。

点击查看使用镜像操作功能从一台设备实时控制多台设备的演示视频

录制和重放 Record & Replay Touches

Appetizer 不仅能实时将设备的触摸屏输入复制到其他设备,也可以将输入记录下来以便未来多次重复播放。录制操作需要选中单台设备,点击后会弹框选择触目标文件,存储该设备的触摸屏输入。完成录制后,点击 Stop。进而可以使用重放操作选择刚才产生的问题件进行重放。Appetizer 会准确记录每次触摸屏输入的位置、时间,并准确重放。

重放能够对选中的多个设备同步重放,达到自动化的对批量设备完成一些复杂的操作的目的。同样,重放要求目标设备与源设备的纵宽比一致(一致的情况会自动拉伸),否则无法重放。

点击查看录制和重放的功能演示视频

重放测试方案 Replay Testing

重放测试是 Appetizer 的核心功能,综合了之前介绍的录制和重放功能,能全自动化地完成测试人员需要执行的一系列复杂的测试流程。

重放测试首先需要选择一个 apk,开始重放测试的时候会先将 就版本从每个设备上卸载,并安装指定的 apk ,然后需要用户设定重放测试的流程和步骤,步骤可以包括以下几种:

  • 重放一个脚本
  • 截屏
  • 暂停一段时间

重放测试的步骤可以按照任意顺序增添、放置、排列,用户在步骤设置的界面上可以很方便地增加重放测试步骤,直接用鼠标拖动步骤即可改变重放测试的执行顺序。重放测试所使用的脚本,需要先通过录制功能进行录制。截屏和暂停可以帮助用户更好的完成重放测试流程,检测过程中设备所运行程序的状态。一切就绪,点击开始重放,选择存放结果的文件夹,然后测试就好像是重放录像一样。

设定测试流程

点击查看重放测试方案演示视频

  • 重放结束后,结果文件夹中会有多个子文件夹保存中间的截屏结果,每一个子文件夹对应一个设备,每个子文件夹中的截屏图片按照时间进行排序。

自动更新

Appetizer 客户端会自动检查是否有版本更新并下载,当下载完毕后会弹出如下提示框,点击 Restart 即可更新到最新版本。Mac版本的客户端暂时不支持自动更新,点击后会在浏览器内跳转到最新版本的下载页面下载最新的完整版。

Appetizer 自动升级

社区以及未来的功能

Appetizer 是一个快速发展的移动开发工具,有活跃的核心开发者维护。 Appetizer的中文社区在 TesterHome,欢迎开发者使用并积极为 Appetizer 的开发提意见。我们正在完善并计划推出的功能有:

  • Android Studio 插件支持,之后直接从 Android Studio build 到 Appetizer 测试,一键自动化
  • Appetizer的 Record Replay Mirror 部分将开放 API,方便开发者将其集成到自己的自动化QA过程中(例如Jenkins, Appium)
  • 截屏比较插件:可以自动对测试过程中产生的截屏进行图像学的比较,筛选错误的步骤加速测试人员快速定位问题
  • 崩溃诊断插件:应用在测试过程中崩溃将由该插件自动获取崩溃信息并产生报告,减少人工看截屏的工作量
  • 性能诊断插件:在测试过程中自动搜集应用的性能参数,并在测试完成后分析性能问题,返回问题报告
  • (欢迎您的意见和参与)
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
共收到 47 条回复
11797 appetizer.io [该话题已被删除] 中提及了此贴 11月03日 11:54
50

思寒又引进了一个利器👍

3楼 已删除
104 seveniruby 将本帖设为了精华贴 11月03日 12:42
104

加精理由: 这个是浙大的高艺老师(博士后)做的项目. 是浙大和交大联合开发的一个产品. 他们属于学术届. 在测试自动化和分析上有自己的独到见解. 技术也很不错. 其中用到了一些独特的dex注入技术. 期待后续他们能逐步开放相关技术出来. 造福测试行业.

104

#2楼 @simple 他们其中用到了一些独特的dex注入技术, 挺有用. ppt我让他们也放上来.

50

#6楼 @seveniruby 上次听你说用到了二进制文件注入,好像有点技术门框呀

104

#7楼 @simple 技术是成熟的了. 有开源的方案. 只是有些限制. 只能在未混淆的apk上注入代码. 所以适合公司内测试用. 不适合测试第三方的app.

50

#8楼 @seveniruby 好吧,不过不混淆的APP,很多公司应该都不会给测吧,相当于暴露源码了

104

#9楼 @simple 部分混淆是可以的. 所以使用上会有一些限制. dex注入技术在公司内部做专项测试是可以的. 这些问题可以抛给他们, 看他们后续如何解决.

2863

吐槽下官网巨慢无比,我挂了VPN 也很慢。

96

我是Appetizer团队的。App可以混淆,不可以加固,加固本身就是保护dex不被修改所以不支持。我们测过Google Play市场上已经发行的app,例如Angry Birds,没有问题。这次主要放出了基于屏幕位置的重放测试,测游戏、timing要求高、以及复杂手势的APP不错。注入相当于给APP加测量插件,可以在自动化测试过程中监控crash, 性能,HTTP response time,甚至一些耗电估计等等。下一个release会有更多内容加进来,到时候持续给大家报告 :-)

96

#11楼 @addison 刚发布不到1小时,CDN caching off,CDN不正常中,我们正在修复,下载是七牛的,挺快的

2863

设备连上去没有反应,adb setting设置好了。

2863

#13楼 @kenmark hello 可以留个QQ吗 交流一下下 哈哈

96

欢迎下载试用,给出宝贵意见。

2863

#16楼 @qizhwei 我连不上设备,我用的OS系统,adb path肯定是有的,命令行adb devices可以识别到设备,但是用你们工具貌似不行啊

2863


404了😅

11797

@addison 开了个QQ群做Appetizer的交流
群号:467889502

96

#18楼 @addison 这个404刷新了我对github pages的认识,已经修复@_@

104

#19楼 @appetizer.io QQ群的问题 建议你也定期的发布出来. 让别人可以搜索看到. 避免重复提问。

96

#18楼 @seveniruby 多谢思寒,会的,我们会整理播报的

96

目前已知的问题:在MacOS 10.12.1以下以及Windows8以下运行可能会出现兼容性问题。

24楼 已删除
306

上周就在官网看过,以为是商业软件的beta版,趁双11后有空体验一把

11797

Appetizer 1.0.1版已经更新了,修复了在Win7和部分MacOS版本上的兼容性问题,欢迎到www.appetizer.io下载最新版本

2125


win7 64bit运行出错。。。。

96

#27楼 @huangke 启动就崩吗?1.0.1版本能在win7上,我们在重现,加qq群

96

#30楼 @shenkai600 CDN在迁移,完成后恢复。 CDN迁移完毕,可以下载了,注意,首页已经更新到了1.0.1,请使用最新版本

1011

网页打开很慢。

96

#32楼 @DoctorQ 现在速度可以吧。

11797

#34楼 @DoctorQ 主页目前放在github和cdn上,比较慢,我们正在想办法迁到其他地方。文件下载是部署在其他地方的,应该还是比较快的。

5467

请教下,这个录制回放的功能是基于坐标点还是控件解析的?

11797

#32楼 @xubin98246 你好,目前的版本是基于坐标的,基于控件的录制重放将在后续版本中集成进来

5467

#37楼 @appetizer.io 嗯,基于坐标的局限性太大了,根本没法应对界面加载延迟、分辨率变化、界面变更等导致的非确定过程,说白了,容易沦为一次性买卖。但如果通过控件解析的话,有个问题比较好奇,对于WebView页面,要怎么把初始的坐标操作转化到对应的Html控件上呢?还是说解析的时候,就把WebView上的控件作为Native视图下的元素?

11797

#34楼 @xubin98246 在录制的时候就记录控件信息的,通过注入代码实现的,欢迎加qq群讨论😀

306

如果apk安装包以中文字符串开头/包含中文字符串,则在replay testing中安装会失败 @appetizer.io

96

#40楼 @cjtcwyk 这个问题已知,在dev build已经修复,1.0.2 会修复,谢谢上报

4529


程序打不开,win7_X64

96

#42楼 @itboyst Appetizer.exe 会先开启一个自动更新程序,这个启动方式在部分 win7 win8 有点兼容性问题。可以直接点击 electron.exe 进行启动。 详细的其他问题欢迎加QQ群 😃

11797

1.0.2 发布,修正了稳定性,开放了命令行工具和Python SDK,还有组了一个Slack群组。详细看顶部公告😀
Python SDK用法: https://testerhome.com/topics/6643

13550

#44楼 @appetizer.io 360安全卫士报毒呢..尴尬

11797

windows版准备改一个python壳,希望杀软安息

96

@kenmark 无法进行回放和mirror touches操作,手机没有root过,不知道会是什么问题

96

@appetizer.io 试用了一下 mirror touches~很不错, 原理感觉应该和stf的控制差不多吧~ 但是如何处理分辨率的问题呢?,我看说明只能在统一纵宽比下才能精确操作,有想过优化吗

11797

@9527shun 底层驱动和stf用的是一样,上层我们调整了多点触摸什么的。同纵宽比是一个软限制,因为可以通过同比缩放。不同纵宽比也可以缩放,但是通常效果就完全不一样了,比如在高一点的设备上有四行内容,低一点的只有三行,强制把点击第四行的缩放到三行没有意义。基于坐标的这套我们建议用于同纵宽比的游戏测试,同纵宽比的app的一些功能测试。我们在做view replay(基于控件id)的事件重放,针对app在不同屏幕纵宽比上的测试。

11797

@54rtwo 我们应该是不需要root的,建议加qq群,告知一下手机的型号,我们看下

11797

Appetizer 1.1.0 发布了,新增了自动质量监控功能,详情请见 https://testerhome.com/topics/8162😄,欢迎大家试用并反馈建议

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册