appium手机自动化测试 testerhome_bqcon版本

73
Appium 移移移移移移 Weibo seveniruby Agilean 移移移移移 移移移移 : 2014-3-6 Testerhome.com Appium 移移 QQ 移 : 315508626

Upload: -

Post on 26-Jun-2015

1.019 views

Category:

Education


2 download

DESCRIPTION

testerhome.com 出品 在infoq上分享的版本

TRANSCRIPT

Page 1: Appium手机自动化测试 testerhome_bqcon版本

Appium 移动测试框架

Weibo : sevenirubyAgilean 测试咨询师更新日期 : 2014-3-6

Testerhome.com Appium 交流 QQ 群 : 315508626

Page 2: Appium手机自动化测试 testerhome_bqcon版本

2

官方网站

Page 3: Appium手机自动化测试 testerhome_bqcon版本

Appium 项目介绍

Page 4: Appium手机自动化测试 testerhome_bqcon版本

维护情况• 由 SauceLabs 支持• Saucelabs 是海外一家业界领先的测试产品

公司 , 有成熟的企业测试解决方案和基于appium 的云产品

• 在 Google 举办的 GATC2013 大会上有过详细介绍

• 2013 年 12 月 Selenium 官方组织宣布放弃自己的 mobile 项目 , 改而支持 Appium Selendroid iosdriver 框架

Page 5: Appium手机自动化测试 testerhome_bqcon版本

理念• 1. 测试最终发布的 app• 2. 用任何语言和任何框架来写测试• 3. 使用标准规范的自动化 API• 4. 构建繁荣的开源交流氛围

23/4/13

Page 6: Appium手机自动化测试 testerhome_bqcon版本

目前 mobile 自动化的方案

Page 7: Appium手机自动化测试 testerhome_bqcon版本

业界 top 框架综合对比

Page 8: Appium手机自动化测试 testerhome_bqcon版本

百度 Cafe 框架

Page 9: Appium手机自动化测试 testerhome_bqcon版本

阿里 Athrun

Page 10: Appium手机自动化测试 testerhome_bqcon版本

23/4/13

Cafe vs Athrun

• Athrun 项目基本已经停滞• 阿里有了更好的移动测试框架 sword• 暂未开源

• Cafe 开源技术和理念都很好• 其他公司反馈效果好• 开放性好 , 支持与 appium 的集成• 实用效果经过了 MTC 的验证

Page 11: Appium手机自动化测试 testerhome_bqcon版本

相比之下 Appium 的优势• 多种开发模式支持 native hybrid webview• 多平台支持 android ios firefoxos• 跨语言 java python ruby nodejs php• 支持跨 app, 可以在多个 app 之间交互

• 不依赖源代码 , 可以测试第三方应用 , 比如测试微信服务号

Page 12: Appium手机自动化测试 testerhome_bqcon版本

跨语言跨测试框架• Language: • Java Python Ruby PHP NodeJs ObjectC Perl

• TDD: Xunit• BDD: Rspec Cucumber • ATDD: RobotFramework

23/4/13

Page 13: Appium手机自动化测试 testerhome_bqcon版本

多平台支持

23/4/13

Page 14: Appium手机自动化测试 testerhome_bqcon版本

开源硬件 Arduino 支持

23/4/13

Page 15: Appium手机自动化测试 testerhome_bqcon版本

基于 Android 的测试框架

Page 16: Appium手机自动化测试 testerhome_bqcon版本

Appium 在 Android 上的架构

Page 17: Appium手机自动化测试 testerhome_bqcon版本

Appium 在 iOS 上的架构

Page 18: Appium手机自动化测试 testerhome_bqcon版本

Appium 架构• Android 上使用了 instrumentation 和

uiautomator 两套技术

• Appium 在 4.1 以上使用 uiautomator• 4.1 以下使用 selendroid

• iOS 使用 uiautomation

• 支持 firefox

Page 19: Appium手机自动化测试 testerhome_bqcon版本

Appium 的使用• 安装 nodejs• 使用 npm 安装 appium• Appium 启动

Page 20: Appium手机自动化测试 testerhome_bqcon版本

基础流程• 启动 appium• 连接设备或者模拟器• 编写你的测试用例• 指定 webdriver 的 caps 配置

• Run it

23/4/13

