Appearance
实战:用户管理系统设计测试用例
1.业务逻辑
用户管理系统分为:用户管理、角色(功能权限、数据权限)模块
用户管理: 存储用户信息,包含:用户昵称、手机号、用户名称、归属部门、邮箱、性别、岗位、备注等信息
用户需绑定角色,角色包含:功能权限、数据权限
功能权限是基于RBAC 权限模型(全称是 Role-Based Access Control 基于角色的访问控制)设计的
简单说就是:每个用户拥有若干角色,每个角色拥有若干个菜单,菜单中存在菜单权限、按钮权限。这样,就形成了 "用户<->角色<->菜单" 的授权模型。
数据权限是用户可以操作指定范围的数据,例:
用户 | 数据范围 |
---|---|
普通员工 | 自己 |
部门领导 | 所属部门的所有员工 |
HR | 整个公司的所有员工 |
系统中角色会绑定实际数据权限,目前内置数据权限有5类
用户 | 数据范围 |
---|---|
全部数据权限 | 无数据权限的限制。 |
指定部门数据权限 | 根据实际需要,设置可操作的部门。 |
本部门数据权限 | 只能操作用户所在的部门。 |
本部门及以下数据权限 | 在【本部门数据权限】的基础上,额外可操作子部门。 |
仅本人数据权限 | 相对特殊,只能操作自己的数据。 |
2.数据表结构
在这种模型中,用户与角色、角色与菜单之间构成了多对多的关系,如下图
3.用例设计思路
确保RBAC权限模型的各个方面都被覆盖,包括用户信息管理、角色及其功能权限和数据权限的创建、编辑、删除。同时,验证权限的分配、继承、冲突解决以及用户对系统功能的实际访问情况,以全面测试系统的用户认证、授权以及数据访问控制功能
4.测试用例
4.1 用户管理测试用例
测试用例编号 | 测试场景 | 输入 | 预期结果 |
---|---|---|---|
1.1 | 创建新用户 | 用户昵称:张三 ,手机号:12345678901 ,用户名称:zhangsan ,归属部门:销售部 ,邮箱:zhangsan@example.com ,性别:男 ,岗位:销售 ,备注:无 | 用户创建成功,用户列表中显示新用户 |
1.2 | 编辑用户信息 | 用户名称:zhangsan 修改为 lisi | 用户信息更新成功,用户列表中显示更新后的用户信息 |
1.3 | 删除用户 | 用户名称:zhangsan | 用户删除成功,用户列表中不再显示该用户 |
1.4 | 用户绑定角色 | 用户名称:zhangsan ,角色:销售代表 | 角色绑定成功,用户角色列表中显示新角色 |
1.5 | 用户解绑角色 | 用户名称:zhangsan ,角色:销售代表 | 角色解绑成功,用户角色列表中不再显示该角色 |
4.2 角色管理测试用例
测试用例编号 | 测试场景 | 输入 | 预期结果 |
---|---|---|---|
2.1 | 创建新角色 | 角色名称:销售经理 | 角色创建成功,角色列表中显示新角色 |
2.2 | 编辑角色信息 | 角色名称:销售经理 修改为 销售主管 | 角色信息更新成功,角色列表中显示更新后的角色名称 |
2.3 | 删除角色 | 角色名称:销售经理 | 角色删除成功,角色列表中不再显示该角色 |
2.4 | 分配功能权限 | 角色名称:销售经理 ,菜单:客户管理 | 菜单权限分配成功,角色菜单列表中显示客户管理 |
2.5 | 撤销功能权限 | 角色名称:销售经理 ,菜单:客户管理 | 菜单权限撤销成功,角色菜单列表中不再显示客户管理 |
2.6 | 分配数据权限 | 角色名称:销售经理 ,数据权限:本部门数据权限 | 数据权限分配成功,角色数据权限列表中显示本部门数据权限 |
2.7 | 撤销数据权限 | 角色名称:销售经理 ,数据权限:本部门数据权限 | 数据权限撤销成功,角色数据权限列表中不再显示本部门数据权限 |
4.3 角色权限继承测试用例
测试用例编号 | 测试场景 | 输入 | 预期结果 |
---|---|---|---|
3.1 | 子角色继承父角色权限 | 父角色:超级管理员,子角色:测试账号 | 子角色继承父角色的所有权限,角色菜单列表中显示所有菜单 |
3.2 | 子角色覆盖父角色权限 | 父角色:超级管理员,子角色:测试账号,菜单:系统管理(撤销) | 子角色覆盖父角色的权限,角色菜单列表中不再显示系统管理 |
4.4 角色权限冲突测试用例
测试用例编号 | 测试场景 | 输入 | 预期结果 |
---|---|---|---|
4.1 | 角色权限冲突 | 角色:测试账号,菜单:系统管理(分配),基础设施(撤销) | 系统提示权限冲突,要求用户确认权限分配 |
4.2 | 解决权限冲突 | 角色:测试账号,菜单:系统管理(分配),基础设施(撤销) | 用户确认权限分配,系统更新角色菜单列表 |
4.5 功能权限测试用例
测试用例编号 | 测试场景 | 输入 | 预期结果 |
---|---|---|---|
5.1 | 用户登录并访问权限内的菜单 | 用户名:zhangsan ,角色:销售代表 ,菜单:客户管理 | 用户可以访问客户管理 菜单 |
5.2 | 用户登录并尝试访问权限外的菜单 | 用户名:zhangsan ,角色:销售代表 ,菜单:财务管理 | 用户无法访问财务管理 菜单,系统提示无权限 |
5.3 | 用户登录并访问多个角色的权限 | 用户名:zhangsan ,角色:销售代表 ,销售经理 ,菜单:客户管理 ,订单管理 | 用户可以访问客户管理 和订单管理 菜单 |
4.6 数据权限测试用例
测试用例编号 | 测试场景 | 输入 | 预期结果 |
---|---|---|---|
4.1 | 普通员工查看数据 | 用户名:zhangsan ,角色:普通员工 | 用户只能查看自己的数据 |
4.2 | 部门领导查看数据 | 用户名:lisi ,角色:部门领导 | 用户可以查看所属部门的所有员工数据 |
4.3 | HR查看数据 | 用户名:wangwu ,角色:HR | 用户可以查看整个公司的所有员工数据 |
4.4 | 指定部门数据权限 | 用户名:zhangsan ,角色:销售代表 ,数据权限:指定部门数据权限 | 用户只能查看指定部门的数据 |
4.5 | 本部门及以下数据权限 | 用户名:lisi ,角色:部门领导 ,数据权限:本部门及以下数据权限 | 用户可以查看本部门及子部门的所有数据 |
4.7 用户登录验证测试用例
测试用例编号 | 测试场景 | 输入 | 预期结果 |
---|---|---|---|
7.1 | 用户成功登录 | 用户名:zhangsan ,密码:correctpassword | 用户成功登录系统 |
7.2 | 用户密码错误登录 | 用户名:zhangsan ,密码:wrongpassword | 系统提示密码错误,拒绝登录 |
7.3 | 用户名不存在登录 | 用户名:unknownuser ,密码:任意 | 系统提示用户名不存在,拒绝登录 |
7.4 | 用户被停用登录 | 用户名:disableduser ,密码:correctpassword | 系统提示用户已被停用,拒绝登录 |
7.5 | 用户首次登录后修改密码 | 用户名:newuser ,密码:initialpassword ,新密码:newpassword | 用户成功登录并修改密码,使用新密码可以再次成功登录 |
7.6 | 用户多次输入错误密码 | 用户名:zhangsan ,密码:连续输入wrongpassword 三次 | 账户被暂时锁定,系统提示账户锁定信息 |
7.7 | 用户登录后会话超时 | 用户名:zhangsan ,密码:correctpassword ,等待超过会话超时时间 | 会话超时,用户需要重新登录 |
5.测试用例说明
- 用户管理:验证用户信息的创建、编辑、删除以及角色绑定和解绑功能是否正常工作。
- 用户登录验证:验证用户登录功能,包括成功登录、密码错误、用户名不存在、账户锁定以及会话超时等场景。
- 数据权限:验证用户是否能根据其角色的数据权限访问指定范围的数据。
- 角色创建和编辑:验证角色的创建、编辑和删除功能是否正常工作。
- 菜单权限分配:验证菜单权限的分配和撤销功能是否正常工作,包括单个和多个菜单权限的分配和撤销。
- 权限验证:验证用户登录后是否可以访问分配的菜单权限,以及是否可以访问未分配的菜单权限。
- 角色权限继承:验证子角色是否可以继承父角色的权限,以及是否可以覆盖父角色的权限。
- 角色权限冲突:验证系统是否可以检测到权限冲突,并提示用户进行确认。