App自动化测试(学习笔记一)——Appium原理与安装
APP自动化初始
为什么要进行app自动化?
- 将app自动化融入产品迭代中,与持续集成持续交付结合起来
- 功能测试、回归测试的全面加速
- 兼容性测试,同一版本需要在不同的机器/系统上进行验证
- 自动化探索测试,发现隐藏问题
- 专项测试,加载、耗电量…
目前app测试的情况:
- 按月发布-按周发布-按天发布
- 多端发布:Android、ios、h5、小程序
- 多环境发布:联调环境、测试环境、预发布环境、线上环境
- 多机型发布:众多设备型号、众多系统版本
- 多版本共存:用户会使用多个不同的版本
app自动化测试框架
- Appium
- Airtest 游戏
- calabash
- macaca
- atx
- KIF
- WDA
- XCUITest
- Robotium
- Uiautomator2
核心流程回归的自动化测试:
- 业务流程不频繁改动
- UI元素不频繁改动
- 需要频繁回归的核心场景
Appium原理
Appium移动端的自动化测试框架,可测试原生应用、移动网页应用、混合应用(包裹WebView的应用,例:小程序),跨平台。
支持语言:java、python、nodejs…
跨平台:Android、iOS、Windows、Mas
- 客户端Webdriver script:写脚本的地方
- 服务端appium server:运行脚本的地方(很多东西集成在一块)
- 手机端Android、iOS
秒懂Appium流程:启动服务端,监听一个端口(可以设置这个端口),客户端编写脚本之后,给服务端的这个端口发送请求,告知需要测试的内容(即测试的设备、应用、页面),服务端去手机端找客户端刚才告知需要测试的内容,找到之后进行交互(点击、输入…),手机端交互之后给服务端返回,服务端再把返回给到客户端。
详解Appium原理:待补充
appium使用了不同的工作引擎来实现自动化测试:
Appium安装
Appium生态
- adb :( Android SDK自带的) Android的控制工具,用于获取Android的各种数据和控制
- Appium Desktop :(界面化工具) 内嵌了appium server 和 inspector(定位元素、录制脚本)的综合工具
- Appium Server: appium的核心工具,命令行工具
- Appium client: 各种语言的客户端封装库,用于连接appium server
- AppCrawler 自动遍历工具
Java jdk 1.8版本
- javajdk下载地址
- 配环境变量
在系统变量中新建一个变量,名字为JAVA_HOME,值为电脑jdk的根目录
path环境变量中需要配置几项:
配path变量 |
---|
%JAVA_HOME% |
%JAVA_HOME%\bin |
%JAVA_HOME%\jre\bin |
- 检查是否配置好了cmd输入java -version
Android sdk
- sdk下载地址
- 配环境变量:
在系统变量中新建一个变量,名字为ANDROID_HOME,值为电脑SDK的根目录,一般默认安装的路径为C:\Users\用户名\AppData\Local\Android\Sdk
修改系统变量中的path变量,添加四条内容,因为可能会有其他软件也带有adb执行文件,未免出现问题,尽量将这四项配置到较靠前的位置
配path变量 |
---|
%ANDROID_HOME%\emulator |
%ANDROID_HOME%\tools |
%ANDROID_HOME%\tools\bin |
%ANDROID_HOME%\platform-tools |
- 检查是否安装成功:cmd输入adb回车
appium desktop
desktop下载地址(推荐下载1.19.1版本)(初学直接使用界面工具比较方便)
appium server 环境安装
- node.js(>=10) npm>=6 nodejs下载地址 windows: msi \mac: pkg
- 安装之后会自带工具npm,可以使用这个工具安装Appium Server,无需配置环境变量(安装完成需重启命令提示行cmd)
- npm install -g appium@1.19.1 appium -v 查看版本检查是否安装成功
- npm install -g appium-doctor 检测appium环境的工具
python3
安装python和pycharm
appium client
pip install appium-python-client
网易mumu模拟器
- mumu官网下载模拟器
- adb 链接模拟器(方法在官网中进行搜索)
验证环境是否成功
- 打开appium desktop,点击start server
- 打开模拟器(mumu)
- 模拟器连接到电脑 adb connect 127.0.0.1:7555
- adb devices 查看设备是否连接
- 编写脚本,运行脚本,不报错
首次调试即报如下错
selenium.common.exceptions.WebDriverException: Message: An unknown server-side error occurred while processing the command. Original error: Could not find a connected Android device in 20575ms.
adb.exe -P 5037 reconnect offline
反复检查配置信息,确认无误之后,看报错描述发现可以是5037端口的问题,在命令行查看5037端口占用情况:
netstat -ano|findstr “5037”
打开任务管理器,用pid找到进程,右键“打开文件位置”,发现C:\Android\adb.exe占用了5037端口,干掉占用的adb即完成了首次调试。