# 测试用例清单 ## 1. 测试说明 ### 1.1 测试范围 | 范围 | 内容 | | --- | --- | | 接口测试 | 认证、订单、审批、客户、产品、工厂、司机任务、物流、AI、提醒、报表、配置、审计 | | 页面测试 | Vue 业务员端、Vue 管理后台、管理层小程序、司机小程序 | | 流程测试 | 订单主流程、取消流程、司机履约、欠款生成、提醒、报表导出 | | 权限测试 | 业务员、管理层、司机、管理员 | | 异常测试 | 参数错误、状态非法、越权、第三方失败、上传失败 | ### 1.2 测试账号 | 角色 | 账号建议 | 权限范围 | | --- | --- | --- | | 管理员 | `admin01` | 全量后台管理 | | 管理层 | `manager01` | 审批、利润、报表、任务分配 | | 业务员 A | `sales01` | 本人订单、客户、提醒 | | 业务员 B | `sales02` | 本人订单、客户、提醒 | | 司机 A | `driver01` | 本人司机任务 | | 司机 B | `driver02` | 本人司机任务 | ### 1.3 测试数据 | 数据 | 要求 | | --- | --- | | 客户 | 至少 2 个不同业务员客户,含月结客户 | | 产品 | 至少 2 个分类,含工业品、日用品或自定义分类 | | 工厂 | 至少 2 个不同模板类型工厂 | | 订单 | 草稿、待审核、已通过、取消申请中、履约中、已送达、已结算 | | 司机任务 | 待接单、已接单、已揽货、已送达 | ## 2. 认证与权限测试 | 用例编号 | 用例名称 | 前置条件 | 步骤 | 预期结果 | | --- | --- | --- | --- | --- | | AUTH-001 | 正常登录 | 用户启用 | 输入正确账号、密码、角色登录 | 返回 token、用户信息、菜单、权限 | | AUTH-002 | 密码错误 | 用户存在 | 输入错误密码登录 | 返回 `40002` | | AUTH-003 | 角色不匹配 | 业务员账号存在 | 使用 manager 角色登录 | 返回 `40003` | | AUTH-004 | 停用用户登录 | 用户状态停用 | 登录 | 返回 `40003` | | AUTH-005 | 无 token 访问 | 无 | 请求受保护接口 | 返回 `40002` | | AUTH-006 | 过期 token 访问 | token 过期 | 请求受保护接口 | 返回 `40002` | | AUTH-007 | 业务员越权看他人订单 | sales01、sales02 均有订单 | sales01 请求 sales02 订单详情 | 返回 `40003` 或 `40004` | | AUTH-008 | 司机越权看他人任务 | driver01、driver02 均有任务 | driver01 请求 driver02 任务详情 | 返回 `40003` 或 `40004` | | AUTH-009 | 司机看财务字段 | 司机任务存在 | 查看任务详情 | 不返回客户敏感信息、报价、成本、利润、回扣 | ## 3. 客户管理测试 | 用例编号 | 用例名称 | 前置条件 | 步骤 | 预期结果 | | --- | --- | --- | --- | --- | | CUS-001 | 新增客户成功 | 无重复客户 | 提交姓名、手机号等信息 | 返回客户 ID,数据库写入 | | CUS-002 | 姓名手机号重复 | 已有同姓名同手机号 | 再次新增 | 返回 `40006` | | CUS-003 | 手机号为空 | 无 | 新增客户不填手机号 | 返回 `40001` | | CUS-004 | 客户列表筛选 | 多客户数据 | 按姓名、手机号、业务员筛选 | 返回符合条件数据 | | CUS-005 | 客户详情 | 客户存在 | 请求详情 | 返回结算方式、账期、欠款、归属业务员 | | CUS-006 | 客户导入成功 | OSS 有导入文件 | 调用导入接口 | 返回总数、成功数、失败数 | | CUS-007 | 客户导入去重 | 文件含重复姓名手机号 | 导入 | 重复记录计入 duplicate_count | | CUS-008 | 业务员客户范围 | sales01 有客户 | sales02 查询客户列表 | 不返回 sales01 私有客户 | ## 4. 产品与分类测试 | 用例编号 | 用例名称 | 前置条件 | 步骤 | 预期结果 | | --- | --- | --- | --- | --- | | PROD-001 | 新增产品分类 | 管理员登录 | 新增分类 | 分类可在列表查询 | | PROD-002 | 分类编码重复 | 已有分类编码 | 新增同编码分类 | 返回 `40006` | | PROD-003 | 停用分类 | 分类存在 | 停用分类 | 新建产品不可选择或提示禁用 | | PROD-004 | 新增产品成功 | 分类启用 | 新增产品 | 产品写入并关联分类 | | PROD-005 | 产品列表筛选 | 多产品 | 按名称、规格、分类、状态筛选 | 返回符合条件数据 | | PROD-006 | 产品详情 | 产品存在 | 请求详情 | 返回分类、成本、售价、状态 | | PROD-007 | 禁用产品下单 | 产品禁用 | 订单选择该产品提交 | 拦截或明确提示 | | PROD-008 | 产品快照 | 产品已用于订单 | 修改产品名称/成本 | 历史订单快照不变 | ## 5. 订单主流程测试 | 用例编号 | 用例名称 | 前置条件 | 步骤 | 预期结果 | | --- | --- | --- | --- | --- | | ORD-001 | 创建草稿订单 | 业务员登录、产品存在 | 填写客户、明细、费用提交 | 返回订单 ID,状态 `draft` | | ORD-002 | 新客户自动入库 | 客户库无该客户 | 创建订单 | 自动创建客户 | | ORD-003 | 利润计算 | 销售 100、成本 60、回扣 5、运费 10、税费 3、其他 2 | 创建订单 | 利润 20,利润率 20% | | ORD-004 | 固定提成保存 | 输入固定提成 50 | 创建订单 | `commission_amount=50` | | ORD-005 | 明细为空 | 无明细 | 创建订单 | 返回 `40001` | | ORD-006 | 数量非法 | 数量为 0 | 创建订单 | 返回 `40001` | | ORD-007 | 提交审核成功 | 订单为 `draft` | 提交审核 | 状态变为 `pending_approve` | | ORD-008 | 重复提交 | 订单已 `pending_approve` | 再次提交 | 返回 `40005` | | ORD-009 | 管理层审批通过 | 订单 `pending_approve` | 管理层通过 | 状态变为 `approved` | | ORD-010 | 管理层审批退回 | 订单 `pending_approve` | 管理层退回并填写意见 | 状态变为 `rejected`,业务员收到通知 | | ORD-011 | 生成下发文本 | 订单 `approved` | 生成下发文本 | 返回文本内容 | | ORD-012 | 确认下发工厂 | 订单 `approved` | 确认下发 | 状态变为 `pending_factory` | | ORD-013 | 非 approved 确认下发 | 订单 `draft` | 确认下发 | 返回 `40005` | | ORD-014 | 订单列表筛选 | 多订单 | 按状态、客户、时间筛选 | 返回符合条件数据 | | ORD-015 | 订单详情字段权限 | 业务员登录 | 查看本人订单详情 | 不返回成本、利润等无权限字段 | | ORD-016 | 管理层订单详情 | 管理层登录 | 查看订单详情 | 返回完整财务字段 | ## 6. 订单取消流程测试 | 用例编号 | 用例名称 | 前置条件 | 步骤 | 预期结果 | | --- | --- | --- | --- | --- | | CAN-001 | 草稿订单取消 | 订单 `draft` | 业务员提交取消 | 状态直接 `canceled` | | CAN-002 | 待审核订单取消 | 订单 `pending_approve` | 业务员提交取消 | 状态直接 `canceled` | | CAN-003 | 已审批订单取消申请 | 订单 `approved` | 业务员提交取消 | 状态 `cancel_pending`,记录取消前状态 | | CAN-004 | 履约中订单取消申请 | 订单 `picked_up` | 业务员提交取消 | 状态 `cancel_pending` | | CAN-005 | 取消审批通过 | 订单 `cancel_pending` | 管理层同意 | 状态 `canceled` | | CAN-006 | 取消审批拒绝 | 订单 `cancel_pending` 且原状态 `approved` | 管理层拒绝 | 状态恢复 `approved` | | CAN-007 | 已取消再次取消 | 订单 `canceled` | 提交取消 | 返回 `40005` | | CAN-008 | 取消原因必填 | 可取消订单 | 不填原因提交 | 返回 `40001` | ## 7. 司机任务与履约测试 | 用例编号 | 用例名称 | 前置条件 | 步骤 | 预期结果 | | --- | --- | --- | --- | --- | | TASK-001 | 管理层创建任务 | 订单可履约、司机存在 | 填写任务并保存 | 返回任务 ID,状态 `pending` | | TASK-002 | 司机任务列表 | driver01 有任务 | driver01 查看列表 | 只显示本人任务 | | TASK-003 | 任务详情脱敏 | 任务存在 | 司机查看详情 | 不显示客户敏感信息和财务字段 | | TASK-004 | 接单成功 | 任务 `pending` | 司机接单 | 状态 `accepted`,记录接单时间 | | TASK-005 | 重复接单 | 任务已 `accepted` | 再次接单 | 返回 `40005` | | TASK-006 | 揽货成功 | 任务 `accepted` | 上传照片确认揽货 | 状态 `picked_up`,附件写入 | | TASK-007 | 揽货无照片 | 任务 `accepted` | 不上传照片确认 | 返回 `40001` 或业务错误 | | TASK-008 | 送达成功 | 任务 `picked_up` | 确认送达 | 状态 `delivered`,订单状态联动 | | TASK-009 | 非法送达 | 任务 `pending` | 直接送达 | 返回 `40005` | | TASK-010 | 司机越权操作 | driver01 操作 driver02 任务 | 接单/揽货/送达 | 返回 `40003` | ## 8. 文件与 OSS 测试 | 用例编号 | 用例名称 | 前置条件 | 步骤 | 预期结果 | | --- | --- | --- | --- | --- | | FILE-001 | 获取上传凭证 | 用户登录 | 请求上传凭证 | 返回 upload_url、file_url、expire_at | | FILE-002 | 图片上传成功 | OSS 可用 | 上传图片并保存附件 | `file_attachment` 写入 image 元数据 | | FILE-003 | 视频上传成功 | OSS 可用 | 上传视频并保存附件 | `file_attachment` 写入 video 元数据 | | FILE-004 | 文件过大 | 设置上传限制 | 上传超限文件 | 返回 `40008` 或明确错误 | | FILE-005 | OSS 失败 | 模拟 OSS 异常 | 上传 | 返回 `40008`,记录日志 | | FILE-006 | 附件关联 | 任务存在 | 上传任务附件 | 附件 biz_type/biz_id 正确 | ## 9. 物流与 AI 测试 | 用例编号 | 用例名称 | 前置条件 | 步骤 | 预期结果 | | --- | --- | --- | --- | --- | | LOG-001 | 手动新增物流节点 | 订单存在 | 新增节点 | `logistics_trace` 写入 | | LOG-002 | 物流轨迹查询 | 订单有节点 | 查询轨迹 | 按时间返回节点 | | LOG-003 | 物流超时提醒 | 首节点后 48 小时无流转 | 执行提醒检查 | 生成一次提醒 | | LOG-004 | 物流超时不重复提醒 | 已提醒 | 再次执行检查 | 不重复生成 | | AI-001 | OCR 识别成功 | OSS 图片存在,阿里云凭证有效 | 发起识别 | 保存 raw_result、confidence、suggested_result | | AI-002 | OCR 识别失败 | 模拟阿里云失败 | 发起识别 | 返回 `40009`,记录异常 | | AI-003 | 人工修正 | 识别记录存在 | 提交 corrected_result | 保存修正结果,不覆盖原始结果 | | AI-004 | 识别结果人工确认 | 识别出疑似订单 | 页面确认 | 不自动审批、不自动合并 | ## 10. 欠款与提醒测试 | 用例编号 | 用例名称 | 前置条件 | 步骤 | 预期结果 | | --- | --- | --- | --- | --- | | ARR-001 | delivered 模式生成欠款 | 配置 `arrears_generate_mode=delivered` | 订单送达 | 生成欠款记录 | | ARR-002 | shipped 模式生成欠款 | 配置 `arrears_generate_mode=shipped` | 订单发货 | 生成欠款记录 | | ARR-003 | 未到节点不生成欠款 | 配置 delivered,订单 shipped | 检查欠款 | 不生成 | | ARR-004 | 结算关闭欠款 | 欠款 pending/overdue | 执行结算 | 状态 closed 或 paid,记录关闭时间 | | ARR-005 | 欠款超期提醒 | 欠款超过账期 | 执行提醒检查 | 生成业务员提醒 | | ARR-006 | 沉默客户提醒 | 客户超过周期未下单且金额达阈值 | 执行检查 | 生成提醒 | | ARR-007 | 沉默客户低金额不提醒 | 金额低于阈值 | 执行检查 | 不生成提醒 | | ARR-008 | 提醒已读 | 提醒存在 | 标记已读 | 状态 read | ## 11. 报表测试 | 用例编号 | 用例名称 | 前置条件 | 步骤 | 预期结果 | | --- | --- | --- | --- | --- | | REP-001 | 月度统计 | 多订单跨月份 | 查询月报 | 按月份汇总正确 | | REP-002 | 季度统计 | 多订单跨季度 | 查询季报 | 按季度汇总正确 | | REP-003 | 年度统计 | 多订单跨年份 | 查询年报 | 按年份汇总正确 | | REP-004 | 分类统计 | 产品分类存在 | 查询报表 | 按分类金额汇总正确 | | REP-005 | 固定提成统计 | 订单有 commission_amount | 查询报表 | 提成金额按订单固定值汇总 | | REP-006 | 电商订单剔除 | 存在电商来源订单 | 查询报表 | 按规则剔除或可配置剔除 | | REP-007 | 报表导出 | 查询条件存在 | 点击导出 | 返回 file_url,文件内容与页面一致 | ## 12. 系统配置与审计测试 | 用例编号 | 用例名称 | 前置条件 | 步骤 | 预期结果 | | --- | --- | --- | --- | --- | | CFG-001 | 查询配置 | 配置存在 | 查询 config_key | 返回配置值 | | CFG-002 | 更新配置 | 管理员登录 | 更新欠款生成模式 | 保存成功,写审计日志 | | CFG-003 | 非管理员更新配置 | 业务员登录 | 更新配置 | 返回 `40003` | | AUD-001 | 订单创建审计 | 创建订单 | 查询审计日志 | 有 create order 记录 | | AUD-002 | 审批审计 | 审批订单 | 查询审计日志 | 有 approve 记录 | | AUD-003 | 取消审计 | 取消订单 | 查询审计日志 | 有 cancel 记录 | | AUD-004 | 司机操作审计 | 接单/揽货/送达 | 查询审计日志 | 有对应记录 | | AUD-005 | OSS 上传审计 | 上传附件 | 查询审计日志 | 有上传记录或文件记录 | ## 13. 系统管理测试 | 用例编号 | 用例名称 | 前置条件 | 步骤 | 预期结果 | | --- | --- | --- | --- | --- | | SYS-001 | 新增用户成功 | 管理员登录,角色已存在 | 新增账号、姓名、手机号、角色、初始密码 | 返回用户 ID,用户可正常登录 | | SYS-002 | 用户账号重复 | 已存在 username | 新增同 username 用户 | 返回 `40006` | | SYS-003 | 用户角色不存在 | role_id 不存在或停用 | 新增或更新用户 | 返回 `40004` | | SYS-004 | 停用用户 | 用户启用 | 管理员停用用户后,该用户登录 | 停用成功,登录返回 `40003` | | SYS-005 | 重置密码 | 用户存在 | 管理员重置密码,用户用新密码登录 | 新密码可登录,旧密码不可登录 | | SYS-006 | 新增角色成功 | 管理员登录 | 新增 role_name、role_code、状态 | 返回角色 ID,角色列表可查询 | | SYS-007 | 角色编码重复 | 已存在 role_code | 新增同 role_code 角色 | 返回 `40006` | | SYS-008 | 停用有启用用户的角色 | 角色下存在启用用户 | 停用角色 | 返回 `40007` 或要求先处理用户 | | SYS-009 | 新增菜单成功 | 管理员登录 | 新增菜单名称、路径、权限编码 | 菜单树可查询到新菜单 | | SYS-010 | 菜单权限编码重复 | 已存在 permission_code | 新增同编码菜单 | 返回 `40006` | | SYS-011 | 菜单父级非法 | 将菜单父级设置为自身或子级 | 更新菜单 | 返回 `40007` | | SYS-012 | 角色授权保存 | 角色、菜单存在 | 给角色配置 menu_ids 和 permission_codes | 保存成功,重新登录后菜单和按钮权限生效 | | SYS-013 | 非管理员访问系统管理接口 | 业务员或司机登录 | 请求用户/角色/菜单管理接口 | 返回 `40003` | | SYS-014 | 权限变更审计 | 修改角色授权 | 查询审计日志 | 有授权前后差异记录 | ## 14. 页面端到端测试 | 用例编号 | 用例名称 | 端 | 步骤 | 预期结果 | | --- | --- | --- | --- | --- | | E2E-001 | 业务员完整录单 | Vue 业务员端 | 登录、创建订单、提交审核 | 订单进入待审核 | | E2E-002 | 管理层审批通过 | 小程序管理层端 | 登录、查看待审批、通过 | 订单进入 approved | | E2E-003 | 确认下发工厂 | 小程序管理层端 | 生成文本、复制、确认下发 | 订单进入 pending_factory | | E2E-004 | 创建司机任务 | 管理后台/管理层端 | 创建并分配任务 | 司机端可见 | | E2E-005 | 司机履约完成 | 小程序司机端 | 接单、揽货、送达 | 任务 delivered,订单联动 | | E2E-006 | 欠款生成 | 后端/页面 | 送达后检查欠款 | 欠款生成 | | E2E-007 | 报表查看导出 | Vue 管理后台 | 查询报表、导出 | 页面和文件一致 | ## 15. 回归测试清单 每次发布前必须执行: - 登录、退出、token 过期。 - 用户、角色、菜单和授权刷新。 - 订单创建、提交、审批、取消、下发确认。 - 司机任务创建、接单、揽货、送达。 - 权限越权检查:业务员、司机至少各 2 条。 - OSS 图片上传、视频上传。 - AI OCR 成功和失败。 - 欠款生成模式 `shipped` 和 `delivered`。 - 报表统计和导出。 - 审计日志查询。 ## 16. 验收通过标准 | 类型 | 标准 | | --- | --- | | 阻断缺陷 | 0 个 | | 严重缺陷 | 0 个 | | 一般缺陷 | 已确认不影响上线或有明确修复计划 | | 核心流程用例 | 100% 通过 | | 权限与数据安全用例 | 100% 通过 | | 报表金额核对 | 与数据库手工核对一致 | | 审计日志 | 关键操作 100% 可追溯 |