用户端 App
测试方法与技术

霍格沃兹测试开发学社

ceshiren.com

目录

  • 学习价值
  • 知识点梳理
  • 用户端 App 产品测试实战

学习价值

  • 掌握 App 项目测试流程。
  • 掌握 App 测试需要注意的测试点。
  • 掌握 App 测试中的常见的 Bug。
  • 掌握 App 测试必学技能 adb 命令。
  • 掌握 Android 健壮性测试工具 monkey。

知识点梳理

用户端 App 产品测试实战

  • 被测产品介绍
  • 测试需求介绍
  • 实战思路

被测产品介绍

  • 雪球
    • 金融类 App 产品
    • 提供咨询获取、数据查询和交易服务等功能。
    • 其主要业务功能为精华帖、行情咨询查看、股票基金交易。

实战思路

业务分析

  • app结构讲解
  • app项目测试流程

APK

  • 全称:Android application package(Android应用程序包)
  • 安装在安卓设备上的软件
  • 一个以 .apk结尾的压缩文件。

APK 包结构

  • META-INF目录
    • 包含了签名和证书信息,用于验证APK文件的完整性和可信性
  • lib/
    • 存储应用程序的本地库文件,针对不同的CPU架构和设备类型提供不同的库
  • assets/
    • 存储应用程序需要的原始资源文件
    • 如:文本文件、音频、视频等
  • classes(n).dex
  • resources.arsc

APK 包结构

  • res/
    • 包含了应用程序的资源文件
    • 如图像、布局文件、字符串等
  • AndroidManifest.xml
    • APK的核心文件
    • 包含了应用程序的清单信息,包括应用程序的包名权限声明组件定义等。

App 分类

App 分类

Native App(原生应用程序)

Hybrid App(混合应用程序)

  • 有原生应用又有使用Web技术(HTML、CSS和JavaScript)开发的应用程序。

  • 通过封装工具(如Apache Cordova、React Native等)将其打包为原生应用程序

Web App(Web应用程序)

Web App是使用Web技术(HTML、CSS和JavaScript)开发的应用程序,可以在Web浏览器中访问和运行

分类图

  • 原生应用需要每次下载包更新,并且包都需要上传到应用商店审核。
  • 前端页面使用H5页面。

Android基础知识

  • Activity(活动)

    • 用户界面上的一个屏幕或交互界面
  • Window(窗口)

    • 承载 Activity 的内容
    • 每个Activity关联一个窗口
  • ViewGroup(视图组)

    • 容纳管理其他 View 对象的组合。
  • View

    • 用户界面的基本构建块
    • 按钮文本框图像列表等各种可见的用户界面元素

Android基础知识

  • Activity 可以包含一个或多个 View 和 ViewGroup

  • Window 可以包含一个或多个 View

  • 一组View组成ViewGroup。

查看界面元素

  • 工具
    • uiautomatorviewer
    • weditor
    • appium

元素属性

App测试内容

具体看xmind。

测试执行

常用模拟器使用

  • emulator 模拟器
  • mumu 模拟器

emulator 介绍

  • Android Studio 自带模拟器
  • 功能齐全

环境准备

  1. jdk下载。
  2. jdk安装。
  3. Java环境变量配置。

jdk下载-Window

  1. 查看windows的系统。

  2. 下载合适自己系统的jdk,jdk版本需要1.8+。

    • 64位请选择X64
    • 32位系统请选择X86

window系统查看

jdk安装

  1. 打开下载的exe文件,选择

jdk安装

  1. 点击下一步。

jdk安装

  1. 更改jdk安装路径:点击 安装到: 的右侧 更改 按钮,可选择jdk安装的路径。

  2. 如默认则直接点击下一步,直到完成。

Java环境变量配置

  1. 打开系统属性中的环境变量。

Java环境变量配置

  1. 系统环境变量中添加JAVA_HOME系统变量。
    • 注意:变量值为自己安装JDK的路径。
    变量名: JAVA_HOME
    变量值: C:\Program Files\Java\jdk-1.8
    

Java环境变量配置

  1. 系统环境变量中添加CLASSPATH系统变量。

    • 注意:最前面有个点。
    变量名: CLASSPATH
    变量值: .;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar
    

Java环境变量配置

  1. 系统环境变量的PATH的变量值最后末尾,追加配置。
    • 注意:PATH中不能有java的其他版本配置。
    变量名: PATH
    变量值: %JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;
    

Java环境验证

  1. 按 win + R 键 输入 cmd 回车,弹出命令行窗口。

  2. 输入 java -version 得到版本号相关信息则表示java安装配置成功。

    java -version 
    
    javac
    

jdk下载-Mac

  1. 下载合适自己系统的jdk
    • jdk版本需要1.8+。

jdk安装

  1. 打开下载的dmg文件,选择pkg

