App 自动化测试课程设计

师资培训

ceshiren.com

App 测试的时代背景

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

App 常见 Bug

功能 Bug - 内容显示错误

功能 Bug - 功能错误

功能 Bug - 界面展示错乱

功能 Bug - 界面展示后台信息

功能 Bug - 推送信息错误

崩溃 Bug - Crash

企业需求

  • App 端产品的业务测试:Android iOS 小程序 智能硬件
  • 自动化测试
  • 兼容性测试(选修)
  • 专项测试:弱网、耗电量、性能、安全(选修)

UI 自动化价值

  • 提高效率
    • 融入企业迭代流水线,与 CI/CD/DevOps 结合。
    • 回归测试、功能测试加速。
  • 提高质量:
    • 兼容性测。
    • 专项/非功能测试。
    • 自动化探索测试。

App 测试相关工具

  • 功能测试:
    • 研发单元测试:JUnit、Pytest、Robolectric 不依赖真机或者模拟器
    • SDK 测试:Instrumentation 依赖真机或者模拟器
    • 集成测试:Espresso 单应用快速集成测试
    • 验收测试:
      • Appium、ATX/AirTest、Calabash、UiAutomation 跨应用测试
  • 非功能测试
    • 健壮性测试:Monkey Maxim AppCrawler
    • 兼容性测试:多设备分布式测试
    • 专项测试:性能测试、弱网测试、耗电量测试、卡顿测试、内存泄漏测试、安全测试

自动化测试工具-Appium

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

智能遍历测试

  • 通过智能探索业务路径尝试发现问题
  • 可以弥补现有自动化手段的不足
  • 已经成为测试过程中的关键一环

智能遍历工具

  • 百度 SmartMonkey
  • 腾讯 NewMonkey
  • 头条 fastbot
  • 支付宝 Macaca 的 NoSmoke
  • Android Monkey、Android App Crawler
  • 霍格沃兹测试开发学社 AppCrawler
  • OWASP-ZAP Web 漏洞自动探测

AppCrawler 使用案例

自动遍历的价值

  • 用例维护成本低 code-less。
  • 具备新功能探索能力,可以对未提测产品进行测试实现左移。
  • 具备回归能力,可以实现较高的界面与控件覆盖。
  • 应用场景多,回归测试、健壮性测试、兼容测试、自动化专项测试。

腾讯手 Q 的稳定性测试实验室

字节跳动-自动化测试体系案例

Fastbot 已广泛应用于字节客户端类产品的稳定性测试与兼容性测试。每日启动任务数超过 1 万次,每月平均发现 5 万个以上的崩溃。借助 Fastbot 的能力,我们在发版前就可以修复大部分的 crash,确保线上用户的使用体验。同时,Fastbot 在整个 DevOps 流程扮演重要的基础服务角色

字节跳动

UI 自动化执行效率提升

  • 并行并发:利用多进程、多线程
  • 分布式:分布式执行机制、Jenkins、Docker、K8S

STF 平台

分布式测试技术架构

App 测试相关知识体系

App 功能测试-L1(初级)

形式 章节 描述
知识点 App 测试体系 App 测试学习路径
知识点 App 项目测试流程 App 项目测试流程介绍
知识点 App 结构讲解 App 包结构解读
知识点 App 测试设计思路 App 测试思路总结
知识点 App 常见 Bug 解析 功能 Bug、崩溃 Bug、性能 Bug
知识点 常用模拟器使用 Genymotion、网易 MuMu、Android/iOS 官方模拟器
知识点 Android 开发者选项 Android 开发者选项介绍

App 功能测试-L2(中级)

形式 章节 描述
知识点 adb 命令介绍 adb 的使用场景、adb 的常用命令简介
知识点 adb 环境搭建与配置 Java、SDK、adb 环境安装与配置
知识点 adb 与设备交互 adb 连接手机设备、查看设备状态
知识点 adb 安装卸载应用 adb 安装、卸载命令
知识点 adb 命令启动页面 adb 启动页面命令
知识点 adb 命令清缓存 adb 清缓存命令
知识点 adb 文件传输 通过 adb 实现手机与电脑之间的文件传输
知识点 adb 日志操作 adb 日志操作命令

App 自动化测试-L1(初级)

