跳转至

APP测试

📌 关于环境

灰度环境/版本:少量机器发版,不能影响用户使用。

内测时分发平台:二维码下载、蒲公英、fir.im

上线时发布平台:

  • 安卓:豌豆荚、应用宝、360手机助手、品牌商城。
  • IOS:AppStore、iTools

上线:app发给平台方审核后,将获取到的平台号打包至app,再进行冒烟测试,最后正式提交发布。

📌 APP测试要点

  • 功能测试
  • 兼容性测试
  • 安装/卸载/升级测试
  • 交叉事件测试
  • PUSH测试
  • 性能测试
  • 用户体验测试
  • 稳定性测试

🚁 兼容性测试

概括:兼容不同操作系统版本、不同厂商

#todo,版本上载兼容性的测试策略

  1. 手机型号
    • 主流机型:三星、小米、OPPO、华为
    • 用户机型排名:移动设备份额统计、https://screensiz.es/
  2. 安卓:4.4以上(5.1、6.0、7.0);ios:9.x以上
  3. 屏幕尺寸(5.5、4.7)、分辨率(1080*1920720*1280
  4. 网络网速
  5. 应用兼容性
    • 与手机硬件兼容:手机按键、音量调节等
    • 与外部设备硬件兼容:耳机、蓝牙等
    • 与操作系统软件兼容:定位、字体设置等
    • 与其他APP兼容:主要是播放器
  6. 第三方云测平台

🚁 安装/卸载/升级测试

属于新功能时专项测试

  • 安装测试点

    1. 正常场景:

      1. 在不同的操作系统版本安装
      2. 从不同安装渠道安装
      3. 不同的安装路径(手机/SD卡)
      4. 下载时断点续传
    2. 异常场景:

      1. 安装时异常(关机、断网等),恢复后继续安装
      2. 安装时存储空间不足
      3. 安装时手动取消后再次安装
      4. APP正在运行时安装
      5. 低版本覆盖高版本
      6. 卸载后安装

  • 卸载测试点

    1. 正常卸载(APP手动卸载、工具卸载)
    2. 运行时卸载
    3. 取消卸载,回滚文件
    4. 卸载异常中断
    5. 卸载后残留数据、用户文件

  • 升级测试:升级后需要冒烟测试

    1. 临近版本升级
    2. 跨版本升级
    3. 不同渠道升级
    4. 升级提醒(无大改动可不提醒、新功能提示升级、重大bug或数据结构改动需强制升级)
    5. 应用升级在非WIFI环境时提醒

🚁 交叉事件测试

又称冲突测试、干扰测试,如app运行时接听电话、收发短信、应用推送、连接蓝牙、接收文件弹窗、屏幕旋转、切换网络环境、相机计算机等自带应用、电量告警等。

🚁 PUSH测试

即消息通知,分为如下两种方式:

  • pull需要客户端不断监测服务器变化
  • push主动推送/被动推送-触发事件

测试点:

  1. 是否根据对应业务规则推送
  2. 是否根据指定用户、角色推送
  3. 是否与手机通知设置一致(不允许通知、显示位置等)
  4. app在使用时、后台运行时、离线时,push消息能否正常提示

🚁 性能测试

  • 服务器端,参考JMeter性能测试
  • APP性能测试常见指标包括:CPU、内存、流量测试/弱网测试、电量测试、流畅度测试、启动速度(不同软件切换)

🚁 稳定性测试

长时间运行时进行稳定性测试,主要通过monkey命令,在测试后期进行。

🙋 测试版的app,会让开发将跳转到其他应用的功能屏蔽掉再测。

#todo,ios的稳定性测试

📋 步骤:

  1. adb shell monkey -p package -v 100000 -s 100 > E:\share\monkey.log,向程序发送十万个伪随机事件,并记录日志。
  2. 查看日志检查运行失败的次数,失败时需分析异常类型。
  3. 回归测试时,使用同样的命令执行,确保seed值一致。

参考资料:

1.monkey参数详解

2.monkey使用场景

📌 app异常类型

  • ANR-弹窗提示无响应
  • Crash-弹窗提示崩溃
  • 应用闪退

补充

原生安卓系统ANR、Crash日志等在/data/system/dropbox/data/anr/trace.txt等目录可找到(进入data目录需要root权限),但不同手机厂商加定制化系统时可能缺少这层目录。

ANR

  • 日志关键字:anr in
  • 原因分析:1.线程阻塞;2.内存不足;3.CPU满负荷(现在手机性能越来越高,基本不会出现)

Crash

  • 日志关键字:null point
  • 原因分析:1.空指针;2.数组越界;3.内存不足;4.CPU满负荷(现在手机性能越来越高,基本不会出现)

闪退

通过查看logcat日志进行排查

📌 adb常用命令

命令 补充说明
adb connect ip:port 连接到远程设备
adb -s ip:port install a.apk 指定设备安装apk
adb shell ps 查后台进程
adb shell dumpsys cpuinfo 查看cpu信息
adb shell dumpsys meminfo 查看内存信息
adb shell pm list package 查看所有包名,参数-3仅展示第三方包
adb logcat -v time *:E > logcat.log 查看日志,参数-v time指加上时间戳;*:E指获取error级别日志

补充

如需从设备取文件,执行adb pull即可;同理adb push则是推送文件。

官方文档:Android 调试桥 (adb)

20241217

adb shell content query --uri content://sms/inbox --projection body --sort "date DESC" --limit 1

--projection,列表;获取最新一条短信的内容,但vivo x200 Pro执行该命令提示:无desc、limit参数。

adb shell content query --uri content://sms/inbox --projection body --sort date

用该命令则可以获取到全部短信内容,再搭配str.splitlines()转列表提取最新一条短信内容。


参考资料:

快速获取验证码

🚁 logcat缓冲区

默认256K,写满时会删除较旧的日志。搭配-b Main指定缓冲区。

  • Radio:输出系统通信的日志
  • System:输出系统组件的日志
  • Events:输出事件(按键事件、触摸事件等)日志
  • Main:输出主程序(Java的main方法)日志,不属于上述三层