App 自动化测试测试实战

霍格沃兹测试开发

ceshiren.com

目录

  • 知识点梳理
  • 测试流程
  • 知识点练习
    • 业务分析
    • 用例设计
    • 编写用例
  • 练习题点评与解析

App 测试的时代背景

  • 按月发布->按周发布->按小时发布
  • 多端发布: Android、iOS、微信小程序、h5
  • 多环境发布: 联调环境、测试环境、预发布环境、线上环境
  • 多机型发布: 众多设备型号、众多系统版本
  • 多版本共存: 用户群体中存在多个不同的版本
  • 历史回归测试任务: 成百上千条业务用例如何回归

总结:加班 + 背锅

UI 自动化测试需要哪些技术

  • App 自动化测试: Appium、Airtest、ATX 等

Appium 介绍

  • 官网: appium.io
  • 跨语言 Java、Python、nodejs 等
  • 跨平台
    • Andoid、iOS
    • Windows、Mac
  • 底层多引擎可切换
  • 生态丰富,社区强大

Appium 知识点梳理

功能测试场景


autonumber
scale 1024 width

actor 测试工程师 as tester
participant 手机App页面 as frontend
participant 手机后端系统 as backend

tester -> frontend: 测试工程师在手机app页面做点击、输入等操作
frontend -> backend: 手机App页面发送请求到后端服务
backend -> frontend : 后端发送响应数据到App页面展示
frontend -> tester: 测试工程师拿到实际结果与预期结果对比

UI 自动化测试场景


autonumber

actor 测试工程师 as tester
participant 编程语言 as script
participant Appium as app
participant 手机app as phone

tester -> script: 编写自动化测试脚本
script -> app: 调用Appium 执行自动化
app -> phone: 对app页面对象执行动作(点击,滑动等)
phone -> app: 手机返回响应结果,返回给Appium
app -> script: Appium 将最终结果传递给客户端,与预期结果进行对比
script -> tester: 生成结果报告

企业微信 app 项目实战

环境准备

  • MacOS 系统
  • Android 模拟器(网易 mumu)
  • Appium Server、Appium Client

企业微信实战(添加成员功能)

  • 前提条件:

    • 1、提前注册企业微信管理员帐号
    • 2、手机端安装企业微信
    • 3、企业微信 app 处于登录状态
  • 通讯录添加成员用例步骤

    • 打开【企业微信】应用
    • 进入【通讯录】页面
    • 点击【添加成员】
    • 点击【手动输入添加】
    • 输入【姓名】【手机号】并点击【保存】
  • 验证点:登录成功提示信息

用例分析流程图

@startuml
autonumber

participant 首页 as index
participant 通讯录页 as contact
participant 添加成员页 as addmem
participant 编辑成员页 as editmem

index -> contact: 点击tab栏的【通讯录】
contact -> addmem: 点击【添加成员】
addmem -> editmem: 点击【手动输入添加】
editmem -> editmem: 输入【姓名】【手机号】点击【保存】
editmem -> addmem: 提示【添加成功】
addmem -> contact: 返回
contact -> index: 返回到首页
@enduml

总结

  • pytest 用法(setup/teardown等)
  • DesireCapbility的配置
  • 元素定位(id,xpath等)
  • 交互:click(),send_keys()
  • 特殊元素定位:toast 元素 使用xpath
  • 等待方式:隐式等待,显式等待
  • 获取页面源码:driver.get_pagesource
  • 获取元素的属性:get_attribute

企业微信实战(打卡功能)

  • 前提条件:

    • 1、提前注册企业微信管理员帐号
    • 2、手机端安装企业微信
    • 3、企业微信 app 处于登录状态
  • 实现打卡功能

    • 打开【企业微信】应用
    • 进入【工作台】页面
    • 点击【打卡】
    • 选择【外出打卡】tab
    • 点击【第 N 次打卡】
  • 验证点:提示【外出打卡成功】

总结

  • DesireCapbility 跳过设备初始化
  • DesireCapbility 动态设置
  • swipe 封装滑动操作
  • 显式等待

参考代码 - DesireCapability 配置

caps["noReset"] = "true"
caps['settings[waitForIdleTimeout]'] = 0   # 等待页面空闲的时间

caps['skipServerInstallation'] = ‘true'  # 跳过 uiautomator2 server的安装
caps['skipDeviceInitialization'] = ‘true'    # 跳过设备初始化
caps['dontStopAppOnReset'] = ‘true'    # 启动之前不停止app

参考代码 - 滚动查找元素

self.driver.find_element(MobileBy.ANDROID_UIAUTOMATOR,\
  'new UiScrollable(new UiSelector().scrollable(true).instance(0))\
  .scrollIntoView(new UiSelector().text("添加成员").instance(0));')

课后练习

使用 Appium 实现删除联系人