形式 章节 描述
知识点 App 自动化测试的价值与体系 价值体系 技术选型 学习路线
知识点 环境安装与使用 Java 环境、SDK 环境、appium Desktop 安装、appium client
知识点 自动化用例录制 appium Desktop 用法,录制、回放、基本使用
知识点 自动化测试用例结构分析 录制代码解析,代码结构优化
知识点 capability 配置参数解析 capability 用法 ,android ios 专属 capability
知识点 app 自动化控制 数据清理 启动 关闭
知识点 常见控件定位方法 id,aid,xpath css 原生定位
知识点 强制等待与隐式等待 time.sleep() 与 implicitly_wait()
知识点 常见控件交互方法 点击,输入,清空,获取元素文本、尺寸等属性信息
知识点 自动化测试定位策略 Web、App 自动化测试不同场景的定位方式的汇总
知识点 【实战】雪球 app 搜索功能点自动化测试实战 用例设计,用例编写,断言

App 自动化测试-L2(中级)

形式 章节 描述
知识点 appium server 环境安装 nodejs 环境,appium server
知识点 capability 进阶用法 测试策略,性能相关
知识点 元素定位工具 uiautomatorviewer、weditor、appium inspector
知识点 高级定位技巧-xpath 定位 dom 结构解读、xpath 层级定位技巧
知识点 高级定位技巧-css 定位与原生定位 css selector 定位、原生定位
知识点 特殊控件 toast 识别 通过 xpath 定位 toast
知识点 显式等待高级使用 显式等待原理与使用
知识点 高级控件交互方法 TouchAction 触屏操作、点按,双击,滑动,手势解锁操作等
知识点 设备交互 Api 模拟电话、短信、飞行模式等场景
知识点 模拟器控制 代码控制模拟器启动
知识点 【实战】雪球财经 app 股票详情功能点自动化测试实战 用例设计,hamcrest 断言,page object 封装

App 自动化测试-L3(高级)

形式 章节 描述
知识点 自动化关键数据记录 行为日志、截图,page source
知识点 app 弹窗异常处理 app 弹窗异常处理
知识点 自动化测试架构优化 需求与价值、项目结构优化、框架封装(异常处理、日志记录、报告生成、数据驱动)
知识点 【实战】基于 page object 模式的测试框架优化实战 异常处理、日志记录、报告生成、参数化与数据驱动
知识点 android webview 技术原理 webview 技术原理分析
知识点 android webview 架构与分析 使用开发者工具分析 webview 手机浏览器 小程序
知识点 webview 自动化测试 webview 页面调试工具介绍,webview 页面调试技巧,webview 控件定位技巧
知识点 微信小程序自动化测试 微信小程序调试工具介绍,微信小程序调试技巧,微信小程序定位技巧
知识点 手机浏览器自动化测试 手机浏览器调试技巧,手机浏览器定位技巧
知识点 【实战】雪球财经 app 实战 3- webview 自动化测试实战 用例设计,webview 页面自动化测试用例编写

App 自动化测试(iOS)-L3(高级)

形式 章节 描述
知识点 Xcode 基础使用 Xcode 基础使用 介绍 模拟器
知识点 iOS 自动化测试环境安装 iOS 自动化测试环境安装
知识点 iOS 自动化相关工具 iOS 常用工具介绍 常用命令
知识点 iOS 元素定位 iOS 元素定位
知识点 iOS 模拟器自动化测试 iOS 元素定位
知识点 iOS 真机自动化测试 WDA 配置与安装,WDA 原理分析
知识点 iOS Safari 手机浏览器自动化测试 Safari 配置与元素定位技术
知识点 iOS WebView 手机浏览器自动化测试 iOS WebView 元素定位技术与自动化测试

App 专项测试(高级)

形式 章节 描述
知识点 专项测试的价值与体系 学习路线,专项测试使用场景
知识点 app 启动性能分析 冷启动、热启动、暖启动、首屏启动指标分析
知识点 app 首屏加载时间分析 使用 ffmpeg 录屏拆帧分析实战
知识点 接口性能分析 dns、http/https 的接口性能分析
知识点 PC 浏览器的性能分析 PC 浏览器的性能数据获取与分析
知识点 手机浏览器的性能分析 手机浏览器的性能数据获取与分析
知识点 app webview 性能分析 hybrid app 的性能分析
知识点 微信小程序性能分析 微信小程序性能数据获取与分析
知识点 W3C performance api 性能 api 的讲解、调用与实战
知识点 卡顿分析 过度绘制、冰冻帧、卡顿数据
知识点 系统资源分析 cpu 统计、mem 统计、网络流量分析
知识点 耗电量测试 使用 Batterystats 与 BatteryHistorian 完成耗电量分析
知识点 弱网测试 模拟弱网、丢包、延迟、不可访问等多种条件下的应用体验
知识点 健壮性测试 使用 monkey maxim 完成 app 的健壮性测试
知识点 兼容性测试 使用 appcrawler 完成遍历与兼容性分析