目前 mobile 自动化解决方案
iOS | Android |
---|---|
Calabash-iOS | calabash-Android |
Frank | MonkeyTalk |
UIAutomation | Robotium |
iOS-driver | UIAutomator |
KeepItFunctional | Selendroid |
Macaca | Macaca |
Appium | Appium |
自动化工具选择
工具名称 | 被测系统 | 脚本语言 | 是否支持 H5 | 是否支持跨应用 | 工具稳定性 | 是否为 sdk 自带 |
---|---|---|---|---|---|---|
MonkeyRunner | Android | Y | N | 稳定 | Y | |
Monkey | Android | Java | N | N | 稳定 | Y |
Uiautomator2 | Android | Java | Y | Y | 稳定 | Y |
Uiautomation | iOS | 弃用 | ||||
Adb-For-Test | Android | Java/Python | Y | Y | 稳定 | Y |
Appium | Android,iOS | Java/Python/JS/C# | Y | Y | 一般 | N |
选择条件
- 单平台测试/多平台测试?
- 是否多设备同时测试?
- 不局限测试环境,任何版本、任何环境都可以测试?
- 最擅长开发语言
- 当前市面是否有满足项目需求的测试工具?是否需二次开发?
应用划分
-
原生应用
- 用 android 或 iOS 编写的应用
-
移动网页应用
- 网页应用,类似于 iOS 中 safari 或者 QQ 浏览器
-
混合应用
- 包裹 webview 的应用
什么是 Appium
-
移动端的自动化测试框架
-
第三方自动化工具
-
app 自动化测试
-
开源的、跨平台的
- ios、Android、Window、Mac、
什么是 Appium
-
Client/Server Architecture:c/s 架构
-
脚本多语言支持
- Java、Python、ruby、PHP、JavaScript、C#
-
生态丰富,社区强大
Appium 原理
@startuml
scale 3
left to right direction
package CTO {
actor 脚本
}
package 总监{
usecase "Appium Module"
}
package 项目经理 {
usecase "app"
}
CTO ---> 总监
总监 ---> 项目经理
项目经理 ---> 总监
总监 ---> CTO
@enduml
Appium 通信原理
Appium Server
- server 里面不只有 webDriver「安卓 driver、 iOSdriver」还有各种工作引擎
Appium 工作引擎
Platform | Driver | Platform Versions | Appium Version |
---|---|---|---|
iOS | XCUITest「推荐」 | iOS 9.3+ | Appium 1.6+ |
UIAutomation「弃用」 | iOS 9.3- | All | |
Android | UiAutomator | All | Appium 1.14+ |
UiAutomator2「推荐」 | Android5.0+ | Appium 1.6+ | |
Espresso | Appium 1.9+ | ||
Mac | appium-mac-driver | Mac OS X 10.7 | Appium 1.6.4+ |
Windows | windows | Windows 10 | Appium 1.6+ |
Appium 生态工具
- 命令行工具
- adb
- ideviceinstaller
- Appium Desktop
- Appium Server GUI
- Appium Inspector
- Appium Client
- AppCrawler
Android 命令行工具
-
管理移动端设备上应用程序的安装与卸载,以及查看相关信息
-
adb
- 安卓系统的命令行控制工具
- 获取安卓端的各种数据和控制
- sdk 自带工具
adb devices #显示当前所连接设备的udid
iOS 命令行工具
-
ideviceinstaller
- iOS 系统的命令行控制工具
- 获取 iOS 端的各种数据和控制
idevice_id -l #显示当前所连接设备的 udid
Appium Desktop
-
内嵌了 Appium Server
-
Appium Server GUI
- Appium 核心工具,命令行工具
-
Appium Inspector
- 1.22 版本后,和 desktop 分开
Appium Client
- 各种语言的客户端封装库、用于连接 Appium Server
AppCrawler
- 自动化遍历工具,底层也是 Appium
Appium 安装-简化版
- jdk
- adb
- appium desktop
- https://ceshiren.com/t/topic/2270
jdk
- 11
java -version
sdk
-
第一种方式:简装版
- 文件直接解压缩
- 文件路径全英文不带空格
- 配置环境变量
- 文件直接解压缩
-
第二种方式:android studio
- https://ceshiren.com/t/topic/4001
-
验证
adb version
Appium Desktop
-
github 下载版本 1.19.1 不分开
-
无需环境变量配置
验证
-
使用安卓端验证相关环境是否安装成功
- 命令行验证 jdk、adb
- 打开 Appium Desktop,点击 start server 不报错
- 准备安卓设备(真机/模拟器)连接电脑
- adb 命令查看设备是否连接
- 编写启动配置,启动 app 不报错
模拟器竖屏
- [l] mumu 设置竖屏
参数查看
-
查看设备 ID
adb devices
-
查看设备的 Android 系统版本
adb shell getprop ro.build.version.release
-
查看想要启动 app 的包名
adb shell pm list packages
-
查看想要启动 app 的启动页面
adb shell monkey -p ${package.name} -vvv 1
启动参数
{
"platformName": "Android",
"appium:platformVersion": "6.0",
"appium:deviceName": "emulator-5554",
"appium:appPackage": "com.android.settings",
"appium:appActivity": ".Settings"
}