移动端 AI 测试专项
这一篇只讲 App,而且会从“移动端到底和 Web 差在哪”开始讲。你会看到:为什么同一套 AI 功能到了 App 里,权限、切后台、弱网、键盘、手势、机型、语音和图片入口都会让问题变复杂。
同一套 AI 能力,到了移动端就不是同一套问题了。
Web 上你更多在看浏览器和前端状态;到了移动端,系统环境会强势介入:键盘、权限、系统弹窗、切后台、锁屏、电话打断、网络切换、存储空间、推送、机型差异,这些都会直接影响 AI 功能表现。 所以移动端 AI 测试,本质上是在同时测试三件事:AI 功能本身、App 作为宿主的稳定性、手机系统对这个功能的影响。如果只盯着页面结果,很容易漏掉大量真问题。
图 1:移动端 AI 产品的典型结构 用户层:输入、语音、图片、手势、通知点击 ↓ App 层:页面状态、会话状态、上传状态、登录态 ↓ 系统层:权限、键盘、生命周期、网络、相册、麦克风 ↓ 服务层:SDK、接口、文件服务、模型服务
| 为什么移动端更难 | 具体表现 | 测试上要补什么 |
|---|---|---|
| 系统会主动打断 | 切后台、来电、权限弹窗、锁屏 | 生命周期和中断恢复必须单独测 |
| 硬件差异大 | 机型、系统版本、内存、存储、网络环境不同 | 要做设备矩阵,不是随便拿一台手机测 |
| 能力入口多 | 拍照、选图、录音、分享、唤端 | 每个入口都可能牵出单独缺陷 |
| 弱网更真实 | 地铁、电梯、Wi-Fi 切 4G、热点 | 上传、流式、重试、草稿恢复都要看 |
02. 先看测试边界
移动端问题如果不先拆边界,很容易一团乱。更实用的做法是按 4 层看:页面层、App 状态层、系统层、服务层。你要先知道问题停在哪层,后面提单和排查才会快。
页面显示和交互 → App 会话 / 草稿 / 登录态 → 系统权限 / 生命周期 / 网络 → 接口 / SDK / 模型服务
| 表面现象 | 很多人第一反应 | 更可能的真实原因 |
|---|---|---|
| 语音按钮点了没反应 | 页面按钮坏了 | 麦克风权限被拒、系统音频会话冲突 |
| 上传图片后识别失败 | 模型识别差 | 图片压缩、上传中断、会话绑定丢失 |
| 回到前台后对话消失 | 列表接口没返回 | App 被系统杀死但恢复逻辑不完整 |
| 回答一直不出来 | 模型卡住了 | 弱网、切网络、超时策略或前端收口有问题 |
2.1 设备矩阵怎么选才不乱
| 层级 | 建议设备 | 为什么这么分 |
|---|---|---|
| Tier 1 | 主流新机 + 主流系统版本 | 覆盖大部分真实用户,是发版拦截线 |
| Tier 2 | 一批中端机、不同品牌、上一个系统版本 | 补机型差异、性能差异、兼容性 |
| Tier 3 | 旧机型、低内存、边缘系统版本 | 按用户量和商业价值决定是否加测 |
这里不是让你把所有手机都测一遍,而是提醒你:移动端测试一定要有矩阵意识。如果只用一台高配测试机,很多真实问题根本看不出来。
03. 输入、键盘、手势
移动端输入不是简单把 Web 输入框搬过来。软键盘、系统输入法、页面滚动、手势返回、长按菜单、底部安全区都会影响体验,尤其聊天类 AI 页最容易被这些细节打断。
| 点 | 检查项 | 典型问题 |
|---|---|---|
| 键盘弹起 | 输入框是否被遮挡,页面是否顶上去 | 发送按钮被键盘盖住 |
| 手势返回 | 侧滑返回时草稿是否丢失 | 用户误触返回导致内容全没 |
| 长文本输入 | 滚动、光标、自动换行、性能 | 长文本编辑卡顿、光标乱跳 |
| 发送与停止 | 按钮可点时机、重复点击保护 | 发送两次、停止无效 |
| 列表滚动 | 新消息追加时是否抢滚动焦点 | 用户在看历史消息却被强行拉到底部 |
- 中文输入法上屏前按回车到底做什么。
- 横屏、分屏或大字体模式下输入区布局是否还成立。
- 手势返回中断流式时,是否会留下后台还在跑的请求。
- 底部安全区机型上,发送按钮和停止按钮是否被 Home Indicator 影响。
一个很移动端的真实问题。
聊天页正在流式返回,用户往上翻历史消息;这时新内容继续追加,页面自动滚到底部,用户又被强行带回最新位置。这个问题 Web 也会有,但在手机小屏上体感更差。
04. 权限和系统能力
只要 AI 产品支持拍照、选图、录音、语音输入、通知、剪贴板、定位,权限就是绕不过去的。很多功能测试失败,不是 AI 能力不行,而是系统权限链路没走顺。
| 权限 / 能力 | 常见入口 | 必须覆盖的状态 |
|---|---|---|
| 相机 | 拍照上传、扫码 | 首次授权、拒绝、永久拒绝、去设置页后返回 |
| 相册 / 文件 | 选图、选文件、导入附件 | 部分授权、无权限、文件不存在 |
| 麦克风 | 语音输入、语音对话 | 被其他 App 占用、录音中断、权限被收回 |
| 通知 | 结果提醒、异步完成提醒 | 关闭通知后是否有降级提示 |
| 剪贴板 | 复制回答、粘贴输入 | 失败提示、内容格式是否正确 |
权限拒绝后的好体验
告诉用户为什么需要权限、怎么去设置里打开、如果不授权还能走什么降级路径。
权限拒绝后的坏体验
按钮点了没反应、直接空白页、只弹一个系统错误码、重新进入页面后状态混乱。 新手最爱测的一条用例就是:点击拍照,允许权限,拍照成功。这个当然要有,但真正高价值的是:拒绝后再点怎么办、去系统设置重新打开怎么办、录音时来电话怎么办、相册只有部分照片权限怎么办。
05. 生命周期与切后台
移动端跟 Web 最大的不同之一,就是系统能随时打断你。切后台、锁屏、切 App、来电话、弹系统权限框、低内存被杀,这些全都属于正常现实。AI 聊天页如果不考虑这些,线上一定会出问题。 图 2:一个典型的切后台恢复链路 用户发送问题 ↓ 回答流式返回中 ↓ 用户切到后台 / 锁屏 / 接电话 ↓ App 恢复到前台 ↓ 页面决定继续、重拉、提示失败或恢复草稿
| 场景 | 要确认什么 | 典型问题 |
|---|---|---|
| 发送中切后台 | 回前台后页面状态是否正确 | 回答其实已完成,但页面仍显示生成中 |
| 录音中切后台 | 录音是否被中断,文案是否明确 | 录音 silently fail,用户以为还在录 |
| 锁屏再解锁 | 草稿、会话、滚动位置是否恢复 | 草稿清空、页面跳回顶部 |
| 低内存被杀后重进 | 是否有恢复策略或明确提示 | 用户以为历史还在,结果全丢 |
这些问题很难通过接口测试发现,却特别容易在真实使用中出现。用户在手机上使用 AI,不可能一直盯着屏幕不离开;被打断才是常态。
06. 弱网、断网和恢复
手机的网络环境比桌面复杂得多:电梯、地铁、地下车库、Wi-Fi 切蜂窝、蜂窝切热点、网络抖动。AI 产品又常常有上传、流式、长请求,所以弱网是移动端必测,不是选测。
| 场景 | 重点看什么 | 容易出现的缺陷 |
|---|---|---|
| 弱网高延迟 | 超时提示、首包等待、按钮状态 | 页面假死、重复点发送 |
| Wi-Fi 切 4G | 流式是否中断、能否恢复 | 页面和请求状态脱节 |
| 上传中断网 | 失败提示、重试、草稿保留 | 上传失败但 UI 停留在成功态 |
| 完全离线 | 是否有明确的离线提示和降级策略 | 用户反复点击无反馈 |
- 文本问答流式返回中断网。
- 图片上传过程中切网络。
- 语音录入结束后提交时网络断开。
一个经验。
移动端弱网测试的价值,往往不在于“最后能不能成功”,而在于“失败时用户知不知道发生了什么、能不能顺手继续下一步”。
07. 机型、系统、性能差异
移动端如果不做机型和性能分层,测试结论会非常乐观。高配测试机上顺滑,不代表中端机、老机型、低电量、低存储环境也顺滑。
| 维度 | 具体检查项 | 为什么重要 |
|---|---|---|
| 机型差异 | 不同品牌、不同分辨率、刘海/挖孔/折叠屏 | 布局、安全区、系统行为都可能不同 |
| 系统版本 | iOS / Android 主流版本和头尾版本 | 权限、文件选择、WebView、通知行为会变 |
| 性能 | 启动耗时、首包等待、长列表滚动、内存占用 | AI 页常常内容长、状态多、资源重 |
| 资源边界 | 低电量、低存储、后台多任务 | 拍照上传、录音、缓存恢复都容易出错 |
| 系统设置 | 深色模式、大字体、语言切换 | 文本排版、按钮文案、布局适配都受影响 |
| 框架 | 适合场景 | 提醒 |
|---|---|---|
| XCUITest / Espresso | 原生 App 的稳定 UI 冒烟和回归 | 通常优先级最高,速度和稳定性更好 |
| Appium | 跨端统一脚本、需要同时覆盖 iOS/Android | 通用性强,但要注意定位稳定性和执行成本 |
| Detox / Flutter 测试 | React Native / Flutter 项目 | 适合与技术栈配套,不是通吃方案 |
| 真机手测 | 权限、录音、拍照、弱网、系统打断 | 很多系统级问题依然需要真机补位 |
08. 图片、语音、多模态入口
现在很多移动端 AI 产品都不只输入文字,还支持拍照识图、相册选图、语音转文字、语音对话、文档上传。这些能力入口多、链路长、系统依赖重,是移动端专项里最容易出真实问题的一块。
| 入口 | 测试重点 | 典型缺陷 |
|---|---|---|
| 拍照上传 | 相机权限、拍照后压缩、方向、上传链路 | 拍完图方向错、预览对但服务端识别失败 |
| 相册选图 | 部分授权、HEIC/JPG/PNG、多图选择 | 某些格式预览正常但上传失败 |
| 语音输入 | 麦克风权限、录音中断、转写时延、降噪 | 录完没有结果、转写错误、按钮状态混乱 |
| 文档上传 | 文件大小、格式限制、解析完成状态 | 上传成功但模型仍提示“没有附件” |
这里一定要学会拆链路。以拍照识图为例,至少会经过:权限、拍照、压缩、预览、上传、解析、绑定会话、模型消费、结果展示。每一段都可能挂。
09. 移动端测试策略
移动端 AI 测试最怕“点得很多,但没有章法”。更建议按风险来组织:先抓主设备、主流程、系统级高风险,再逐步向边缘矩阵扩展。
| 层次 | 目标 | 建议动作 |
|---|---|---|
| 第一层 | 主流程冒烟 | Tier 1 设备上跑文本问答、图片上传、语音入口 |
| 第二层 | 系统级风险 | 权限、切后台、锁屏、弱网、网络切换 |
| 第三层 | 设备和性能 | 中端机、老机型、大字体、深色模式、低存储 |
| 第四层 | 自动化回归 | 原生 UI 冒烟 + 关键真机手测组合 |
测试对象:移动端 AI 聊天与多模态入口
平台:iOS / Android
本轮重点:文本问答、图片上传、语音输入、权限、切后台、弱网恢复
设备策略:Tier 1 2 台,Tier 2 2 台
自动化:主流程使用 XCUITest / Espresso 冒烟,系统级问题以真机手测为主
证据:录屏、系统日志、request_id、设备型号、系统版本移动端发版收口表
| 项 | 是否确认 | 备注 |
|---|---|---|
| 主流程问答正常 | □ | 含停止生成 |
| 相机 / 相册 / 麦克风权限链路正常 | □ | 含拒绝和去设置后返回 |
| 切后台、锁屏、来电打断后状态可恢复 | □ | 保留录屏 |
| 弱网、断网、切网可感知且有合理提示 | □ | 至少 3 类网络场景 |
| Tier 1 设备矩阵通过 | □ | iOS / Android 各覆盖 |
| 图片、语音、多模态入口链路完整 | □ | 不是只看上传成功 |
10. 常见缺陷和回归单
| 缺陷 | 触发方式 | 对用户的影响 |
|---|---|---|
| 发送中切后台,回来后页面一直显示生成中 | 生命周期收口不完整 | 用户不知道结果有没有出来 |
| 麦克风权限被拒后语音按钮无反应 | 权限被拒后没有降级提示 | 用户觉得功能坏了 |
| 相册选图成功但模型读不到 | 上传成功和会话绑定断开 | 产品提示和实际能力不一致 |
| 中端机长对话滚动卡顿 | 长列表渲染与图片资源占用过高 | 体验明显下降 |
| Wi-Fi 切 4G 后流式停止但按钮不恢复 | 网络切换异常未正确处理 | 像页面卡死 |
标题:Android 14 上语音输入过程中切后台后返回,录音状态未结束且无法重新录制
设备:Pixel 7 / Android 14
版本:App 5.8.2
步骤:
1. 进入 AI 聊天页,点击语音输入
2. 录音中按 Home 键切后台 5 秒
3. 返回 App,观察语音输入状态
实际结果:页面仍显示“录音中”,但实际系统录音已中断;再次点击按钮无反应
预期结果:返回前台后明确提示录音已中断,允许重新录制
证据:录屏、logcat、request_id(无)
分析:系统中断和页面状态未做统一收口一句经验。
移动端 AI 测试里,真正能拦事故的,往往不是最花哨的功能,而是权限、切后台、弱网、设备矩阵这些“看起来基础”的地方。
11. 下一步怎么接着学
移动端看完后,建议接着看 H5。因为很多团队的“移动端 AI 功能”并不全是原生页面,而是 App + H5 + WebView + JSBridge 拼起来的。把 H5 看明白,整套端侧测试边界就更完整了。
下一篇
继续看 H5 测试专项,把容器、桥接、登录态、返回行为这些高频坑统一吃透。
复盘建议
拿你们真实 App 的一个多模态入口,按“权限 → 采集 → 上传 → 解析 → 会话绑定 → 展示”六段链路拆一遍,问题会比只看页面更容易暴露。
补充练习与参考答案
补充练习
- 列出 3 个移动端 AI 应用比 Web 端更难测的系统级问题。
- 设计 2 条“切后台后恢复”的测试用例。
- 如果多模态入口依赖相机和麦克风权限,你会重点验证什么?
参考答案要点
- 移动端更难的点通常是权限、生命周期、系统打断、机型差异和弱网环境。
- 切后台恢复至少要看会话是否丢失、流式是否异常续写、上传任务是否状态错乱。
- 权限相关要验证首次授权、拒绝后重试、系统设置更改后回到应用的恢复行为。