# 会员管理模块 - 测试用例 --- | 文档信息 | 内容 | |---------|------| | **文档版本** | V1.0 | | **模块名称** | 会员管理模块 - 测试用例 | | **编写团队** | pangu | | **创建日期** | 2026-01-31 | --- ## 1. 测试范围 ### 1.1 测试模块 - 会员列表查询 - 会员新增 - 会员编辑 - 会员删除 - 重置密码 - 状态切换 - 学生绑定/解绑 - 数据权限 ### 1.2 测试类型 | 测试类型 | 说明 | |---------|------| | 功能测试 | 验证功能是否符合需求 | | 接口测试 | 验证API接口正确性 | | 边界测试 | 验证边界条件处理 | | 异常测试 | 验证异常情况处理 | | 权限测试 | 验证权限控制 | | 性能测试 | 验证性能指标 | --- ## 2. 功能测试用例 ### 2.1 会员列表查询 #### TC-MEM-001 正常查询会员列表 | 项目 | 内容 | |-----|------| | **用例编号** | TC-MEM-001 | | **用例名称** | 正常查询会员列表 | | **优先级** | P0 | | **前置条件** | 1. 用户已登录后台
2. 用户具有 user:member:list 权限
3. 数据库中存在会员数据 | | **测试步骤** | 1. 进入会员管理页面
2. 不输入任何搜索条件
3. 点击搜索按钮 | | **预期结果** | 1. 页面正常加载
2. 表格显示会员列表
3. 分页信息正确显示 | | **实际结果** | | | **测试状态** | 待测试 | #### TC-MEM-002 按手机号查询 | 项目 | 内容 | |-----|------| | **用例编号** | TC-MEM-002 | | **用例名称** | 按手机号查询会员 | | **优先级** | P0 | | **前置条件** | 1. 用户已登录后台
2. 数据库中存在手机号为 13812345678 的会员 | | **测试步骤** | 1. 在手机号输入框输入"138"
2. 点击搜索按钮 | | **预期结果** | 1. 列表显示手机号包含"138"的会员
2. 手机号以脱敏形式显示(138****5678) | | **实际结果** | | | **测试状态** | 待测试 | #### TC-MEM-003 按身份类型查询 | 项目 | 内容 | |-----|------| | **用例编号** | TC-MEM-003 | | **用例名称** | 按身份类型查询会员 | | **优先级** | P0 | | **前置条件** | 1. 用户已登录后台
2. 数据库中存在家长和教师类型的会员 | | **测试步骤** | 1. 在身份类型下拉框选择"教师"
2. 点击搜索按钮 | | **预期结果** | 1. 列表只显示身份类型为"教师"的会员
2. 身份类型列显示"教师"标签 | | **实际结果** | | | **测试状态** | 待测试 | #### TC-MEM-004 按注册时间范围查询 | 项目 | 内容 | |-----|------| | **用例编号** | TC-MEM-004 | | **用例名称** | 按注册时间范围查询 | | **优先级** | P1 | | **前置条件** | 1. 用户已登录后台
2. 数据库中存在不同注册时间的会员 | | **测试步骤** | 1. 选择注册时间范围为"2026-01-01"至"2026-01-31"
2. 点击搜索按钮 | | **预期结果** | 列表只显示注册时间在2026年1月份的会员 | | **实际结果** | | | **测试状态** | 待测试 | #### TC-MEM-005 组合条件查询 | 项目 | 内容 | |-----|------| | **用例编号** | TC-MEM-005 | | **用例名称** | 组合条件查询 | | **优先级** | P1 | | **前置条件** | 用户已登录后台 | | **测试步骤** | 1. 输入手机号"138"
2. 选择身份类型"教师"
3. 选择状态"正常"
4. 点击搜索 | | **预期结果** | 列表显示同时满足所有条件的会员 | | **实际结果** | | | **测试状态** | 待测试 | #### TC-MEM-006 重置搜索条件 | 项目 | 内容 | |-----|------| | **用例编号** | TC-MEM-006 | | **用例名称** | 重置搜索条件 | | **优先级** | P1 | | **前置条件** | 用户已输入搜索条件 | | **测试步骤** | 1. 输入各种搜索条件
2. 点击重置按钮 | | **预期结果** | 1. 所有搜索条件清空
2. 列表显示全部数据(分页) | | **实际结果** | | | **测试状态** | 待测试 | --- ### 2.2 会员新增 #### TC-MEM-010 新增家长会员-必填项 | 项目 | 内容 | |-----|------| | **用例编号** | TC-MEM-010 | | **用例名称** | 新增家长会员-仅填必填项 | | **优先级** | P0 | | **前置条件** | 1. 用户已登录后台
2. 用户具有 user:member:add 权限 | | **测试步骤** | 1. 点击新增按钮
2. 输入手机号"13912345678"
3. 选择身份类型"家长"
4. 点击保存 | | **预期结果** | 1. 提示"新增成功"
2. 返回列表页
3. 列表中显示新增的会员
4. 会员编号自动生成(JS+时间戳)
5. 昵称自动生成 | | **实际结果** | | | **测试状态** | 待测试 | #### TC-MEM-011 新增家长会员-全部字段 | 项目 | 内容 | |-----|------| | **用例编号** | TC-MEM-011 | | **用例名称** | 新增家长会员-填写全部字段 | | **优先级** | P0 | | **前置条件** | 用户已登录后台 | | **测试步骤** | 1. 点击新增按钮
2. 输入手机号"13922345678"
3. 输入昵称"张三家长"
4. 选择性别"男"
5. 选择出生日期
6. 选择身份类型"家长"
7. 点击保存 | | **预期结果** | 1. 提示"新增成功"
2. 所有字段正确保存 | | **实际结果** | | | **测试状态** | 待测试 | #### TC-MEM-012 新增教师会员-完整信息 | 项目 | 内容 | |-----|------| | **用例编号** | TC-MEM-012 | | **用例名称** | 新增教师会员 | | **优先级** | P0 | | **前置条件** | 1. 用户已登录后台
2. 系统中存在学校数据 | | **测试步骤** | 1. 点击新增按钮
2. 输入手机号"13932345678"
3. 输入昵称"李老师"
4. 选择身份类型"教师"
5. 选择所属区域
6. 选择所属学校
7. 选择所属年级
8. 选择所属班级
9. 点击保存 | | **预期结果** | 1. 提示"新增成功"
2. 教师信息正确保存 | | **实际结果** | | | **测试状态** | 待测试 | #### TC-MEM-013 新增教师-缺少学校信息 | 项目 | 内容 | |-----|------| | **用例编号** | TC-MEM-013 | | **用例名称** | 新增教师会员-缺少学校信息 | | **优先级** | P0 | | **前置条件** | 用户已登录后台 | | **测试步骤** | 1. 点击新增按钮
2. 输入手机号
3. 选择身份类型"教师"
4. 不选择学校信息
5. 点击保存 | | **预期结果** | 提示"请选择所属区域/学校/年级/班级" | | **实际结果** | | | **测试状态** | 待测试 | #### TC-MEM-014 手机号格式校验 | 项目 | 内容 | |-----|------| | **用例编号** | TC-MEM-014 | | **用例名称** | 手机号格式校验 | | **优先级** | P0 | | **前置条件** | 用户已登录后台 | | **测试数据** | 错误手机号:12345678901、1381234567、138123456789、abcdefghijk | | **测试步骤** | 1. 输入错误格式的手机号
2. 触发校验 | | **预期结果** | 提示"请输入正确的手机号" | | **实际结果** | | | **测试状态** | 待测试 | #### TC-MEM-015 手机号唯一性校验 | 项目 | 内容 | |-----|------| | **用例编号** | TC-MEM-015 | | **用例名称** | 手机号唯一性校验 | | **优先级** | P0 | | **前置条件** | 数据库中已存在手机号为 13812345678 的会员 | | **测试步骤** | 1. 点击新增
2. 输入已存在的手机号"13812345678"
3. 点击保存 | | **预期结果** | 提示"手机号已存在" | | **实际结果** | | | **测试状态** | 待测试 | #### TC-MEM-016 新增时绑定学生 | 项目 | 内容 | |-----|------| | **用例编号** | TC-MEM-016 | | **用例名称** | 新增会员时绑定学生 | | **优先级** | P1 | | **前置条件** | 系统中存在未绑定的学生 | | **测试步骤** | 1. 新增家长会员
2. 点击绑定学生
3. 选择学生
4. 确认绑定
5. 保存会员 | | **预期结果** | 1. 会员创建成功
2. 学生绑定成功 | | **实际结果** | | | **测试状态** | 待测试 | --- ### 2.3 会员编辑 #### TC-MEM-020 编辑基本信息 | 项目 | 内容 | |-----|------| | **用例编号** | TC-MEM-020 | | **用例名称** | 编辑会员基本信息 | | **优先级** | P0 | | **前置条件** | 数据库中存在会员数据 | | **测试步骤** | 1. 在列表中点击编辑
2. 修改昵称、性别、出生日期
3. 点击保存 | | **预期结果** | 1. 提示"修改成功"
2. 信息正确更新 | | **实际结果** | | | **测试状态** | 待测试 | #### TC-MEM-021 编辑-修改手机号 | 项目 | 内容 | |-----|------| | **用例编号** | TC-MEM-021 | | **用例名称** | 修改会员手机号 | | **优先级** | P0 | | **前置条件** | 数据库中存在会员数据 | | **测试步骤** | 1. 点击编辑
2. 修改手机号为新的有效手机号
3. 点击保存 | | **预期结果** | 1. 手机号更新成功
2. 唯一性校验通过 | | **实际结果** | | | **测试状态** | 待测试 | #### TC-MEM-022 编辑-修改为已存在手机号 | 项目 | 内容 | |-----|------| | **用例编号** | TC-MEM-022 | | **用例名称** | 修改为已存在的手机号 | | **优先级** | P0 | | **前置条件** | 存在两个会员,手机号分别为A和B | | **测试步骤** | 1. 编辑会员A
2. 将手机号改为会员B的手机号
3. 点击保存 | | **预期结果** | 提示"手机号已存在" | | **实际结果** | | | **测试状态** | 待测试 | #### TC-MEM-023 身份类型切换-家长改教师 | 项目 | 内容 | |-----|------| | **用例编号** | TC-MEM-023 | | **用例名称** | 身份类型切换-家长改教师 | | **优先级** | P0 | | **前置条件** | 存在身份类型为家长的会员 | | **测试步骤** | 1. 编辑家长会员
2. 将身份类型改为"教师"
3. 观察表单变化
4. 填写学校信息
5. 保存 | | **预期结果** | 1. 切换后显示教师信息区域
2. 要求填写学校相关信息
3. 保存成功 | | **实际结果** | | | **测试状态** | 待测试 | #### TC-MEM-024 身份类型切换-教师改家长 | 项目 | 内容 | |-----|------| | **用例编号** | TC-MEM-024 | | **用例名称** | 身份类型切换-教师改家长 | | **优先级** | P0 | | **前置条件** | 存在身份类型为教师的会员 | | **测试步骤** | 1. 编辑教师会员
2. 将身份类型改为"家长"
3. 观察表单变化
4. 保存 | | **预期结果** | 1. 切换后隐藏教师信息区域
2. 学校信息被清空
3. 保存成功 | | **实际结果** | | | **测试状态** | 待测试 | --- ### 2.4 会员删除 #### TC-MEM-030 删除无绑定会员 | 项目 | 内容 | |-----|------| | **用例编号** | TC-MEM-030 | | **用例名称** | 删除无绑定学生的会员 | | **优先级** | P0 | | **前置条件** | 存在未绑定学生的会员 | | **测试步骤** | 1. 在列表中点击删除
2. 确认删除 | | **预期结果** | 1. 提示"删除成功"
2. 会员从列表消失(软删除) | | **实际结果** | | | **测试状态** | 待测试 | #### TC-MEM-031 删除有绑定会员 | 项目 | 内容 | |-----|------| | **用例编号** | TC-MEM-031 | | **用例名称** | 删除已绑定学生的会员 | | **优先级** | P0 | | **前置条件** | 存在已绑定学生的会员 | | **测试步骤** | 1. 在列表中点击删除
2. 确认删除 | | **预期结果** | 提示"该会员已绑定学生,请先解绑学生后再删除" | | **实际结果** | | | **测试状态** | 待测试 | #### TC-MEM-032 删除确认取消 | 项目 | 内容 | |-----|------| | **用例编号** | TC-MEM-032 | | **用例名称** | 删除确认取消 | | **优先级** | P1 | | **前置条件** | 存在会员数据 | | **测试步骤** | 1. 点击删除
2. 在确认弹窗点击取消 | | **预期结果** | 会员未被删除 | | **实际结果** | | | **测试状态** | 待测试 | --- ### 2.5 重置密码 #### TC-MEM-040 重置密码成功 | 项目 | 内容 | |-----|------| | **用例编号** | TC-MEM-040 | | **用例名称** | 重置密码成功 | | **优先级** | P0 | | **前置条件** | 存在会员数据 | | **测试步骤** | 1. 在列表中点击重置密码
2. 确认操作 | | **预期结果** | 1. 弹窗显示新密码
2. 新密码为8位随机字符 | | **实际结果** | | | **测试状态** | 待测试 | #### TC-MEM-041 复制新密码 | 项目 | 内容 | |-----|------| | **用例编号** | TC-MEM-041 | | **用例名称** | 复制新密码 | | **优先级** | P0 | | **前置条件** | 已重置密码,弹窗显示中 | | **测试步骤** | 1. 点击复制按钮 | | **预期结果** | 1. 提示"复制成功"
2. 密码已复制到剪贴板 | | **实际结果** | | | **测试状态** | 待测试 | #### TC-MEM-042 新密码可登录 | 项目 | 内容 | |-----|------| | **用例编号** | TC-MEM-042 | | **用例名称** | 使用新密码登录 | | **优先级** | P0 | | **前置条件** | 已重置密码并记录新密码 | | **测试步骤** | 1. 使用会员手机号和新密码登录移动端 | | **预期结果** | 登录成功 | | **实际结果** | | | **测试状态** | 待测试 | --- ### 2.6 状态切换 #### TC-MEM-050 禁用会员 | 项目 | 内容 | |-----|------| | **用例编号** | TC-MEM-050 | | **用例名称** | 禁用会员 | | **优先级** | P0 | | **前置条件** | 存在状态为"正常"的会员 | | **测试步骤** | 1. 点击状态开关,关闭
2. 确认操作 | | **预期结果** | 1. 状态变为"停用"
2. 提示操作成功 | | **实际结果** | | | **测试状态** | 待测试 | #### TC-MEM-051 启用会员 | 项目 | 内容 | |-----|------| | **用例编号** | TC-MEM-051 | | **用例名称** | 启用会员 | | **优先级** | P0 | | **前置条件** | 存在状态为"停用"的会员 | | **测试步骤** | 1. 点击状态开关,开启
2. 确认操作 | | **预期结果** | 1. 状态变为"正常"
2. 提示操作成功 | | **实际结果** | | | **测试状态** | 待测试 | #### TC-MEM-052 禁用会员无法登录 | 项目 | 内容 | |-----|------| | **用例编号** | TC-MEM-052 | | **用例名称** | 禁用会员无法登录 | | **优先级** | P0 | | **前置条件** | 会员已被禁用 | | **测试步骤** | 1. 使用被禁用会员的手机号和密码登录 | | **预期结果** | 提示"账号已被禁用" | | **实际结果** | | | **测试状态** | 待测试 | --- ### 2.7 学生绑定 #### TC-MEM-060 家长绑定学生 | 项目 | 内容 | |-----|------| | **用例编号** | TC-MEM-060 | | **用例名称** | 家长绑定任意学生 | | **优先级** | P0 | | **前置条件** | 1. 存在家长会员
2. 存在未绑定的学生 | | **测试步骤** | 1. 编辑家长会员
2. 点击绑定学生
3. 选择任意学生
4. 确认绑定 | | **预期结果** | 1. 学生列表显示在会员下
2. 绑定成功 | | **实际结果** | | | **测试状态** | 待测试 | #### TC-MEM-061 教师绑定本校学生 | 项目 | 内容 | |-----|------| | **用例编号** | TC-MEM-061 | | **用例名称** | 教师绑定本校学生 | | **优先级** | P0 | | **前置条件** | 1. 存在教师会员(属于学校A)
2. 存在学校A的学生 | | **测试步骤** | 1. 编辑教师会员
2. 点击绑定学生
3. 选择本校学生
4. 确认绑定 | | **预期结果** | 绑定成功 | | **实际结果** | | | **测试状态** | 待测试 | #### TC-MEM-062 教师绑定非本校学生 | 项目 | 内容 | |-----|------| | **用例编号** | TC-MEM-062 | | **用例名称** | 教师绑定非本校学生(失败) | | **优先级** | P0 | | **前置条件** | 1. 存在教师会员(属于学校A)
2. 存在学校B的学生 | | **测试步骤** | 1. 编辑教师会员
2. 尝试绑定学校B的学生 | | **预期结果** | 1. 学生选择弹窗只显示本校学生
2. 或提示"教师只能绑定本校学生" | | **实际结果** | | | **测试状态** | 待测试 | #### TC-MEM-063 解绑学生 | 项目 | 内容 | |-----|------| | **用例编号** | TC-MEM-063 | | **用例名称** | 解绑学生 | | **优先级** | P0 | | **前置条件** | 存在已绑定学生的会员 | | **测试步骤** | 1. 编辑会员
2. 点击学生列表中的解绑按钮
3. 确认解绑 | | **预期结果** | 1. 学生从列表中移除
2. 解绑成功 | | **实际结果** | | | **测试状态** | 待测试 | #### TC-MEM-064 绑定多个学生 | 项目 | 内容 | |-----|------| | **用例编号** | TC-MEM-064 | | **用例名称** | 绑定多个学生 | | **优先级** | P1 | | **前置条件** | 存在家长会员和多个学生 | | **测试步骤** | 1. 编辑家长会员
2. 多次绑定不同学生 | | **预期结果** | 可以绑定多个学生 | | **实际结果** | | | **测试状态** | 待测试 | --- ### 2.8 数据权限测试 #### TC-MEM-070 超级管理员查看全部 | 项目 | 内容 | |-----|------| | **用例编号** | TC-MEM-070 | | **用例名称** | 超级管理员查看全部会员 | | **优先级** | P0 | | **前置条件** | 使用超级管理员账号登录 | | **测试步骤** | 进入会员管理页面查看列表 | | **预期结果** | 显示所有会员数据 | | **实际结果** | | | **测试状态** | 待测试 | #### TC-MEM-071 分公司用户查看区域会员 | 项目 | 内容 | |-----|------| | **用例编号** | TC-MEM-071 | | **用例名称** | 分公司用户查看所属区域会员 | | **优先级** | P0 | | **前置条件** | 使用分公司用户账号登录(如武汉分公司) | | **测试步骤** | 进入会员管理页面查看列表 | | **预期结果** | 只显示武汉区域的会员 | | **实际结果** | | | **测试状态** | 待测试 | #### TC-MEM-072 学校用户查看本校教师 | 项目 | 内容 | |-----|------| | **用例编号** | TC-MEM-072 | | **用例名称** | 学校用户查看本校教师 | | **优先级** | P0 | | **前置条件** | 使用学校用户账号登录(如武汉一中) | | **测试步骤** | 进入会员管理页面查看列表 | | **预期结果** | 只显示武汉一中的教师会员 | | **实际结果** | | | **测试状态** | 待测试 | --- ## 3. 接口测试用例 ### 3.1 查询会员列表接口 | 用例编号 | 接口 | 请求参数 | 预期响应 | |---------|------|---------|---------| | API-001 | GET /member/list | pageNum=1&pageSize=10 | code=200, 返回列表数据 | | API-002 | GET /member/list | phone=138 | 返回手机号包含138的会员 | | API-003 | GET /member/list | identityType=2 | 返回教师会员 | | API-004 | GET /member/list | status=1 | 返回停用会员 | ### 3.2 新增会员接口 | 用例编号 | 接口 | 请求参数 | 预期响应 | |---------|------|---------|---------| | API-010 | POST /member | {phone:"13912345678", identityType:"1"} | code=200 | | API-011 | POST /member | {phone:"", identityType:"1"} | code=400, msg="手机号不能为空" | | API-012 | POST /member | {phone:"123", identityType:"1"} | code=400, msg="手机号格式不正确" | | API-013 | POST /member | {phone:"13812345678", identityType:"2"} | code=400, msg="请选择所属区域" | ### 3.3 重置密码接口 | 用例编号 | 接口 | 请求参数 | 预期响应 | |---------|------|---------|---------| | API-020 | PUT /member/resetPwd/1 | - | code=200, password存在 | | API-021 | PUT /member/resetPwd/999999 | - | code=500, msg="会员不存在" | ### 3.4 删除会员接口 | 用例编号 | 接口 | 请求参数 | 预期响应 | |---------|------|---------|---------| | API-030 | DELETE /member/1 | - | code=200(无绑定学生时) | | API-031 | DELETE /member/2 | - | code=500, msg="请先解绑学生"(有绑定学生时) | --- ## 4. 边界测试 ### 4.1 字段长度测试 | 用例编号 | 字段 | 测试值 | 预期结果 | |---------|------|--------|---------| | BT-001 | 手机号 | 10位数字 | 提示格式错误 | | BT-002 | 手机号 | 12位数字 | 提示格式错误 | | BT-003 | 昵称 | 50个字符 | 保存成功 | | BT-004 | 昵称 | 51个字符 | 截断或提示超长 | ### 4.2 分页边界测试 | 用例编号 | 测试场景 | 预期结果 | |---------|---------|---------| | BT-010 | pageNum=0 | 默认为第1页 | | BT-011 | pageSize=0 | 默认为10条 | | BT-012 | pageNum超过总页数 | 返回空列表 | | BT-013 | 无数据时查询 | 返回空列表,total=0 | --- ## 5. 性能测试 ### 5.1 响应时间测试 | 用例编号 | 测试场景 | 性能指标 | |---------|---------|---------| | PT-001 | 列表查询(10万条数据) | ≤ 500ms | | PT-002 | 新增会员 | ≤ 300ms | | PT-003 | 编辑会员 | ≤ 300ms | | PT-004 | 重置密码 | ≤ 200ms | ### 5.2 并发测试 | 用例编号 | 测试场景 | 性能指标 | |---------|---------|---------| | PT-010 | 100并发查询 | 成功率 ≥ 99% | | PT-011 | 50并发新增 | 成功率 ≥ 99%,无数据重复 | | PT-012 | 20并发重置密码 | 成功率 ≥ 99% | --- ## 6. 测试环境 ### 6.1 环境要求 | 环境 | 配置 | |-----|------| | 操作系统 | Windows 10 / macOS / Linux | | 浏览器 | Chrome 最新版本 | | 后端服务 | Java 17+, Spring Boot 3.3.x | | 数据库 | MySQL 8.0 | | 缓存 | Redis 7.x | ### 6.2 测试数据 - 准备至少50条会员测试数据 - 包含家长和教师两种身份类型 - 包含正常和停用两种状态 - 部分会员已绑定学生 --- ## 7. 测试报告模板 | 项目 | 内容 | |-----|------| | 测试人员 | | | 测试日期 | | | 测试版本 | | | 总用例数 | | | 通过数 | | | 失败数 | | | 阻塞数 | | | 通过率 | | | 遗留问题 | | --- *文档结束*