1.移动端自动化测试工具
appium(继承自selenium), Airtest(网易), RF(robot framework 关键字驱动中的一种)
2.appium自动化原理
web自动化: 打开浏览器 打开被测网址URL 元素定位 操作(输入,点击,切换,等待....)
app自动化: 打开app 元素定位 操作(输入 点击 滑屏 按键 ....)
自动化脚本 和 被测app软件 不在同一位置, 怎么执行脚本 打开移动端设备中的app程序进行测试?
在PC端编写 app自动化测试脚本, 通过appium指令服务器转发给SDK环境, 再通过SDK操作移动终端设备.
3.appium组件详解
3.1 Host: 0.0.0.0(appium是指令服务器, 用于转发指令) port: 4723(appium默认端口)
4.appium自动化配置
"platformName": "Android", # 操作系统
"platformVersion": "6.0.1", # 系统版本
"deviceName": "127.0.0.1:7555", # 设备名称
"appPackage": "com.tencent.mobileqq", # app程序包名
"appActivity": ".activity.SplashActivity", # app程序主界面(启动界面)
"unicodeKeyboard":"true"# 允许输入中文
5. Refresh source 刷新资源 只要appium界面中的显示与设备中的程序界面显示不一致, 需要先刷新 后操作
8.Quit session &close inpector 退出并关闭
录制过程为, 选中元素标签, 在弹出标签属性后, 在右侧进行 点击(Tap), 输入(Send_keys) 清空(Clear)等操作
录制的脚本, 可以选择 不同语言, 然后将代码 copy即可.
appium中常用的元素定位方式:
1.pip install appium-python-client==1.3.0
2.导包 from appium import webdriver
des = {
"platformName": "Android", # 操作系统
"platformVersion": "6.0.1", # 系统版本
"deviceName": "127.0.0.1:7555", # 设备名称
"appPackage": "com.tencent.mobileqq", # app程序包名
"appActivity": ".activity.SplashActivity", # app程序主界面(启动界面)
"noReset": "true",# 不重置
"unicodeKeyboard":"true"# 允许输入中文
4.driver = webdriver.Remote("http://127.0.0.1:4723/wd/hub", des)
问题: 如果是比较成熟的商业app软件, 它会不断的产生各种安全验证
1.免费 需要不断的进行训练, 本质是训练一个人工智能 程序. 要求很高
2. 收费, 每次遇到验证码, 通过调用第三方接口的方式 来实现验证码的处理
web自动化, 主要是为了解决回归测试阶段, 需要重复执行之前版本的所有测试用例; 替代人工进行巡检
web自动化并不能替代 功能测试; web自动化是按照编写好的程序来执行的, 不可能发现 程序之外的其它缺陷.
app自动化也是相同的. 在app兼容性测试中 效果比较直白. 也不能替代功能测试.
90%的TestCase都通过自动化的方式来执行. 原因有两个.
web自动化/app自动化测试 都是在功能测试之后. 功能测试未完成, 意味版本不够稳定.
UI自动化并不能发现更多的缺陷. 只是节省了人 物 时间 成本.
1.筛选人员能力, 作为对招聘人员考核的必需指标之一. 代码能力能够说明 测试人员的逻辑能力.
2.可以作为储备. 更期望测试人员能够主动通过技术手段 提升测试效率, 降低成本, 保证软件质量.
接口自动化 能够帮助测试人员, 发现更多的缺陷, 而且效率更高. 天生就适合做自动化.