Appium手机自动化测试 testerhome_bqcon版本
- 1. Appium 移动测试框架
Weibo : seveniruby
Agilean 测试咨询师
更新日期 : 2014-3-6
Testerhome.com Appium 交流 QQ 群 : 315508626
- 4. 维护情况
• 由 SauceLabs 支持
• Saucelabs 是海外一家业界领先的测试产品
公司 , 有成熟的企业测试解决方案和基于
appium 的云产品
• 在 Google 举办的 GATC2013 大会上有过详
细介绍
• 2013 年 12 月 Selenium 官方组织宣布放弃
自己的 mobile 项目 , 改而支持 Appium
Selendroid iosdriver 框架
- 10. Cafe vs Athrun
• Athrun 项目基本已经停滞
• 阿里有了更好的移动测试框架 sword
• 暂未开源
•
•
•
•
Cafe 开源技术和理念都很好
其他公司反馈效果好
开放性好 , 支持与 appium 的集成
实用效果经过了 MTC 的验证
03/08/14
- 11. 相比之下 Appium 的优势
•
•
•
•
多种开发模式支持 native hybrid webview
多平台支持 android ios firefoxos
跨语言 java python ruby nodejs php
支持跨 app, 可以在多个 app 之间交互
• 不依赖源代码 , 可以测试第三方应用 , 比如
测试微信服务号
- 18. Appium 架构
• Android 上使用了 instrumentation 和
uiautomator 两套技术
• Appium 在 4.1 以上使用 uiautomator
• 4.1 以下使用 selendroid
• iOS 使用 uiautomation
• 支持 firefox
- 23. Appium 的加载流程
• 调用 android adb 完成基本的系统操作
• 向 android 上部署 bootstrap.jar 包并启动
• Forward android 的端口到 pc 机器上
• Pc 上监听端口接受请求,使用 webdriver 协议
• 分析命令并转通过 forward 的端口发给
bootstrap.jar
• Bootstrap.jar 接受请求并把命令发给 uiautomator
或者插桩体系
- 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 方法
- 26. Webdriver 协议
使用 webdriver 协议,成熟标准,应用广泛
它即将成为 w3c 业界标准
跨语言 , 不限制测试框架
Remote WebDriver 方式支持云测和集群模
式
• PC 端运行可以支持各种 runtimes ,不受限
手机环境
•
•
•
•
- 28. webdriver 的 capabilities 配置
•
•
•
•
•
App: 本地路径或者网络下载地址
browserName: 兼容 selenium, 并不使用
Device: ios android firefoxos
Version: Android API version, iOS Version
Launch: 是否让 appium 自动启动 app
- 31. 元素定位
Android 和 iOS 的原生控件以及 webview 控件映射为特定的命名 , 比
如把所有平台的按钮映射为 button 元素
• 把当前的结构树映射为 html 文档
• 通过 xpath 来选择元素
•
•
•
•
•
多种定位方式
Name: id , label text content-desc resource-id
TagName: component type
XPath
•
定位元素建议采用 (Screen Object)PageObject 模式,使用 XPath
- 41. 发送特殊 event
• 发送 ctrl+v
• driver.execute_script 'mobile: keyevent',
{'keycode'=>50, 'metastate'=>28672}
• 发送 v 字符
• driver.execute_script 'mobile: keyevent',
{'keycode'=>50}
• 具体的事件代码请参考各自平台的 event 文档
- 43. 中文输入问题
• 两个解决方法 :
• 1. 安装 UTF7IME 输入法 , 并使用对应的
Java 库编码待输入中文
• 2. 使用复制粘贴方法 . 长按某个输入框 ,
并模拟 ctrl+v 的按键 , 别触发搜狗输入法 ,
搜狗输入法会拦截 ctr+v, 其他输入法没有
此类问题 .
- 44. Appium 的灵活扩展
• Appium 对 webdriver 协议进行了扩充
• 通过利用 execute_script 执行 mobie 操作
• 通过自身服务增加了一些处理命令,比如
安装 , 卸载 , 加载 app
• 也扩展支持一些平台专有的指令
• Webdriver 即将成为 W3C 标准
• Appium 在推动 webdrive 增强 mobile 特性
- 46. 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
- 48. 原生 , 混合 ,web
• 三种主流的 app 设计模式
• 原生 :
• 使用开发特定平台专用 app
•
•
•
•
混合 :
Phonegap 百度轻应用
使用 html5 技术开发
jquery mobile, sencha touch
• Webapp:
• 加载远程页面
- 51. Appium 对 RobotFramework 的支
持
• Appium 支持 webdriver 协议
• 可以使用 RobotFramework 来设计测试用例
• 需要对 appium 目前的版本打补丁
• 已经提需求给官方 , 后续会更好的支持
• 我们也有意打造完全支持的商业版本 . 把
移动测试的难度降到最低
- 58. 移动测试环境规划
• 私有移动测试云环境
• 针对 android ios 等各个主要版本的测试环
境
• 模拟器为主 , 应付日常测试需求
• 公共云服务
• 百度 MTC Testin Saucelabs
• 真机为主 , 可以测试更多场景 . 测试覆盖度
高
- 62. Appium 的坑
•XPath 的支持有问题,并不是完全的 xpath 功能 , 在即将发布的
1.0 版本中会提供完全的支持
•不同实现存在细节差异
•一些 app 比如手机 qq 不允许简单的 am start ,需要提升权限 , 比
如让 appium 扩展支持 su
•Appium 长时间运行不太稳定 , 建议在执行测试前重启 appium
•更多坑请参见 github 上的 issue 列表和 TesterHome.com 上的帖子
- 64. Appium 1.0 coming soon
• 与 selenium3 协议融合 , selenium 新版本将
支持 appium 的 api
• 提供定位 , 网速控制 , 电源等硬件访问 api
• 完整 xpath 支持
• 更多更完整的文档和教程
- 65. TesterHome 论坛
关于我们 :
致力于打造技术范的移动测试交流社区
国内最热门的移动测试交流社区 , 专注于 appium 和移动测试相关
topic 的研究
• 我们的关键词 Open Share Coding Geek Cool
•
•
•
公开的合伙人体系 : 对论坛有重大贡献的成员会被赠分成 .
商业回馈 : 论坛盈利后会根据每个人发帖情况进行分成 , 以鼓励成员
对知识的贡献
• 公益计划 : 论坛会拿出 2% 的营收捐赠壹基金 , 以尽我们的社会责任
•
•
•
•
创始人 : 恒温 , monkey
一个开源自运营的社区 + 新技术和创业项目孵化器
•
testerhome.com
- 68. 与 appium 互动里程碑
•Done
•翻译了 appium 的文档
•补充了测试用例类型
•提交发现的 issue
•Doing
•改进 appium
•集成 cafe 到 appium
•增加问题定位功能
•支持 robot framework
•支持中文输入
•期待更多同学加入 appium 的支持和维护工作
- 69. 新技术与创新项目孵化
•
•
•
•
•
在线服务 + 云测 :
录制建模与代码生成服务
在线自动遍历服务
在线问题定位
接口测试自动生成
• 众测 :
• 一种与 Testin 互补的众测模式
•
•
•
•
测试分析 :
监控与分析建模 (NewRelic 模式 )
专项问题发现和定位 ( 兼容性 , crash, 内存泄漏 , 非安全 api)
业务安全测试
03/08/14
- 71. 测试理念
•
•
•
•
•
监控分析 ( 数据流 + 代码路径 )
录制建模
云测
众测
敏捷
• 目标 :
• 一种基于移动测试和快速功能验证的 NewRelic 在线服务
模式
• 有意合作或者投资请联系 weibo seveniruby
03/08/14