移动端自动化框架Appium

2,673 阅读5分钟

一、移动端自动化基础

1. 大厂都在做什么

《孙子·谋攻》曰:“知己知彼,百战不殆”。大厂是业界的风向标,我们个人不知道行业的风向标时,大厂就是我们的灯塔。最近看了罗胖的2020《时间的朋友》的演讲中,一句话令我印象深刻 “人生不是在每个关头都明确地知道自己该做什么选择。那怎么办?跟上这个时代,跟上这群人。”

BAT作为中国互联网的 “灯塔” 公司,看看他们在自动化测试方面有哪些 “动作”:

  • 测试框架

      阿里 Macaca
      腾讯开源微信小程序自动化测试工具
      百度内部的 Cafe 框架
      Google:Espresso、UI Automator
      Ebay:Selendroid
      Walmart:Robotium
      Sauce Labs:Appium
      ThoughtWorks:Selenium
    
  • 测试平台

      阿里 MQC
      腾讯 WeTest
      百度 MTC
      Testin
    

2.自动化测试现状

手工测试非常有用,但仅手工测试是远远不够的,手工测试+自动化测试才是xiangmu快速迭代的根基,但是手工测试与自动化测试占比与公司业务类型、发展阶段和行业技术进步相关。总的来说:现阶段的 IT 行业的矛盾就是日益增长的快速迭代需求与落后的测试生产力之间的矛盾。

  • 2.1 UI 自动化测试的瓶颈

      技术成本高:
          人力成本高:优秀测试开发工程师难招
          技术门槛高:测试工程师自动化能力不足
      维护成本高:
          复用率不高:UI 和业务流程变更是最主要变更
          稳定性不足:容易被干扰,执行慢
      常见行业错误观点:
          UI 自动化测试无用论
          UI 自动化测试就是模拟人工点点点
    
  • 2.2 UI自动化应用场景

      冒烟测试自动化:提测之前自动断言提测质量,提供准入参考。
      功能测试自动化:辅助 QA 与 测试工程师的快速验证。
      验收测试自动化:兼容性测试等。
      移动端性能专项测试自动化:性能、卡顿、健壮性测试、竞品分析。
    
  • 2.3 如何合理使用 UI 自动化

      使用分层测试策略,控制 UI 自动化测试规模:
          少数核心用例交给自动化测试
          大部分的基础回归测试交给自动遍历
          新功能交给人工测试
      技术改进方案:
          良好的维护模型:PageObject、数据驱动
          更好的框架支持:增加 watch、智能等待、失败重试等机制
    
  • 2.4 如何高效落地自动化

      学习方向:
          了解待测产品和平台:Android、IOS、APP
          精通最好的测试框架:Appium、UI Automator、WebDriverAgent
          掌握自动化测试经验:PageObject、稳定性提升、数据驱动等
      达到结果:
          一天搞定一款 APP 的自动化测试脚手架
          一天完成单个功能的业务测试自动化用例集合
          N 周内搞定公司的 APP 自动化测试
    
  • 2.5 UI 自动化分类

      Web 自动化:Selenium
       APP 自动化:Appium
      GUI 自动化:Windows、Mac
      微信小程序自动化:APP + web 测试技术的外延形态
      更多平台:智能设备、机器人、工业APP
    

3. 自动化测试技术体系

  • 3.1 UI 自动化测试框架及引擎

      Appium
          跨语言:Java、Python、Node.js等
          跨平台:Android、IOS、Windows、Mac
          底层多引擎可切换
          生态丰富、社区强大
      IOS:
          KIF、WDA、XCTest
      Android:
          Robotium、UI Automator
      特色框架:
          calabash、Macaca、ATX
    

APP 多端架构与自动化

APP 多端架构与自动化

  • 3.2 移动App迭代及分层测试模型 移动 App 快速迭代模型

    移动 App 快速迭代模型
    移动 APP 分层测试
    移动 APP 分层测试

  • 3.3 自动遍历工具及价值

    什么是自动遍历呢?

      以自动化的方式对 App 进行充分的功能遍历以探索 bug
    

    自动化遍历的价值:

      降低自动化测试维护成本,可替代 80% 的自动化测试
      实现新功能的探索
      实现老功能的回归
      用途:多设备兼容测试、自动化专项测试
    

    大厂常见的遍历工具与技术

      Andorid 原生 Monkey
      百度 SmartMonkey
      腾讯 New Monkey
      阿里 Macaca 的 NoSomke
      Google 的 APP Crawler
      TesterHome 社区 seveniruby Appcrawler
    

4. Android 自动化前提依赖

Android SDK:Android Studio 可辅助安装
模拟器:
    Android Studio 自带的 Emulator
    Genymotion、网易MuMu、BlueStacks
小米、华为、ViVo、OPPO真机

5. Adb shell常用命令

5.1 关于网易MuMu连接

# 1. 首先打开网易 MuMu 模拟器

# 2. 下载 [adb shell 工具](https://developer.android.com/studio/releases/platform-tools.html)

# 3. 安装 adb shell,解压后复制 adb shell 的目录,将该目录配置到环境变量的 Path 中
# 打开 cmd,输入以下命令看是否安装配置成功
adb shell

# 4. 连接网易 MuMu 模拟器,看到root@x86:/ #,恭喜你连接成功
adb connect 127.0.0.1:7555
adb shell

5.2 获取 App 的信息

# app信息
# 获取当前界面元素
adb shell dumpsys activity top
# 获取任务列表
adb shell dumpsys activity activities

# App 入口
adb logcat | grep -i displayed
aapt dump badging moblike.apk | grep lanunchable-activity
apkanalyzer 最新版本的 sdk 中才有

# 启动应用
adb shell am start -W -n com.xueqiu.android/.view.WelocmeActivityAlias -S

5.3 Android 常用命令

# 查看设备
adb devices

# 关闭 adb 的后台进程
adb kill-server

# 让 Android 设备脱离 USB 线的 TCP 连接方式
adb tcpip 127.0.0.1:7555

# 连接开启了 TCP 连接方式的 Android 设备
adb connect 127.0.0.1:7555

# 查看 Android 日志查看
adb logcat

# 收集日志数据,用于后续的分析,比如耗电量
adb bugreport

6.adb shell 常用命令

adb shell 本身就是一个 Linux 的 shell,可以调用 Android 内置命令

6.1 adb shell dumpsys(APP系统信息)

6.2 adb shell pm(包管理工具)

6.3 adb shell am(activity管理工具)

6.4 adb shell ps(进程管理工具)

6.5 adb shell monkey(兼容性测试工具)

6.6 adb shell uiautomator(界面结构)

6.7 adb shell input(自动化指令)

二、移动端自动化框架Appium

1. Appium介绍

三、移动端自动化实战