# 权限测试方法（permission）

> 权限系统 / 多角色功能的用例设计方法（何时选它见 `../testing-principles.md` 第 2 节）。

## 1. Role × Action × Resource 矩阵

列出全部角色 × 全部操作 × 关键资源，逐格核对：

```text
角色：管理员 / 运营 / 普通用户 / 游客（未登录）
操作：查看 / 创建 / 编辑 / 删除 / 导出 / 审批
资源：自己的数据 / 他人数据 / 全局配置

逐格三态：允许（配正向用例）/ 拒绝（配拦截用例）/ 未定义（列入澄清问题）
```

- 权限依据来自文档的角色定义或代码的鉴权逻辑（`文件:行` 落附录），矩阵中每格的判定要有出处
- 矩阵先在澄清阶段与用户核对，未定义格不得自行假设

## 2. 两类越权必测

- **垂直越权**：低权限角色调用高权限接口/入口（普通用户直接调管理员接口）→ 拒绝
- **水平越权**：同权限角色访问他人资源（用户 A 查看/编辑用户 B 的数据，改 URL 中的 id）→ 拒绝且无数据泄漏

前端隐藏不等于后端拦截：**绕过 UI 直接调 API** 的越权用例必须配（协作用例或 API 用例）。

## 3. 权限变更即时性

- 角色提升/降级后，旧权限是否立即失效（已登录会话、已打开页面、缓存的菜单）
- 权限回收后，进行中的操作（草稿、锁定的资源）如何处置

## 4. 无权限的表现

- 未授权操作的提示文案与引导（登录引导 / 申请权限引导）
- 部分授权（有查看无编辑）时界面元素的隐藏/置灰/点击提示，三态逐一验证

## 5. 用例组织

权限作为**独立模块**（横切关注点），不分散在各功能模块里；矩阵的每一行（角色）至少一条正向 + 一条拦截用例。