jdk安装

  1. 点击 继续 。

jdk安装

  1. 点击 安装 。

jdk安装

  1. 点击 使用密码,输入电脑开机密码。

jdk安装

  1. 等待软件安装完成,点击关闭。

Java环境变量配置

  1. 按 command + 空格 键 输入 ter,选择终端打开。

  2. 终端确认电脑的bash环境。

    echo $SHELL
    

Java环境变量配置

  1. 打开环境变量配置文件。
    • 输出为/bin/bash, 则创建 ~/.bash_profile 配置文件。

    • 输出为/bin/zsh ,则创建 ~/.zshrc 配置文件。

Java环境变量配置

  1. 添加 JAVA_HOME 、CLASSPATH 变量。

  2. PATH的变量追加Java配置。

#------------------JAVA------------------
JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk-1.8.jdk/Contents/Home

CLASSPATH=$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar:.

PATH=$JAVA_HOME/bin:$PATH:.

export JAVA_HOME
export PATH
export CLASSPATH

Java环境变量配置

  1. 按 command + 空格 键 输入 ter,选择终端打开。

  2. 终端输入 source 配置文件名 使环境变量生效。

    source ~/.zshrc 
    

Java环境验证

  1. 打开一个新的命令行窗口。

  2. 输入 java -version 得到版本号相关信息则表示java安装配置成功。

    java -version 
    
    javac
    

安装 sdk 及配置环境变量

  • Window
  • Mac
  • 新建变量ANDROID_HOME:sdk 安装根目录
  • Path 变量中添加
    • %ANDROID_HOME%
    • %ANDROID_HOME%\emulator
    • %ANDROID_HOME%\tools
    • %ANDROID_HOME%\tools\bin
    • %ANDROID_HOME%\platform-tools
  • 环境验证:adb --version

emulator 安装

emulator 使用

mumu 模拟器

mumu 切换横竖屏

Genymotion

Android开发者选项

app常见bug解析

ADB的基本概念

  • 通信桥梁
  • 命令行工具
  • 设备调试模式
  • USB连接
  • 功能丰富
  • 开发和测试工具

ADB的作用

  • 应用程序安装和卸载
  • 设备状态监测
  • 文件传输
  • 日志记录和调试
  • 截屏和录屏
  • 设备控制和模拟

ADB(Android Debug Bridge)的组成

  • ADB服务器 Server
  • ADB客户端 Client
  • ADB守护进程 Daemon

ADB的运行原理

ADB的常用命令

测试角度看 Android 和 iOS 区别

  • 物理按键:Android 需要测试是否支持用返回键。
  • 测试工具:Android 是开源系统,相关测试工具更多;iOS 严重依赖 macOS 系统。
  • 安装测试:Android 系统的安装渠道更多。
  • 兼容性测试:Android 的操作系统类型以及版本更多。
  • 升级测试:iOS 有严格的降级限制。
  • 消息推送渠道:iOS 使用官方渠道;Android 可以使用第三方或者自建平台。
  • 手势操作:比如删除操作需要不同的手势。
  • 支付方式:iOS 需要通过 APP Store。
  • 扩展:Andriod 支持 SD 卡扩展。

App 测试与 Web 测试区别

  • 业务功能测试方面区别不大。
  • 产品架构不同:Web 为 B/S 架构;App 为 C/S 架构。
  • 兼容方案不同:Web 重点关注浏览器;App 关注分辨率,屏幕尺寸,还要看设备系统。
  • App 多了专项测试:流量、电量、CPU、Memory、健壮性、安装、卸载、更新等等。
  • 界面操作不同:App 关注手势操作。
  • 测试工具不同:比如 Web 自动化用 Selenium,App 自动化用 Appium。
  • 上线方式不同:App 需要发版。

App 压力测试

课堂练习 - 雪球 App 压力测试

  • 对雪球 App 进行 5 分钟的压力测试
    • 打印最详细的日志
    • 根据雪球 App 最常用的操作类型确定操作比例
    • 指定执行 seed 值

获取 app 启动时间

  • 冷启动时间
  • 热启动时间

冷启动时间

冷启动时间:app 杀掉后重新启动的场景

// 1. 先把 app 杀掉
adb shell am force-stop <包名>
// 2. 执行启动命令
adb shell am start -W -n com.xueqiu.android/.common.MainActivity
Starting: Intent { cmp=com.xueqiu.android/.common.MainActivity }
Status: ok
Activity: com.xueqiu.android/.common.MainActivity
ThisTime: 3860
TotalTime: 3860
WaitTime: 3907
Complete

热启动时间

  • 热启动时间:TotalTime + WaitTime
    • app 切后台后重新唤醒的场景
// 1. 切换 app 到后台
adb shell input keyevent 3
// 2. 启动应用
adb shell am start -W -n com.xueqiu.android/.common.MainActivity