通过直接调用被测应用的类实现自动化测试
和被测应用处于同一个进程内
2、 Instrumentation 测试什么?
功能测试
Activity 生命周期的测试
模拟数据库操作的测试
兼容性测试
3、 什么情况使用 Instrumentation?
使用 Java Junit 框架
需要进行白盒测试时
需要使用 Mock 技术模拟系统对象时
Android UI 自动化测试工具
不需要源码,基于 Java 开发语言
UiDevice, UiSelector, UiScrollable, UiObject, UiCollection
2、 UIAutomator 可以测试什么?
App UI 层的交互操作
不需要源码,可以模拟跨进程过程
基于 Java JUnit 框架,黑盒 UI 自动化
3、 如何识别 App 视图内的元素?
UiAutomatorViewer(/tools/bin/)
可以识别元素的 id、classname、bounds 等
三、Selendroid&Robotium 1、 Selendroid 的原理?(http://selendroid.io/) Selendroid 四大组件:
Selendroid Client: WebDriver + 移动特性的实现
Selendroid Server: 一个 Instrumentation APK
AndroidDriver-App: 一个 WebViewActivity,即浏览器
Selendroid-Standalone: 大总管,负责准备环境
基于 Instrumentation 进行封装,实现的 Android 测试框架
封装了 Solo 类库,提供自动化测试 API
由于是基于 Instrumentation,测试时需要源码
四、Appium(http://appium.io/) 1、 什么是 Appium?
一个开源的移动端 UI 自动化测试框架
2、 Appium 的理念?
不需要 App 源码
不局限于语言或者框架
接口统一,不需要重复开发
必须是开源的
3、 Appium 相关的概念?
C/S 架构,Appium 核心是一个 Web 服务器
Session,客户端初始化 Session 与服务端交互
Desired Capabilities,初始化时的键值对组合
Appium Server,操作与驱动手机
Appium Client,支持多语言调用
4、 Appium 环境包含哪些内容?
Android SDK、JDK、Appium
PyCharm、Python 环境
库:Selenium、Appium-Python-Client
5、 Appium 支持哪些开发语言?
Java、Javascript、PHP、Python、Ruby、Perl、C#、Object-C
6、 Appium 初始化时需要配置哪些内容?
platformName,目标设备平台(Android/iOS)
platformVersion,目标设备平台版本
deviceName,目标设备名称
appPackage,应用包名(Android)
appActivity,应用活动名(Android)
automationName,自动化驱动类型(Selendroid/Appium)
unicodeKeyboard,是否使用 Appium 输入法
resetKeyboard,是否恢复默认键盘
7、 Appium 测试 Native App 的原理?
8、 Appium 测试 Hybrid App 的原理?
9、 Appium 测试 iOS App 的原理?
五、如何自动化测试 Native App? 1、 元素的定位、识别工具?
第一个选择:UIAutomatorViewer
第二个选择:Appium 的 Inspector
2、 定位元素的 API 都有哪些?
find_element_by_accessibility_id
find_element_by_id
find_element_by_name
find_element_by_xpath
find_element_by_class_name
find_elements_by_accessibility_id
find_elements_by_id
find_elements_by_name
find_elements_by_xpath
find_elements_by_class_name
3、 脚本的编写规则 LOVE 规则:
L:Locate 定位
O:Operate 操作
V:Verify 验证
E:Exception 异常的处理
4、 初始化注意事项
1、 不需要指定 App 的包路径
2、 默认使用 Appium 驱动
3、 如果需要输入中文,需要添加输入法相关的配置
六、如何自动化测试 Hybrid App? 1、 元素的定位、识别工具?
1、 Native 部分,UIAutomatorViewer 或者 Appium Inspector
2、 WebView 部分,Chrome 浏览器的调试模式
2、 定位元素的 API 都有哪些?
find_element_by_id(HTML 页面中的 ID)
find_element_by_name
find_element_by_xpath
find_element_by_link_text
find_element_by_tag_name
find_element_by_class_name
find_elements_by_id
find_elements_by_name
find_elements_by_xpath
find_elements_by_link_text
find_elements_by_tag_name
find_elements_by_class_name
3、 脚本的编写规则 S-LOVE 规则
S:Switch 在 Native 和 WebView 之间切换
L:Locate 定位
O:Operate 操作
V:Verify 验证
E:Exception 异常的处理
4、 初始化注意事项
需要明确指定驱动名称为:Selendroid
需要明确指定 App 的路径(重签名用)
七、如何使用 Selenium 测试 WEB 页面?(https://www.seleniumhq.org/) 1、 环境的准备
工具:Pycharm、Chrome
包:Selenium、Python
WebDriver:Chrome Driver/Firefox Driver/IE Driver 等
2、 元素识别工具是什么?
Firefox 或者 Chrome 的调试工具
3、 元素定位的方法?
find_element_by_id(HTML 页面中的 ID)
find_element_by_name
find_element_by_xpath
find_element_by_link_text
find_element_by_tag_name
find_element_by_class_name
find_elements_by_id
find_elements_by_name
find_elements_by_xpath
find_elements_by_link_text
find_elements_by_tag_name
find_elements_by_class_name
八、如何使用 Appium 测试 WAP 页面? 1、 环境的准备
IDE:PyCharm
包:Python、Selenium、Appium-Python-Client
工具:Appium、Chrome
2、 元素的识别
Chrome 浏览器调试 WAP 页面
3、 脚本的编写
初始化时,指定 browsername 为:Browser
自动化测试代码和 Selenium 相同
欢迎关注微信公众号"测试开发Stack"