4. 测试用例设计原则:正向用例、反向用例、边界用例、权限组合用例
4.1 适用场景
本原则适用于所有B2B权限验收项目中的测试用例设计阶段。当权限矩阵、功能清单、角色‑资源映射关系确定后,必须按照这一原则系统地构造测试用例,确保验收覆盖完整、无遗漏。任何一次权限验收(包括新增、变更、回归)都应遵循该原则,以规避因用例遗漏导致的生产事故。
4.2 前置条件
- 已完成的权限矩阵文档(
权限矩阵_v1.xlsx) - 功能清单与 API 接口列表
- 测试环境已部署,且拥有管理员级账号用于构造测试数据
- 需求文档中明确标注了“允许/禁止/受限”等权限关键字
- 测试团队已确认边界值(如角色数量上限、资源嵌套深度、时间窗口等)
4.3 操作步骤
- 提取权限矩阵:将矩阵中的“角色×资源×操作”三元组整理成结构化清单。
- 设计正向用例:对每一个三元组,构造期望成功的场景,例如:
角色: 管理员 → 资源: 订单模块 → 操作: 批量导出 → 预期结果: 成功导出CSV - 设计反向用例:对每一个三元组,构造期望被拒绝的场景,例如:
角色: 访客 → 资源: 订单模块 → 操作: 批量导出 → 预期结果: 403 Forbidden - 设计边界用例:针对数值、层级、数量、时间等边界条件测试系统极限,例如:
上限: 角色同时拥有1000个资源权限;下限: 角色有0个资源权限 - 设计权限组合用例:当两个以上权限同时在一个角色/用户上生效时,测试叠加、互斥、继承逻辑,例如:
角色A拥有“只读”权限,角色B拥有“编辑”权限,用户同时加入两个角色 → 预期: 编辑权限生效(或按配置以最高/最低为准) - 汇总与评审:将所有设计好的用例填入统一模板,由测试负责人、安全负责人、开发负责人三方签署。
4.4 输入输出物
| 输入物 | 输出物 |
|---|---|
| 权限矩阵(Excel 或 YAML) | 测试用例文档(TC_权限验收_xxx.xlsx) |
| 功能清单与API列表 | 标注了“正向/反向/边界/组合”的用例标签 |
| 需求规格中的权限边界描述 | 边界值记录表 |
4.5 责任边界
- 测试工程师:负责正向、反向、边界用例的设计,并在自动化脚本中实现。
- 安全专家:审核权限组合用例的逻辑正确性,确保无越权风险。
- 开发工程师:提供边界值参考(如数据库字段长度、接口并发限制),并确认组合权限的预期行为。
- 测试经理:把关用例覆盖率 ≥98%(正向+反向覆盖所有三元组,边界覆盖每个维度的极值)。
4.6 记录材料
测试用例模板示例(每字段不可为空)
| 用例ID | 类型 | 角色 | 资源 | 操作 | 输入条件 | 预期结果 |
|--------|-------------|----------|---------------|----------------|------------------------|-------------------|
| TC001 | 正向 | 超级管理员 | 用户管理 | 创建用户 | 合法参数 | 200 + 创建成功 |
| TC002 | 反向 | 游客 | 用户管理 | 创建用户 | 合法参数 | 403 |
| TC003 | 边界 | 管理员 | 组织架构 | 批量导入 | 导入CSV含50000条记录 | 导入成功(上限) |
| TC004 | 权限组合 | 编辑+只读 | 文档库 | 修改文档 | 用户同时拥有两个角色 | 按“编辑”权限执行 |
4.7 异常处理
- 需求模糊导致设计分歧:统一由产品经理出具书面确认,并在用例中增加“待定标记”;待补全后删除标记方可执行。
- 边界值未定义:采用“类‑等价类划分法”自行推导,例如每页最大显示数通常为100,上下浮动50%作为边界;
同时报告给架构师确认。 - 组合用例预期结果矛盾:组织三方(开发、测试、安全)环境上进行盲测演示,以实际系统行为为准,若与需求不符则提交缺陷。
- 自动化脚本无法覆盖的复杂组合:标记为人工复核,在测试执行阶段手动验证,并保留视频截图作为证据。
4.8 验收标准
| 维度 | 标准 |
|---|---|
| 正向用例覆盖率 | 权限矩阵中所有“允许”三元组 100% 覆盖 |
| 反向用例覆盖率 | 所有“拒绝”三元组 100% 覆盖 |
| 边界用例覆盖率 | 每个权限维度的最小值、最大值、临界值至少一个用例 |
| 权限组合用例覆盖率 | 产品中已定义的组合场景 100% 覆盖;新增组合场景根据风险评估补充 |
| 用例可追溯性 | 每个用例可回溯到权限矩阵单元格或需求条目(ID 对应) |
实战提示:优先使用自动化手段设计并执行正向和反向用例;边界与组合用例推荐人工+自动化混合,因为边界条件的逻辑偏差容易遗漏,而组合用例的预期结果常需业务专家确认。建议每个组合场景至少包含一个“逆向组合”(即预期拒绝的组合),以检验系统的互斥逻辑。