Page 21: Appium手机自动化测试 testerhome_bqcon版本

Remote webdriver 调用

Page 22: Appium手机自动化测试 testerhome_bqcon版本

视频演示

•请上 testerhome 的视频站

• http://video.testerhome.com

Page 23: Appium手机自动化测试 testerhome_bqcon版本

Appium 的加载流程• 调用 android adb 完成基本的系统操作• 向 android 上部署 bootstrap.jar 包并启动• Forward android 的端口到 pc 机器上

• Pc 上监听端口接受请求,使用 webdriver 协议• 分析命令并转通过 forward 的端口发给

bootstrap.jar

• Bootstrap.jar 接受请求并把命令发给 uiautomator或者插桩体系

Page 24: Appium手机自动化测试 testerhome_bqcon版本

一个 android 上的操作流程• 1. Webdriver 的脚本执行 Element.send_keys

• 2. 发送到 remote webdriver /wd/hub/session/xxx/keys

• 3. pc 处理请求并转发给 android 和 iphone

• 4. Bootstrap.jar 调用 uiautomator

• 5. Uiautomator 调用 settext 方法

Page 25: Appium手机自动化测试 testerhome_bqcon版本

Appium 设计理念• CS 架构 appium 作为服务器• 使用标准 WebDriver 协议交互• 元素定位使用统一的 XPath 抽象定位• 底层调用各自平台的自动化技术

• 类似 selenium 的架构

Page 26: Appium手机自动化测试 testerhome_bqcon版本

Webdriver 协议• 使用 webdriver 协议,成熟标准,应用广泛• 它即将成为 w3c 业界标准• 跨语言 , 不限制测试框架• Remote WebDriver 方式支持云测和集群模

式• PC 端运行可以支持各种 runtimes ,不受限手机环境

Page 27: Appium手机自动化测试 testerhome_bqcon版本

Appium 支持主流语言

Page 28: Appium手机自动化测试 testerhome_bqcon版本

webdriver 的 capabilities 配置• App: 本地路径或者网络下载地址• browserName: 兼容 selenium, 并不使用• Device: ios android firefoxos• Version: Android API version, iOS Version• Launch: 是否让 appium 自动启动 app

Page 29: Appium手机自动化测试 testerhome_bqcon版本

Capabilities 的配置例子• Android2.3• Android4.2• iOS6.1

Page 30: Appium手机自动化测试 testerhome_bqcon版本

演示代码

Page 31: Appium手机自动化测试 testerhome_bqcon版本

元素定位• Android 和 iOS 的原生控件以及 webview控件映射为特定的命名 , 比

如把所有平台的按钮映射为 button 元素• 把当前的结构树映射为 html文档• 通过 xpath 来选择元素

• 多种定位方式 • Name: id , label text content-desc resource-id• TagName: component type• XPath

• 定位元素建议采用 (Screen Object)PageObject 模式,使用 XPath

Page 32: Appium手机自动化测试 testerhome_bqcon版本

Xpath 支持语法列表• //button• //button[last()]• //button[1]• /button• Button• //button/text/webview• //button[1]/text/webview[3]• //button[@name='hi there']• //button[@other_attr='hi there']• //list/button[@name="hi there"]• //button[contains(@other_attr, "hi")]• //*[contains(@text, 'agree')]• //*[@text='agree']• //frame//button

• 目前还不是完整的 xpath, appium1.0 会支持有全功能的 xpath 支持

Page 33: Appium手机自动化测试 testerhome_bqcon版本

Xpath映射关系查询

Page 34: Appium手机自动化测试 testerhome_bqcon版本

Xpath获取• Appium inspector• Uiautomatorviewer• Uiautomator events• android也可以使用 selendroid 的 inspector

Page 35: Appium手机自动化测试 testerhome_bqcon版本

Appium Inspector

23/4/13

Page 36: Appium手机自动化测试 testerhome_bqcon版本
Page 37: Appium手机自动化测试 testerhome_bqcon版本

元素交互• Webdriver 已经支持• 点击• 输入 • 按键事件

• Mobile 相关 :• 拖动• 划动• 长按

Page 38: Appium手机自动化测试 testerhome_bqcon版本

点击与输入

Page 39: Appium手机自动化测试 testerhome_bqcon版本

长按操作代码

