Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Appium 移动测试框架
Weibo : seveniruby
Agilean 测试咨询师
更新日期 : 2014-3-6
Testerhome.com Appium 交流 QQ 群 : 315508626
官方网站

2
Appium 项目介绍
维护情况
• 由 SauceLabs 支持
• Saucelabs 是海外一家业界领先的测试产品
公司 , 有成熟的企业测试解决方案和基于
appium 的云产品
• 在 Google 举办的 GATC2013 大会上有过详
细介绍
• 201...
理念
•
•
•
•

1.
2.
3.
4.

03/08/14

测试最终发布的 app
用任何语言和任何框架来写测试
使用标准规范的自动化 API
构建繁荣的开源交流氛围
目前 mobile 自动化的方案
业界 top 框架综合对比
百度 Cafe 框架
阿里 Athrun
Cafe vs Athrun
• Athrun 项目基本已经停滞
• 阿里有了更好的移动测试框架 sword
• 暂未开源
•
•
•
•

Cafe 开源技术和理念都很好
其他公司反馈效果好
开放性好 , 支持与 appium 的集成
实用效...
相比之下 Appium 的优势
•
•
•
•

多种开发模式支持 native hybrid webview
多平台支持 android ios firefoxos
跨语言 java python ruby nodejs php
支持跨 ap...
跨语言跨测试框架
• Language:
• Java Python Ruby PHP NodeJs ObjectC Perl
• TDD: Xunit
• BDD: Rspec Cucumber
• ATDD: RobotFramework
...
多平台支持

03/08/14
开源硬件 Arduino 支持

03/08/14
基于 Android 的测试框架
Appium 在 Android 上的架构
Appium 在 iOS 上的架构
Appium 架构
• Android 上使用了 instrumentation 和
uiautomator 两套技术
• Appium 在 4.1 以上使用 uiautomator
• 4.1 以下使用 selendroid
• iOS 使用...
Appium 的使用
• 安装 nodejs
• 使用 npm 安装 appium
• Appium 启动
基础流程
•
•
•
•

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

• Run it

03/08/14
Remote webdriver 调用
视频演示
•请上 testerhome 的视频站
•

http://video.testerhome.com
Appium 的加载流程
• 调用 android adb 完成基本的系统操作
• 向 android 上部署 bootstrap.jar 包并启动
• Forward android 的端口到 pc 机器上
• Pc 上监听端口接受请求,使用...
一个 android 上的操作流程
• 1. Webdriver 的脚本执行 Element.send_keys
• 2. 发送到 remote webdriver
/wd/hub/session/xxx/keys
• 3. pc 处理请求并转...
Appium 设计理念
•
•
•
•

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

• 类似 selenium 的架构
Webdriver 协议
使用 webdriver 协议,成熟标准,应用广泛
它即将成为 w3c 业界标准
跨语言 , 不限制测试框架
Remote WebDriver 方式支持云测和集群模
式
• PC 端运行可以支持各种 runtimes ...
Appium 支持主流语言
webdriver 的 capabilities 配置
•
•
•
•
•

App: 本地路径或者网络下载地址
browserName: 兼容 selenium, 并不使用
Device: ios android firefoxos
Vers...
Capabilities 的配置例子
• Android2.3
• Android4.2
• iOS6.1
演示代码
元素定位
Android 和 iOS 的原生控件以及 webview 控件映射为特定的命名 , 比
如把所有平台的按钮映射为 button 元素
• 把当前的结构树映射为 html 文档
• 通过 xpath 来选择元素
•

•
•
•
•
...
Xpath 支持语法列表
•
•
•
•
•
•
•
•
•
•
•
•
•
•

//button
//button[last()]
//button[1]
/button
Button
//button/text/webview
//but...
Xpath 映射关系查询
Xpath 获取
•
•
•
•

Appium inspector
Uiautomatorviewer
Uiautomator events
android 也可以使用 selendroid 的 inspector
Appium Inspector

03/08/14
元素交互
•
•
•
•

Webdriver 已经支持
点击
输入
按键事件

•
•
•
•

