dingdanquanliucheng/测试规划说明书.md

792 lines
42 KiB
Markdown
Raw Normal View History

# 测试规划说明书
## 1. 文档信息
| 项目 | 内容 |
|---|---|
| 项目名称 | 订单全流程管理系统 |
| 文档版本 | v1.0 |
| 编写日期 | 2026-05-28 |
| 文档目的 | 基于《确定版需求说明书》与《确定版功能任务完成清单》《未完成功能清单》,对系统全部功能模块进行测试规划,明确测试范围、优先级、用例覆盖与验收标准 |
| 参考文档 | 《确定版需求说明书.md》《确定版功能任务完成清单.md》《未完成功能清单.md》《开发细节/04-测试用例清单.md》 |
---
## 2. 测试目标
### 2.1 核心测试目标
基于《未完成功能清单》识别的 6 大本质缺口,本次测试的核心目标为:
| 编号 | 测试目标 | 对应缺口 | 验证方式 |
|---|---|---|---|
| T-1 | 验证订单从创建→审批→下发→履约→结算的完整数据闭环 | 数据闭环未闭合 | 端到端流程用例 |
| T-2 | 验证订单、任务、提醒、审批的状态机严格按规则流转 | 状态机未完全收敛 | 状态流转矩阵用例 |
| T-3 | 验证不同角色的字段级、按钮级、行级权限隔离 | 权限隔离未完全落地 | 多角色对比用例 |
| T-4 | 验证提醒、欠款、报表等规则由配置项驱动 | 配置驱动未完全实现 | 配置变更联动用例 |
| T-5 | 验证快递100、AI OCR、OSS、微信通知等外部能力的真实对接 | 外部能力未完全接通 | 集成/模拟用例 |
| T-6 | 验证四端前端页面的字段展示、按钮时机、空态/错误态符合需求 | 体验层未完全收口 | UI 回归用例 |
### 2.2 测试完成度基线
基于《确定版功能任务完成清单》,当前系统整体完成度约 **93%**,以下为各模块完成度与测试重点:
| 模块 | 完成度 | 测试重点 |
|---|---:|---|
| 订单中心 / 订单详情 / 订单轨迹 | 100% | 回归验证 |
| 审批中心 / 审批详情 | 100% | 回归验证 |
| 客户中心 | 100% | 回归验证 |
| 提醒中心 | 100% | 回归验证 |
| 权限中心 | 100% | 回归验证 |
| 报表统计 / 报表核对 | 100% | 回归验证 |
| 员工中心 | 100% | 回归验证 |
| 系统管理页 | 100% | 回归验证 |
| 订单业务流页面 | 96% | 重点测试:后端闭环 |
| AI 识别中心 | 97% | 重点测试:人工确认留痕 |
| 产品页面 | 95% | 重点测试:禁用产品下单校验 |
| 供应商 / 工厂页面 | 95% | 重点测试:模板差异化 |
| 业务员端主框架 | 100% | 回归验证 |
| 配置中心 | 92% | 重点测试:配置即时生效 |
| 司机端主框架 | 92% | 重点测试:状态联动与字段脱敏 |
| 审计看板 | 90% | 重点测试:操作覆盖面 |
| 管理层端主框架 | 95% | 重点测试:审批闭环 |
| 权限与可见性规则 | 92% | 重点测试:字段级隔离 |
| 秘书端 | 55% | **高风险**:需全面测试 |
| 履约状态流转 | 45% | **高风险**:需全面测试 |
| 取消流程(已通过/履约中) | 35% | **高风险**:需全面测试 |
---
## 3. 测试范围
### 3.1 覆盖的端与前端模块
| 端 | 前端目录 | 测试范围 |
|---|---|---|
| WEB 管理后台 | `frontend/web-admin` | 登录、系统管理、客户/产品/工厂维护、报表、配置、审计、权限、审批 |
| WEB 业务员端 | `frontend/web-sales` | 登录、订单录入/列表/详情、提交审核、取消、提醒、客户识别 |
| 小程序管理层端 | `frontend/mini-manager` | 登录、审批列表/详情、取消审批、下发文本、司机任务创建、经营看板 |
| 小程序司机端 | `frontend/mini-driver` | 登录、任务列表/详情、接单、揽货、送达、图片上传、物流轨迹 |
| 后端 API | `backend/` | 全量接口测试 |
### 3.2 不在测试范围内
- 部署与运维CI/CD、容器编排
- 性能压测(本期以功能测试为主)
- 第三方服务的真实生产环境对接(使用沙箱/模拟环境)
---
## 4. 测试策略
### 4.1 测试层次
| 层次 | 说明 | 占比 |
|---|---|---|
| 接口测试 | 后端 API 的参数校验、状态流转、权限控制、业务规则 | 40% |
| 页面功能测试 | 四端前端页面的交互、展示、按钮状态、字段可见性 | 35% |
| 端到端流程测试 | 跨端完整业务流程串联 | 15% |
| 权限与安全测试 | 角色越权、字段脱敏、数据隔离 | 10% |
### 4.2 测试优先级定义
| 优先级 | 定义 | 执行策略 |
|---|---|---|
| P0 | 阻断性功能,不通过则无法上线 | 必须全部通过,失败则阻塞发布 |
| P1 | 核心功能,影响主要业务流程 | 应全部通过,个别失败需评估影响 |
| P2 | 体验增强功能,不影响主流程 | 可接受已知缺陷,下版本修复 |
---
## 5. 测试环境与数据
### 5.1 测试账号
| 角色 | 账号 | 权限范围 | 所属端 |
|---|---|---|---|
| 管理员 | `admin01` | 全量后台管理 | web-admin |
| 管理层 | `manager01` | 审批、利润、报表、任务分配 | mini-manager |
| 业务员 A | `sales01` | 本人订单、客户、提醒 | web-sales |
| 业务员 B | `sales02` | 本人订单、客户、提醒 | web-sales |
| 司机 A | `driver01` | 本人司机任务 | mini-driver |
| 司机 B | `driver02` | 本人司机任务 | mini-driver |
| 秘书 | `secretary01` | AI 识别、录入辅助 | web-admin |
### 5.2 测试数据要求
| 数据类型 | 最低要求 | 说明 |
|---|---|---|
| 客户 | 至少 3 个 | 含不同业务员归属、月结客户、已欠款客户 |
| 产品 | 至少 4 个 | 含 2 个分类(工业品/日用品)、含已禁用产品 |
| 工厂/供应商 | 至少 2 个 | 含不同模板类型 |
| 订单 | 覆盖全状态 | 草稿、待审核、已通过、已退回、取消申请中、履约中、已送达、已结算、已取消 |
| 司机任务 | 覆盖全状态 | 待接单、已接单、已揽货、已送达 |
| 系统配置 | 预置完整 | 物流超时天数、沉默客户周期、欠款起算口径、金额阈值 |
### 5.3 测试环境
| 项目 | 要求 |
|---|---|
| 后端服务 | 独立测试环境,与开发环境隔离 |
| 数据库 | 独立测试库,含预置基础数据 |
| OSS/文件服务 | 模拟或沙箱环境 |
| AI OCR 服务 | 模拟返回或沙箱环境 |
| 快递100 | 模拟返回或沙箱环境 |
| 微信订阅消息 | 模拟发送,验证消息记录写入 |
---
## 6. 按模块测试规划
### 6.1 登录鉴权与权限体系
**完成度86% | 优先级P0**
#### 未完成/风险项
- 角色登录态与菜单/按钮权限的完整联动不足
- 权限码在授权后即时生效链路不完整
- 管理员/管理层/业务员/司机的角色能力边界尚未完全收敛
#### 测试用例
| 编号 | 用例名称 | 前置条件 | 步骤 | 预期结果 | 优先级 |
|---|---|---|---|---|---|
| AUTH-001 | 正常登录 | 用户启用 | 输入正确账号/密码/角色登录 | 返回 token、用户信息、菜单、权限 | P0 |
| AUTH-002 | 密码错误 | 用户存在 | 输入错误密码 | 返回错误码 `40002` | P0 |
| AUTH-003 | 角色不匹配 | 业务员账号 | 使用 manager 角色登录 | 返回错误码 `40003` | P0 |
| AUTH-004 | 停用用户登录 | 用户停用 | 登录 | 返回错误码 `40003` | P0 |
| AUTH-005 | 无 token 访问 | 无 | 请求受保护接口 | 返回错误码 `40002` | P0 |
| AUTH-006 | 过期 token 访问 | token 过期 | 请求受保护接口 | 返回错误码 `40002` | P0 |
| AUTH-007 | 业务员越权看他人订单 | sales01/sales02 均有订单 | sales01 请求 sales02 订单详情 | 返回 `40003``40004` | P0 |
| AUTH-008 | 司机越权看他人任务 | driver01/driver02 均有任务 | driver01 请求 driver02 任务详情 | 返回 `40003``40004` | P0 |
| AUTH-009 | 司机看财务字段 | 司机任务存在 | 查看任务详情 | 不返回客户敏感信息、报价、成本、利润、回扣 | P0 |
| AUTH-010 | 登录返回菜单树 | 任意角色 | 正常登录 | 返回的 menus 包含该角色可见的完整菜单树 | P1 |
| AUTH-011 | 登录返回权限码 | 任意角色 | 正常登录 | 返回的 permissions 包含按钮级权限码 | P1 |
| AUTH-012 | 角色授权后即时生效 | 管理员修改角色菜单 | 用户重新登录 | 菜单和按钮权限更新为最新配置 | P1 |
---
### 6.2 系统用户、角色、菜单管理
**完成度95% | 优先级P0**
#### 未完成/风险项
- 用户管理分页由前端切片实现,接口层未形成完整分页查询
- 删除、停用/启用切换操作未形成完整闭环
- 角色停用/启用流程与异常约束不够完整
- 菜单管理的 `icon`、`sort_no`、`status`、多级菜单能力偏基础
#### 测试用例
| 编号 | 用例名称 | 前置条件 | 步骤 | 预期结果 | 优先级 |
|---|---|---|---|---|---|
| SYS-001 | 新增用户成功 | 管理员登录,角色已存在 | 新增账号/姓名/手机号/角色/初始密码 | 返回用户 ID用户可登录 | P0 |
| SYS-002 | 用户账号重复 | 已有 username | 新增同 username 用户 | 返回 `40006` | P0 |
| SYS-003 | 用户角色不存在 | role_id 不存在或停用 | 新增或更新用户 | 返回 `40004` | P0 |
| SYS-004 | 停用用户 | 用户启用 | 管理员停用后该用户登录 | 停用成功,登录返回 `40003` | P0 |
| SYS-005 | 重置密码 | 用户存在 | 管理员重置,用户用新密码登录 | 新密码可登录,旧密码不可 | P0 |
| SYS-006 | 新增角色成功 | 管理员登录 | 新增 role_name/role_code/状态 | 返回角色 ID列表可查 | P0 |
| SYS-007 | 角色编码重复 | 已有 role_code | 新增同编码角色 | 返回 `40006` | P0 |
| SYS-008 | 停用有启用用户的角色 | 角色下有启用用户 | 停用角色 | 返回 `40007` 或要求先处理用户 | P1 |
| SYS-009 | 新增菜单成功 | 管理员登录 | 新增菜单名称/路径/权限编码 | 菜单树可查询到新菜单 | P1 |
| SYS-010 | 菜单权限编码重复 | 已有 permission_code | 新增同编码菜单 | 返回 `40006` | P1 |
| SYS-011 | 菜单父级非法 | 将父级设为自身或子级 | 更新菜单 | 返回 `40007` | P1 |
| SYS-012 | 角色授权保存 | 角色/菜单存在 | 给角色配置 menu_ids 和 permission_codes | 保存成功,重新登录后权限生效 | P0 |
| SYS-013 | 非管理员访问系统管理接口 | 业务员或司机登录 | 请求用户/角色/菜单管理接口 | 返回 `40003` | P0 |
| SYS-014 | 权限变更审计 | 修改角色授权 | 查询审计日志 | 有授权前后差异记录 | P1 |
| SYS-015 | 用户列表分页 | 多用户数据 | 翻页查询 | 分页正确,数据不重复 | P1 |
| SYS-016 | 用户列表筛选 | 多用户数据 | 按姓名/角色/状态筛选 | 返回符合条件数据 | P1 |
---
### 6.3 客户管理
**完成度100%(页面)/ 60-65%(导入/去重) | 优先级P0**
#### 未完成/风险项
- 客户导入能力未见完整代码闭环(模板、去重、失败行返回)
- 客户去重规则未完全按"姓名+手机号"强约束落地
- 月结信息、欠款信息的维护和展示不完整
#### 测试用例
| 编号 | 用例名称 | 前置条件 | 步骤 | 预期结果 | 优先级 |
|---|---|---|---|---|---|
| CUS-001 | 新增客户成功 | 无重复客户 | 提交姓名/手机号等信息 | 返回客户 ID数据库写入 | P0 |
| CUS-002 | 姓名手机号重复 | 已有同姓名同手机号 | 再次新增 | 返回 `40006` | P0 |
| CUS-003 | 手机号为空 | 无 | 新增客户不填手机号 | 返回 `40001` | P0 |
| CUS-004 | 客户列表筛选 | 多客户数据 | 按姓名/手机号/业务员筛选 | 返回符合条件数据 | P1 |
| CUS-005 | 客户详情 | 客户存在 | 请求详情 | 返回结算方式、账期、欠款、归属业务员 | P1 |
| CUS-006 | 客户导入成功 | 有导入文件 | 调用导入接口 | 返回总数、成功数、失败数 | P1 |
| CUS-007 | 客户导入去重 | 文件含重复姓名手机号 | 导入 | 重复记录计入 duplicate_count | P1 |
| CUS-008 | 业务员客户范围 | sales01 有客户 | sales02 查询客户列表 | 不返回 sales01 私有客户 | P0 |
| CUS-009 | 月结客户标识 | 客户存在 | 设置结算方式为月结 | 客户详情显示月结信息 | P2 |
| CUS-010 | 客户欠款展示 | 客户有欠款记录 | 查看客户详情 | 显示欠款金额与明细 | P1 |
---
### 6.4 产品与产品分类管理
**完成度95% | 优先级P1**
#### 未完成/风险项
- 产品分类独立管理整体功能不完整
- 产品状态对订单下单的约束不足(禁用产品仍可下单)
- 产品快照机制未完全前置到所有场景
#### 测试用例
| 编号 | 用例名称 | 前置条件 | 步骤 | 预期结果 | 优先级 |
|---|---|---|---|---|---|
| PROD-001 | 新增产品分类 | 管理员登录 | 新增分类 | 分类可在列表查询 | P1 |
| PROD-002 | 分类编码重复 | 已有分类编码 | 新增同编码分类 | 返回 `40006` | P1 |
| PROD-003 | 停用分类 | 分类存在 | 停用分类 | 新建产品不可选择或提示禁用 | P1 |
| PROD-004 | 新增产品成功 | 分类启用 | 新增产品 | 产品写入并关联分类 | P1 |
| PROD-005 | 产品列表筛选 | 多产品 | 按名称/规格/分类/状态筛选 | 返回符合条件数据 | P1 |
| PROD-006 | 产品详情 | 产品存在 | 请求详情 | 返回分类、成本、售价、状态 | P1 |
| PROD-007 | 禁用产品下单 | 产品禁用 | 订单选择该产品提交 | 拦截或明确提示 | P0 |
| PROD-008 | 产品快照 | 产品已用于订单 | 修改产品名称/成本 | 历史订单快照不变 | P0 |
---
### 6.5 工厂/供应商管理与下发文本
**完成度95%(页面)/ 30%(模板差异化) | 优先级P1**
#### 未完成/风险项
- 下发文本的"生成+确认+留痕"链路未完全闭环
- 工厂模板类型的业务差异未完全实现
- 下发文本历史记录表的实际持久化链路不完整
#### 测试用例
| 编号 | 用例名称 | 前置条件 | 步骤 | 预期结果 | 优先级 |
|---|---|---|---|---|---|
| FAC-001 | 新增供应商成功 | 管理员登录 | 提交供应商信息 | 返回供应商 ID | P1 |
| FAC-002 | 供应商列表筛选 | 多供应商 | 按名称/类型筛选 | 返回符合条件数据 | P1 |
| FAC-003 | 生成下发文本 | 订单 approved | 生成下发文本 | 返回文本内容 | P0 |
| FAC-004 | 确认下发工厂 | 订单 approved | 确认下发 | 状态变为 `pending_factory`,写审计日志 | P0 |
| FAC-005 | 非 approved 确认下发 | 订单 draft | 确认下发 | 返回 `40005` | P0 |
| FAC-006 | 下发文本日志 | 已确认下发 | 查询下发历史 | 有下发记录,含时间、操作人 | P1 |
| FAC-007 | 不同工厂模板差异化 | 配置不同模板 | 为不同工厂生成文本 | 文本格式按模板差异展示 | P2 |
---
### 6.6 订单录入、提交、审批
**完成度88-96% | 优先级P0**
#### 未完成/风险项
- 订单创建接口与需求字段存在缺口(派生字段、校验细节)
- 订单编辑/草稿保存的完整能力未完全实现
- 订单提交审核的完整校验不充分
- 审批页利润计算过程展示未完全落地
- 审批退回后业务员通知未完整落地
- 订单状态机仍不够严密
#### 测试用例
| 编号 | 用例名称 | 前置条件 | 步骤 | 预期结果 | 优先级 |
|---|---|---|---|---|---|
| ORD-001 | 创建草稿订单 | 业务员登录、产品存在 | 填写客户/明细/费用提交 | 返回订单 ID状态 `draft` | P0 |
| ORD-002 | 新客户自动入库 | 客户库无该客户 | 创建订单 | 自动创建客户记录 | P0 |
| ORD-003 | 利润计算 | 售100/成本60/回扣5/运费10/税费3/其他2 | 创建订单 | 利润=20利润率=20% | P0 |
| ORD-004 | 固定提成保存 | 输入固定提成 50 | 创建订单 | `commission_amount=50` | P1 |
| ORD-005 | 明细为空 | 无明细 | 创建订单 | 返回 `40001` | P0 |
| ORD-006 | 数量非法 | 数量为 0 | 创建订单 | 返回 `40001` | P0 |
| ORD-007 | 提交审核成功 | 订单 `draft` | 提交审核 | 状态变为 `pending_approve` | P0 |
| ORD-008 | 重复提交 | 订单已 `pending_approve` | 再次提交 | 返回 `40005` | P0 |
| ORD-009 | 管理层审批通过 | 订单 `pending_approve` | 管理层通过 | 状态变为 `approved` | P0 |
| ORD-010 | 管理层审批退回 | 订单 `pending_approve` | 管理层退回并填意见 | 状态变为 `rejected`,业务员收到通知 | P0 |
| ORD-011 | 生成下发文本 | 订单 `approved` | 生成下发文本 | 返回文本内容 | P0 |
| ORD-012 | 确认下发工厂 | 订单 `approved` | 确认下发 | 状态变为 `pending_factory` | P0 |
| ORD-013 | 非 approved 确认下发 | 订单 `draft` | 确认下发 | 返回 `40005` | P0 |
| ORD-014 | 订单列表筛选 | 多订单 | 按状态/客户/时间筛选 | 返回符合条件数据 | P1 |
| ORD-015 | 订单详情字段权限-业务员 | 业务员登录 | 查看本人订单详情 | 不返回成本、利润等无权限字段 | P0 |
| ORD-016 | 管理层订单详情 | 管理层登录 | 查看订单详情 | 返回完整财务字段 | P0 |
| ORD-017 | 编辑草稿订单 | 订单 `draft` | 修改客户/明细/费用 | 保存成功,数据更新 | P0 |
| ORD-018 | 保存并提交 | 订单 `draft` | 保存并提交审核 | 数据保存且状态变为 `pending_approve` | P1 |
| ORD-019 | 利润计算过程展示 | 管理层审批 | 查看审批详情 | 展示完整的利润计算过程(售价-成本-回扣-运费-税费-其他) | P1 |
| ORD-020 | 审批退回通知 | 订单被退回 | 业务员查看提醒中心 | 收到退回通知,含退回原因 | P1 |
| ORD-021 | 禁用产品创建订单 | 产品已禁用 | 选择禁用产品创建订单 | 系统拦截或明确提示 | P0 |
| ORD-022 | 订单状态流转完整性 | 订单从创建到完成 | 依次执行:草稿→审核→通过→下发→接单→揽货→送达→完成 | 每步状态正确流转,相关通知/审计/联动正确触发 | P0 |
---
### 6.7 订单取消流程
**完成度35-80% | 优先级P0高风险区域**
#### 未完成/风险项
- 草稿/待审核订单直接取消逻辑(完成度仅 55%
- 已通过/履约中订单的特殊审批逻辑(完成度仅 35%
- 取消原因/意见/前状态的审计留痕不完整
- 取消审批后的状态恢复链路不完整
#### 测试用例
| 编号 | 用例名称 | 前置条件 | 步骤 | 预期结果 | 优先级 |
|---|---|---|---|---|---|
| CAN-001 | 草稿订单取消 | 订单 `draft` | 业务员提交取消 | 状态直接变为 `canceled` | P0 |
| CAN-002 | 待审核订单取消 | 订单 `pending_approve` | 业务员提交取消 | 状态直接变为 `canceled` | P0 |
| CAN-003 | 已审批订单取消申请 | 订单 `approved` | 业务员提交取消 | 状态 `cancel_pending`,记录取消前状态 | P0 |
| CAN-004 | 履约中订单取消申请 | 订单 `picked_up` | 业务员提交取消 | 状态 `cancel_fulfillment_pending` | P0 |
| CAN-005 | 取消审批通过 | 订单 `cancel_pending` | 管理层同意 | 状态 `canceled` | P0 |
| CAN-006 | 取消审批拒绝 | 订单 `cancel_pending` 且原状态 `approved` | 管理层拒绝 | 状态恢复 `approved` | P0 |
| CAN-007 | 已取消再次取消 | 订单 `canceled` | 提交取消 | 返回 `40005` | P0 |
| CAN-008 | 取消原因必填 | 可取消订单 | 不填原因提交 | 返回 `40001` | P0 |
| CAN-009 | 履约中取消审批通过 | 订单 `cancel_fulfillment_pending` | 管理层同意 | 状态 `canceled`,司机任务同步取消 | P0 |
| CAN-010 | 履约中取消审批拒绝 | 订单 `cancel_fulfillment_pending` | 管理层拒绝 | 状态恢复为取消前状态(如 `picked_up` | P0 |
| CAN-011 | 取消留痕完整性 | 执行取消操作 | 查询审计日志 | 记录取消前状态、取消原因、操作人、操作时间 | P0 |
| CAN-012 | 取消后通知 | 订单被取消 | 相关人员查看提醒 | 收到取消通知 | P1 |
---
### 6.8 司机任务管理与履约
**完成度45-88% | 优先级P0高风险区域**
#### 未完成/风险项
- 司机任务的创建、分配与订单状态联动不完整(履约状态流转完成度仅 45%
- 司机接单、揽货、送达的业务约束不完整
- "提交前可撤回、提交后不可撤回"与图片必填约束未闭环
- COS/OSS 图片存储与附件管理未完全统一
#### 测试用例
| 编号 | 用例名称 | 前置条件 | 步骤 | 预期结果 | 优先级 |
|---|---|---|---|---|---|
| TASK-001 | 管理层创建任务 | 订单可履约、司机存在 | 填写任务并保存 | 返回任务 ID状态 `pending` | P0 |
| TASK-002 | 司机任务列表 | driver01 有任务 | driver01 查看列表 | 只显示本人任务 | P0 |
| TASK-003 | 任务详情脱敏 | 任务存在 | 司机查看详情 | 不显示客户敏感信息和财务字段 | P0 |
| TASK-004 | 接单成功 | 任务 `pending` | 司机接单 | 状态 `accepted`,记录接单时间 | P0 |
| TASK-005 | 重复接单 | 任务已 `accepted` | 再次接单 | 返回 `40005` | P0 |
| TASK-006 | 揽货成功 | 任务 `accepted` | 上传照片确认揽货 | 状态 `picked_up`,附件写入 | P0 |
| TASK-007 | 揽货无照片 | 任务 `accepted` | 不上传照片确认 | 返回 `40001` 或业务错误 | P0 |
| TASK-008 | 送达成功 | 任务 `picked_up` | 确认送达 | 状态 `delivered`,订单状态联动更新 | P0 |
| TASK-009 | 非法状态流转 | 任务 `pending` | 直接送达 | 返回 `40005` | P0 |
| TASK-010 | 司机越权操作 | driver01 操作 driver02 任务 | 接单/揽货/送达 | 返回 `40003` | P0 |
| TASK-011 | 揽货撤回 | 任务 `accepted` 已提交揽货 | 撤回揽货 | 提交前可撤回,提交后不可撤回 | P1 |
| TASK-012 | 任务与订单状态联动 | 订单 approved → 创建任务 | 任务从创建到送达 | 每步任务状态变化同步更新订单状态 | P0 |
| TASK-013 | 图片上传成功 | OSS 可用 | 上传揽货图片 | 附件记录写入,关联任务 ID | P0 |
| TASK-014 | 图片上传失败 | OSS 异常 | 上传揽货图片 | 返回明确错误,不更新任务状态 | P1 |
---
### 6.9 物流与 AI 辅助识别
**完成度88-97% | 优先级P1**
#### 未完成/风险项
- 物流轨迹对接快递100的完整实现未落地
- 物流超时提醒的"一次性提醒"策略未完全实现
- AI 图片识别链路不完整(人工确认界面、相似订单判断)
- 识别失败/置信度过低的人工兜底流程未闭环
#### 测试用例
| 编号 | 用例名称 | 前置条件 | 步骤 | 预期结果 | 优先级 |
|---|---|---|---|---|---|
| LOG-001 | 手动新增物流节点 | 订单存在 | 新增节点 | `logistics_trace` 写入 | P1 |
| LOG-002 | 物流轨迹查询 | 订单有节点 | 查询轨迹 | 按时间返回节点 | P1 |
| LOG-003 | 物流超时提醒 | 首节点后 48 小时无流转 | 执行提醒检查 | 生成一次提醒 | P0 |
| LOG-004 | 物流超时不重复提醒 | 已提醒 | 再次执行检查 | 不重复生成 | P0 |
| LOG-005 | 快递100对接 | 配置快递100凭证 | 查询物流轨迹 | 返回快递100节点数据 | P1 |
| AI-001 | OCR 识别成功 | 图片存在,凭证有效 | 发起识别 | 保存 raw_result、confidence、suggested_result | P1 |
| AI-002 | OCR 识别失败 | 模拟服务异常 | 发起识别 | 返回 `40009`,记录异常 | P1 |
| AI-003 | 人工修正 | 识别记录存在 | 提交 corrected_result | 保存修正结果,不覆盖原始结果 | P1 |
| AI-004 | 识别结果人工确认 | 识别出疑似订单 | 页面确认 | 不自动审批、不自动合并 | P1 |
| AI-005 | 置信度过低处理 | confidence 低于阈值 | 查看识别结果 | 标记为需人工确认,不可直接入库 | P1 |
---
### 6.10 提醒中心、欠款提醒、长时间未下单提醒
**完成度88-100% | 优先级P0**
#### 未完成/风险项
- 欠款提醒的起算规则未完全落地(按订单日期/对账日期/发货日期配置)
- 欠款提醒"提醒对象为业务员"的规则未完全验证
- 长时间未下单提醒的金额阈值和沉默周期配置未形成业务闭环
#### 测试用例
| 编号 | 用例名称 | 前置条件 | 步骤 | 预期结果 | 优先级 |
|---|---|---|---|---|---|
| ARR-001 | delivered 模式生成欠款 | 配置 `arrears_generate_mode=delivered` | 订单送达 | 生成欠款记录 | P0 |
| ARR-002 | shipped 模式生成欠款 | 配置 `arrears_generate_mode=shipped` | 订单发货 | 生成欠款记录 | P0 |
| ARR-003 | 未到节点不生成欠款 | 配置 delivered订单 shipped | 检查欠款 | 不生成 | P0 |
| ARR-004 | 结算关闭欠款 | 欠款 pending/overdue | 执行结算 | 状态 closed 或 paid记录关闭时间 | P0 |
| ARR-005 | 欠款超期提醒 | 欠款超过账期 | 执行提醒检查 | 生成业务员提醒 | P0 |
| ARR-006 | 沉默客户提醒 | 客户超过周期未下单且金额达阈值 | 执行检查 | 生成提醒 | P1 |
| ARR-007 | 沉默客户低金额不提醒 | 金额低于阈值 | 执行检查 | 不生成提醒 | P1 |
| ARR-008 | 提醒已读 | 提醒存在 | 标记已读 | 状态 read | P1 |
| ARR-009 | 欠款起算口径切换 | 配置起算口径为"对账日期" | 生成欠款 | 起算日期按对账日期计算 | P1 |
| ARR-010 | 提醒对象为业务员 | 客户归属业务员 A | 生成欠款提醒 | 提醒发送给业务员 A 而非泛化通知 | P0 |
| ARR-011 | 微信订阅消息通知 | 提醒生成 | 检查通知记录 | 写入微信订阅消息记录 | P1 |
---
### 6.11 业绩统计报表
**完成度95-100% | 优先级P1**
#### 未完成/风险项
- 报表口径统一仍有差异(按月/季/年、分类拆分、电商剔除)
- 报表导出能力可能仍是简化版本
- 报表图表与明细维度未完全实现
#### 测试用例
| 编号 | 用例名称 | 前置条件 | 步骤 | 预期结果 | 优先级 |
|---|---|---|---|---|---|
| REP-001 | 月度统计 | 多订单跨月份 | 查询月报 | 按月份汇总正确 | P1 |
| REP-002 | 季度统计 | 多订单跨季度 | 查询季报 | 按季度汇总正确 | P1 |
| REP-003 | 年度统计 | 多订单跨年份 | 查询年报 | 按年份汇总正确 | P1 |
| REP-004 | 分类统计 | 产品分类存在 | 查询报表 | 按分类金额汇总正确 | P1 |
| REP-005 | 固定提成统计 | 订单有 commission_amount | 查询报表 | 提成金额按订单固定值汇总 | P1 |
| REP-006 | 电商订单剔除 | 存在电商来源订单 | 查询报表 | 按规则剔除或可配置剔除 | P1 |
| REP-007 | 报表导出 | 查询条件存在 | 点击导出 | 返回 file_url文件内容与页面一致 | P1 |
| REP-008 | 报表金额与数据库核对 | 已知订单数据 | 查询报表后人工核对 | 报表金额与数据库手工核对一致 | P0 |
---
### 6.12 配置管理
**完成度92-95% | 优先级P1**
#### 未完成/风险项
- 系统配置项仅覆盖基础字段,未形成统一配置中心体验
- 敏感配置的安全存储未完全体现
#### 测试用例
| 编号 | 用例名称 | 前置条件 | 步骤 | 预期结果 | 优先级 |
|---|---|---|---|---|---|
| CFG-001 | 查询配置 | 配置存在 | 查询 config_key | 返回配置值 | P1 |
| CFG-002 | 更新配置 | 管理员登录 | 更新欠款生成模式 | 保存成功,写审计日志 | P1 |
| CFG-003 | 非管理员更新配置 | 业务员登录 | 更新配置 | 返回 `40003` | P0 |
| CFG-004 | 物流超时天数配置 | 管理员 | 修改超时天数 | 提醒检查按新天数执行 | P1 |
| CFG-005 | 沉默客户周期配置 | 管理员 | 修改沉默周期 | 提醒检查按新周期执行 | P1 |
| CFG-006 | 金额阈值配置 | 管理员 | 修改金额阈值 | 低于阈值的客户不触发提醒 | P1 |
| CFG-007 | 配置即时生效 | 修改配置 | 不重启服务 | 新配置立即生效 | P1 |
---
### 6.13 审计日志
**完成度88-90% | 优先级P1**
#### 未完成/风险项
- 审计日志写入覆盖面不够全面物流任务、提醒、导入、导出、AI 修正等未完全覆盖)
- 审计日志查询和前后值展示未完整落地
#### 测试用例
| 编号 | 用例名称 | 前置条件 | 步骤 | 预期结果 | 优先级 |
|---|---|---|---|---|---|
| AUD-001 | 订单创建审计 | 创建订单 | 查询审计日志 | 有 create order 记录 | P0 |
| AUD-002 | 审批审计 | 审批订单 | 查询审计日志 | 有 approve 记录 | P0 |
| AUD-003 | 取消审计 | 取消订单 | 查询审计日志 | 有 cancel 记录,含取消原因 | P0 |
| AUD-004 | 司机操作审计 | 接单/揽货/送达 | 查询审计日志 | 有对应记录 | P0 |
| AUD-005 | OSS 上传审计 | 上传附件 | 查询审计日志 | 有上传记录或文件记录 | P1 |
| AUD-006 | 配置变更审计 | 修改系统配置 | 查询审计日志 | 有配置变更前后值记录 | P1 |
| AUD-007 | 审计日志前后值对比 | 修改订单 | 查看审计详情 | 展示修改前后的值差异 | P2 |
| AUD-008 | 审计日志筛选 | 多条日志 | 按操作类型/时间/操作人筛选 | 返回符合条件数据 | P1 |
---
### 6.14 文件与 OSS
**完成度90% | 优先级P1**
#### 测试用例
| 编号 | 用例名称 | 前置条件 | 步骤 | 预期结果 | 优先级 |
|---|---|---|---|---|---|
| FILE-001 | 获取上传凭证 | 用户登录 | 请求上传凭证 | 返回 upload_url、file_url、expire_at | P1 |
| FILE-002 | 图片上传成功 | OSS 可用 | 上传图片并保存附件 | `file_attachment` 写入 image 元数据 | P1 |
| FILE-003 | 视频上传成功 | OSS 可用 | 上传视频并保存附件 | `file_attachment` 写入 video 元数据 | P2 |
| FILE-004 | 文件过大 | 设置上传限制 | 上传超限文件 | 返回 `40008` 或明确错误 | P1 |
| FILE-005 | OSS 失败 | 模拟 OSS 异常 | 上传 | 返回 `40008`,记录日志 | P1 |
| FILE-006 | 附件关联 | 任务存在 | 上传任务附件 | 附件 biz_type/biz_id 正确 | P1 |
---
## 7. 端到端流程测试
端到端测试覆盖完整的跨端业务流程,验证数据在多端之间的正确流转。
| 编号 | 流程名称 | 涉及端 | 测试步骤 | 预期结果 | 优先级 |
|---|---|---|---|---|---|
| E2E-001 | 业务员完整录单 | web-sales | 登录→创建订单(含新客户)→提交审核 | 订单进入 `pending_approve`,新客户自动入库 | P0 |
| E2E-002 | 管理层审批通过 | mini-manager | 登录→查看待审批→查看利润→通过 | 订单进入 `approved`,审计记录生成 | P0 |
| E2E-003 | 确认下发工厂 | mini-manager | 生成文本→复制→确认下发 | 订单进入 `pending_factory`,下发日志生成 | P0 |
| E2E-004 | 创建司机任务 | web-admin / mini-manager | 创建并分配任务 | 任务生成,司机端可见 | P0 |
| E2E-005 | 司机履约完成 | mini-driver | 接单→上传照片揽货→确认送达 | 任务 `delivered`,订单状态联动更新 | P0 |
| E2E-006 | 欠款生成 | 后端/页面 | 送达后检查欠款 | 根据配置模式生成欠款记录 | P0 |
| E2E-007 | 报表查看导出 | web-admin | 查询报表→核对→导出 | 页面和文件数据一致 | P1 |
| E2E-008 | 订单取消全流程(草稿) | web-sales | 创建草稿→取消 | 直接取消成功 | P0 |
| E2E-009 | 订单取消全流程(已通过) | web-sales + mini-manager | 提交取消申请→管理层审批→确认取消 | 状态经过 `cancel_pending``canceled` | P0 |
| E2E-010 | 订单取消全流程(履约中) | web-sales + mini-manager + mini-driver | 提交取消申请→管理层审批→确认取消 | 状态经过 `cancel_fulfillment_pending``canceled`,司机任务同步取消 | P0 |
| E2E-011 | 审批退回重新提交 | mini-manager + web-sales | 管理层退回→业务员修改→重新提交 | 退回通知到达,订单重新进入审核 | P0 |
| E2E-012 | 提醒中心完整流程 | web-sales / web-admin | 配置提醒规则→触发提醒→查看→标记已读 | 提醒生成、推送、展示、已读全链路通过 | P1 |
---
## 8. 权限与安全测试
### 8.1 角色权限矩阵验证
**优先级P0**
| 编号 | 测试场景 | 操作角色 | 操作内容 | 预期结果 |
|---|---|---|---|---|
| PERM-001 | 业务员查看他人订单 | sales01 | 查看 sales02 的订单详情 | 拒绝40003/40004 |
| PERM-002 | 业务员查看财务字段 | sales01 | 查看本人订单详情 | 不返回成本、利润、回扣 |
| PERM-003 | 司机查看财务字段 | driver01 | 查看任务详情 | 不返回客户敏感信息和财务字段 |
| PERM-004 | 司机查看他人任务 | driver01 | 查看 driver02 的任务 | 拒绝 |
| PERM-005 | 管理层查看完整财务 | manager01 | 查看审批详情 | 返回成本、利润、利润率、计算过程 |
| PERM-006 | 业务员访问系统管理 | sales01 | 请求用户/角色管理接口 | 拒绝40003 |
| PERM-007 | 司机访问系统管理 | driver01 | 请求配置/审计接口 | 拒绝40003 |
| PERM-008 | 管理层访问系统管理 | manager01 | 请求用户管理接口 | 按角色权限返回(可能受限) |
| PERM-009 | 管理员全量权限 | admin01 | 访问所有接口 | 全部允许 |
| PERM-010 | 秘书端 AI 操作 | secretary01 | 发起 AI 识别、人工修正 | 允许 AI 相关操作,不允许订单审批 |
### 8.2 数据隔离验证
| 编号 | 测试场景 | 验证内容 | 预期结果 |
|---|---|---|---|
| ISO-001 | 业务员订单隔离 | sales01 查询订单列表 | 仅返回本人创建的订单 |
| ISO-002 | 业务员客户隔离 | sales01 查询客户列表 | 仅返回归属本人的客户 |
| ISO-003 | 司机任务隔离 | driver01 查询任务列表 | 仅返回分配给本人的任务 |
| ISO-004 | 管理层查看全部订单 | manager01 查询订单列表 | 返回所有业务员的订单 |
| ISO-005 | 管理员查看全部数据 | admin01 查询各列表 | 返回全量数据 |
---
## 9. 状态机验证矩阵
**优先级P0**
### 9.1 订单状态流转矩阵
| 当前状态 | 允许的目标状态 | 触发动作 | 不允许的目标状态 |
|---|---|---|---|
| `draft` | `pending_approve` | 业务员提交审核 | `approved`, `canceled`(直接取消) |
| `draft` | `canceled` | 业务员直接取消 | — |
| `pending_approve` | `approved` | 管理层审批通过 | `draft` |
| `pending_approve` | `rejected` | 管理层审批退回 | `draft` |
| `pending_approve` | `canceled` | 业务员直接取消 | — |
| `approved` | `cancel_pending` | 业务员申请取消 | `draft`, `rejected` |
| `approved` | `pending_factory` | 管理层确认下发 | `canceled`(直接) |
| `pending_factory` | `pending_driver_accept` | 工厂确认接收 | `draft` |
| `pending_driver_accept` | `accepted` | 司机接单 | `draft`, `approved` |
| `accepted` | `picked_up` | 司机揽货(含照片) | `pending_driver_accept` |
| `picked_up` | `delivered` | 司机确认送达 | `accepted` |
| `picked_up` | `cancel_fulfillment_pending` | 业务员申请取消 | — |
| `cancel_pending` | `canceled` | 管理层同意取消 | — |
| `cancel_pending` | 恢复原状态 | 管理层拒绝取消 | — |
| `cancel_fulfillment_pending` | `canceled` | 管理层同意取消 | — |
| `cancel_fulfillment_pending` | 恢复原状态 | 管理层拒绝取消 | — |
### 9.2 司机任务状态流转矩阵
| 当前状态 | 允许的目标状态 | 触发动作 |
|---|---|---|
| `pending` | `accepted` | 司机接单 |
| `accepted` | `picked_up` | 司机上传照片并确认揽货 |
| `picked_up` | `delivered` | 司机确认送达 |
### 9.3 测试方法
对每个状态流转:
1. 验证合法流转成功
2. 验证非法流转被拒绝(返回 `40005`
3. 验证状态变更后相关通知/审计/联动正确触发
4. 验证并发状态变更的幂等性
---
## 10. 配置驱动规则验证
**优先级P1**
| 编号 | 配置项 | 测试方法 | 预期效果 |
|---|---|---|---|
| CFG-R-001 | `logistics_timeout_days` (物流超时天数) | 修改配置后检查提醒触发 | 按新天数判断超时 |
| CFG-R-002 | `inactive_customer_days` (沉默客户天数) | 修改配置后检查提醒触发 | 按新天数判断沉默 |
| CFG-R-003 | `arrears_generate_mode` (欠款生成模式) | 切换 shipped/delivered | 欠款在对应节点生成 |
| CFG-R-004 | `arrears_reminder_start_type` (欠款起算口径) | 切换订单日期/对账日期/发货日期 | 欠款起算日期按配置计算 |
| CFG-R-005 | `inactive_order_amount_threshold` (金额阈值) | 设置阈值后检查提醒 | 低于阈值不触发提醒 |
| CFG-R-006 | `report_category_mapping` (报表分类映射) | 修改映射后查询报表 | 分类按新映射统计 |
| CFG-R-007 | `cancel_allowed_statuses` (可取消状态) | 修改可取消状态列表 | 仅配置的状态可取消 |
---
## 11. 外部集成测试
**优先级P1**
| 编号 | 集成点 | 测试方法 | 预期结果 |
|---|---|---|---|
| EXT-001 | 快递100物流查询 | 调用物流查询接口 | 返回物流节点数据,异常时降级处理 |
| EXT-002 | AI OCR识别 | 上传图片调用识别 | 返回识别结果、置信度,异常时记录日志 |
| EXT-003 | OSS文件上传 | 上传图片/视频 | 返回文件URL附件记录写入 |
| EXT-004 | OSS上传失败 | 模拟OSS异常 | 返回错误码,记录日志,不影响主流程 |
| EXT-005 | 微信订阅消息 | 触发提醒通知 | 写入消息发送记录 |
| EXT-006 | 微信 bind-openid | 绑定微信用户 | openid 关联到系统用户 |
---
## 12. 回归测试清单
每次发布前必须执行以下回归测试:
| 类别 | 回归项 |
|---|---|
| 认证 | 登录、退出、token 过期、角色不匹配 |
| 系统管理 | 用户/角色/菜单 CRUD、授权刷新 |
| 订单流程 | 创建→提交→审批→下发→接单→揽货→送达 |
| 取消流程 | 草稿直接取消、待审核直接取消、已通过申请取消、履约中申请取消 |
| 司机任务 | 创建→接单→揽货→送达 |
| 权限越权 | 业务员越权 ×2、司机越权 ×2 |
| 文件上传 | 图片上传、视频上传 |
| AI 识别 | OCR 成功、OCR 失败、人工修正 |
| 欠款 | shipped 模式、delivered 模式 |
| 报表 | 统计核对、导出 |
| 审计 | 关键操作日志查询 |
---
## 13. 风险分析
| 风险项 | 风险等级 | 影响范围 | 应对策略 |
|---|---|---|---|
| 取消流程特殊审批逻辑完成度仅 35% | **高** | 订单主流程 | 优先测试,覆盖全部取消分支 |
| 履约状态流转完成度仅 45% | **高** | 司机履约全链路 | 重点测试状态联动与异常分支 |
| 秘书端完成度仅 55% | **中** | AI 识别辅助流程 | 梳理秘书端专属流程并补齐 |
| 权限字段隔离不完整 | **高** | 数据安全 | 多角色对比测试,逐字段验证 |
| 外部服务快递100/AI/OSS集成不完整 | **中** | 物流/AI/文件功能 | 使用模拟环境验证降级逻辑 |
| 配置驱动规则未完全落地 | **中** | 提醒/欠款/报表 | 配置变更后逐一验证联动效果 |
| 订单状态机约束不严密 | **高** | 数据一致性 | 按状态矩阵逐项验证非法流转 |
| 报表统计口径差异 | **低** | 数据准确性 | 手工核对数据库与报表数据 |
---
## 14. 验收标准
| 类型 | 标准 |
|---|---|
| 阻断缺陷 | 0 个 |
| 严重缺陷 | 0 个 |
| 一般缺陷 | 已确认不影响上线或有明确修复计划 |
| P0 用例通过率 | 100% |
| P1 用例通过率 | ≥ 95% |
| 核心流程端到端用例 | 100% 通过 |
| 权限与数据安全用例 | 100% 通过 |
| 状态机合法/非法流转用例 | 100% 通过 |
| 报表金额核对 | 与数据库手工核对一致 |
| 审计日志 | 关键操作 100% 可追溯 |
---
## 15. 测试用例统计
| 模块 | 用例数 | P0 | P1 | P2 |
|---|---:|---:|---:|---:|
| 登录鉴权与权限 | 12 | 8 | 4 | 0 |
| 系统用户/角色/菜单管理 | 16 | 8 | 8 | 0 |
| 客户管理 | 10 | 4 | 4 | 2 |
| 产品与分类管理 | 8 | 2 | 6 | 0 |
| 工厂/供应商与下发文本 | 7 | 3 | 3 | 1 |
| 订单录入/提交/审批 | 22 | 14 | 8 | 0 |
| 订单取消流程 | 12 | 10 | 2 | 0 |
| 司机任务与履约 | 14 | 10 | 3 | 1 |
| 物流与 AI 识别 | 10 | 2 | 8 | 0 |
| 提醒中心与欠款 | 11 | 5 | 6 | 0 |
| 业绩统计报表 | 8 | 1 | 7 | 0 |
| 配置管理 | 7 | 1 | 6 | 0 |
| 审计日志 | 8 | 3 | 4 | 1 |
| 文件与 OSS | 6 | 0 | 5 | 1 |
| 端到端流程 | 12 | 10 | 2 | 0 |
| 权限与安全 | 15 | 15 | 0 | 0 |
| 状态机验证 | 按矩阵展开 | 全量 | — | — |
| 配置驱动规则 | 7 | 0 | 7 | 0 |
| 外部集成 | 6 | 0 | 6 | 0 |
| **合计** | **~191** | **~96** | **~87** | **~6** |
> 注:状态机验证用例数取决于实际状态组合数量,按矩阵逐项展开后约 30-40 条子用例。
---
## 16. 测试执行计划
| 阶段 | 内容 | 预计周期 |
|---|---|---|
| 第一轮 | P0 用例全量执行(订单主流程、取消流程、司机履约、权限越权、状态机) | 3 天 |
| 第二轮 | P1 用例全量执行(客户/产品/工厂管理、报表、配置、审计、物流/AI | 2 天 |
| 第三轮 | P2 用例 + 端到端流程 + 配置驱动规则 + 外部集成 | 2 天 |
| 回归测试 | 按回归清单全量回归 | 1 天 |
| 验收确认 | 对照验收标准出具测试报告 | 1 天 |
---
## 17. 附录
### 17.1 订单状态全集
```
draft草稿
→ pending_approve待审核
→ approved已通过
→ pending_factory待下发工厂
→ pending_driver_accept待司机接单
→ accepted已接单
→ picked_up已揽货
→ delivered已送达
→ completed已完成
→ settled已结算
→ rejected已退回
→ [业务员修改后重新提交]
→ canceled已取消
特殊取消路径:
approved → cancel_pending → canceled / 恢复原状态
picked_up → cancel_fulfillment_pending → canceled / 恢复原状态
```
### 17.2 错误码参考
| 错误码 | 含义 |
|---|---|
| `40001` | 参数校验失败 |
| `40002` | 认证失败无token/token过期 |
| `40003` | 权限不足 |
| `40004` | 资源不存在或无权访问 |
| `40005` | 状态不允许该操作 |
| `40006` | 数据重复(唯一约束冲突) |
| `40007` | 业务约束不满足 |
| `40008` | 文件上传失败 |
| `40009` | AI 识别服务异常 |
### 17.3 利润计算公式
```
利润 = 销售金额 - 成本金额 - 回扣 - 运费 - 税费 - 其他费用
利润率 = 利润 ÷ 销售金额 × 100%
```