Page 40: Appium手机自动化测试 testerhome_bqcon版本

通过 execute_script 执行 mobile 方法

Page 41: Appium手机自动化测试 testerhome_bqcon版本

发送特殊 event

• 发送 ctrl+v• driver.execute_script 'mobile: keyevent',

{'keycode'=>50, 'metastate'=>28672}

• 发送 v字符• driver.execute_script 'mobile: keyevent',

{'keycode'=>50}

• 具体的事件代码请参考各自平台的 event文档

Page 42: Appium手机自动化测试 testerhome_bqcon版本

一个完整的例子

Page 43: Appium手机自动化测试 testerhome_bqcon版本

中文输入问题• 两个解决方法 :

• 1. 安装 UTF7IME输入法 , 并使用对应的Java库编码待输入中文

• 2. 使用复制粘贴方法 . 长按某个输入框 , 并模拟 ctrl+v 的按键 , 别触发搜狗输入法 , 搜狗输入法会拦截 ctr+v, 其他输入法没有此类问题 .

Page 44: Appium手机自动化测试 testerhome_bqcon版本

Appium 的灵活扩展• Appium 对 webdriver 协议进行了扩充• 通过利用 execute_script 执行 mobie 操作• 通过自身服务增加了一些处理命令,比如

安装 , 卸载 , 加载 app• 也扩展支持一些平台专有的指令

• Webdriver 即将成为 W3C 标准• Appium 在推动 webdrive增强 mobile特性

Page 45: Appium手机自动化测试 testerhome_bqcon版本

位置模拟演示• 目前只支持 android 模拟器

Page 46: Appium手机自动化测试 testerhome_bqcon版本

android覆盖率统计

23/4/13

• caps = { androidCoverage: 'com.example.pkg/com.example.pkg.instrumentation.MyInstrumentation' }

• mobile :endCoverage, intent: 'com.example.pkg.END_EMMA', path: '/mnt/sdcard/coverage.ec'

Page 47: Appium手机自动化测试 testerhome_bqcon版本

多种架构支持

23/4/13

Page 48: Appium手机自动化测试 testerhome_bqcon版本

原生 ,混合 ,web• 三种主流的 app 设计模式• 原生 : • 使用开发特定平台专用 app

• 混合 :• Phonegap 百度轻应用 • 使用 html5 技术开发• jquery mobile, sencha touch

• Webapp:• 加载远程页面

Page 49: Appium手机自动化测试 testerhome_bqcon版本

混合模式的自动化• iOS

• Android

Page 50: Appium手机自动化测试 testerhome_bqcon版本

Grid 模式

23/4/13

Page 51: Appium手机自动化测试 testerhome_bqcon版本

Appium 对 RobotFramework 的支持

• Appium 支持 webdriver 协议• 可以使用 RobotFramework 来设计测试用例

• 需要对 appium 目前的版本打补丁• 已经提需求给官方 , 后续会更好的支持

• 我们也有意打造完全支持的商业版本 . 把移动测试的难度降到最低

Page 52: Appium手机自动化测试 testerhome_bqcon版本

Robot 的测试用例演示• 打开淘宝 , 输入小米手机并搜索

Page 53: Appium手机自动化测试 testerhome_bqcon版本
Page 54: Appium手机自动化测试 testerhome_bqcon版本
Page 55: Appium手机自动化测试 testerhome_bqcon版本
Page 56: Appium手机自动化测试 testerhome_bqcon版本
Page 57: Appium手机自动化测试 testerhome_bqcon版本
Page 58: Appium手机自动化测试 testerhome_bqcon版本

移动测试环境规划• 私有移动测试云环境• 针对 android ios等各个主要版本的测试环境• 模拟器为主 , 应付日常测试需求

• 公共云服务• 百度 MTC Testin Saucelabs• 真机为主 , 可以测试更多场景 . 测试覆盖度高

Page 59: Appium手机自动化测试 testerhome_bqcon版本

移动云测试• Saucelabs提供了 appium 的在线云环境• 提供虚拟机• 提供运行时的截图和录像• 脚本执行非常简单

Page 60: Appium手机自动化测试 testerhome_bqcon版本

国内移动云测平台• TestIn• 提供商业服务 .• 价格贵 .• 服务好• 技术中等

