Appetizer 移动开发 DevOps 平台 1.0.0 发布

Stella981
• 阅读 514

Appetizer.io交流 QQ群:467889502

演示视频合集:http://www.bilibili.com/video/av6725203/

小编提示:由于公众号限制,无法加入外部链接,因此去掉了原文中部分外部链接,演示链接改为给出链接地址。若想更方便查看建议点击文末 “阅读原文” 打开原文查看。

目前只支持win8+, 最新mac Sierra以及Linux(centos, ubuntu, fedora可能);小伙伴们正在苦逼调试平台问题,感谢beta阶段大家的帮助

介绍

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

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


平台支持

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

Appetizer 移动开发 DevOps 平台 1.0.0 发布


获取 Appetizer

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

  1. 下载 Appetizer 软件客户端到开发机

  2. 注册 Appetizer 账号,或使用 GitHub 账号授权登录

  3. 使用账号登录 Appetizer 客户端


下载 Appetizer 客户端

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

Appetizer 移动开发 DevOps 平台 1.0.0 发布


注册账号

Appetizer 移动开发 DevOps 平台 1.0.0 发布

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

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

Appetizer 移动开发 DevOps 平台 1.0.0 发布


Appetizer 功能

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

Appetizer 移动开发 DevOps 平台 1.0.0 发布


设置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/

Appetizer 移动开发 DevOps 平台 1.0.0 发布

选择正确的 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 ,可以同时在五台设备上执行该命令,并查看五台设备的返回输出。

Appetizer 移动开发 DevOps 平台 1.0.0 发布

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

镜像操作 Mirror Touches

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

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

查看使用镜像操作功能从一台设备实时控制多台设备的演示视频:http://www.bilibili.com/video/av6725203/index\_3.html

录制和重放 Record & Replay Touches

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

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

查看录制和重放的功能演示视频:http://www.bilibili.com/video/av6725203/index\_2.html


重放测试方案 Replay Testing

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

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

  • 重放一个脚本

  • 截屏

  • 暂停一段时间

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

Appetizer 移动开发 DevOps 平台 1.0.0 发布

查看重放测试方案演示视频:http://www.bilibili.com/video/av6725203/index\_1.html

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

自动更新

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

Appetizer 移动开发 DevOps 平台 1.0.0 发布


社区以及未来的功能

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

  • Android Studio 插件支持,之后直接从 Android Studio build 到 Appetizer 测试,一键自动化

  • Appetizer的 Record Replay Mirror 部分将开放 API,方便开发者将其集成到自己的自动化QA过程中(例如Jenkins, Appium)

  • 截屏比较插件:可以自动对测试过程中产生的截屏进行图像学的比较,筛选错误的步骤加速测试人员快速定位问题

  • 崩溃诊断插件:应用在测试过程中崩溃将由该插件自动获取崩溃信息并产生报告,减少人工看截屏的工作量

  • 性能诊断插件:在测试过程中自动搜集应用的性能参数,并在测试完成后分析性能问题,返回问题报告

  • (欢迎您的意见和参与)


目前已知的问题

  • 目前平台支持MacOS 10.12.1以上,Win 8以上以及linux,其他版本可能会有兼容性问题,我们正在解决中... 遇到任何问题,或者有任何建议,欢迎加群讨论。

Appetizer.io交流 QQ群:467889502

本文分享自微信公众号 - TesterHome(AskTesterHome)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

点赞
收藏
评论区
推荐文章
blmius blmius
2年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
Easter79 Easter79
2年前
swap空间的增减方法
(1)增大swap空间去激活swap交换区:swapoff v /dev/vg00/lvswap扩展交换lv:lvextend L 10G /dev/vg00/lvswap重新生成swap交换区:mkswap /dev/vg00/lvswap激活新生成的交换区:swapon v /dev/vg00/lvswap
Jacquelyn38 Jacquelyn38
2年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
Wesley13 Wesley13
2年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Wesley13 Wesley13
2年前
00:Java简单了解
浅谈Java之概述Java是SUN(StanfordUniversityNetwork),斯坦福大学网络公司)1995年推出的一门高级编程语言。Java是一种面向Internet的编程语言。随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。Java是简单易学,完全面向对象,安全可靠,与平台无关的编程语言。
Stella981 Stella981
2年前
Django中Admin中的一些参数配置
设置在列表中显示的字段,id为django模型默认的主键list_display('id','name','sex','profession','email','qq','phone','status','create_time')设置在列表可编辑字段list_editable
Stella981 Stella981
2年前
Docker 部署SpringBoot项目不香吗?
  公众号改版后文章乱序推荐,希望你可以点击上方“Java进阶架构师”,点击右上角,将我们设为★“星标”!这样才不会错过每日进阶架构文章呀。  !(http://dingyue.ws.126.net/2020/0920/b00fbfc7j00qgy5xy002kd200qo00hsg00it00cj.jpg)  2
Wesley13 Wesley13
2年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Python进阶者 Python进阶者
3个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这