2. CameraX 权限场景分析:前置相机权限、后置相机权限、麦克风权限、存储权限场景划分
适用场景
- 回归测试中需要确认 CameraX 库在不同权限组合下是否按预期请求、拒绝或重新授权。
- 当应用仅使用前置摄像头(如自拍)却意外请求后置权限,或同时需要麦克风/存储权限进行录像/保存时,必须明确划分测试场景。
- 权限策略调整(如 Android 13 细粒度媒体权限、Android 12 前置通知权限)后的回归验证。
前置条件
- 已基于 CameraX 集成完成权限声明(AndroidManifest.xml 中已包含所需的权限组)。
- 测试设备系统版本覆盖 Android 10 至 Android 14,并包含不同厂商定制 ROM。
- 准备测试用例管理平台(如 TestRail、Xray),用于记录权限请求链路。
操作步骤
- 列出 CameraX 典型功能所依赖的权限清单:
- 前置相机:android.permission.CAMERA
- 后置相机:android.permission.CAMERA
- 麦克风:android.permission.RECORD_AUDIO
- 存储:android.permission.READ_EXTERNAL_STORAGE / WRITE_EXTERNAL_STORAGE(Android 10 以上为媒体权限)
- 根据业务功能组合,划分 4 个独立场景与 6 个交叉场景(共 10 个权限请求组合)。
- 为每个场景编写前置条件(如已授权状态、未授权状态、被拒绝状态)。
- 设计回归用例模板,包含:场景 ID、权限组合、预期弹窗类型(系统弹窗 / 自定义弹窗)、授权后功能验证步骤。
- 执行回归测试时,按照“单权限拒绝 → 多权限拒绝 → 再次请求”的路径验证。
输入输出物
| 输入物 | 输出物 |
|---|---|
| CameraX 集成后的 APK | 权限请求日志(Logcat 过滤 “PermissionsRequester”) |
| AndroidManifest.xml 权限声明列表 | 场景划分用例矩阵(Excel 或 Markdown 表) |
| 设备型号 / 系统版本清单 | 回归测试报告(通过/失败/阻塞数量) |
责任边界
- 测试人员:负责场景划分、用例编写、执行回归并记录异常。
- 开发人员:提供 CameraX 权限请求回调接口说明,修复回归中发现的问题。
- 产品经理:确认权限弹窗文案与用户体验规范。
记录材料
- 权限场景划分矩阵(含是否需同时弹窗、弹窗优先级)。
- 每个场景的回归测试检查单(Checklist)。
- 各设备厂商权限特殊行为记录表(如小米 MIUI 常弹窗两次、华为 EMUI 静默拒绝)。
异常处理
- 权限被永久拒绝(“不再询问”勾选):测试应覆盖跳转设置页面的 UI 流程,并验证返回后 CameraX 是否正常降级或显示提示。
- 权限请求时序冲突:例如相机与麦克风同时请求时,某些设备会阻塞第二个弹窗。回归用例必须包含“等待第一个请求回调后再触发第二个”与“同时触发”两个子场景。
- 系统权限管理器崩溃:测试需检查 CameraX 是否能在 RuntimeException 下优雅降级,不导致 ANR。
验收标准
- 所有划分的权限场景均可在目标设备上复现,且 CameraX 的 @RequiresPermission 注解与实际请求行为一致。
- 同一权限组合下,不同系统版本(如 Android 11 与 Android 13)的弹窗样式及回调时机差异已记录在测试矩阵中。
- 回归用例通过率 ≥ 95%,剩余阻塞项需附带明确原因(如厂商 BUG、系统限制)。
提示:场景划分后,建议为每个场景创建 Jira 子任务并关联回归用例,便于追踪各权限请求链路的测试覆盖率。