• MTC• 百度云计算计划的一部分• 免费• 没有商业服务• 技术优秀

• 两者功能各有特色 , 可以去相关网站参考• 限于篇幅 , 不做详细介绍

Page 61: Appium手机自动化测试 testerhome_bqcon版本

移动测试持续集成• Appium 运行于 PC 端• 支持 webdriver 协议和 Grid 模式• 可以实现无缝的持续集成

Page 62: Appium手机自动化测试 testerhome_bqcon版本

Appium 的坑•XPath 的支持有问题,并不是完全的 xpath功能 , 在即将发布的1.0版本中会提供完全的支持

•不同实现存在细节差异

•一些 app 比如手机 qq 不允许简单的 am start ,需要提升权限 , 比如让 appium扩展支持 su

•Appium长时间运行不太稳定 , 建议在执行测试前重启 appium

•更多坑请参见 github 上的 issue列表和 TesterHome.com 上的帖子

Page 63: Appium手机自动化测试 testerhome_bqcon版本

展望 appium• 架构非常优秀,扩展性很好,不会限制用户使用特定的语言

• Selenium 官方组织宣布放弃自身mobile 项目转而支持 appium等框架

• Saucelabs TestDroid 海外云服务平台已经支持appium, 国内后续也可能会跟进

• 国内研究和使用 appium 的公司在逐渐增多

Page 64: Appium手机自动化测试 testerhome_bqcon版本

Appium 1.0 coming soon

• 与 selenium3 协议融合 , selenium 新版本将支持 appium 的 api

• 提供定位 , 网速控制 , 电源等硬件访问 api• 完整 xpath 支持• 更多更完整的文档和教程

Page 65: Appium手机自动化测试 testerhome_bqcon版本

TesterHome论坛• 关于我们 :• 致力于打造技术范的移动测试交流社区• 国内最热门的移动测试交流社区 , 专注于 appium 和移动测试相关

topic 的研究• 我们的关键词 Open Share Coding Geek Cool

• 公开的合伙人体系 : 对论坛有重大贡献的成员会被赠分成 . • 商业回馈 : 论坛盈利后会根据每个人发帖情况进行分成 , 以鼓励成员

对知识的贡献• 公益计划 : 论坛会拿出 2% 的营收捐赠壹基金 , 以尽我们的社会责任

• 创始人 : 恒温 , monkey• 一个开源自运营的社区 + 新技术和创业项目孵化器

• testerhome.com

Page 66: Appium手机自动化测试 testerhome_bqcon版本

我们的论坛• Talk Is Cheap Show Me The Code

Page 67: Appium手机自动化测试 testerhome_bqcon版本
Page 68: Appium手机自动化测试 testerhome_bqcon版本

与 appium 互动里程碑•Done•翻译了 appium 的文档•补充了测试用例类型•提交发现的 issue

•Doing•改进 appium•集成 cafe 到 appium•增加问题定位功能•支持 robot framework•支持中文输入

•期待更多同学加入 appium 的支持和维护工作

Page 69: Appium手机自动化测试 testerhome_bqcon版本

新技术与创新项目孵化• 在线服务 +云测 :• 录制建模与代码生成服务• 在线自动遍历服务• 在线问题定位• 接口测试自动生成

• 众测 :• 一种与 Testin 互补的众测模式

• 测试分析 :• 监控与分析建模 (NewRelic 模式 )• 专项问题发现和定位 (兼容性 , crash,内存泄漏 , 非安全 api)• 业务安全测试

23/4/13

Page 70: Appium手机自动化测试 testerhome_bqcon版本

23/4/13

Page 71: Appium手机自动化测试 testerhome_bqcon版本

测试理念• 监控分析 (数据流 + 代码路径 )• 录制建模• 云测• 众测• 敏捷

• 目标 :• 一种基于移动测试和快速功能验证的 NewRelic 在线服务

模式

• 有意合作或者投资请联系 weibo seveniruby23/4/13

Page 72: Appium手机自动化测试 testerhome_bqcon版本

捐赠页面• TesterHome创始人 : 恒温• https://me.alipay.com/testerhome

Page 73: Appium手机自动化测试 testerhome_bqcon版本

Thanks

• Q&A

• 感谢美团云提供云主机支持• 感谢 TesterHome论坛成员的分享和交流