跳转至

移动端测试面试题

移动端测试面试重点包括 Appium 自动化、弱网测试、兼容性覆盖、崩溃分析和性能监控。

移动端测试和 Web 测试有什么区别?

主要区别:

1. 设备碎片化
   - Web:浏览器种类有限
   - 移动端:数千款机型、不同系统版本、分辨率

2. 网络环境
   - Web:通常稳定 Wi-Fi
   - 移动端:Wi-Fi、4G、5G、弱信号频繁切换

3. 交互方式
   - Web:鼠标点击为主
   - 移动端:触摸、滑动、长按、多点触控、陀螺仪

4. 权限管理
   - Web:浏览器沙箱
   - 移动端:系统级权限(相机、定位、存储)

5. 生命周期
   - Web:页面切换
   - 移动端:前后台切换、系统杀进程、推送唤醒

Appium 的架构是怎样的?

Appium 采用 C/S 架构:

客户端(测试脚本)→ Appium Server → 设备

通信流程:
1. 测试脚本发送 HTTP 请求给 Appium Server
2. Appium Server 将命令转发给设备
3. 设备执行操作并返回结果

底层驱动:
- Android:UiAutomator2、Espresso
- iOS:XCUITest

优点:
- 跨平台(Android + iOS)
- 支持多语言(Python、Java、JS)
- 不需要修改被测 App

弱网测试怎么模拟?

工具:
1. Charles:Proxy → Throttle Settings
2. Fiddler:Rules → Performance → Simulate Modem Speeds
3. Android 模拟器:设置 → 网络 → 限速
4. iOS 模拟器:Network Link Conditioner

常见弱网场景:
- 2G:56 kbps,延迟 300ms
- 弱 3G:780 kbps,延迟 200ms,10% 丢包
- 电梯/地铁:频繁断连

测试要点:
- 页面加载是否超时
- 请求失败是否有重试机制
- 数据是否有丢失或重复提交
- 弱网恢复后是否自动同步

兼容性测试怎么覆盖?

覆盖策略:

1. 确定矩阵
   - 操作系统版本(Android 10-14、iOS 15-17)
   - 屏幕分辨率(720p、1080p、2K、折叠屏)
   - 厂商(华为、小米、OPPO、vivo、三星)

2. 优先级
   - 核心功能:全矩阵覆盖
   - 次要功能:抽查 Top 5 机型
   - 边缘功能:只测最新系统

3. 数据来源
   - 看埋点数据,确认用户量最大的机型
   - 参考行业报告

4. 工具
   - 真机实验室(AWS Device Farm、Firebase Test Lab)
   - 云测平台(Testin、WeTest)

App 崩溃怎么分析?

Android 崩溃分析:
1. adb logcat 抓日志
2. 搜索 FATAL EXCEPTION、ANR、Crash
3. 看堆栈信息,定位崩溃代码行
4. 用 Android Studio 的 Logcat 过滤

iOS 崩溃分析:
1. Xcode → Window → Devices and Simulators → View Device Logs
2. 用 symbolicatecrash 解析符号表
3. 看崩溃线程的调用栈

常见崩溃原因:
- 空指针(NullPointerException)
- 数组越界
- 内存不足(OOM)
- 主线程阻塞(ANR)
- 第三方 SDK 兼容问题

ANR 是什么?怎么测试?

ANR(Application Not Responding)= 应用无响应

Android 中触发条件:
- 主线程阻塞超过 5 秒(输入事件)
- BroadcastReceiver 超过 10 秒
- Service 超过 20 秒

测试方法:
- adb logcat 搜索 ANR
- /data/anr/ 目录下的 traces.txt
- 监控主线程耗时操作

常见原因:
- 主线程做耗时操作(网络请求、大文件读写)
- 死锁
- 数据库操作在主线程

推送通知怎么测试?

测试要点:

1. 基本功能
   - App 在前台时是否收到推送
   - App 在后台时是否收到推送
   - App 被杀后是否收到推送

2. 通知展示
   - 标题、内容是否正确
   - 图标、铃声是否正确
   - 点击后是否跳转到正确页面

3. 特殊场景
   - 多条推送是否正确展示
   - 免打扰模式是否生效
   - 权限关闭后是否不推送
   - 网络断开后恢复是否补发

手势操作怎么自动化测试?

Appium 支持的手势:
- tap:点击
- swipe:滑动
- scroll:滚动
- pinch:缩放
- long_press:长按
- drag_and_drop:拖拽

代码示例(Python):
  # 滑动
  driver.swipe(start_x, start_y, end_x, end_y, duration)

  # 长按
  from appium.webdriver.common.touch_action import TouchAction
  TouchAction(driver).long_press(el).wait(2000).release().perform()

注意:不同机型触摸响应可能不同,需要适当增加等待时间。

面试评分参考

维度 初级(1-2年) 中级(3-5年)
测试范围 知道功能+兼容性+弱网 能设计完整的移动端测试策略
自动化 会用 Appium 写基础脚本 能搭建框架、处理复杂手势
崩溃分析 能看日志找崩溃原因 能分析 ANR、OOM 等深层问题
性能监控 会用 adb 查看内存/CPU 能监控帧率、内存泄漏、电量消耗