
1) 【一句话结论】通过角色-权限矩阵法设计测试用例,覆盖静态与动态权限、继承路径及隔离场景,验证不同角色对课程内容、成绩、用户信息的操作权限控制有效性。
2) 【原理/概念讲解】权限控制的核心是“角色-权限”模型:角色(学生、教师、管理员)对应用户身份,权限(如ViewCourse、UpdateScore等)是操作许可。继承是指子角色继承父角色的权限(如管理员继承教师权限),隔离是不同角色权限互不重叠。类比:角色是“身份卡”,权限是卡上的“功能标签”,继承是子卡继承父卡标签,隔离是不同卡标签不交叉。
3) 【对比与适用场景】
| 测试方法 | 定义 | 特性 | 使用场景 | 注意点 |
|---|---|---|---|---|
| 角色权限矩阵法 | 基于角色-权限矩阵,遍历每个单元格设计测试用例 | 系统性、全覆盖,确保100%覆盖矩阵单元格 | 静态权限与继承/隔离验证 | 需明确所有角色与权限定义 |
| 等价类划分 | 将角色/权限分为等价类,取代表值测试 | 简单高效,覆盖典型情况 | 测试基本权限(如学生查看成绩) | 合理划分等价类,避免遗漏边界 |
| 场景法(路径测试) | 按业务流程设计测试路径,覆盖角色操作序列 | 覆盖复杂业务流程,验证继承与隔离 | 测试权限继承(如管理员修改教师信息) | 需设计完整业务流程,可能复杂 |
| 边界值分析 | 测试权限边界情况(如最小/最大权限) | 检查权限极限行为 | 测试动态权限(临时授权)的边界 | 需明确权限边界定义 |
4) 【示例】
假设系统角色:学生(S)、教师(T)、管理员(A);权限:课程内容(C)、成绩(Sc)、用户信息(U)。角色-权限矩阵如下:
| 角色 | ViewCourse | UpdateScore | ViewUser | UpdateUser | DeleteUser |
|---|---|---|---|---|---|
| 学生 | ✔(自己课程) | ✖ | ✔(自己信息) | ✖ | ✖ |
| 教师 | ✔(自己课程) | ✔(自己课程成绩) | ✔(自己信息) | ✖ | ✖ |
| 管理员 | ✔(所有课程) | ✔(所有成绩) | ✔(所有用户) | ✔(所有用户) | ✔(所有用户) |
测试用例设计:
伪代码示例(动态权限部分):
POST /permissions?role=Teacher&permission=ViewUser&target=Student&temp=true → 预期200 OK。GET /users/student1 → 预期200 OK。DELETE /permissions?role=Teacher&permission=ViewUser&target=Student → 预期200 OK。GET /users/student1 → 预期403 Forbidden。5) 【面试口播版答案】
好的,面试官。针对好未来系统中不同角色的权限控制,我会用角色-权限矩阵法设计测试用例,覆盖静态与动态权限、继承路径及隔离场景。核心是确保每个角色对课程内容、成绩、用户信息的操作权限符合预期。比如,学生只能查看自己的成绩,不能修改他人成绩或查看教师信息;教师可以修改自己课程的成绩,但不能删除学生信息;管理员可以管理所有用户信息。具体来说,我会先构建角色-权限矩阵,确保100%覆盖单元格,然后针对每个单元格设计测试用例。同时,验证管理员是否继承了教师的课程查看权限,以及不同角色之间是否隔离(如学生无法查看教师信息)。对于动态权限,我会模拟管理员临时授予教师查看学生信息的权限,验证权限的临时生效与撤销逻辑。这样能全面验证权限控制的有效性。
6) 【追问清单】
7) 【常见坑/雷区】