功能测试流程文档
累积追加模式:每次完成功能迁移后,将新功能的测试内容追加至本文档末尾。
测试人员按章节执行,通过项打 ✅,未通过项记录具体问题。
测试环境配置
| 配置项 |
要求 |
| 浏览器 |
Chrome 最新版、Edge 最新版 |
| 屏幕分辨率 |
≥ 1920×1080 |
| 后端服务 |
测试环境 API 正常运行 |
| 测试账号 |
具有系统管理员权限(含用户管理、角色管理菜单权限) |
| 语言 |
先测中文,再切换到英文验证 i18n |
测试前置条件
- 后端 API 服务已启动并正常运行
- 前端项目
pnpm dev 正常启动,可访问登录页
- 使用管理员账号登录系统
- 侧边栏菜单 系统设置 → 用户管理 下可见 角色 和 用户 两个子菜单
一、角色管理功能测试
迁移日期:2026-05-28
对应页面:src/views/system-administration/user-management/role/index.vue
API 文件:src/api/system-administration/role.js
路由路径:/system_settings/user_management/role
1.1 页面加载与数据展示
TC-ROLE-001:角色列表正常加载
| 项目 |
内容 |
| 测试步骤 |
1. 登录系统 2. 点击菜单「系统设置 → 用户管理 → 角色」 |
| 预期结果 |
页面正常加载,显示角色列表表格,包含序号、角色名称、状态、描述、操作列;底部分页组件显示总条数 |
| 实际结果 |
|
| 测试状态 |
⬜ 通过 / ⬜ 未通过 |
| 问题描述 |
|
TC-ROLE-002:状态列显示正确
| 项目 |
内容 |
| 测试步骤 |
查看角色列表中各行的状态列 |
| 预期结果 |
状态为 1 时显示绿色 ✅ 图标 + "启用" 文字;状态为 0 时显示灰色 ❌ 图标 + "禁用" 文字 |
| 实际结果 |
|
| 测试状态 |
⬜ 通过 / ⬜ 未通过 |
| 问题描述 |
|
TC-ROLE-003:搜索功能
| 项目 |
内容 |
| 测试步骤 |
1. 在角色名称输入框输入关键字 2. 选择状态下拉为"启用" 3. 点击「查询」按钮 |
| 预期结果 |
表格数据按搜索条件过滤,仅显示匹配的角色 |
| 实际结果 |
|
| 测试状态 |
⬜ 通过 / ⬜ 未通过 |
| 问题描述 |
|
TC-ROLE-004:重置搜索
| 项目 |
内容 |
| 测试步骤 |
1. 输入搜索条件并查询 2. 点击「重置」按钮 |
| 预期结果 |
搜索条件清空,表格恢复显示全部数据 |
| 实际结果 |
|
| 测试状态 |
⬜ 通过 / ⬜ 未通过 |
| 问题描述 |
|
TC-ROLE-005:分页功能
| 项目 |
内容 |
| 测试步骤 |
1. 切换每页显示条数 2. 点击下一页/上一页 3. 输入页码跳转 |
| 预期结果 |
分页切换正常,表格数据按分页加载,总条数正确显示 |
| 实际结果 |
|
| 测试状态 |
⬜ 通过 / ⬜ 未通过 |
| 问题描述 |
|
1.2 新增角色
TC-ROLE-006:打开新增弹框
| 项目 |
内容 |
| 测试步骤 |
点击表格上方工具栏「新增」按钮 |
| 预期结果 |
弹出新增角色弹框,标题显示"新增角色",表单为空(名称、描述为空,状态默认"启用") |
| 实际结果 |
|
| 测试状态 |
⬜ 通过 / ⬜ 未通过 |
| 问题描述 |
|
TC-ROLE-007:新增表单校验
| 项目 |
内容 |
| 测试步骤 |
1. 打开新增弹框 2. 不填写任何内容直接点击「确定」 |
| 预期结果 |
角色名称输入框下方显示红色校验提示"请输入角色名称" |
| 实际结果 |
|
| 测试状态 |
⬜ 通过 / ⬜ 未通过 |
| 问题描述 |
|
TC-ROLE-008:新增角色成功
| 项目 |
内容 |
| 测试步骤 |
1. 打开新增弹框 2. 输入角色名称(如"测试角色001")3. 输入描述 4. 选择状态为"启用" 5. 点击「确定」 |
| 预期结果 |
弹框关闭,提示"操作成功",表格刷新并显示新增的角色 |
| 实际结果 |
|
| 测试状态 |
⬜ 通过 / ⬜ 未通过 |
| 问题描述 |
|
TC-ROLE-009:取消新增
| 项目 |
内容 |
| 测试步骤 |
1. 打开新增弹框 2. 填写部分内容 3. 点击「取消」按钮 |
| 预期结果 |
弹框关闭,表格数据不变 |
| 实际结果 |
|
| 测试状态 |
⬜ 通过 / ⬜ 未通过 |
| 问题描述 |
|
1.3 编辑角色
TC-ROLE-010:打开编辑弹框
| 项目 |
内容 |
| 测试步骤 |
点击非系统角色(非超级管理员等)行操作列的「编辑」按钮 |
| 预期结果 |
弹出编辑角色弹框,标题显示"编辑角色",表单回填该角色的名称、描述、状态 |
| 实际结果 |
|
| 测试状态 |
⬜ 通过 / ⬜ 未通过 |
| 问题描述 |
|
TC-ROLE-011:编辑角色成功
| 项目 |
内容 |
| 测试步骤 |
1. 打开编辑弹框 2. 修改角色名称 3. 点击「确定」 |
| 预期结果 |
弹框关闭,提示"操作成功",表格数据更新 |
| 实际结果 |
|
| 测试状态 |
⬜ 通过 / ⬜ 未通过 |
| 问题描述 |
|
1.4 删除角色
TC-ROLE-012:删除角色确认
| 项目 |
内容 |
| 测试步骤 |
点击非系统角色行操作列的「删除」按钮 |
| 预期结果 |
弹出确认提示框,内容为"确定要删除该角色吗?",有「确定」和「取消」按钮 |
| 实际结果 |
|
| 测试状态 |
⬜ 通过 / ⬜ 未通过 |
| 问题描述 |
|
TC-ROLE-013:删除角色成功
| 项目 |
内容 |
| 测试步骤 |
1. 点击删除按钮 2. 在确认框中点击「确定」 |
| 预期结果 |
提示"操作成功",该角色从列表中消失,分页总数减 1 |
| 实际结果 |
|
| 测试状态 |
⬜ 通过 / ⬜ 未通过 |
| 问题描述 |
|
TC-ROLE-014:取消删除
| 项目 |
内容 |
| 测试步骤 |
1. 点击删除按钮 2. 在确认框中点击「取消」 |
| 预期结果 |
确认框关闭,角色数据不变 |
| 实际结果 |
|
| 测试状态 |
⬜ 通过 / ⬜ 未通过 |
| 问题描述 |
|
1.5 启用/禁用角色
TC-ROLE-015:启用角色
| 项目 |
内容 |
| 测试步骤 |
1. 勾选一个或多个状态为"禁用"的非系统角色 2. 点击工具栏「启用」按钮 |
| 预期结果 |
所选角色状态变为"启用" |
| 实际结果 |
|
| 测试状态 |
⬜ 通过 / ⬜ 未通过 |
| 问题描述 |
|
TC-ROLE-016:禁用角色
| 项目 |
内容 |
| 测试步骤 |
1. 勾选一个或多个状态为"启用"的非系统角色 2. 点击工具栏「禁用」按钮 |
| 预期结果 |
所选角色状态变为"禁用" |
| 实际结果 |
|
| 测试状态 |
⬜ 通过 / ⬜ 未通过 |
| 问题描述 |
|
TC-ROLE-017:未选中时点击启用/禁用
| 项目 |
内容 |
| 测试步骤 |
不勾选任何行,直接点击工具栏「启用」或「禁用」按钮 |
| 预期结果 |
提示"请先勾选要操作的数据" |
| 实际结果 |
|
| 测试状态 |
⬜ 通过 / ⬜ 未通过 |
| 问题描述 |
|
1.6 系统角色保护
TC-ROLE-018:系统角色不可勾选
| 项目 |
内容 |
| 测试步骤 |
尝试勾选 system=1 的系统角色(如超级管理员) |
| 预期结果 |
复选框不可勾选(灰色禁用状态) |
| 实际结果 |
|
| 测试状态 |
⬜ 通过 / ⬜ 未通过 |
| 问题描述 |
|
TC-ROLE-019:系统角色不显示编辑/删除/分配权限按钮
| 项目 |
内容 |
| 测试步骤 |
查看系统角色(system=1)行操作列 |
| 预期结果 |
操作列不显示「编辑」「分配权限」「删除」按钮 |
| 实际结果 |
|
| 测试状态 |
⬜ 通过 / ⬜ 未通过 |
| 问题描述 |
|
1.7 权限分配抽屉
TC-ROLE-020:打开权限分配抽屉
| 项目 |
内容 |
| 测试步骤 |
点击非系统角色行操作列的「分配权限」按钮 |
| 预期结果 |
从右侧滑出抽屉面板,标题显示"分配权限",内含加载中的菜单树,底部有「取消」「确定」按钮 |
| 实际结果 |
|
| 测试状态 |
⬜ 通过 / ⬜ 未通过 |
| 问题描述 |
|
TC-ROLE-021:权限树正确加载
| 项目 |
内容 |
| 测试步骤 |
等待权限树加载完成 |
| 预期结果 |
显示完整菜单树(含多层级),该角色已拥有的权限节点处于勾选状态 |
| 实际结果 |
|
| 测试状态 |
⬜ 通过 / ⬜ 未通过 |
| 问题描述 |
|
TC-ROLE-022:勾选/取消权限节点
| 项目 |
内容 |
| 测试步骤 |
1. 勾选一个未勾选的菜单节点 2. 取消一个已勾选的菜单节点 |
| 预期结果 |
勾选状态正常切换,父子节点独立勾选(check-strictly 模式) |
| 实际结果 |
|
| 测试状态 |
⬜ 通过 / ⬜ 未通过 |
| 问题描述 |
|
TC-ROLE-023:保存权限分配
| 项目 |
内容 |
| 测试步骤 |
1. 修改权限勾选 2. 点击抽屉底部「确定」按钮 |
| 预期结果 |
提交成功提示"操作成功",抽屉关闭,表格刷新 |
| 实际结果 |
|
| 测试状态 |
⬜ 通过 / ⬜ 未通过 |
| 问题描述 |
|
TC-ROLE-024:取消权限分配
| 项目 |
内容 |
| 测试步骤 |
1. 修改权限勾选 2. 点击抽屉底部「取消」按钮 |
| 预期结果 |
抽屉关闭,勾选修改不生效 |
| 实际结果 |
|
| 测试状态 |
⬜ 通过 / ⬜ 未通过 |
| 问题描述 |
|
二、用户管理功能测试
迁移日期:2026-05-28
对应页面:src/views/system-administration/user-management/user/index.vue
API 文件:src/api/system-administration/user.js
路由路径:/system_settings/user_management/user
2.1 页面加载与数据展示
TC-USER-001:用户列表正常加载
| 项目 |
内容 |
| 测试步骤 |
1. 登录系统 2. 点击菜单「系统设置 → 用户管理 → 用户」 |
| 预期结果 |
页面正常加载,显示用户列表表格,包含序号、账号、姓名、出入证编号、状态、用户组、上次登录IP、上次登录时间、操作列;底部分页组件显示总条数 |
| 实际结果 |
|
| 测试状态 |
⬜ 通过 / ⬜ 未通过 |
| 问题描述 |
|
TC-USER-002:状态列显示正确
| 项目 |
内容 |
| 测试步骤 |
查看用户列表中各行的状态列 |
| 预期结果 |
状态为 1 时显示绿色 ✅ 图标 + "启用" 文字;状态为 0 时显示灰色 ❌ 图标 + "禁用" 文字 |
| 实际结果 |
|
| 测试状态 |
⬜ 通过 / ⬜ 未通过 |
| 问题描述 |
|
TC-USER-003:搜索功能—按账号
| 项目 |
内容 |
| 测试步骤 |
1. 在账号输入框输入关键字 2. 点击「查询」 |
| 预期结果 |
表格数据按账号关键字过滤 |
| 实际结果 |
|
| 测试状态 |
⬜ 通过 / ⬜ 未通过 |
| 问题描述 |
|
TC-USER-004:搜索功能—按姓名
| 项目 |
内容 |
| 测试步骤 |
1. 在姓名输入框输入关键字 2. 点击「查询」 |
| 预期结果 |
表格数据按姓名关键字过滤 |
| 实际结果 |
|
| 测试状态 |
⬜ 通过 / ⬜ 未通过 |
| 问题描述 |
|
TC-USER-005:搜索功能—组合条件
| 项目 |
内容 |
| 测试步骤 |
1. 同时输入账号和姓名关键字 2. 点击「查询」 |
| 预期结果 |
表格数据按两个条件同时过滤(AND 逻辑) |
| 实际结果 |
|
| 测试状态 |
⬜ 通过 / ⬜ 未通过 |
| 问题描述 |
|
TC-USER-006:重置搜索
| 项目 |
内容 |
| 测试步骤 |
1. 输入搜索条件并查询 2. 点击「重置」按钮 |
| 预期结果 |
搜索条件清空,表格恢复显示全部数据 |
| 实际结果 |
|
| 测试状态 |
⬜ 通过 / ⬜ 未通过 |
| 问题描述 |
|
TC-USER-007:分页功能
| 项目 |
内容 |
| 测试步骤 |
1. 切换每页显示条数(10/25/50/100)2. 点击下一页/上一页 3. 输入页码跳转 |
| 预期结果 |
分页切换正常,表格数据按分页加载,总条数正确显示 |
| 实际结果 |
|
| 测试状态 |
⬜ 通过 / ⬜ 未通过 |
| 问题描述 |
|
2.2 新增用户
TC-USER-008:打开新增弹框
| 项目 |
内容 |
| 测试步骤 |
点击表格上方工具栏「新增」按钮 |
| 预期结果 |
弹出新增用户弹框,标题显示"新增用户",表单包含:账号、密码、确认密码、用户组(下拉)、姓名、出入证编号、状态(默认"启用") |
| 实际结果 |
|
| 测试状态 |
⬜ 通过 / ⬜ 未通过 |
| 问题描述 |
|
TC-USER-009:新增表单校验—必填项
| 项目 |
内容 |
| 测试步骤 |
1. 打开新增弹框 2. 不填写任何内容直接点击「确定」 |
| 预期结果 |
账号、密码、确认密码、用户组字段下方分别显示红色校验提示 |
| 实际结果 |
|
| 测试状态 |
⬜ 通过 / ⬜ 未通过 |
| 问题描述 |
|
TC-USER-010:新增表单校验—账号长度
| 项目 |
内容 |
| 测试步骤 |
1. 打开新增弹框 2. 输入账号为 2 个字符(如"ab")3. 点击「确定」 |
| 预期结果 |
账号字段下方提示"长度在 3 到 20 个字符" |
| 实际结果 |
|
| 测试状态 |
⬜ 通过 / ⬜ 未通过 |
| 问题描述 |
|
TC-USER-011:新增表单校验—密码长度
| 项目 |
内容 |
| 测试步骤 |
1. 打开新增弹框 2. 输入密码为 5 个字符 3. 点击「确定」 |
| 预期结果 |
密码字段下方提示"长度在 6 到 64 个字符" |
| 实际结果 |
|
| 测试状态 |
⬜ 通过 / ⬜ 未通过 |
| 问题描述 |
|
TC-USER-012:新增表单校验—两次密码不一致
| 项目 |
内容 |
| 测试步骤 |
1. 打开新增弹框 2. 密码输入"123456",确认密码输入"654321" 3. 填写其他必填项 4. 点击「确定」 |
| 预期结果 |
提示"两次输入的密码不一致",弹框不关闭 |
| 实际结果 |
|
| 测试状态 |
⬜ 通过 / ⬜ 未通过 |
| 问题描述 |
|
TC-USER-013:新增用户成功
| 项目 |
内容 |
| 测试步骤 |
1. 打开新增弹框 2. 输入账号(如"testuser001")3. 输入密码和确认密码 4. 选择用户组 5. 输入姓名 6. 选择状态为"启用" 7. 点击「确定」 |
| 预期结果 |
弹框关闭,提示"操作成功",表格刷新并显示新增的用户 |
| 实际结果 |
|
| 测试状态 |
⬜ 通过 / ⬜ 未通过 |
| 问题描述 |
|
TC-USER-014:取消新增
| 项目 |
内容 |
| 测试步骤 |
1. 打开新增弹框 2. 填写部分内容 3. 点击「取消」按钮 |
| 预期结果 |
弹框关闭,表格数据不变 |
| 实际结果 |
|
| 测试状态 |
⬜ 通过 / ⬜ 未通过 |
| 问题描述 |
|
2.3 编辑用户
TC-USER-015:打开编辑弹框
| 项目 |
内容 |
| 测试步骤 |
点击任意用户行操作列的「编辑」按钮 |
| 预期结果 |
弹出编辑用户弹框,标题显示"编辑用户",表单回填该用户的账号、用户组、姓名、出入证编号、状态;密码和确认密码字段不显示 |
| 实际结果 |
|
| 测试状态 |
⬜ 通过 / ⬜ 未通过 |
| 问题描述 |
|
TC-USER-016:编辑用户成功
| 项目 |
内容 |
| 测试步骤 |
1. 打开编辑弹框 2. 修改用户组 3. 修改姓名 4. 点击「确定」 |
| 预期结果 |
弹框关闭,提示"操作成功",表格数据更新 |
| 实际结果 |
|
| 测试状态 |
⬜ 通过 / ⬜ 未通过 |
| 问题描述 |
|
2.4 删除用户
TC-USER-017:删除其他用户确认
| 项目 |
内容 |
| 测试步骤 |
点击非当前登录用户行操作列的「删除」按钮 |
| 预期结果 |
弹出确认提示框"确定要删除该用户吗?",有「确定」和「取消」按钮 |
| 实际结果 |
|
| 测试状态 |
⬜ 通过 / ⬜ 未通过 |
| 问题描述 |
|
TC-USER-018:删除用户成功
| 项目 |
内容 |
| 测试步骤 |
1. 点击非当前用户的删除按钮 2. 在确认框中点击「确定」 |
| 预期结果 |
提示"操作成功",该用户从列表中消失 |
| 实际结果 |
|
| 测试状态 |
⬜ 通过 / ⬜ 未通过 |
| 问题描述 |
|
TC-USER-019:不能删除自己
| 项目 |
内容 |
| 测试步骤 |
找到当前登录用户所在行,点击「删除」按钮 |
| 预期结果 |
提示"不能删除自己的账号",不弹出确认框 |
| 实际结果 |
|
| 测试状态 |
⬜ 通过 / ⬜ 未通过 |
| 问题描述 |
|
2.5 批量删除
TC-USER-020:批量删除—正常
| 项目 |
内容 |
| 测试步骤 |
1. 勾选多个非当前用户的用户行 2. 点击工具栏「批量删除」按钮 3. 确认框中点击「确定」 |
| 预期结果 |
提示"操作成功",勾选的用户从列表中消失 |
| 实际结果 |
|
| 测试状态 |
⬜ 通过 / ⬜ 未通过 |
| 问题描述 |
|
TC-USER-021:批量删除—包含自己
| 项目 |
内容 |
| 测试步骤 |
1. 勾选自己 + 其他用户 2. 点击工具栏「批量删除」按钮 |
| 预期结果 |
自己的账号自动从勾选列表中排除,仅删除其他用户 |
| 实际结果 |
|
| 测试状态 |
⬜ 通过 / ⬜ 未通过 |
| 问题描述 |
|
TC-USER-022:批量删除—未勾选
| 项目 |
内容 |
| 测试步骤 |
不勾选任何行,直接点击「批量删除」按钮 |
| 预期结果 |
提示"请先勾选要操作的数据" |
| 实际结果 |
|
| 测试状态 |
⬜ 通过 / ⬜ 未通过 |
| 问题描述 |
|
2.6 启用/禁用用户
TC-USER-023:启用用户
| 项目 |
内容 |
| 测试步骤 |
1. 勾选一个或多个状态为"禁用"的其他用户 2. 点击工具栏「启用」按钮 3. 确认框中点击「确定」 |
| 预期结果 |
所选用户状态变为"启用" |
| 实际结果 |
|
| 测试状态 |
⬜ 通过 / ⬜ 未通过 |
| 问题描述 |
|
TC-USER-024:禁用用户
| 项目 |
内容 |
| 测试步骤 |
1. 勾选一个或多个状态为"启用"的其他用户 2. 点击工具栏「禁用」按钮 3. 确认框中点击「确定」 |
| 预期结果 |
所选用户状态变为"禁用" |
| 实际结果 |
|
| 测试状态 |
⬜ 通过 / ⬜ 未通过 |
| 问题描述 |
|
TC-USER-025:不能禁用自己
| 项目 |
内容 |
| 测试步骤 |
1. 勾选自己的账号 2. 点击工具栏「禁用」按钮 |
| 预期结果 |
提示"不能操作自己的账号",操作不执行 |
| 实际结果 |
|
| 测试状态 |
⬜ 通过 / ⬜ 未通过 |
| 问题描述 |
|
TC-USER-026:未勾选时点击启用/禁用
| 项目 |
内容 |
| 测试步骤 |
不勾选任何行,直接点击「启用」或「禁用」按钮 |
| 预期结果 |
提示"请先勾选要操作的数据" |
| 实际结果 |
|
| 测试状态 |
⬜ 通过 / ⬜ 未通过 |
| 问题描述 |
|
2.7 重置密码
TC-USER-027:重置密码确认
| 项目 |
内容 |
| 测试步骤 |
点击任意用户行操作列的「重置密码」按钮 |
| 预期结果 |
弹出确认提示框"确定要重置该用户密码吗?" |
| 实际结果 |
|
| 测试状态 |
⬜ 通过 / ⬜ 未通过 |
| 问题描述 |
|
TC-USER-028:重置密码成功
| 项目 |
内容 |
| 测试步骤 |
1. 点击「重置密码」按钮 2. 在确认框中点击「确定」 |
| 预期结果 |
提示"操作成功",该用户密码被重置 |
| 实际结果 |
|
| 测试状态 |
⬜ 通过 / ⬜ 未通过 |
| 问题描述 |
|
TC-USER-029:取消重置密码
| 项目 |
内容 |
| 测试步骤 |
1. 点击「重置密码」按钮 2. 在确认框中点击「取消」 |
| 预期结果 |
确认框关闭,密码不变 |
| 实际结果 |
|
| 测试状态 |
⬜ 通过 / ⬜ 未通过 |
| 问题描述 |
|
2.8 用户组下拉数据
TC-USER-030:新增时用户组下拉有数据
| 项目 |
内容 |
| 测试步骤 |
打开新增用户弹框,点击用户组下拉框 |
| 预期结果 |
下拉框显示所有角色列表(从角色管理页创建的角色应全部出现) |
| 实际结果 |
|
| 测试状态 |
⬜ 通过 / ⬜ 未通过 |
| 问题描述 |
|
TC-USER-031:编辑时用户组下拉有数据
| 项目 |
内容 |
| 测试步骤 |
打开编辑用户弹框,点击用户组下拉框 |
| 预期结果 |
下拉框显示所有角色列表,当前用户所属角色为选中状态 |
| 实际结果 |
|
| 测试状态 |
⬜ 通过 / ⬜ 未通过 |
| 问题描述 |
|
2.9 多语言切换
TC-USER-032:切换到英文
| 项目 |
内容 |
| 测试步骤 |
1. 切换到英文语言 2. 查看用户管理页面 |
| 预期结果 |
所有标签、按钮、表头、弹框标题均切换为英文显示 |
| 实际结果 |
|
| 测试状态 |
⬜ 通过 / ⬜ 未通过 |
| 问题描述 |
|
TC-USER-033:英文下操作正常
| 项目 |
内容 |
| 测试步骤 |
在英文界面下执行:查询、新增、编辑、删除操作 |
| 预期结果 |
所有功能正常运行,提示信息为英文 |
| 实际结果 |
|
| 测试状态 |
⬜ 通过 / ⬜ 未通过 |
| 问题描述 |
|
三、菜单配置功能测试
迁移日期:2026-05-29
对应页面:src/views/system-administration/menu-management/menu-configuration/index.vue
API 文件:src/api/system-administration/menu-configuration.js
路由路径:/system_settings/menu_configuration/menu
页面结构:左侧树形菜单 + 右侧表单卡片 + 顶部筛选栏
3.1 页面加载与树形展示
| 项目 |
内容 |
| 测试步骤 |
1. 登录系统 2. 点击菜单「系统设置 → 菜单管理 → 菜单配置」 |
| 预期结果 |
页面正常加载,左侧显示后台菜单树形结构(含文件夹/文档图标和菜单名称),右侧默认显示表单卡片(标题为"新增菜单") |
| 实际结果 |
|
| 测试状态 |
⬜ 通过 / ⬜ 未通过 |
| 问题描述 |
|
| 项目 |
内容 |
| 测试步骤 |
查看左侧树形结构的各级节点图标 |
| 预期结果 |
有子节点的菜单展开时显示「打开的文件夹」图标,收起时显示「关闭的文件夹」图标;叶子节点显示「文档」图标;如果菜单配置了 FontAwesome 图标,则显示对应图标 |
| 实际结果 |
|
| 测试状态 |
⬜ 通过 / ⬜ 未通过 |
| 问题描述 |
|
| 项目 |
内容 |
| 测试步骤 |
点击左侧树形结构中任意菜单节点 |
| 预期结果 |
右侧表单卡片标题变为"编辑菜单",表单回填该菜单的所有信息(上级菜单、名称、别名、图标、排序、导航开关、链接类型、打开方式、URL、参数、备注) |
| 实际结果 |
|
| 测试状态 |
⬜ 通过 / ⬜ 未通过 |
| 问题描述 |
|
| 项目 |
内容 |
| 测试步骤 |
找到状态为"禁用"的菜单节点(如有),查看其显示样式 |
| 预期结果 |
禁用的菜单节点文字颜色为灰色,并带有删除线样式(text-decoration: line-through),与其他正常节点明显区分 |
| 实际结果 |
|
| 测试状态 |
⬜ 通过 / ⬜ 未通过 |
| 问题描述 |
|
3.2 模块切换筛选
| 项目 |
内容 |
| 测试步骤 |
在顶部筛选栏,点击「PDA」单选按钮 |
| 预期结果 |
树形结构自动刷新,切换到 PDA 模块的菜单数据(与后台模块菜单不同) |
| 实际结果 |
|
| 测试状态 |
⬜ 通过 / ⬜ 未通过 |
| 问题描述 |
|
| 项目 |
内容 |
| 测试步骤 |
1. 在状态下拉框选择"启用" 2. 点击「查询」按钮 |
| 预期结果 |
树形结构仅显示状态为启用的菜单节点 |
| 实际结果 |
|
| 测试状态 |
⬜ 通过 / ⬜ 未通过 |
| 问题描述 |
|
| 项目 |
内容 |
| 测试步骤 |
1. 在导航属性下拉框选择"可见" 2. 点击「查询」按钮 |
| 预期结果 |
树形结构仅显示导航属性为可见的菜单节点 |
| 实际结果 |
|
| 测试状态 |
⬜ 通过 / ⬜ 未通过 |
| 问题描述 |
|
| 项目 |
内容 |
| 测试步骤 |
1. 设置菜单深度为 1 2. 点击「查询」按钮 |
| 预期结果 |
树形结构仅显示深度为 1(一级菜单)的节点 |
| 实际结果 |
|
| 测试状态 |
⬜ 通过 / ⬜ 未通过 |
| 问题描述 |
|
| 项目 |
内容 |
| 测试步骤 |
1. 设置多个筛选条件并查询 2. 点击「重置」按钮 |
| 预期结果 |
筛选条件恢复默认(模块=后台,其他清空),树形结构恢复加载全部后台菜单数据 |
| 实际结果 |
|
| 测试状态 |
⬜ 通过 / ⬜ 未通过 |
| 问题描述 |
|
3.3 树的展开/收起/过滤
| 项目 |
内容 |
| 测试步骤 |
点击工具栏「展开」按钮 |
| 预期结果 |
树形结构所有节点全部展开,显示完整的层级结构 |
| 实际结果 |
|
| 测试状态 |
⬜ 通过 / ⬜ 未通过 |
| 问题描述 |
|
| 项目 |
内容 |
| 测试步骤 |
1. 先点击「展开」使所有节点展开 2. 再点击「收起」按钮 |
| 预期结果 |
所有子节点收起,仅显示一级根节点 |
| 实际结果 |
|
| 测试状态 |
⬜ 通过 / ⬜ 未通过 |
| 问题描述 |
|
| 项目 |
内容 |
| 测试步骤 |
1. 在过滤输入框输入某个菜单名称的关键字(如"用户")2. 观察树形结构变化 |
| 预期结果 |
树形结构仅显示名称包含关键字的节点及其父/子路径节点 |
| 实际结果 |
|
| 测试状态 |
⬜ 通过 / ⬜ 未通过 |
| 问题描述 |
|
| 项目 |
内容 |
| 测试步骤 |
1. 输入过滤关键字使树节点被过滤 2. 清除过滤输入框内容(点击清空按钮或手动删除) |
| 预期结果 |
树形结构恢复显示所有菜单节点 |
| 实际结果 |
|
| 测试状态 |
⬜ 通过 / ⬜ 未通过 |
| 问题描述 |
|
3.4 新增菜单(顶层)
| 项目 |
内容 |
| 测试步骤 |
点击工具栏「新增顶层菜单」按钮 |
| 预期结果 |
右侧表单标题变为"新增菜单",表单所有字段清空为默认值,上级菜单为空(顶层) |
| 实际结果 |
|
| 测试状态 |
⬜ 通过 / ⬜ 未通过 |
| 问题描述 |
|
| 项目 |
内容 |
| 测试步骤 |
1. 点击「新增顶层菜单」2. 填写名称(如"测试菜单")3. 选择图标 4. 设置排序号 5. 设置导航开关 6. 点击「确定」 |
| 预期结果 |
提示"操作成功",左侧树形结构根级新增该菜单节点,表单恢复为新增状态 |
| 实际结果 |
|
| 测试状态 |
⬜ 通过 / ⬜ 未通过 |
| 问题描述 |
|
| 项目 |
内容 |
| 测试步骤 |
1. 点击「新增顶层菜单」2. 不填写名称,点击「确定」 |
| 预期结果 |
名称字段下方提示"名称不能为空",表单不提交 |
| 实际结果 |
|
| 测试状态 |
⬜ 通过 / ⬜ 未通过 |
| 问题描述 |
|
| 项目 |
内容 |
| 测试步骤 |
1. 点击「新增顶层菜单」2. 名称输入超过 32 个字符 3. 点击「确定」 |
| 预期结果 |
名称字段下方提示"长度不能大于 32 个字符" |
| 实际结果 |
|
| 测试状态 |
⬜ 通过 / ⬜ 未通过 |
| 问题描述 |
|
3.5 新增子菜单
| 项目 |
内容 |
| 测试步骤 |
将鼠标悬停到某个树节点上,点击出现的「新增」按钮 |
| 预期结果 |
右侧表单标题变为"新增菜单",上级菜单自动设置为当前悬停的节点,表单其他字段为空 |
| 实际结果 |
|
| 测试状态 |
⬜ 通过 / ⬜ 未通过 |
| 问题描述 |
|
| 项目 |
内容 |
| 测试步骤 |
1. 悬停到某个树节点上点击「新增」2. 填写名称 3. 选择链接类型为"模块" 4. 填写 URL 5. 点击「确定」 |
| 预期结果 |
提示"操作成功",左侧树形结构中该节点下出现新增的子菜单节点,表单恢复为新增状态 |
| 实际结果 |
|
| 测试状态 |
⬜ 通过 / ⬜ 未通过 |
| 问题描述 |
|
| 项目 |
内容 |
| 测试步骤 |
1. 点击「新增顶层菜单」2. 在上级菜单级联选择器中输入关键字搜索(如"首页") |
| 预期结果 |
级联选择器按关键字过滤,可从中选择任意节点作为上级菜单 |
| 实际结果 |
|
| 测试状态 |
⬜ 通过 / ⬜ 未通过 |
| 问题描述 |
|
3.6 编辑菜单
| 项目 |
内容 |
| 测试步骤 |
1. 点击树中某个菜单节点加载编辑表单 2. 修改名称、别名 3. 修改排序号 4. 点击「修改」按钮 |
| 预期结果 |
提示"操作成功",树中该节点的名称和排序立即更新 |
| 实际结果 |
|
| 测试状态 |
⬜ 通过 / ⬜ 未通过 |
| 问题描述 |
|
| 项目 |
内容 |
| 测试步骤 |
1. 点击树中某个模块菜单节点 2. 切换链接类型为"外链" 3. 输入外部 URL 4. 点击「修改」 |
| 预期结果 |
提示"操作成功",菜单链接类型和外链 URL 保存成功 |
| 实际结果 |
|
| 测试状态 |
⬜ 通过 / ⬜ 未通过 |
| 问题描述 |
|
| 项目 |
内容 |
| 测试步骤 |
1. 点击树中某个菜单节点 2. 切换导航开关(开启→关闭 或 关闭→开启)3. 点击「修改」 |
| 预期结果 |
提示"操作成功",导航属性更新(在侧边栏菜单渲染时相应生效) |
| 实际结果 |
|
| 测试状态 |
⬜ 通过 / ⬜ 未通过 |
| 问题描述 |
|
| 项目 |
内容 |
| 测试步骤 |
1. 点击树中某个外链菜单 2. 切换打开方式为"新窗口" 3. 点击「修改」 |
| 预期结果 |
提示"操作成功",打开方式更新为在新标签页打开 |
| 实际结果 |
|
| 测试状态 |
⬜ 通过 / ⬜ 未通过 |
| 问题描述 |
|
3.7 删除菜单
| 项目 |
内容 |
| 测试步骤 |
鼠标悬停到某个菜单节点上,点击出现的「删除」按钮 |
| 预期结果 |
弹出确认提示框"确定要执行该操作吗?",有「确定」和「取消」按钮 |
| 实际结果 |
|
| 测试状态 |
⬜ 通过 / ⬜ 未通过 |
| 问题描述 |
|
| 项目 |
内容 |
| 测试步骤 |
1. 悬停到叶子菜单节点上点击「删除」2. 在确认框中点击「确定」 |
| 预期结果 |
提示"操作成功",该菜单节点从树中消失 |
| 实际结果 |
|
| 测试状态 |
⬜ 通过 / ⬜ 未通过 |
| 问题描述 |
|
| 项目 |
内容 |
| 测试步骤 |
1. 点击「删除」按钮 2. 在确认框中点击「取消」 |
| 预期结果 |
确认框关闭,菜单节点未被删除 |
| 实际结果 |
|
| 测试状态 |
⬜ 通过 / ⬜ 未通过 |
| 问题描述 |
|
3.8 启用/禁用菜单
| 项目 |
内容 |
| 测试步骤 |
鼠标悬停到某个状态为启用的菜单节点上,点击出现的「禁用」按钮 |
| 预期结果 |
弹出确认提示框"状态的切换会影响上下级菜单,是否确认操作?" |
| 实际结果 |
|
| 测试状态 |
⬜ 通过 / ⬜ 未通过 |
| 问题描述 |
|
| 项目 |
内容 |
| 测试步骤 |
1. 点击启用菜单的「禁用」按钮 2. 在确认框中点击「确定」 |
| 预期结果 |
提示"操作成功",树刷新后该节点显示为灰色+删除线的禁用样式 |
| 实际结果 |
|
| 测试状态 |
⬜ 通过 / ⬜ 未通过 |
| 问题描述 |
|
| 项目 |
内容 |
| 测试步骤 |
1. 点击禁用菜单的「启用」按钮 2. 在确认框中点击「确定」 |
| 预期结果 |
提示"操作成功",树刷新后该节点恢复正常显示样式 |
| 实际结果 |
|
| 测试状态 |
⬜ 通过 / ⬜ 未通过 |
| 问题描述 |
|
3.9 拖拽排序
| 项目 |
内容 |
| 测试步骤 |
在同级菜单中,拖拽某个节点到另一个同级节点的上方或下方 |
| 预期结果 |
松手后触发排序 API,同级节点的排序号自动更新,页面刷新后顺序保持 |
| 实际结果 |
|
| 测试状态 |
⬜ 通过 / ⬜ 未通过 |
| 问题描述 |
|
| 项目 |
内容 |
| 测试步骤 |
拖拽某个菜单节点到另一个非同级父节点内部 |
| 预期结果 |
菜单移动到新父级下,页面刷新后位置保持 |
| 实际结果 |
|
| 测试状态 |
⬜ 通过 / ⬜ 未通过 |
| 问题描述 |
|
3.10 表单校验
| 项目 |
内容 |
| 测试步骤 |
1. 新增或编辑菜单 2. 别名输入超过 16 个字符 3. 点击提交 |
| 预期结果 |
别名字段下方提示"长度不能大于 16 个字符" |
| 实际结果 |
|
| 测试状态 |
⬜ 通过 / ⬜ 未通过 |
| 问题描述 |
|
| 项目 |
内容 |
| 测试步骤 |
1. 新增外链菜单 2. URL 输入超过 255 个字符 3. 点击提交 |
| 预期结果 |
URL 字段下方提示"长度不能大于 255 个字符" |
| 实际结果 |
|
| 测试状态 |
⬜ 通过 / ⬜ 未通过 |
| 问题描述 |
|
| 项目 |
内容 |
| 测试步骤 |
1. 新增或编辑菜单 2. 排序号输入非数字字符 3. 点击提交 |
| 预期结果 |
排序号字段下方提示"必须为数字值" |
| 实际结果 |
|
| 测试状态 |
⬜ 通过 / ⬜ 未通过 |
| 问题描述 |
|
3.11 多语言切换
| 项目 |
内容 |
| 测试步骤 |
1. 切换到英文语言 2. 查看菜单配置页面 |
| 预期结果 |
所有标签、按钮、表单字段名、提示信息均切换为英文显示 |
| 实际结果 |
|
| 测试状态 |
⬜ 通过 / ⬜ 未通过 |
| 问题描述 |
|
| 项目 |
内容 |
| 测试步骤 |
在英文界面下执行:切换模块、新增顶层菜单、新增子菜单、编辑菜单、删除菜单、启用/禁用、拖拽排序 |
| 预期结果 |
所有功能正常运行,提示信息为英文 |
| 实际结果 |
|
| 测试状态 |
⬜ 通过 / ⬜ 未通过 |
| 问题描述 |
|
四、接口日志功能测试
迁移日期:2026-05-29
对应页面:src/views/system-administration/system-utilities/api-logs/index.vue
API 文件:src/api/system-administration/api-logs.js
路由路径:/system_settings/system_assistant/interface_log
页面结构:顶部搜索区域 + 数据表格 + 查看响应弹框组件
4.1 页面加载与数据展示
TC-API-001:接口日志页面正常加载
| 项目 |
内容 |
| 测试步骤 |
1. 登录系统 2. 点击菜单「系统设置 → 系统工具 → 接口日志」 |
| 预期结果 |
页面正常加载,显示接口日志列表表格,包含 ID、IP、请求方法、响应状态、响应时长、工序编码、托盘号、电池条码、批次号、进程ID、创建日期、操作列;底部分页组件显示总条数 |
| 实际结果 |
|
| 测试状态 |
⬜ 通过 / ⬜ 未通过 |
| 问题描述 |
|
TC-API-002:响应状态列显示正确
| 项目 |
内容 |
| 测试步骤 |
查看接口日志列表中各行的响应状态列 |
| 预期结果 |
状态为 0 时显示绿色 ✅ 图标 + "成功"文字;状态非 0 时显示红色 ❌ 图标 + "失败"文字 |
| 实际结果 |
|
| 测试状态 |
⬜ 通过 / ⬜ 未通过 |
| 问题描述 |
|
TC-API-003:表格列完整显示
| 项目 |
内容 |
| 测试步骤 |
1. 观察表格列头 2. 横向滚动查看所有列 |
| 预期结果 |
表格包含以下列:ID、IP、请求方法、响应状态、响应时长(毫秒)、工序编码、托盘号、电池条码、批次号、进程ID、创建日期、操作(共 12 列),操作列固定在右侧 |
| 实际结果 |
|
| 测试状态 |
⬜ 通过 / ⬜ 未通过 |
| 问题描述 |
|
4.2 搜索筛选
TC-API-004:按 IP 搜索
| 项目 |
内容 |
| 测试步骤 |
1. 在 IP 输入框输入已知 IP 地址 2. 点击「查询」按钮 |
| 预期结果 |
表格仅显示该 IP 来源的接口日志 |
| 实际结果 |
|
| 测试状态 |
⬜ 通过 / ⬜ 未通过 |
| 问题描述 |
|
TC-API-005:按接口名称搜索
| 项目 |
内容 |
| 测试步骤 |
1. 在接口名称输入框输入关键字 2. 点击「查询」按钮 |
| 预期结果 |
表格按接口名称过滤,仅显示匹配的记录 |
| 实际结果 |
|
| 测试状态 |
⬜ 通过 / ⬜ 未通过 |
| 问题描述 |
|
TC-API-006:按状态筛选
| 项目 |
内容 |
| 测试步骤 |
1. 在状态下拉框选择"成功" 2. 点击「查询」按钮 |
| 预期结果 |
表格仅显示响应状态为成功的日志记录 |
| 实际结果 |
|
| 测试状态 |
⬜ 通过 / ⬜ 未通过 |
| 问题描述 |
|
TC-API-007:按批次搜索
| 项目 |
内容 |
| 测试步骤 |
1. 在批次输入框输入已知批次号 2. 点击「查询」按钮 |
| 预期结果 |
表格仅显示该批次的日志记录 |
| 实际结果 |
|
| 测试状态 |
⬜ 通过 / ⬜ 未通过 |
| 问题描述 |
|
TC-API-008:按时间范围筛选
| 项目 |
内容 |
| 测试步骤 |
1. 在创建时间选择器中设置一个时间范围 2. 点击「查询」按钮 |
| 预期结果 |
表格仅显示该时间范围内的日志记录 |
| 实际结果 |
|
| 测试状态 |
⬜ 通过 / ⬜ 未通过 |
| 问题描述 |
|
TC-API-009:组合搜索
| 项目 |
内容 |
| 测试步骤 |
1. 同时设置多个搜索条件(如 IP + 状态 + 时间范围)2. 点击「查询」按钮 |
| 预期结果 |
表格按照所有条件的交集进行过滤显示 |
| 实际结果 |
|
| 测试状态 |
⬜ 通过 / ⬜ 未通过 |
| 问题描述 |
|
TC-API-010:重置搜索条件
| 项目 |
内容 |
| 测试步骤 |
1. 设置多个搜索条件并查询 2. 点击「重置」按钮 |
| 预期结果 |
所有搜索条件清空,表格恢复显示全部数据(第一页) |
| 实际结果 |
|
| 测试状态 |
⬜ 通过 / ⬜ 未通过 |
| 问题描述 |
|
4.3 分页功能
TC-API-011:分页切换
| 项目 |
内容 |
| 测试步骤 |
1. 切换每页显示条数(10 → 20 → 50)2. 点击下一页/上一页 |
| 预期结果 |
分页切换正常,表格数据按分页加载,总条数正确显示 |
| 实际结果 |
|
| 测试状态 |
⬜ 通过 / ⬜ 未通过 |
| 问题描述 |
|
4.4 查看响应
TC-API-012:打开查看响应弹框
| 项目 |
内容 |
| 测试步骤 |
点击任一接口日志行操作列的「查看响应」按钮 |
| 预期结果 |
弹出"响应"弹框,显示两段内容:请求体和响应内容,均为 JSON 树形结构展示 |
| 实际结果 |
|
| 测试状态 |
⬜ 通过 / ⬜ 未通过 |
| 问题描述 |
|
TC-API-013:复制请求内容
| 项目 |
内容 |
| 测试步骤 |
1. 打开查看响应弹框 2. 点击「复制请求内容」按钮 |
| 预期结果 |
请求体的 JSON 内容被复制到剪贴板,提示"操作成功" |
| 实际结果 |
|
| 测试状态 |
⬜ 通过 / ⬜ 未通过 |
| 问题描述 |
|
TC-API-014:复制响应内容
| 项目 |
内容 |
| 测试步骤 |
1. 打开查看响应弹框 2. 点击「复制响应内容」按钮 |
| 预期结果 |
响应内容的 JSON 被复制到剪贴板,提示"操作成功" |
| 实际结果 |
|
| 测试状态 |
⬜ 通过 / ⬜ 未通过 |
| 问题描述 |
|
TC-API-015:关闭响应弹框
| 项目 |
内容 |
| 测试步骤 |
1. 打开查看响应弹框 2. 点击弹框右上角 X 按钮或弹框遮罩层 |
| 预期结果 |
弹框关闭 |
| 实际结果 |
|
| 测试状态 |
⬜ 通过 / ⬜ 未通过 |
| 问题描述 |
|
TC-API-016:响应弹框 JSON 树形展开/折叠
| 项目 |
内容 |
| 测试步骤 |
1. 打开查看响应弹框 2. 点击请求体或响应内容 JSON 树中的展开/折叠箭头 |
| 预期结果 |
JSON 节点可正常展开/折叠,嵌套数据层级清晰可见 |
| 实际结果 |
|
| 测试状态 |
⬜ 通过 / ⬜ 未通过 |
| 问题描述 |
|
TC-API-017:切换不同行的响应数据
| 项目 |
内容 |
| 测试步骤 |
1. 点击第 1 行「查看响应」→ 记下内容后关闭 2. 点击第 3 行「查看响应」 |
| 预期结果 |
每次打开的弹框显示对应行的请求体和响应内容,数据不混淆 |
| 实际结果 |
|
| 测试状态 |
⬜ 通过 / ⬜ 未通过 |
| 问题描述 |
|
4.5 多语言切换
TC-API-018:切换到英文
| 项目 |
内容 |
| 测试步骤 |
1. 切换到英文语言 2. 查看接口日志页面 |
| 预期结果 |
所有标签、按钮、表头、弹框标题均切换为英文显示;状态列显示 "Success" / "Failure" |
| 实际结果 |
|
| 测试状态 |
⬜ 通过 / ⬜ 未通过 |
| 问题描述 |
|
TC-API-019:英文下搜索功能正常
| 项目 |
内容 |
| 测试步骤 |
在英文界面下执行:按 IP 搜索、按状态筛选、查看响应、复制请求/响应内容 |
| 预期结果 |
所有功能正常运行,提示信息为英文 |
| 实际结果 |
|
| 测试状态 |
⬜ 通过 / ⬜ 未通过 |
| 问题描述 |
|
TC-API-020:英文下查看响应弹框正常
| 项目 |
内容 |
| 测试步骤 |
1. 切换到英文 2. 点击「View Response」打开弹框 |
| 预期结果 |
弹框标题为 "Response",分隔标题为 "Request Body" / "Response Body",按钮文字为 "Copy Request" / "Copy Response" |
| 实际结果 |
|
| 测试状态 |
⬜ 通过 / ⬜ 未通过 |
| 问题描述 |
|
五、操作日志功能测试
迁移日期:2026-05-29
对应页面:src/views/system-administration/system-utilities/operation-logs/index.vue
API 文件:src/api/system-administration/operation-logs.js
路由路径:/system_settings/system_assistant/operate_log
页面结构:折叠式搜索区 + 数据表格 + 查看响应弹框(复用)
5.1 页面加载与数据展示
TC-OPL-001:操作日志页面正常加载
| 项目 |
内容 |
| 测试步骤 |
1. 登录系统 2. 点击菜单「系统设置 → 系统工具 → 操作日志」 |
| 预期结果 |
页面正常加载,显示操作日志列表表格,包含 ID、操作人、IP、状态、操作动作名称、操作动作编码、请求路径、批次、托盘号、创建日期、操作列;底部显示分页组件和总条数 |
| 实际结果 |
|
| 测试状态 |
⬜ 通过 / ⬜ 未通过 |
| 问题描述 |
|
TC-OPL-002:响应状态列显示正确
| 项目 |
内容 |
| 测试步骤 |
查看操作日志列表中各行的状态列 |
| 预期结果 |
状态为 0 时显示绿色 ✅ + "成功"文字;状态非 0 时显示红色 ❌ + "失败"文字 |
| 实际结果 |
|
| 测试状态 |
⬜ 通过 / ⬜ 未通过 |
| 问题描述 |
|
TC-OPL-003:表格列完整显示
| 项目 |
内容 |
| 测试步骤 |
1. 观察表格列头 2. 横向滚动查看所有列 |
| 预期结果 |
表格包含以下列:ID、操作人、IP、状态、操作动作名称、操作动作编码、请求路径、批次、托盘号、创建日期、操作(共 11 列),操作列固定在右侧 |
| 实际结果 |
|
| 测试状态 |
⬜ 通过 / ⬜ 未通过 |
| 问题描述 |
|
5.2 搜索筛选
TC-OPL-004:按 IP 搜索
| 项目 |
内容 |
| 测试步骤 |
1. 在 IP 输入框输入已知 IP 地址 2. 点击「查询」按钮 |
| 预期结果 |
表格仅显示该 IP 来源的操作日志 |
| 实际结果 |
|
| 测试状态 |
⬜ 通过 / ⬜ 未通过 |
| 问题描述 |
|
TC-OPL-005:按操作人搜索
| 项目 |
内容 |
| 测试步骤 |
1. 在操作人下拉框选择一个用户 2. 点击「查询」按钮 |
| 预期结果 |
表格仅显示该操作人的日志;下拉框支持输入关键字搜索过滤 |
| 实际结果 |
|
| 测试状态 |
⬜ 通过 / ⬜ 未通过 |
| 问题描述 |
|
TC-OPL-006:展开更多搜索条件
| 项目 |
内容 |
| 测试步骤 |
1. 点击「展开更多」按钮 2. 观察搜索区 |
| 预期结果 |
搜索区展开显示额外条件:批次、托盘号、创建时间(时间范围选择器);按钮变为「收起」图标向上 |
| 实际结果 |
|
| 测试状态 |
⬜ 通过 / ⬜ 未通过 |
| 问题描述 |
|
TC-OPL-007:折叠搜索条件
| 项目 |
内容 |
| 测试步骤 |
1. 先展开搜索区 2. 点击「收起」按钮 |
| 预期结果 |
额外搜索条件隐藏,搜索区恢复为单行;按钮变回「展开更多」图标向下 |
| 实际结果 |
|
| 测试状态 |
⬜ 通过 / ⬜ 未通过 |
| 问题描述 |
|
TC-OPL-008:组合搜索
| 项目 |
内容 |
| 测试步骤 |
1. 同时设置多个搜索条件(如 IP + 操作人 + 时间范围)2. 点击「查询」按钮 |
| 预期结果 |
表格按照所有条件的交集进行过滤显示 |
| 实际结果 |
|
| 测试状态 |
⬜ 通过 / ⬜ 未通过 |
| 问题描述 |
|
TC-OPL-009:重置搜索条件
| 项目 |
内容 |
| 测试步骤 |
1. 设置搜索条件并查询 2. 点击「重置」按钮 |
| 预期结果 |
所有搜索条件清空,下拉框恢复默认,表格恢复显示全部数据(第一页) |
| 实际结果 |
|
| 测试状态 |
⬜ 通过 / ⬜ 未通过 |
| 问题描述 |
|
5.3 分页功能
TC-OPL-010:分页切换
| 项目 |
内容 |
| 测试步骤 |
1. 切换每页显示条数(10 → 20 → 50)2. 点击下一页/上一页 |
| 预期结果 |
分页切换正常,表格数据按分页加载,总条数正确显示 |
| 实际结果 |
|
| 测试状态 |
⬜ 通过 / ⬜ 未通过 |
| 问题描述 |
|
5.4 查看响应
TC-OPL-011:打开查看响应弹框
| 项目 |
内容 |
| 测试步骤 |
点击任一操作日志行操作列的「查看响应」按钮 |
| 预期结果 |
弹出"响应"弹框,显示两段 JSON 树形结构:请求体和响应内容 |
| 实际结果 |
|
| 测试状态 |
⬜ 通过 / ⬜ 未通过 |
| 问题描述 |
|
TC-OPL-012:复制请求内容
| 项目 |
内容 |
| 测试步骤 |
1. 打开查看响应弹框 2. 点击「复制请求内容」按钮 |
| 预期结果 |
请求体的 JSON 被复制到剪贴板,提示"操作成功" |
| 实际结果 |
|
| 测试状态 |
⬜ 通过 / ⬜ 未通过 |
| 问题描述 |
|
TC-OPL-013:复制响应内容
| 项目 |
内容 |
| 测试步骤 |
1. 打开查看响应弹框 2. 点击「复制响应内容」按钮 |
| 预期结果 |
响应内容的 JSON 被复制到剪贴板,提示"操作成功" |
| 实际结果 |
|
| 测试状态 |
⬜ 通过 / ⬜ 未通过 |
| 问题描述 |
|
TC-OPL-014:关闭响应弹框
| 项目 |
内容 |
| 测试步骤 |
1. 打开查看响应弹框 2. 点击弹框右上角 X 或遮罩层 |
| 预期结果 |
弹框关闭 |
| 实际结果 |
|
| 测试状态 |
⬜ 通过 / ⬜ 未通过 |
| 问题描述 |
|
5.5 多语言切换
TC-OPL-015:切换到英文
| 项目 |
内容 |
| 测试步骤 |
1. 切换到英文语言 2. 查看操作日志页面 |
| 预期结果 |
所有标签、按钮、表头、弹框均切换为英文;状态列显示 "Success" / "Failure" |
| 实际结果 |
|
| 测试状态 |
⬜ 通过 / ⬜ 未通过 |
| 问题描述 |
|
TC-OPL-016:英文下搜索功能正常
| 项目 |
内容 |
| 测试步骤 |
在英文界面下执行:按 IP 搜索、按操作人筛选、展开/收起搜索区 |
| 预期结果 |
所有功能正常运行,提示信息为英文;操作人下拉框显示英文用户名 |
| 实际结果 |
|
| 测试状态 |
⬜ 通过 / ⬜ 未通过 |
| 问题描述 |
|
TC-OPL-017:英文下查看响应弹框正常
| 项目 |
内容 |
| 测试步骤 |
1. 切换到英文 2. 点击「View Response」打开弹框 |
| 预期结果 |
弹框标题 "Response",分隔标题 "Request Body" / "Response Content",按钮 "Copy Request Content" / "Copy Response Content" |
| 实际结果 |
|
| 测试状态 |
⬜ 通过 / ⬜ 未通过 |
| 问题描述 |
|
TC-OPL-018:表格无选中框
| 项目 |
内容 |
| 测试步骤 |
查看操作日志表格的左侧 |
| 预期结果 |
表格左侧无复选框选中列(只读页面,无需批量操作) |
| 实际结果 |
|
| 测试状态 |
⬜ 通过 / ⬜ 未通过 |
| 问题描述 |
|
六、问题帮助功能测试
迁移日期:2026-05-29
对应页面:src/views/system-administration/system-utilities/problem-help/index.vue
API 文件:src/api/system-administration/problem-help.js
路由路径:/system_settings/system_assistant/problem_help
页面结构:搜索区 + 左侧树形菜单 + 右侧 Markdown 预览 + 分类弹框 + 文档编辑抽屉
6.1 页面加载与数据展示
TC-PHP-001:问题帮助页面正常加载
| 项目 |
内容 |
| 测试前置条件 |
系统中已存在问题帮助的分类目录和文档数据 |
| 测试步骤 |
1. 登录系统 2. 点击菜单「系统设置 → 系统工具 → 问题帮助」 |
| 预期结果 |
页面正常加载,左侧显示树形分类菜单,右侧显示空白提示"请从左侧菜单选择文档查看" |
| 实际结果 |
|
| 测试状态 |
⬜ 通过 / ⬜ 未通过 |
| 问题描述 |
|
TC-PHP-002:树形菜单展示完整
| 项目 |
内容 |
| 测试步骤 |
观察左侧树形菜单 |
| 预期结果 |
菜单以树形层级结构展示所有分类目录和文档节点;md 类型文档显示文件夹图标 📁,file 类型文档显示文件图标 📄 |
| 实际结果 |
|
| 测试状态 |
⬜ 通过 / ⬜ 未通过 |
| 问题描述 |
|
TC-PHP-003:点击文档查看内容
| 项目 |
内容 |
| 测试前置条件 |
树形菜单中存在 md 类型的文档 |
| 测试步骤 |
1. 展开树形菜单的分类目录 2. 点击一个 md 文档节点 |
| 预期结果 |
右侧区域显示 Markdown 渲染后的文档内容,包含标题、提交人、创建时间信息 |
| 实际结果 |
|
| 测试状态 |
⬜ 通过 / ⬜ 未通过 |
| 问题描述 |
|
TC-PHP-004:树菜单展开/折叠
| 项目 |
内容 |
| 测试步骤 |
1. 点击一个分类目录展开其子节点 2. 点击另一个分类目录 |
| 预期结果 |
树形菜单支持唯一展开(展开新分类时旧分类自动收起),子节点列表正常显示 |
| 实际结果 |
|
| 测试状态 |
⬜ 通过 / ⬜ 未通过 |
| 问题描述 |
|
6.2 搜索功能
TC-PHP-005:搜索文档
| 项目 |
内容 |
| 测试前置条件 |
系统中存在包含搜索关键字的文档 |
| 测试步骤 |
1. 在顶部搜索框输入文档标题关键字 2. 点击搜索按钮或按 Enter |
| 预期结果 |
如果查找结果存在数据,左侧树形菜单上方出现搜索结果卡片区域,显示匹配的文档标题和描述;如果没有匹配数据,无结果展示 |
| 实际结果 |
|
| 测试状态 |
⬜ 通过 / ⬜ 未通过 |
| 问题描述 |
|
TC-PHP-006:清除搜索结果
| 项目 |
内容 |
| 测试步骤 |
1. 执行搜索出现结果后 2. 点击搜索输入框的清除按钮 |
| 预期结果 |
搜索结果区域消失,恢复显示树形菜单 |
| 实际结果 |
|
| 测试状态 |
⬜ 通过 / ⬜ 未通过 |
| 问题描述 |
|
TC-PHP-007:搜索空内容
| 项目 |
内容 |
| 测试步骤 |
不输入任何内容,直接点击搜索按钮 |
| 预期结果 |
搜索结果区域清空 / 不出现搜索结果 |
| 实际结果 |
|
| 测试状态 |
⬜ 通过 / ⬜ 未通过 |
| 问题描述 |
|
6.3 分类目录管理
TC-PHP-008:新增分类目录
| 项目 |
内容 |
| 测试步骤 |
1. 点击搜索框旁的「新增目录」按钮 2. 在弹框中填写分类名称 3. 选择上级菜单(可选)4. 选择查看权限角色 5. 设置序号 6. 点击「确定」 |
| 预期结果 |
提示"添加成功",弹框关闭,树形菜单中显示新分类 |
| 实际结果 |
|
| 测试状态 |
⬜ 通过 / ⬜ 未通过 |
| 问题描述 |
|
TC-PHP-009:编辑分类目录
| 项目 |
内容 |
| 测试前置条件 |
先在树形菜单上选中一个分类目录 |
| 测试步骤 |
1. 点击树形菜单中的一个分类节点使其被选中 2. 点击左侧工具栏的「编辑」按钮 3. 修改分类名称 4. 点击「修改」 |
| 预期结果 |
提示"修改成功",弹框关闭,树形菜单中的分类名称更新 |
| 实际结果 |
|
| 测试状态 |
⬜ 通过 / ⬜ 未通过 |
| 问题描述 |
|
TC-PHP-010:删除分类目录
| 项目 |
内容 |
| 测试前置条件 |
先在树形菜单上选中一个分类目录 |
| 测试步骤 |
1. 点击分类节点使其选中 2. 点击「删除」按钮 3. 确认删除弹框 |
| 预期结果 |
删除确认弹框出现,确认后提示"删除成功",树形菜单刷新 |
| 实际结果 |
|
| 测试状态 |
⬜ 通过 / ⬜ 未通过 |
| 问题描述 |
|
TC-PHP-011:未选中分类时编辑/删除提示
| 项目 |
内容 |
| 测试步骤 |
1. 不选中任何树节点 2. 直接点击「编辑」或「删除」按钮 |
| 预期结果 |
弹出提示"请先选择需要编辑的目录"或"请先选择需要删除的目录" |
| 实际结果 |
|
| 测试状态 |
⬜ 通过 / ⬜ 未通过 |
| 问题描述 |
|
TC-PHP-012:取消删除操作
| 项目 |
内容 |
| 测试步骤 |
1. 选中分类后点击「删除」2. 在确认弹框中点击「取消」 |
| 预期结果 |
删除操作取消,分类不丢失 |
| 实际结果 |
|
| 测试状态 |
⬜ 通过 / ⬜ 未通过 |
| 问题描述 |
|
6.4 文档管理
TC-PHP-013:新增文档
| 项目 |
内容 |
| 测试步骤 |
1. 点击左侧工具栏「新增文档」2. 在抽屉中填写标题、描述 3. 选择上级分类菜单 4. 选择权限角色 5. 设置序号 6. 在 Markdown 编辑器中输入内容 7. 点击「新增」 |
| 预期结果 |
提示"新增成功",抽屉关闭,树形菜单中显示新文档 |
| 实际结果 |
|
| 测试状态 |
⬜ 通过 / ⬜ 未通过 |
| 问题描述 |
|
TC-PHP-014:编辑文档
| 项目 |
内容 |
| 测试步骤 |
1. 在树形菜单中找到 md 文档节点 2. 点击文档右侧的「编辑」按钮 |
| 预期结果 |
打开编辑抽屉,回填该文档的标题、描述、分类、内容等数据 |
| 实际结果 |
|
| 测试状态 |
⬜ 通过 / ⬜ 未通过 |
| 问题描述 |
|
TC-PHP-015:删除文档
| 项目 |
内容 |
| 测试步骤 |
1. 在树形菜单中文档节点右侧点击「删除」2. 确认删除 |
| 预期结果 |
弹出确认框,确认后提示"删除成功",树形菜单刷新 |
| 实际结果 |
|
| 测试状态 |
⬜ 通过 / ⬜ 未通过 |
| 问题描述 |
|
TC-PHP-016:编辑抽屉关闭确认
| 项目 |
内容 |
| 测试步骤 |
1. 打开新增文档抽屉并填写部分内容 2. 直接点击抽屉遮罩层或右上角 X 关闭 |
| 预期结果 |
弹出"确认关闭?"确认框,确认后抽屉关闭,表单重置 |
| 实际结果 |
|
| 测试状态 |
⬜ 通过 / ⬜ 未通过 |
| 问题描述 |
|
TC-PHP-017:文档表单验证
| 项目 |
内容 |
| 测试步骤 |
1. 打开新增文档抽屉 2. 不填写标题直接点击「新增」 |
| 预期结果 |
表单验证提示"请输入标题"和"请输入描述",阻止提交 |
| 实际结果 |
|
| 测试状态 |
⬜ 通过 / ⬜ 未通过 |
| 问题描述 |
|
6.5 多语言切换
TC-PHP-018:切换到英文
| 项目 |
内容 |
| 测试步骤 |
1. 切换到英文语言 2. 查看问题帮助页面 |
| 预期结果 |
所有标签、按钮、弹框标题均切换为英文;工具栏显示 "Add Directory"、"Add Document"、"Edit"、"Delete" |
| 实际结果 |
|
| 测试状态 |
⬜ 通过 / ⬜ 未通过 |
| 问题描述 |
|
TC-PHP-019:英文下搜索功能正常
| 项目 |
内容 |
| 测试步骤 |
在英文界面下执行:搜索文档、查看搜索结果、清除搜索 |
| 预期结果 |
所有功能正常运行,提示信息为英文 |
| 实际结果 |
|
| 测试状态 |
⬜ 通过 / ⬜ 未通过 |
| 问题描述 |
|
TC-PHP-020:英文下分类弹框正常
| 项目 |
内容 |
| 测试步骤 |
1. 切换到英文 2. 点击「Add Directory」打开分类弹框 |
| 预期结果 |
弹框标题为 "Add Category" 或 "Edit Category",表单字段标签为英文,底部按钮为 "Confirm" / "Cancel" |
| 实际结果 |
|
| 测试状态 |
⬜ 通过 / ⬜ 未通过 |
| 问题描述 |
|
TC-PHP-021:英文下Markdown编辑器正常
| 项目 |
内容 |
| 测试步骤 |
1. 切换到英文 2. 点击「Add Document」打开编辑器抽屉 |
| 预期结果 |
抽屉标题和表单标签为英文;验证提示信息为英文 |
| 实际结果 |
|
| 测试状态 |
⬜ 通过 / ⬜ 未通过 |
| 问题描述 |
|
测试结果汇总
| 功能模块 |
测试用例数 |
通过 |
未通过 |
通过率 |
| 角色管理 |
24 |
|
|
|
| 用户管理 |
33 |
|
|
|
| 菜单配置 |
37 |
|
|
|
| 接口日志 |
20 |
|
|
|
| 操作日志 |
18 |
|
|
|
| 问题帮助 |
21 |
|
|
|
| 合计 |
153 |
|
|
|
版本记录:
- v1.0 (2026-05-28):初始版本,包含角色管理功能(24 条用例)
- v1.1 (2026-05-28):追加用户管理功能(33 条用例)
- v1.2 (2026-05-29):追加菜单配置功能(37 条用例)
- v1.3 (2026-05-29):追加接口日志功能(20 条用例)
- v1.4 (2026-05-29):追加操作日志功能(18 条用例)
- v1.5 (2026-05-29):追加问题帮助功能(21 条用例)