一.移动端测试知识概览
1.移动端测试是什么?
移动端测试是指对移动应用进行的测试,即实体的特性满足需求的程度.
2.移动端测试分类
app功能测试
1.业务逻辑正确性测试
产品文档
2.兼容性测试
1.系统版本
2.分辨率
3.网络情况
3.异常测试
1.热启动应用
2.网络切换&中断恢复
3.电话&信息中断恢复
4.升级&安装卸载测试
5.健壮性测试
1.手机资源消耗
2.流量消耗
3.崩溃恢复等测试
通过场景和数据的预设,把以人为驱动的测试行为转化为机器执行的一种过程
并不是所有功能都能进行自动化
app安全测试
通过安全测试技术,保证app尽可能的不存在安全漏洞.
市场招聘如何?
互联网移动场景下业务的爆发,导致移动端开发和测试人员需求量增大,市场很缺移动端的人才。
二.第一阶段移动端测试环境搭建
移动端自动化测试的基础环境配置
1.1 安装Java环境
Android应用为例讲解,需要安装java环境
1.2 SDK环境
Android依赖SDK的环境
1.3 模拟器环境
考虑大家连接真机不方便,所以采用模拟器替代
三.主流的移动端自动化工具
Robotium
1.支持语言:Java
2.仅支持Android系统
3.不支持跨应用
Macaca
1.支持语言:Java,Python,Node.js
2.支持Android和iOS系统
3.支持跨应用
Appium
1.支持语言:Java,C#,Python,php,perl,ruby,Node.js
2.支持Android和iOS系统
3.支持跨应用
自动化工具选择的关注点
1.是否支持native,webview
2.是否支持获取toast
3.是否支持跨应用
四.Appium环境搭建
Appium客户端安装
Appium背景介绍
1.官网:www.appium.io,由SauceLab公司开发
2.Appium是由nodejs的express框架写的Http Server,Appium使用WebDriver的json wire协议,
来驱动Apple系统的UIAutomation库、Android系统的UIAutomator框架
2.2.1.2 Appium桌面客户端安装方式
1. 运行appium-desktop-Setup-1.2.7.exe,默认安装即可
2. 启动客户端,按图片步骤 1 -> 2 -> 3 -> 4 设置
启动appium界面
3. 启动成功展示如下图
Appium-python库安装
命令行安装(需要联网)
pip install Appium-Python-Client
安装包安装
前提:python已安装setuptools包
安装setuptools:
1.解压setuptools-38.2.4.zip
2.进入解压后文件夹执行命令: python setup.py install
3.等待安装完成,无错误信息即可
安装Appium-Python-Client:
1.解压Appium-Python-Client-0.25.tar.gz
2.进入解压后文件夹执行命令: python setup.py install
3.等待安装完成,无错误信息即可
五.Appium入门的第一个例子
第一个例子
手机驱动对象
驱动对象会帮助我们完成手机和脚本之间交互.
导入driver对象
from appium import webdriver
声明手机驱动对象
只有声明驱动对象我们才可以让手机完成脚本的操作,声明的方法如下:
driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps) # 声明对象后会直接启动参数中的应用
desired_caps: ???
手机启动参数
desired_caps:负责启动服务端时的参数设置,appium server 与手机端建立会话关系时,根据这些参数服务端可以做出相应的处理
desired_caps常用参数:
platformName 平台的名称:iOS, Android, or FirefoxOS
platformVersion 设备系统版本号
deviceName 设备号 IOS:instruments -s devices,Android: adb devices
app 安装文件路径:/abs/path/to/my.apk or http://myapp.com/app
appActivity 启动的Activity
appPackage 启动的包
unicodeKeyboard unicode设置(允许中文输入)
resetKeyboard 键盘设置(允许中文输入)
# server 启动参数
desired_caps = {}
desired_caps['platformName'] = 'Android'
desired_caps['platformVersion'] = '5.1'
desired_caps['deviceName'] = '192.168.56.101:5555'
desired_caps['appPackage'] = 'com.android.settings'
desired_caps['appActivity'] = '.Settings'
desired_caps['unicodeKeyboard'] = True
desired_caps['resetKeyboard'] = True
脚本内启动其他app
driver.start_activity(appPackage,appActivity)
关闭app
driver.close_app() # 关闭当前操作的app,不会关闭驱动对象
关闭驱动对象
driver.quit() # 关闭驱动对象,同时关闭所有关联的app
实例代码
from appium import webdriver
import time
# server 启动参数
desired_caps = {}
# 设备信息
desired_caps['platformName'] = 'Android'
desired_caps['platformVersion'] = '5.1'
desired_caps['deviceName'] = '192.168.56.101:5555'
# app信息
desired_caps['appPackage'] = 'com.android.settings'
desired_caps['appActivity'] = '.Settings'
driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)
time.sleep(5)
driver.quit()
六.App基础操作API
完成app自动化需要一些基础条件的支持,本节将讲解APP初始化API.
1.1前置代码
# server 启动参数
desired_caps = {}
desired_caps['platformName'] = 'Android'
desired_caps['platformVersion'] = '5.1'
desired_caps['deviceName'] = '192.168.56.101:5555'
desired_caps['appPackage'] = 'com.android.settings'
desired_caps['appActivity'] = '.Settings'
desired_caps['unicodeKeyboard'] = True
desired_caps['resetKeyboard'] = True
# 声明driver对象
driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps)
1.2安装APK到手机
driver.install_app(app_path)
参数:
app_path:脚本机器中APK文件路径
1.3手机中移除APP
driver.remove_app(app_id)
参数:
app_id:需要卸载的app包名
1.4判断APP是否已安装
driver.is_app_installed(bundle_id)
参数:
bundle_id: 可以传入app包名,返回结果为True(已安装) / False(未安装)
1.5发送文件到手机
import base64
data = str(base64.b64encode(data.encode('utf-8')),'utf-8')
driver.push_file(path,data)
参数:
path:手机设备上的路径(例如:/sdcard/a.txt)
data:文件内数据,要求base64编码
Python3.x中字符都为unicode编码,而b64encode函数的参数为byte类型,需要先转码;
生成的数据为byte类型,需要将byte转换回去。
1.6从手机中拉取文件
import base64
data = driver.pull_file(path) # 返回数据为base64编码
print(str(base64.b64decode(data),'utf-8')) # base64解码
参数:
path: 手机设备上的路径
1.7获取当前屏幕内元素结构
driver.page_source
作用:
返回当前页面的文档结构,判断特定的元素是否存在
七.手机控件查看工具uiautomatorviewer
工具简介
用来扫描和分析Android应用程序的UI控件的工具.
如何使用
1.进入SDK目录下的tools目录,打开uiautomatorviewer
2.电脑连接真机或打开android模拟器
3.启动待测试app
4.点击uiautomatorviewer的左上角Device Screenshot,会生成app当前页面的UI控件截图
android_appium
5.选择截图上需要查看的控件,即可浏览该控件的id,class,text,坐标等信息
android_appium
八.APP元素定位操作
手工测试主要通过可见按钮操作,而自动化是通过元素进行交互操作.
元素的基本定位基于当前屏幕范围内展示的可见元素。
3.3.1Appium常用元素定位方式
name value
id id属性值
class class属性值
xpath xpath表达式
3.3.2.前置代码
from appium import webdriver
# server 启动参数
desired_caps = {}
# 设备信息