什么是app自动化测试
通过代码的方式模拟手机测试,进行自动化执行的测试,使版本迭代更快速高效,并且大量减少回归测试的人工成本。
目前mobile自动化测试的方案
IOS |
Android |
---|---|
calabash-ios |
calabash-android |
Fank |
Monkey-Fank |
UIAutomation |
Robotium |
ios-driver |
UIAutomator |
KeepltFunctional |
selendroid |
Appium |
Appium |
自动化测试工具选择
工具名称 |
被测系统 |
测试 |
脚本语言 |
支持H5 |
跨应用 |
稳定性 |
adk自带 |
---|---|---|---|---|---|---|---|
Monkey Runner |
Android |
功能 |
Python |
支持 |
否 |
稳定 |
是 |
Instrumentation |
Android |
功能 |
Java |
支持 |
可以 |
稳定 |
否 |
Uiautomator2 |
Android |
功能 |
Java |
支持 |
可以 |
稳定 |
是 |
Adb-For-Test |
Android |
功能 |
Java |
支持 |
可以 |
稳定 |
否 |
Monkey |
Android |
稳定 |
Java |
否 |
否 |
稳定 |
是 |
CTS |
Android |
兼容 |
Java |
支持 |
可以 |
稳定 |
否 |
UIautomation |
ios |
功能 |
JS |
支持 |
可以 |
稳定 |
xcode自带 |
Calabash |
Android |
功能 |
Ruby |
支持 |
可以 |
一般 |
否 |
Appium |
Android |
功能 |
Java/Python/JS/C/C#/Perl |
支持 |
可以 |
一般 |
否 |
技术选型的核心原理
-
是否支持跨平台
-
是否支持多语言
-
稳定性
-
兼容性
-
是否支持多设备同时进行测试
-
功能是否满足项目需求
-
社区是否丰富
-
上手易难成度
-
自动化测试的效率
自动化什么情况下可以使用
业务流程变更不频繁,ui元素变动不频繁,项目功能需要不断回归的情况下,可以大量减少回归测试的成本。
自动化什么情况下不可以使用
项目版本变更频繁,页面元素变更频繁的情况下不可以使用自动化,不然会大量增加自动化脚本编写维护成本。
Appium 工作原理
webview
-
Appium Server启动服务时,启动一个监听端口为4723(默认)的基于tcp面向连接的socket通信协议。
-
真机或者模拟器通过adb连接电脑终端。
-
Client 对server发送一个post请求的capability的数据包,携带操作系统,版本,工作引擎和应用包等信息,告诉server我要对那个设备,那个应用进行操作。
-
Server接受到client请求后会返回一个Sessionid,并执行操作,打开应用后会启动一个Webview的Socket服务用来监听Server的请求,监听成功后会生成一个Sessionid返回给Appium server,然后找到指定或默认路径下的chromedriver启动并返回chromedriver的sessionid。
-
Client->Server->WebView Socket->Chromedriver,后续的通信通过sessionid进行会话回传。
原生框架
-
Appium Server启动服务时,启动一个监听端口为4723(默认)的基于tcp面向连接的socket通信协议。
-
真机或者模拟器通过adb连接电脑终端。
-
Client 对server发送一个post请求的capability的数据包,携带操作系统,版本,工作引擎和应用包等信息,告诉server我要对那个设备,那个应用进行操作。
-
Server接受到client请求后会返回一个Sessionid,并发送给手机端的Bootstra.jar,通过uiautomator工作引擎执行操作,并返回一个一个sessionid。
-
Client->Server->bootstrap.jar,后续的通信通过sessionid进行会话回传。
注:原生框架内嵌webview的应用,通过切换上下文来改变通讯流程
Appium组成
-
Appium Desktop:用于开发人员定位页面元素,调试脚本代码。内嵌appium server,inspector等综合工具。
-
Appium Server:服务,appium核心工具,命令行工具
-
Appium client:各种语言的客户端封装库,用于连接Server。
-
adb:Android的控制工具,用于获取安卓的数据和控制
注:server可以部署在云服务器上,并启动服务,client可以通过云服务器的真实ip:Port直接访问server。
Appium安装和使用
Appium python库安装
启动pycharm,点击左上角File->settings
Appium server环境安装
1、Node.js安装
官网下载:Download | Node.js
下载对应操作系统
1、node -v:检查node是否安装成功
2、npm -v:检查npm是否安装成功
2、配置全局安装的模块路径
创建文件夹:node_cache,node_global
配置路径:(步骤:win+r->cmd->enter)
1、npm config set prefix "E:\test\nodejs\node_global"
2、npm config set cache "E:\test\nodejs\node_cache"
3、配置环境变量:
4、设置镜像和获取镜像
设置镜像的优点:在访问国外的服务器下载的时候可以增加下载速度
1、npm config set registry .....:配置镜像
2、npm config get registry :获取镜像