Mobile 相关 :
拖动
划动
长按
点击与输入
长按操作代码
通过 execute_script 执行 mobile 方法
发送特殊 event
• 发送 ctrl+v
• driver.execute_script 'mobile: keyevent',
{'keycode'=>50, 'metastate'=>28672}
• 发送 v 字符
• driver....
一个完整的例子
中文输入问题
• 两个解决方法 :
• 1. 安装 UTF7IME 输入法 , 并使用对应的
Java 库编码待输入中文
• 2. 使用复制粘贴方法 . 长按某个输入框 ,
并模拟 ctrl+v 的按键 , 别触发搜狗输入法 ,
搜狗输入法会拦...
Appium 的灵活扩展
• Appium 对 webdriver 协议进行了扩充
• 通过利用 execute_script 执行 mobie 操作
• 通过自身服务增加了一些处理命令,比如
安装 , 卸载 , 加载 app
• 也扩展支持一...
位置模拟演示
• 目前只支持 android 模拟器
android 覆盖率统计
• caps = { androidCoverage:
'com.example.pkg/com.example.pkg.instrume
ntation.MyInstrumentation' }
• mobile ...
多种架构支持

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

混合 :
Phonegap 百度轻应用
使用 html5 技术开发
jquery mobile, sencha tou...
混合模式的自动化
• iOS

• Android
Grid 模式

03/08/14
Appium 对 RobotFramework 的支
持
• Appium 支持 webdriver 协议
• 可以使用 RobotFramework 来设计测试用例
• 需要对 appium 目前的版本打补丁
• 已经提需求给官方 , 后续会...
Robot 的测试用例演示
• 打开淘宝 , 输入小米手机并搜索
移动测试环境规划
• 私有移动测试云环境
• 针对 android ios 等各个主要版本的测试环
境
• 模拟器为主 , 应付日常测试需求
• 公共云服务
• 百度 MTC Testin Saucelabs
• 真机为主 , 可以测试更多场景...
移动云测试
•
•
•
•

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

TestIn
提供商业服务 .
价格贵 .
服务好
技术中等

•
•
•
•
•

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

•
•

两者功能各有特色 , 可以去相关网站参考
限...
移动测试持续集成
• Appium 运行于 PC 端
• 支持 webdriver 协议和 Grid 模式
• 可以实现无缝的持续集成
Appium 的坑
•XPath 的支持有问题,并不是完全的 xpath 功能 , 在即将发布的
1.0 版本中会提供完全的支持
•不同实现存在细节差异
•一些 app 比如手机 qq 不允许简单的 am start ,需要提升权限 , 比
如...
展望 appium
• 架构非常优秀,扩展性很好,不会限制用户使用
特定的语言
• Selenium 官方组织宣布放弃自身 mobile 项目转而
支持 appium 等框架
• Saucelabs TestDroid 海外云服务平台已经支持
...
Appium 1.0 coming soon
• 与 selenium3 协议融合 , selenium 新版本将
支持 appium 的 api
• 提供定位 , 网速控制 , 电源等硬件访问 api
• 完整 xpath 支持
• 更多更完...
TesterHome 论坛
关于我们 :
致力于打造技术范的移动测试交流社区
国内最热门的移动测试交流社区 , 专注于 appium 和移动测试相关
topic 的研究
• 我们的关键词 Open Share Coding Geek Cool
...
我们的论坛
• Talk Is Cheap Show Me The Code
与 appium 互动里程碑
•Done
•翻译了 appium 的文档
•补充了测试用例类型
•提交发现的 issue
•Doing
•改进 appium
•集成 cafe 到 appium
•增加问题定位功能
•支持 robot frame...
新技术与创新项目孵化
•
•
•
•
•

在线服务 + 云测 :
录制建模与代码生成服务
在线自动遍历服务
在线问题定位
接口测试自动生成

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

测试分析 :
监控与分析建...
03/08/14
测试理念
•
•
•
•
•

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

• 目标 :
• 一种基于移动测试和快速功能验证的 NewRelic 在线服务
模式
• 有意合作或者投资请联系 weibo seveniru...
捐赠页面
• TesterHome 创始人 : 恒温
• https://me.alipay.com/testerhome
Thanks
• Q&A

• 感谢美团云提供云主机支持
• 感谢 TesterHome 论坛成员的分享和交流
Appium手机自动化测试 testerhome_bqcon版本
Appium手机自动化测试 testerhome_bqcon版本
Appium手机自动化测试 testerhome_bqcon版本
Appium手机自动化测试 testerhome_bqcon版本
Appium手机自动化测试 testerhome_bqcon版本
Appium手机自动化测试 testerhome_bqcon版本
Appium手机自动化测试 testerhome_bqcon版本
Upcoming SlideShare
Loading in …5
×

Appium手机自动化测试 testerhome_bqcon版本

1,799 views

Published on

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

Published in: Education
  • Be the first to comment

  • Be the first to like this

Appium手机自动化测试 testerhome_bqcon版本

  1. 1. Appium 移动测试框架 Weibo : seveniruby Agilean 测试咨询师 更新日期 : 2014-3-6 Testerhome.com Appium 交流 QQ 群 : 315508626
  2. 2. 官方网站 2
  3. 3. Appium 项目介绍
  4. 4. 维护情况 • 由 SauceLabs 支持 • Saucelabs 是海外一家业界领先的测试产品 公司 , 有成熟的企业测试解决方案和基于 appium 的云产品 • 在 Google 举办的 GATC2013 大会上有过详 细介绍 • 2013 年 12 月 Selenium 官方组织宣布放弃 自己的 mobile 项目 , 改而支持 Appium Selendroid iosdriver 框架
  5. 5. 理念 • • • • 1. 2. 3. 4. 03/08/14 测试最终发布的 app 用任何语言和任何框架来写测试 使用标准规范的自动化 API 构建繁荣的开源交流氛围
  6. 6. 目前 mobile 自动化的方案
  7. 7. 业界 top 框架综合对比
  8. 8. 百度 Cafe 框架
  9. 9. 阿里 Athrun
  10. 10. Cafe vs Athrun • Athrun 项目基本已经停滞 • 阿里有了更好的移动测试框架 sword • 暂未开源 • • • • Cafe 开源技术和理念都很好 其他公司反馈效果好 开放性好 , 支持与 appium 的集成 实用效果经过了 MTC 的验证 03/08/14
  11. 11. 相比之下 Appium 的优势 • • • • 多种开发模式支持 native hybrid webview 多平台支持 android ios firefoxos 跨语言 java python ruby nodejs php 支持跨 app, 可以在多个 app 之间交互 • 不依赖源代码 , 可以测试第三方应用 , 比如 测试微信服务号
  12. 12. 跨语言跨测试框架 • Language: • Java Python Ruby PHP NodeJs ObjectC Perl • TDD: Xunit • BDD: Rspec Cucumber • ATDD: RobotFramework 03/08/14
  13. 13. 多平台支持 03/08/14
  14. 14. 开源硬件 Arduino 支持 03/08/14
  15. 15. 基于 Android 的测试框架
  16. 16. Appium 在 Android 上的架构
  17. 17. Appium 在 iOS 上的架构
  18. 18. Appium 架构 • Android 上使用了 instrumentation 和 uiautomator 两套技术 • Appium 在 4.1 以上使用 uiautomator • 4.1 以下使用 selendroid • iOS 使用 uiautomation • 支持 firefox
  19. 19. Appium 的使用 • 安装 nodejs • 使用 npm 安装 appium • Appium 启动
  20. 20. 基础流程 • • • • 启动 appium 连接设备或者模拟器 编写你的测试用例 指定 webdriver 的 caps 配置 • Run it 03/08/14
  21. 21. Remote webdriver 调用
  22. 22. 视频演示 •请上 testerhome 的视频站 • http://video.testerhome.com
  23. 23. Appium 的加载流程 • 调用 android adb 完成基本的系统操作 • 向 android 上部署 bootstrap.jar 包并启动 • Forward android 的端口到 pc 机器上 • Pc 上监听端口接受请求,使用 webdriver 协议 • 分析命令并转通过 forward 的端口发给 bootstrap.jar • Bootstrap.jar 接受请求并把命令发给 uiautomator 或者插桩体系
  24. 24. 一个 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 方法
  25. 25. Appium 设计理念 • • • • CS 架构 appium 作为服务器 使用标准 WebDriver 协议交互 元素定位使用统一的 XPath 抽象定位 底层调用各自平台的自动化技术 • 类似 selenium 的架构
  26. 26. Webdriver 协议 使用 webdriver 协议,成熟标准,应用广泛 它即将成为 w3c 业界标准 跨语言 , 不限制测试框架 Remote WebDriver 方式支持云测和集群模 式 • PC 端运行可以支持各种 runtimes ,不受限 手机环境 • • • •
  27. 27. Appium 支持主流语言
  28. 28. webdriver 的 capabilities 配置 • • • • • App: 本地路径或者网络下载地址 browserName: 兼容 selenium, 并不使用 Device: ios android firefoxos Version: Android API version, iOS Version Launch: 是否让 appium 自动启动 app
  29. 29. Capabilities 的配置例子 • Android2.3 • Android4.2 • iOS6.1
  30. 30. 演示代码
  31. 31. 元素定位 Android 和 iOS 的原生控件以及 webview 控件映射为特定的命名 , 比 如把所有平台的按钮映射为 button 元素 • 把当前的结构树映射为 html 文档 • 通过 xpath 来选择元素 • • • • • 多种定位方式 Name: id , label text content-desc resource-id TagName: component type XPath • 定位元素建议采用 (Screen Object)PageObject 模式,使用 XPath
  32. 32. 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 支持
  33. 33. Xpath 映射关系查询
  34. 34. Xpath 获取 • • • • Appium inspector Uiautomatorviewer Uiautomator events android 也可以使用 selendroid 的 inspector
  35. 35. Appium Inspector 03/08/14
  36. 36. 元素交互 • • • • Webdriver 已经支持 点击 输入 按键事件 • • • • Mobile 相关 : 拖动 划动 长按
  37. 37. 点击与输入
  38. 38. 长按操作代码
  39. 39. 通过 execute_script 执行 mobile 方法
  40. 40. 发送特殊 event • 发送 ctrl+v • driver.execute_script 'mobile: keyevent', {'keycode'=>50, 'metastate'=>28672} • 发送 v 字符 • driver.execute_script 'mobile: keyevent', {'keycode'=>50} • 具体的事件代码请参考各自平台的 event 文档
  41. 41. 一个完整的例子
  42. 42. 中文输入问题 • 两个解决方法 : • 1. 安装 UTF7IME 输入法 , 并使用对应的 Java 库编码待输入中文 • 2. 使用复制粘贴方法 . 长按某个输入框 , 并模拟 ctrl+v 的按键 , 别触发搜狗输入法 , 搜狗输入法会拦截 ctr+v, 其他输入法没有 此类问题 .
  43. 43. Appium 的灵活扩展 • Appium 对 webdriver 协议进行了扩充 • 通过利用 execute_script 执行 mobie 操作 • 通过自身服务增加了一些处理命令,比如 安装 , 卸载 , 加载 app • 也扩展支持一些平台专有的指令 • Webdriver 即将成为 W3C 标准 • Appium 在推动 webdrive 增强 mobile 特性
  44. 44. 位置模拟演示 • 目前只支持 android 模拟器
  45. 45. android 覆盖率统计 • caps = { androidCoverage: 'com.example.pkg/com.example.pkg.instrume ntation.MyInstrumentation' } • mobile :endCoverage, intent: 'com.example.pkg.END_EMMA', path: '/mnt/sdcard/coverage.ec' 03/08/14
  46. 46. 多种架构支持 03/08/14
  47. 47. 原生 , 混合 ,web • 三种主流的 app 设计模式 • 原生 : • 使用开发特定平台专用 app • • • • 混合 : Phonegap 百度轻应用 使用 html5 技术开发 jquery mobile, sencha touch • Webapp: • 加载远程页面
  48. 48. 混合模式的自动化 • iOS • Android
  49. 49. Grid 模式 03/08/14
  50. 50. Appium 对 RobotFramework 的支 持 • Appium 支持 webdriver 协议 • 可以使用 RobotFramework 来设计测试用例 • 需要对 appium 目前的版本打补丁 • 已经提需求给官方 , 后续会更好的支持 • 我们也有意打造完全支持的商业版本 . 把 移动测试的难度降到最低
  51. 51. Robot 的测试用例演示 • 打开淘宝 , 输入小米手机并搜索
  52. 52. 移动测试环境规划 • 私有移动测试云环境 • 针对 android ios 等各个主要版本的测试环 境 • 模拟器为主 , 应付日常测试需求 • 公共云服务 • 百度 MTC Testin Saucelabs • 真机为主 , 可以测试更多场景 . 测试覆盖度 高
  53. 53. 移动云测试 • • • • Saucelabs 提供了 appium 的在线云环境 提供虚拟机 提供运行时的截图和录像 脚本执行非常简单
  54. 54. 国内移动云测平台 • • • • • TestIn 提供商业服务 . 价格贵 . 服务好 技术中等 • • • • • MTC 百度云计算计划的一部分 免费 没有商业服务 技术优秀 • • 两者功能各有特色 , 可以去相关网站参考 限于篇幅 , 不做详细介绍
  55. 55. 移动测试持续集成 • Appium 运行于 PC 端 • 支持 webdriver 协议和 Grid 模式 • 可以实现无缝的持续集成
  56. 56. Appium 的坑 •XPath 的支持有问题,并不是完全的 xpath 功能 , 在即将发布的 1.0 版本中会提供完全的支持 •不同实现存在细节差异 •一些 app 比如手机 qq 不允许简单的 am start ,需要提升权限 , 比 如让 appium 扩展支持 su •Appium 长时间运行不太稳定 , 建议在执行测试前重启 appium •更多坑请参见 github 上的 issue 列表和 TesterHome.com 上的帖子
  57. 57. 展望 appium • 架构非常优秀,扩展性很好,不会限制用户使用 特定的语言 • Selenium 官方组织宣布放弃自身 mobile 项目转而 支持 appium 等框架 • Saucelabs TestDroid 海外云服务平台已经支持 appium, 国内后续也可能会跟进 • 国内研究和使用 appium 的公司在逐渐增多
  58. 58. Appium 1.0 coming soon • 与 selenium3 协议融合 , selenium 新版本将 支持 appium 的 api • 提供定位 , 网速控制 , 电源等硬件访问 api • 完整 xpath 支持 • 更多更完整的文档和教程
  59. 59. TesterHome 论坛 关于我们 : 致力于打造技术范的移动测试交流社区 国内最热门的移动测试交流社区 , 专注于 appium 和移动测试相关 topic 的研究 • 我们的关键词 Open Share Coding Geek Cool • • • 公开的合伙人体系 : 对论坛有重大贡献的成员会被赠分成 . 商业回馈 : 论坛盈利后会根据每个人发帖情况进行分成 , 以鼓励成员 对知识的贡献 • 公益计划 : 论坛会拿出 2% 的营收捐赠壹基金 , 以尽我们的社会责任 • • • • 创始人 : 恒温 , monkey 一个开源自运营的社区 + 新技术和创业项目孵化器 • testerhome.com
  60. 60. 我们的论坛 • Talk Is Cheap Show Me The Code
  61. 61. 与 appium 互动里程碑 •Done •翻译了 appium 的文档 •补充了测试用例类型 •提交发现的 issue •Doing •改进 appium •集成 cafe 到 appium •增加问题定位功能 •支持 robot framework •支持中文输入 •期待更多同学加入 appium 的支持和维护工作
  62. 62. 新技术与创新项目孵化 • • • • • 在线服务 + 云测 : 录制建模与代码生成服务 在线自动遍历服务 在线问题定位 接口测试自动生成 • 众测 : • 一种与 Testin 互补的众测模式 • • • • 测试分析 : 监控与分析建模 (NewRelic 模式 ) 专项问题发现和定位 ( 兼容性 , crash, 内存泄漏 , 非安全 api) 业务安全测试 03/08/14
  63. 63. 03/08/14
  64. 64. 测试理念 • • • • • 监控分析 ( 数据流 + 代码路径 ) 录制建模 云测 众测 敏捷 • 目标 : • 一种基于移动测试和快速功能验证的 NewRelic 在线服务 模式 • 有意合作或者投资请联系 weibo seveniruby 03/08/14
  65. 65. 捐赠页面 • TesterHome 创始人 : 恒温 • https://me.alipay.com/testerhome
  66. 66. Thanks • Q&A • 感谢美团云提供云主机支持 • 感谢 TesterHome 论坛成员的分享和交流

×