APP测试流程
- 需求分析
- 测试计划编写
- 测试用例设计
- 测试用例评审
- 用例执行
- 回归测试
- 非功能测试
- 走查验收(UI、产品)
- 灰度发布
- 上线
- 测试总结报告
需求分析
需求分析步骤
- 明确测试范围
- 明确功能点
- 明确业务流程
- 明确输出结果
- 分析异常流程
- 预估测试需要的时间和资源
接口验证
接口文档
- 接口请求地址
- 接口请求方式
- 输入参数
- 输出结果
接口工具
- charles
- fiddler
常见的app测试框架
自动化测试工具
注意
calabash是否可以测android?
APP元素定位
-
原生APP:
- uiautomator viewer --> Android SDK
- inspector --> appium desktop
- weditor --> 浏览器
-
web app:
- pass
-
混合app:
- pass
-
判定方式:在开发者选项中打开页面布局边框,测试软件每一个控件(元素)都是有一个红+蓝框包括起来的是原生APP 。多个空间(元素)包含在一个红+蓝框包括起来是混合APP。
weditor
安装
pip install weditor
特点
不稳定
使用
- 输入
python -m weditor
- 弹出浏览器
- 点击
CONNECT
连接设备 - 点击
DUMP Hierarchu
刷新界面
定位方式
driver(定位方式=‘定位值’)
UIAutomator
可以用python对Android设备进行UI自动化的库。其底层基于Google uiautomator,可以获取屏幕上任意一个APP的任意一个控件属性,并对其进行任意操作,目前仅支持android平台的原生应用测试。
特点
- 功能丰富:设备和开发机可以脱离数据线,通过wifi互联
- 得心应手;集成了openstf加快截图速度,控制精准
- 深度整合:代码进行了重构和精简,方便维护
环境
- 设备(模拟器或真机)
- JDK环境
- 安卓SDK环境
- 语言环境(java、python)
- IDE(pycharm)
- 框架(UIAutomator2)
初始化
打开cmd
输入 python -m uiautomator2 init
操作步骤
- 导包
import uiautomator2 as u2
(顺便取个别名) - 建立连接
- 初始化 app-界面-打开
- 获取应用包名与类名:
python -m uiautomator2 current
- 测试流程:定位元素+元素操作
代码流程
import uiautomator2 as u2
driver = u2.connect(addr='设备号')
driver.app_start(package='包名',activity='类名')
定位+操作
定位方式
XPATH定位
相对定位:
//*
//*[contains(@resource-id, 'login')](重点)//*[@text=‘登录](重点)
//*[contains(@resource-id,'login') and contains(@text,'登录')](重点)
//*[contains(@text, '登录')orIcontains(@class,'EditText')](了解)
//*[ends-with(@text,号'》][//*[starts-with(@text,姓名')]两个定位的集合列表(了解)
//*@clickable="true"MV/android.widget.TextView[string-length(@text)>0 and string-length(@text)<20](了解)
//*[contains(@text,'看点')/ancestor::*//*[contains(@class,'EditText')](轴)(了解)
APP元素操作
模拟手势操作
- 按压控件: press()
- 长按控件:longPress()
- 点击控件:tap()
- 移动:moveTo()
- 暂停:wait()
- 结束操作:release()
- 将操作发送服务器:Perform()
例如:
action.longPress(names.get(1),1000).perform().replease;
TouchAction(driver).press(x=0,y=308).release().perform()
移动设备特有的操作
- 息屏: lockDevice()
- 当前Activity: currentActivity()
- 收起键盘:hideKeyboard()
- 滑动:swipe()
- 拉出文件:pullFile()
- 推送文件: pushFile()
例如:
driver.pushFile(“sdcard/test.txt”, data);
driver.swipe(75,500,75,0,800);
driver.lockDriice();
appium
安装
pip install appium-python-client
appium官网建议下载1.19版本较为稳定
代码
from appium import webdriver
des={
'debice':'127.0.0.1:62001',
'platformName':'android',
'platformVersion':'5.1.1',
'appPackage':'包名',
'appActivity':'类名',
'noreset':True #Ture没有清除缓存
}
driver = webdriver.remote('http://127.0.0.1:4723/wd/hub'desired_capabilites=des),
环境安装
-
java 1.8版本
-
- 配置环境变量
-
android sdk
-
- 配置环境变量
-
node js,npm
-
python3
-
appium desktop
-
appium python client
引擎
android
- espresso
- selendroid
- uiautomator2
ios
- uiautomation
- xcuitest
设计理念
基于http协议,第一个链接会建立一个session会话,通过post发送一个json告知服务端相关测试信息
生态工具
- adb:Android的控制工具,用于获取android的各种数据和控制
- appium desktop:内嵌appium server 和inspector的总和工具
- appium server: 核心工具,命令行工具
- appium client:各种语言的客户端封装库,用于链接appium server
- appcrawler:自动遍历工具