## 第4章 测试用例设计原则
### 适用场景
本章适用于所有需要为 MediaCodec 硬件权限验证编写回归测试用例的场景,包括但不限于:
- 新增或修改系统权限策略后对编解码器进行回归验证;
- 构建自动化测试套件前的用例设计评审阶段;
- 跨团队协作时统一测试用例设计规范。
### 前置条件
- 已获取被测设备/平台的权限策略文档(如 SELinux 策略、APEX 白名单);
- 已掌握 MediaCodec 原生 API 调用方式与权限错误码(如 `PermissionDenied`、`SecurityException`);
- 测试人员已了解等价类划分、边界值分析、异常场景构造及优先级标注四项基本原则。
### 操作步骤
1. **识别输入域与等价类**
分析被测接口的合法输入/状态空间,按功能或权限等级划分等价类。例如 `MediaCodec.createByCodecName()` 的 `name` 参数可划分为“白名单编码器名”、“黑名单编码器名”、“不存在的编码器名”三个等价类。
2. **确定边界值**
找出等价类的边界条件,如:
- 权限开关的开关状态(0/1 边界);
- 编码器名称长度(0 字符、最大字符、超长字符);
- 同时请求编解码实例数的上限(0 个、1 个、上限值、上限+1)。
3. **构造异常场景**
从以下维度补充异常用例:
- 权限被撤销(运行时 `revokePermission`);
- 权限策略文件损坏;
- 进程被降权(如后台进程、前台进程);
- API 调用顺序异常(未配置权限前调用)。
4. **标注优先级标签**
按影响范围与频次给每条用例打标签:
- **P0**:核心权限缺失直接导致编解码失败;
- **P1**:边界值或异常场景导致的非功能问题;
- **P2**:低概率边缘情况或非关键路径。
5. **编制测试用例表**
将上述结果填入标准模板,每行包含:用例编号、等级、输入、预期输出、优先级标签。
### 输入输出物
| 输入物 | 输出物 |
|--------|--------|
| 权限策略文档、MediaCodec API 规范、历史缺陷记录 | 测试用例表(Excel/CSV)、优先级矩阵图 |
| 设备/平台版本清单、SELinux 策略文件 | 等价类划分清单、边界值列表 |
| 代码变更 diff、测试环境配置 | 异常场景列表、用例权重说明 |
### 责任边界
| 角色 | 职责 |
|------|------|
| 测试设计工程师 | 实施等价类划分、边界值分析,撰写用例,标注优先级 |
| 测试负责人(TL) | 审查用例覆盖率与优先级合理性 |
| 开发工程师 | 提供权限策略细节,确认异常场景是否可重现 |
| QA 自动化工程师 | 将已标注优先级的用例转换为自动化脚本 |
### 记录材料(检查表模板)
**测试用例设计检查表**
| 检查项 | 通过标准 | 结果 |
|--------|----------|------|
| 等价类覆盖 | 每个输入域至少覆盖一个正常类、一个异常类 | □通过 □失败 |
| 边界值选取 | 包含最小值、最大值、0、空、超长值 | □通过 □失败 |
| 异常场景构造 | 包含至少 3 个权限撤销/降权/策略损坏场景 | □通过 □失败 |
| 优先级标签 | 所有用例均有 P0/P1/P2 标签,且 P0 占比 ≤ 30% | □通过 □失败 |
| 用例格式 | 含编号、等级、输入、预期、优先级标签 | □通过 □失败 |
### 异常处理说明
- **发现等价类遗漏**:补充用例,并在评审会上更新划分依据文档,流程回溯至步骤 1。
- **边界值超出预期范围**:确认是否属于设备或版本差异,若为 bug 则提交缺陷,测试用例保留为异常场景。
- **优先级争议**:由测试负责人与开发、PM 三方会议裁决,原则:影响用户直接体验的权限失败必须为 P0。
- **自动化转化异常**:若某用例无法自动化(如需要物理篡改策略文件),保留为手工用例并注明原因,标记为 `ManualOnly`。
### 验收标准
1. 等价类划分表完整覆盖策略文档中列出的所有权限组与接口。
2. 每条边界值用例都附带等价类编号引用。
3. 异常场景总数 ≥ 5,且至少涵盖撤销、降权、策略损坏三类。
4. 用例优先级标签不存在冲突或缺失,P0 用例必须在回归套件中优先执行。
5. 检查表所有项通过率 ≥ 90%,未通过项均附有整改计划。
**最佳实践**:将等价类划分结果保存为可视化的“输入空间映射图”,后续维护或新人上手时可快速理解设计脉络。