接口测试用例.md 54 KB

叁强鲜配 - 接口测试用例文档

目录


一、测试概述

1.1 测试环境

环境 URL 说明
开发环境 https://dev-api.sanqiang.com 开发测试使用
测试环境 https://test-api.sanqiang.com 集成测试使用
预生产环境 https://pre-api.sanqiang.com 预发布验证
生产环境 https://api.sanqiang.com 正式环境

1.2 测试账号

角色 用户名 密码 区域 说明
运营管理员 admin admin123 - 超级管理员
运营人员 operator01 test123456 城东区域 普通运营
供应商 supplier001 test123456 城东区域 供应商账号
客户 client001 test123456 城东区域 客户账号
配送员 deliver001 test123456 城东区域 配送员账号

1.3 测试工具

  • Postman / Apifox(接口调试)
  • JMeter(性能测试)
  • Charles / Fiddler(抓包调试)

1.4 测试用例模板

用例编号: API-模块-序号
用例名称: [接口名称]
前置条件: 执行该用例的前置条件
测试步骤: 详细的操作步骤
预期结果: 期望的返回结果

二、用户模块测试用例

2.1 登录接口

TC-USER-001:Web端正常登录

项目 内容
用例编号 TC-USER-001
用例名称 Web端正常登录
前置条件 用户账号已存在且状态正常
测试步骤 1. 构造登录请求 {username: "admin", password: "admin123"}
2. POST 到 /api/web/auth/login
3. 检查响应状态码和返回数据
请求参数 username=admin
password=admin123
预期结果 1. HTTP状态码:200
2. 返回token和refreshToken
3. userInfo中包含正确的用户信息
4. token有效期为7200秒
测试数据 username: admin, password: admin123
优先级 P0
测试类型 功能测试

TC-USER-002:Web端登录-密码错误

项目 内容
用例编号 TC-USER-002
用例名称 Web端登录-密码错误
前置条件 用户账号存在
测试步骤 1. 构造登录请求 {username: "admin", password: "wrongpass"}
2. POST 到 /api/web/auth/login
3. 检查错误响应
预期结果 1. HTTP状态码:401
2. code: 401
3. message: "用户名或密码错误"
优先级 P0
测试类型 功能测试

TC-USER-003:Web端登录-账号不存在

项目 内容
用例编号 TC-USER-003
用例名称 Web端登录-账号不存在
前置条件 无
测试步骤 1. 构造登录请求 {username: "notexist", password: "anypass"}
2. POST 到 /api/web/auth/login
3. 检查错误响应
预期结果 1. HTTP状态码:401
2. code: 401
3. message: "用户名或密码错误"
优先级 P0
测试类型 功能测试

TC-USER-004:Web端登录-账号已禁用

项目 内容
用例编号 TC-USER-004
用例名称 Web端登录-账号已禁用
前置条件 存在一个已禁用的账号 user_disabled
测试步骤 1. 构造登录请求 {username: "user_disabled", password: "test123"}
2. POST 到 /api/web/auth/login
3. 检查错误响应
预期结果 1. HTTP状态码:403
2. code: 403
3. message: "账号已被禁用"
优先级 P1
测试类型 功能测试

TC-USER-005:小程序端登录

项目 内容
用例编号 TC-USER-005
用例名称 小程序端登录
前置条件 客户/供应商/配送员账号存在
测试步骤 1. 构造登录请求 {username: "client001", password: "test123456"}
2. POST 到 /api/mini/auth/login
3. 检查响应数据
预期结果 1. HTTP状态码:200
2. 返回token和用户信息
3. userInfo中包含regionId和regionName
优先级 P0
测试类型 功能测试

TC-USER-006:登录-缺少必填参数

项目 内容
用例编号 TC-USER-006
用例名称 登录-缺少必填参数
前置条件 无
测试步骤 1. 构造请求 {username: "admin"}(缺少password)
2. POST 到 /api/web/auth/login
3. 检查参数校验响应
预期结果 1. HTTP状态码:400
2. code: 400
3. message: "缺少必填参数: password"
优先级 P1
测试类型 参数校验测试

TC-USER-007:登录-参数格式错误

项目 内容
用例编号 TC-USER-007
用例名称 登录-参数格式错误
前置条件 无
测试步骤 1. 构造请求 {username: 123, password: "test"}(username类型错误)
2. POST 到 /api/web/auth/login
3. 检查参数校验响应
预期结果 1. HTTP状态码:400
2. code: 400
3. message包含"参数类型错误"
优先级 P1
测试类型 参数校验测试

TC-USER-008:刷新Token-正常

项目 内容
用例编号 TC-USER-008
用例名称 刷新Token-正常
前置条件 存在有效的refreshToken
测试步骤 1. 使用登录获取的refreshToken
2. POST 到 /api/web/auth/refresh-token
3. 检查新token
预期结果 1. HTTP状态码:200
2. 返回新的token和refreshToken
优先级 P0
测试类型 功能测试

TC-USER-009:刷新Token-Token过期

项目 内容
用例编号 TC-USER-009
用例名称 刷新Token-Token过期
前置条件 使用过期的refreshToken
测试步骤 1. 使用已过期的refreshToken
2. POST 到 /api/web/auth/refresh-token
3. 检查错误响应
预期结果 1. HTTP状态码:401
2. code: 401
3. message: "refreshToken已过期,请重新登录"
优先级 P0
测试类型 功能测试

TC-USER-010:获取当前用户信息

项目 内容
用例编号 TC-USER-010
用例名称 获取当前用户信息
前置条件 已登录并获取有效token
测试步骤 1. 使用有效token
2. GET /api/web/auth/current-user
3. 检查用户信息
预期结果 1. HTTP状态码:200
2. 返回完整的用户信息
优先级 P0
测试类型 功能测试

TC-USER-011:无Token访问需认证接口

项目 内容
用例编号 TC-USER-011
用例名称 无Token访问需认证接口
前置条件 无token
测试步骤 1. 不携带Authorization头
2. GET /api/web/auth/current-user
3. 检查错误响应
预期结果 1. HTTP状态码:401
2. code: 401
3. message: "未授权,请先登录"
优先级 P0
测试类型 安全测试

TC-USER-012:Token格式错误

项目 内容
用例编号 TC-USER-012
用例名称 Token格式错误
前置条件 无
测试步骤 1. 使用格式错误的token Authorization: Bearer invalid_token
2. GET /api/web/auth/current-user
3. 检查错误响应
预期结果 1. HTTP状态码:401
2. code: 401
3. message: "无效的Token"
优先级 P0
测试类型 安全测试

2.2 修改密码接口

TC-USER-013:修改密码-正常修改

项目 内容
用例编号 TC-USER-013
用例名称 修改密码-正常修改
前置条件 用户已登录
测试步骤 1. POST /api/web/user/change-password
2. {oldPassword: "admin123", newPassword: "newpass123"}
3. 使用新密码验证登录
预期结果 1. 修改成功
2. 新密码可以正常登录
优先级 P0
测试类型 功能测试

TC-USER-014:修改密码-原密码错误

项目 内容
用例编号 TC-USER-014
用例名称 修改密码-原密码错误
前置条件 用户已登录
测试步骤 1. POST /api/web/user/change-password
2. {oldPassword: "wrongpass", newPassword: "newpass123"}
3. 检查错误响应
预期结果 1. HTTP状态码:400
2. message: "原密码错误"
优先级 P0
测试类型 功能测试

TC-USER-015:修改密码-新密码不符合复杂度

项目 内容
用例编号 TC-USER-015
用例名称 修改密码-新密码不符合复杂度
前置条件 用户已登录
测试步骤 1. POST /api/web/user/change-password
2. {oldPassword: "admin123", newPassword: "123"}
3. 检查参数校验响应
预期结果 1. HTTP状态码:400
2. message: "密码长度不能少于6位"
优先级 P1
测试类型 参数校验测试

2.3 用户管理接口

TC-USER-016:创建用户-正常创建

项目 内容
用例编号 TC-USER-016
用例名称 创建用户-正常创建
前置条件 运营人员已登录
测试步骤 1. POST /api/web/users
2. {username: "newuser", realName: "新用户", phone: "13800000001", role: "client", regionId: "REGION_001"}
3. 检查创建结果
预期结果 1. HTTP状态码:200
2. 返回用户ID和初始密码
优先级 P0
测试类型 功能测试

TC-USER-017:创建用户-用户名重复

项目 内容
用例编号 TC-USER-017
用例名称 创建用户-用户名重复
前置条件 已存在用户名为 "admin"
测试步骤 1. POST /api/web/users
2. {username: "admin", realName: "测试", phone: "13800000001", role: "client"}
3. 检查错误响应
预期结果 1. HTTP状态码:409
2. code: 409
3. message: "用户名已存在"
优先级 P0
测试类型 功能测试

TC-USER-018:创建用户-角色不属于该端

项目 内容
用例编号 TC-USER-018
用例名称 创建用户-角色不属于该端
前置条件 运营人员已登录
测试步骤 1. POST /api/web/users
2. {username: "newadmin", realName: "新管理员", phone: "13800000001", role: "admin"}
3. 检查响应
预期结果 允许创建(运营可创建所有角色)或返回相应错误
优先级 P1
测试类型 权限测试

TC-USER-019:获取用户列表-分页查询

项目 内容
用例编号 TC-USER-019
用例名称 获取用户列表-分页查询
前置条件 存在多个用户
测试步骤 1. GET /api/web/users?page=1&pageSize=10
2. 检查分页返回
预期结果 1. 返回list、total、page、pageSize、totalPages
2. list中包含用户信息
优先级 P0
测试类型 功能测试

TC-USER-020:获取用户列表-按角色筛选

项目 内容
用例编号 TC-USER-020
用例名称 获取用户列表-按角色筛选
前置条件 存在多种角色用户
测试步骤 1. GET /api/web/users?role=supplier
2. 检查返回数据
预期结果 只返回供应商角色的用户
优先级 P0
测试类型 功能测试

TC-USER-021:获取用户列表-关键词搜索

项目 内容
用例编号 TC-USER-021
用例名称 获取用户列表-关键词搜索
前置条件 存在用户名为 "张三" 的用户
测试步骤 1. GET /api/web/users?keyword=张三
2. 检查返回数据
预期结果 返回包含"张三"的用户
优先级 P1
测试类型 功能测试

TC-USER-022:更新用户信息

项目 内容
用例编号 TC-USER-022
用例名称 更新用户信息
前置条件 存在目标用户
测试步骤 1. PUT /api/web/users/{userId}
2. {realName: "新姓名", phone: "13900000001"}
3. 验证更新结果
预期结果 用户信息已更新
优先级 P0
测试类型 功能测试

TC-USER-023:删除用户-软删除

项目 内容
用例编号 TC-USER-023
用例名称 删除用户-软删除
前置条件 存在目标用户
测试步骤 1. DELETE /api/web/users/{userId}
2. 查询用户列表
3. 尝试用该账号登录
预期结果 1. 删除成功
2. 用户列表不显示该用户
3. 登录失败
优先级 P0
测试类型 功能测试

TC-USER-024:重置密码

项目 内容
用例编号 TC-USER-024
用例名称 重置密码
前置条件 存在目标用户
测试步骤 1. POST /api/web/user/reset-password/{userId}
2. 检查返回的新密码
3. 使用新密码登录
预期结果 1. 返回随机生成的新密码
2. 新密码可以正常登录
优先级 P0
测试类型 功能测试

三、订单模块测试用例

3.1 订单预览与创建

TC-ORDER-001:订单预览

项目 内容
用例编号 TC-ORDER-001
用例名称 订单预览
前置条件 客户已登录,存在有效的价格清单
测试步骤 1. POST /api/mini/client/orders/preview
2. {priceListId: "PL_001", items: [{productId: "PROD_001", quantity: 10}], addressId: "ADDR_001"}
3. 检查预览结果
预期结果 1. 返回订单预览信息
2. 包含商品明细、总金额、收货地址
优先级 P0
测试类型 功能测试

TC-ORDER-002:创建订单-正常创建

项目 内容
用例编号 TC-ORDER-002
用例名称 创建订单-正常创建
前置条件 客户已登录,存在有效的价格清单和收货地址
测试步骤 1. POST /api/mini/client/orders
2. 传入完整的订单信息
3. 检查订单创建结果
预期结果 1. 返回订单ID和订单号
2. 初始状态为 pending_payment
优先级 P0
测试类型 功能测试

TC-ORDER-003:创建订单-价格版本已失效

项目 内容
用例编号 TC-ORDER-003
用例名称 创建订单-价格版本已失效
前置条件 使用已失效的价格清单
测试步骤 1. POST /api/mini/client/orders
2. 使用失效的priceListId
3. 检查错误响应
预期结果 1. HTTP状态码:400
2. code: 1001
3. message: "价格版本已过期"
优先级 P0
测试类型 业务规则测试

TC-ORDER-004:创建订单-商品库存不足

项目 内容
用例编号 TC-ORDER-004
用例名称 创建订单-商品库存不足
前置条件 商品库存不足
测试步骤 1. POST /api/mini/client/orders
2. 传入超过库存的数量
3. 检查错误响应
预期结果 1. HTTP状态码:400
2. code: 1004
3. message: "商品库存不足"
优先级 P1
测试类型 业务规则测试

TC-ORDER-005:创建订单-缺少必填参数

项目 内容
用例编号 TC-ORDER-005
用例名称 创建订单-缺少必填参数
前置条件 客户已登录
测试步骤 1. POST /api/mini/client/orders
2. 缺少addressId
3. 检查参数校验响应
预期结果 1. HTTP状态码:400
2. message: "缺少必填参数"
优先级 P1
测试类型 参数校验测试

TC-ORDER-006:从购物车创建订单

项目 内容
用例编号 TC-ORDER-006
用例名称 从购物车创建订单
前置条件 客户已登录,购物车中有商品
测试步骤 1. POST /api/mini/client/orders/from-cart
2. 传入cartIds和addressId
3. 检查订单创建结果
预期结果 1. 订单创建成功
2. 购物车中对应商品被清除
优先级 P0
测试类型 功能测试

3.2 订单查询

TC-ORDER-007:客户获取订单列表

项目 内容
用例编号 TC-ORDER-007
用例名称 客户获取订单列表
前置条件 客户存在订单
测试步骤 1. GET /api/mini/client/orders
2. 检查返回数据
预期结果 1. 只返回当前客户的订单
2. 分页正确
优先级 P0
测试类型 功能测试

TC-ORDER-008:客户按状态筛选订单

项目 内容
用例编号 TC-ORDER-008
用例名称 客户按状态筛选订单
前置条件 客户存在多种状态的订单
测试步骤 1. GET /api/mini/client/orders?status=pending_payment
2. 检查返回数据
预期结果 只返回待支付状态的订单
优先级 P0
测试类型 功能测试

TC-ORDER-009:获取订单详情

项目 内容
用例编号 TC-ORDER-009
用例名称 获取订单详情
前置条件 订单存在
测试步骤 1. GET /api/mini/client/orders/{orderId}
2. 检查详情信息
预期结果 返回完整的订单详情,包含商品明细、状态日志等
优先级 P0
测试类型 功能测试

TC-ORDER-010:查看他人订单-权限验证

项目 内容
用例编号 TC-ORDER-010
用例名称 查看他人订单-权限验证
前置条件 存在其他客户的订单
测试步骤 1. 使用当前客户token
2. GET 其他客户的订单详情
3. 检查权限响应
预期结果 1. HTTP状态码:403
2. code: 403
3. message: "无权限访问该订单"
优先级 P0
测试类型 安全测试

3.3 订单取消

TC-ORDER-011:客户直接取消未支付订单

项目 内容
用例编号 TC-ORDER-011
用例名称 客户直接取消未支付订单
前置条件 存在待支付订单
测试步骤 1. POST /api/mini/client/orders/{orderId}/direct-cancel
2. {reason: "不想要了"}
3. 检查订单状态
预期结果 1. 订单状态变为 cancelled
2. 不产生退款
优先级 P0
测试类型 功能测试

TC-ORDER-012:客户发起取消申请

项目 内容
用例编号 TC-ORDER-012
用例名称 客户发起取消申请
前置条件 存在已支付订单
测试步骤 1. POST /api/mini/client/orders/{orderId}/cancel
2. {reason: "不想要了"}
3. 检查订单状态
预期结果 1. 订单状态变为 pending_review_cancel
2. 需要运营审核
优先级 P0
测试类型 功能测试

TC-ORDER-013:取消已配送订单

项目 内容
用例编号 TC-ORDER-013
用例名称 取消已配送订单
前置条件 存在配送中订单
测试步骤 1. POST /api/mini/client/orders/{orderId}/cancel
2. 检查错误响应
预期结果 1. HTTP状态码:400
2. message: "当前状态不允许取消"
优先级 P0
测试类型 业务规则测试

3.4 订单支付

TC-ORDER-014:发起微信支付

项目 内容
用例编号 TC-ORDER-014
用例名称 发起微信支付
前置条件 存在待支付订单
测试步骤 1. POST /api/mini/client/orders/{orderId}/wechat-pay
2. 检查返回的支付参数
预期结果 返回微信支付所需的签名参数
优先级 P0
测试类型 功能测试

TC-ORDER-015:支付已完成订单

项目 内容
用例编号 TC-ORDER-015
用例名称 支付已完成订单
前置条件 存在已支付订单
测试步骤 1. POST /api/mini/client/orders/{orderId}/wechat-pay
2. 检查错误响应
预期结果 1. HTTP状态码:400
2. message: "订单已支付"
优先级 P0
测试类型 业务规则测试

3.5 订单收货

TC-ORDER-016:客户确认收货

项目 内容
用例编号 TC-ORDER-016
用例名称 客户确认收货
前置条件 存在待确认收货的订单
测试步骤 1. POST /api/mini/client/orders/{orderId}/confirm-receive
2. 检查订单状态
预期结果 1. 订单状态变为 completed
2. 记录 completed_time
优先级 P0
测试类型 功能测试

3.6 运营订单管理

TC-ORDER-017:运营获取订单列表

项目 内容
用例编号 TC-ORDER-017
用例名称 运营获取订单列表
前置条件 运营人员已登录
测试步骤 1. GET /api/web/orders
2. 检查返回数据
预期结果 返回所有区域的订单(运营可查看全部)
优先级 P0
测试类型 功能测试

TC-ORDER-018:运营按区域筛选订单

项目 内容
用例编号 TC-ORDER-018
用例名称 运营按区域筛选订单
前置条件 运营人员已登录
测试步骤 1. GET /api/web/orders?regionId=REGION_001
2. 检查返回数据
预期结果 只返回指定区域的订单
优先级 P1
测试类型 功能测试

TC-ORDER-019:运营审核取消申请-同意

项目 内容
用例编号 TC-ORDER-019
用例名称 运营审核取消申请-同意
前置条件 存在待审核取消的订单
测试步骤 1. POST /api/web/orders/{orderId}/review-cancel
2. {approved: true, reviewNote: "同意取消"}
3. 检查订单状态
预期结果 1. 订单状态变为 cancelled
2. 如已支付,触发退款流程
优先级 P0
测试类型 功能测试

TC-ORDER-020:运营审核取消申请-驳回

项目 内容
用例编号 TC-ORDER-020
用例名称 运营审核取消申请-驳回
前置条件 存在待审核取消的订单
测试步骤 1. POST /api/web/orders/{orderId}/review-cancel
2. {approved: false, reviewNote: "拒绝取消"}
3. 检查订单状态
预期结果 订单状态恢复为原状态(如 pending_delivery)
优先级 P0
测试类型 功能测试

TC-ORDER-021:运营分配配送

项目 内容
用例编号 TC-ORDER-021
用例名称 运营分配配送
前置条件 存在待分配配送的订单
测试步骤 1. POST /api/web/orders/{orderId}/assign-delivery
2. {deliverId: "USER_050"}
3. 检查分配结果
预期结果 1. 订单状态变为 delivering
2. 创建配送任务
优先级 P0
测试类型 功能测试

TC-ORDER-022:运营调整订单-减量

项目 内容
用例编号 TC-ORDER-022
用例名称 运营调整订单-减量
前置条件 存在配送中的订单
测试步骤 1. POST /api/web/orders/{orderId}/adjust
2. {items: [{orderItemId: "ITEM_001", quantity: 8, status: "reduced"}], reason: "部分缺货"}
3. 检查调整结果
预期结果 1. 订单金额重新计算
2. 如有差额,生成退款记录
优先级 P0
测试类型 功能测试

TC-ORDER-023:运营调整订单-订单已锁定

项目 内容
用例编号 TC-ORDER-023
用例名称 运营调整订单-订单已锁定
前置条件 订单被其他运营锁定
测试步骤 1. 尝试调整已锁定的订单
2. 检查错误响应
预期结果 1. HTTP状态码:409
2. code: 1002
3. message: "订单已被锁定"
优先级 P0
测试类型 并发测试

TC-ORDER-024:订单锁定与解锁

项目 内容
用例编号 TC-ORDER-024
用例名称 订单锁定与解锁
前置条件 存在目标订单
测试步骤 1. POST /api/web/orders/{orderId}/lock
2. 验证锁定状态
3. POST /api/web/orders/{orderId}/unlock
4. 验证解锁状态
预期结果 1. 锁定后其他用户无法操作
2. 解锁后恢复可操作状态
优先级 P1
测试类型 功能测试

TC-ORDER-025:客户催单

项目 内容
用例编号 TC-ORDER-025
用例名称 客户催单
前置条件 存在配送中的订单
测试步骤 1. POST /api/mini/client/orders/{orderId}/urge
2. 检查催单结果
预期结果 1. 返回催单次数
2. 发送通知给运营和配送员
优先级 P1
测试类型 功能测试

TC-ORDER-026:超出催单次数限制

项目 内容
用例编号 TC-ORDER-026
用例名称 超出催单次数限制
前置条件 当天已催单3次
测试步骤 1. POST /api/mini/client/orders/{orderId}/urge
2. 检查错误响应
预期结果 1. HTTP状态码:400
2. code: 1005
3. message: "超出催单次数限制"
优先级 P1
测试类型 业务规则测试

四、配送模块测试用例

4.1 配送任务分配

TC-DELIVERY-001:运营分配配送任务

项目 内容
用例编号 TC-DELIVERY-001
用例名称 运营分配配送任务
前置条件 存在待分配的订单
测试步骤 1. POST /api/web/delivery-tasks/assign
2. {orderId: "ORDER_001", deliverId: "USER_050"}
3. 检查分配结果
预期结果 1. 创建配送任务
2. 返回任务ID和任务号
优先级 P0
测试类型 功能测试

TC-DELIVERY-002:批量分配配送任务

项目 内容
用例编号 TC-DELIVERY-002
用例名称 批量分配配送任务
前置条件 存在多个待分配的订单
测试步骤 1. POST /api/web/delivery-tasks/assign-batch
2. 传入多个分配任务
3. 检查批量分配结果
预期结果 所有任务分配成功
优先级 P0
测试类型 功能测试

TC-DELIVERY-003:分配给不存在的配送员

项目 内容
用例编号 TC-DELIVERY-003
用例名称 分配给不存在的配送员
前置条件 无
测试步骤 1. POST /api/web/delivery-tasks/assign
2. 使用不存在的deliverId
3. 检查错误响应
预期结果 1. HTTP状态码:400
2. message: "配送员不存在"
优先级 P1
测试类型 参数校验测试

4.2 配送员任务操作

TC-DELIVERY-004:配送员获取待取货任务

项目 内容
用例编号 TC-DELIVERY-004
用例名称 配送员获取待取货任务
前置条件 配送员已登录
测试步骤 1. GET /api/mini/deliverer/tasks?status=pending
2. 检查返回数据
预期结果 1. 只返回待取货状态的任务
2. 只返回当前配送员的任务
优先级 P0
测试类型 功能测试

TC-DELIVERY-005:配送员确认取货

项目 内容
用例编号 TC-DELIVERY-005
用例名称 配送员确认取货
前置条件 存在待取货的配送任务
测试步骤 1. POST /api/mini/deliverer/tasks/{taskId}/pickup
2. {remark: "货物完好", imageUrls: ["url1", "url2"]}
3. 检查任务状态
预期结果 1. 任务状态变为 picking
2. 记录取货时间和凭证
优先级 P0
测试类型 功能测试

TC-DELIVERY-006:配送员确认送达

项目 内容
用例编号 TC-DELIVERY-006
用例名称 配送员确认送达
前置条件 存在配送中的任务
测试步骤 1. POST /api/mini/deliverer/tasks/{taskId}/deliver
2. {items: [{taskItemId: "DLV_ITEM_001", deliveredQuantity: 10}], remark: "客户签收"}
3. 检查任务状态
预期结果 1. 任务状态变为 completed
2. 关联订单状态更新
优先级 P0
测试类型 功能测试

TC-DELIVERY-007:部分送达

项目 内容
用例编号 TC-DELIVERY-007
用例名称 部分送达
前置条件 存在配送中的任务
测试步骤 1. POST /api/mini/deliverer/tasks/{taskId}/deliver
2. 部分商品 deliveredQuantity 小于 quantity
3. 检查状态变更
预期结果 1. 任务部分完成
2. 订单进入 partial_delivered 状态
优先级 P0
测试类型 功能测试

TC-DELIVERY-008:配送员申请取消任务

项目 内容
用例编号 TC-DELIVERY-008
用例名称 配送员申请取消任务
前置条件 存在配送中的任务
测试步骤 1. POST /api/mini/deliverer/tasks/{taskId}/cancel
2. {reason: "客户联系不上"}
3. 检查任务状态
预期结果 1. 任务状态变为 cancelled
2. 通知运营人员
优先级 P0
测试类型 功能测试

4.3 配送时效预警

TC-DELIVERY-009:配送时效预警

项目 内容
用例编号 TC-DELIVERY-009
用例名称 配送时效预警
前置条件 存在即将超时的配送任务
测试步骤 1. GET /api/web/delivery-tasks/warnings?withinMinutes=60
2. 检查预警列表
预期结果 返回即将在60分钟内超时的任务
优先级 P0
测试类型 功能测试

TC-DELIVERY-010:配送员获取时效预警

项目 内容
用例编号 TC-DELIVERY-010
用例名称 配送员获取时效预警
前置条件 配送员存在即将超时的任务
测试步骤 1. GET /api/mini/deliverer/tasks/warnings
2. 检查预警列表
预期结果 只返回当前配送员的预警任务
优先级 P1
测试类型 功能测试

4.4 配送员换班交接

TC-DELIVERY-011:配送员交班

项目 内容
用例编号 TC-DELIVERY-011
用例名称 配送员交班
前置条件 配送员有待交接的任务
测试步骤 1. POST /api/mini/deliverer/handover
2. {handoverType: "shift_out", targetDeliverId: "USER_051", taskIds: ["DLV_001", "DLV_002"]}
3. 检查交接结果
预期结果 1. 任务转交给接班配送员
2. 返回交接单号
优先级 P1
测试类型 功能测试

TC-DELIVERY-012:交接给不存在的配送员

项目 内容
用例编号 TC-DELIVERY-012
用例名称 交接给不存在的配送员
前置条件 无
测试步骤 1. POST /api/mini/deliverer/handover
2. 使用不存在的 targetDeliverId
3. 检查错误响应
预期结果 1. HTTP状态码:400
2. message: "接班配送员不存在"
优先级 P1
测试类型 参数校验测试

4.5 配送任务查询

TC-DELIVERY-013:运营获取配送任务列表

项目 内容
用例编号 TC-DELIVERY-013
用例名称 运营获取配送任务列表
前置条件 运营人员已登录
测试步骤 1. GET /api/web/delivery-tasks
2. 检查返回数据
预期结果 返回所有区域的配送任务
优先级 P0
测试类型 功能测试

TC-DELIVERY-014:获取配送任务详情

项目 内容
用例编号 TC-DELIVERY-014
用例名称 获取配送任务详情
前置条件 任务存在
测试步骤 1. GET /api/web/delivery-tasks/{taskId}
2. 检查详情信息
预期结果 返回完整的任务详情,包含配送明细
优先级 P0
测试类型 功能测试

4.6 供应商取货确认

TC-DELIVERY-015:供应商确认取货

项目 内容
用例编号 TC-DELIVERY-015
用例名称 供应商确认取货
前置条件 存在待取货的配送任务
测试步骤 1. POST /api/mini/supplier/pickup-tasks/{taskId}/confirm
2. {remark: "货物已交接", imageUrls: ["url1"]}
3. 检查任务状态
预期结果 1. 任务状态更新
2. 记录确认时间和凭证
优先级 P0
测试类型 功能测试

4.7 配送员评价

TC-DELIVERY-016:客户评价配送员-正常评价

项目 内容
用例编号 TC-DELIVERY-016
用例名称 客户评价配送员-正常评价
前置条件 1. 客户已登录
2. 存在一笔属于该客户且状态为 completed 的订单,并已生成配送任务且有配送员
测试步骤 1. POST /api/mini/client/orders/{orderId}/deliverer-review
2. 请求体:{score: 5, tags: ["服务好","送达快"], content: "配送及时,服务态度好", isAnonymous: false}
3. 检查响应与订单详情中的评价信息
预期结果 1. HTTP状态码:200
2. 返回评价ID与score
3. 再次 GET /api/mini/client/orders/{orderId},delivererReview 不为空,且 canReviewDeliverer=false
优先级 P0
测试类型 功能测试

TC-DELIVERY-017:客户评价配送员-评分超出范围

项目 内容
用例编号 TC-DELIVERY-017
用例名称 客户评价配送员-评分超出范围
前置条件 同 TC-DELIVERY-016
测试步骤 1. POST /api/mini/client/orders/{orderId}/deliverer-review
2. 请求体:{score: 0} 或 {score: 6}
3. 检查错误响应
预期结果 1. HTTP状态码:400
2. message: "评分必须在1-5之间"
优先级 P0
测试类型 参数校验测试

TC-DELIVERY-018:客户评价配送员-重复评价

项目 内容
用例编号 TC-DELIVERY-018
用例名称 客户评价配送员-重复评价
前置条件 该订单已成功评价过一次
测试步骤 1. 再次 POST /api/mini/client/orders/{orderId}/deliverer-review
2. 使用任意合法请求体
3. 检查错误响应
预期结果 1. HTTP状态码:400
2. message: "该订单已评价"
优先级 P1
测试类型 业务规则测试

TC-DELIVERY-019:客户评价配送员-非已完成订单评价

项目 内容
用例编号 TC-DELIVERY-019
用例名称 客户评价配送员-非已完成订单评价
前置条件 存在一笔属于该客户但状态不为 completed 的订单(如 delivering)
测试步骤 1. POST /api/mini/client/orders/{orderId}/deliverer-review
2. 请求体:{score: 5}
3. 检查错误响应
预期结果 1. HTTP状态码:400
2. message: "仅已完成订单可评价"
优先级 P1
测试类型 业务规则测试

五、接口输入校验规则

5.1 通用校验规则

5.1.1 必填参数校验

参数类型 校验规则 错误提示
string 不能为空、null、undefined "xxx不能为空"
number 不能为null、undefined "xxx不能为空"
array 不能为空数组 "xxx不能为空"
object 不能为null、undefined "xxx不能为空"

5.1.2 字符串长度校验

字段 最小长度 最大长度 说明
username 4 20 用户名
password 6 20 密码
realName 2 50 真实姓名
phone 11 11 手机号(中国)
detailAddress 5 500 详细地址

5.1.3 数字范围校验

字段 最小值 最大值 说明
page 1 - 页码
pageSize 1 100 每页条数
quantity 0.0001 999999 商品数量
price 0 999999999 价格(分)
amount 0 999999999999 金额(分)

5.2 各模块校验规则

5.2.1 用户模块

接口 参数 校验规则 错误码
登录 username 必填,4-20字符 400
登录 password 必填,6-20字符 400
创建用户 username 必填,4-20字符,唯一 400/409
创建用户 phone 必填,11位手机号 400
创建用户 role 必填,枚举值 400
修改密码 oldPassword 必填,与原密码一致 400
修改密码 newPassword 必填,6-20字符,不与原密码相同 400

5.2.2 地址模块

参数 校验规则 错误提示
contactPerson 必填,2-20字符 "联系人不能为空"
contactPhone 必填,11位手机号 "手机号格式不正确"
province 必填 "省份不能为空"
city 必填 "城市不能为空"
detailAddress 必填,5-500字符 "详细地址不能为空"
addressType 必填,pickup/delivery/both "地址类型不正确"

5.2.3 订单模块

参数 校验规则 错误提示
priceListId 必填,对应价格清单存在且生效 "价格清单不存在或已失效"
items 必填,非空数组 "订单商品不能为空"
items[].productId 必填 "商品ID不能为空"
items[].quantity 必填,大于0,最多4位小数 "商品数量不正确"
addressId 必填,对应地址存在 "收货地址不存在"
paymentMethod 必填,wechat/offline "支付方式不正确"
reason 取消/调整时必填,2-200字符 "原因不能为空"

5.2.4 配送模块

参数 校验规则 错误提示
orderId 必填,对应订单存在且可分配 "订单不存在或状态不正确"
deliverId 必填,对应配送员存在且可用 "配送员不存在或不可用"
taskIds 交接时必填,非空数组 "请选择要交接的任务"
remark 可选,最大200字符 "备注长度不能超过200字符"
imageUrls 可选,最多10个URL "图片数量不能超过10张"

5.2.5 询价报价模块

参数 校验规则 错误提示
title 必填,2-100字符 "询价单标题不能为空"
regionId 必填,对应区域存在 "区域不存在"
productIds 必填,非空数组 "请选择询价商品"
items[].productId 必填 "商品ID不能为空"
items[].unitId 必填 "单位ID不能为空"
items[].price 必填,大于0,2位小数 "价格必须大于0"

5.2.6 价格模块

参数 校验规则 错误提示
effectiveTime 必填,日期格式,晚于当前时间 "生效时间必须晚于当前时间"
items 必填,非空数组 "价格项不能为空"
items[].price 必填,0.01-999999.99 "价格超出范围"
version 自动递增 -

5.3 特殊业务校验

5.3.1 订单状态校验

操作 允许的状态 错误提示
支付 pending_payment "当前状态不允许支付"
取消(直接) pending_payment "当前状态不允许直接取消"
取消(申请) pending_delivery, delivering, partial_delivered, pending_confirm "当前状态不允许申请取消"
确认收货 pending_confirm "当前状态不允许确认收货"
分配配送 pending_delivery "当前状态不允许分配配送"
调整订单 delivering, partial_delivered "当前状态不允许调整订单"

5.3.2 配送任务状态校验

操作 允许的状态 错误提示
取货 pending "当前状态不允许取货"
送达 picking, delivering "当前状态不允许确认送达"
取消 pending, picking "当前状态不允许取消"
交接 pending, picking "当前状态不允许交接"

六、错误码与异常处理说明

6.1 HTTP状态码规范

状态码 含义 使用场景
200 成功 正常请求成功
400 请求参数错误 参数校验失败、格式错误等
401 未授权 未登录、Token过期、Token无效
403 无权限 权限不足、账号被禁用
404 资源不存在 查询的资源不存在
409 资源冲突 订单已锁定、数据重复等
500 服务器错误 系统内部异常

6.2 业务错误码

错误码 说明 适用场景
1001 价格版本已过期 下单时使用的价格版本已失效
1002 订单已被锁定 订单被其他用户锁定
1003 配送任务已被接单 配送任务已被其他配送员接收
1004 库存不足 商品库存无法满足订单需求
1005 超出催单次数限制 当天催单次数已达上限(3次)
2001 订单状态不允许此操作 当前状态不支持该操作
2002 配送任务状态不允许此操作 当前状态不支持该操作
2003 询价单状态不允许此操作 当前状态不支持该操作
3001 报价已过期 提交报价时询价单已关闭
3002 报价时间已截止 超出报价截止时间
4001 价格版本正在生效中 存在待生效版本,无法发布新版本
5001 退款金额超出已支付金额 退款金额大于实际支付
5002 退款处理中 退款正在处理中,请勿重复提交

6.3 错误响应格式

{
  "code": 400,
  "message": "参数校验失败",
  "data": null,
  "timestamp": 1700000000000,
  "errors": [
    {
      "field": "username",
      "message": "用户名不能为空"
    },
    {
      "field": "password",
      "message": "密码长度不能少于6位"
    }
  ]
}

6.4 异常处理规范

6.4.1 参数校验异常

{
  "code": 400,
  "message": "参数校验失败",
  "errors": [
    {
      "field": "phone",
      "message": "手机号格式不正确"
    }
  ]
}

6.4.2 业务规则异常

{
  "code": 1002,
  "message": "订单已被锁定",
  "data": {
    "orderId": "ORDER_001",
    "lockOperator": "张三",
    "lockTime": "2026-03-19T10:00:00+08:00"
  }
}

6.4.3 权限异常

{
  "code": 403,
  "message": "无权限访问该资源",
  "data": null
}

6.4.4 认证异常

{
  "code": 401,
  "message": "Token已过期,请重新登录",
  "data": null
}

6.5 异常处理流程

┌─────────────────┐
│   请求到达      │
└────────┬────────┘
         ▼
┌─────────────────┐
│  参数校验       │──失败──▶ 返回400错误
└────────┬────────┘
         │成功
         ▼
┌─────────────────┐
│  认证校验       │──失败──▶ 返回401错误
└────────┬────────┘
         │成功
         ▼
┌─────────────────┐
│  权限校验       │──失败──▶ 返回403错误
└────────┬────────┘
         │成功
         ▼
┌─────────────────┐
│  业务规则校验    │──失败──▶ 返回业务错误码
└────────┬────────┘
         │成功
         ▼
┌─────────────────┐
│  业务处理       │──失败──▶ 返回500错误
└────────┬────────┘
         │成功
         ▼
┌─────────────────┐
│  返回成功响应   │
└─────────────────┘

6.6 日志记录要求

级别 记录内容
INFO 正常业务操作(登录、订单创建、状态变更等)
WARN 业务异常(库存不足、支付失败等)
ERROR 系统异常(数据库错误、第三方接口超时等)

6.7 第三方接口异常处理

微信支付异常

异常类型 处理方式
微信接口超时 重试3次,每次间隔2秒
微信返回失败 记录错误码,提示用户
微信退款失败 标记退款状态为failed,人工处理

地图服务异常

异常类型 处理方式
地图接口超时 使用缓存数据或默认坐标
地理编码失败 返回原始地址,提示用户确认

七、本轮接口对齐回归测试

说明:本章节聚焦“接口路径/参数口径对齐”相关改动,建议作为提测必跑清单执行。

7.1 Web端接口对齐回归

TC-ALIGN-WEB-001:Web登录路径对齐验证

项目 内容
用例编号 TC-ALIGN-WEB-001
用例名称 Web登录路径对齐验证
前置条件 存在有效Web账号(如:admin/admin123)
测试步骤 1. POST /api/web/auth/login,请求体 {username:"admin", password:"admin123"}
2. 使用返回token调用 GET /api/web/auth/current-user
3. 调用 POST /api/web/auth/logout
预期结果 1. 三个接口均返回HTTP 200
2. 不出现路径错误(如 /api/api/web/...)
3. 当前用户信息字段完整
优先级 P0
测试类型 回归测试

TC-ALIGN-WEB-002:Web修改密码路径对齐验证

项目 内容
用例编号 TC-ALIGN-WEB-002
用例名称 Web修改密码路径对齐验证
前置条件 已登录并持有有效token
测试步骤 1. POST /api/web/admin/users/change-password
2. 请求体 {oldPassword:"***", newPassword:"***"}
3. 使用新密码重新登录
预期结果 1. 密码修改成功
2. 新密码可登录,旧密码不可登录
优先级 P0
测试类型 回归测试

TC-ALIGN-WEB-003:报价对比接口验证

项目 内容
用例编号 TC-ALIGN-WEB-003
用例名称 报价对比接口验证
前置条件 存在同一询价单下至少2家供应商报价
测试步骤 1. GET /api/web/admin/quotation-compare?inquiryId=INQ_001&supplierIds=SUP_001,SUP_002
2. 检查返回字段结构
预期结果 1. 返回HTTP 200
2. 返回数组包含 productName、unitName、prices、lowestPrice、highestPrice
优先级 P0
测试类型 回归测试

TC-ALIGN-WEB-004:发票接口路径对齐验证

项目 内容
用例编号 TC-ALIGN-WEB-004
用例名称 发票接口路径对齐验证
前置条件 存在可开票订单
测试步骤 1. POST /api/invoice/create 创建发票
2. GET /api/invoice/list 查询列表
3. GET /api/invoice/detail/{invoiceId} 查询详情
4. POST /api/invoice/issue/{invoiceId} 开具
预期结果 1. 路径均可访问(HTTP 200)
2. 返回结果符合发票状态流转
优先级 P0
测试类型 回归测试

TC-ALIGN-WEB-005:系统配置批量状态更新参数口径验证

项目 内容
用例编号 TC-ALIGN-WEB-005
用例名称 系统配置批量状态更新参数口径验证
前置条件 已存在至少2条系统配置
测试步骤 1. POST /api/system-config/batch-status
2. 请求体 {ids:["CFG_001","CFG_002"], is_active:1}
3. 重新查询配置列表确认状态
预期结果 1. 接口返回HTTP 200
2. 返回更新条数正确
3. 配置状态更新成功
优先级 P0
测试类型 回归测试

TC-ALIGN-WEB-006:配送预警详情与处理接口验证

项目 内容
用例编号 TC-ALIGN-WEB-006
用例名称 配送预警详情与处理接口验证
前置条件 存在未处理预警记录 warningId
测试步骤 1. GET /api/delivery-warning/detail/{warningId}
2. POST /api/delivery-warning/handle/{warningId},请求体 {handleType:"contacted", remark:"已电话确认"}
3. 再次查询列表
预期结果 1. 详情接口返回HTTP 200
2. 处理接口返回HTTP 200
3. 预警状态由未处理变为已处理
优先级 P0
测试类型 回归测试

7.2 小程序端接口对齐回归

TC-ALIGN-MINI-001:小程序登录/登出路径验证

项目 内容
用例编号 TC-ALIGN-MINI-001
用例名称 小程序登录/登出路径验证
前置条件 存在可用小程序账号(client/supplier/deliver)
测试步骤 1. POST /api/mini/auth/login
2. GET /api/mini/auth/current-user
3. POST /api/mini/auth/logout
预期结果 1. 三个接口均返回HTTP 200
2. 无历史兼容路径调用(如 /api/web/mini/...)
优先级 P0
测试类型 回归测试

TC-ALIGN-MINI-002:小程序客户资料接口路径验证

项目 内容
用例编号 TC-ALIGN-MINI-002
用例名称 小程序客户资料接口路径验证
前置条件 客户账号已登录
测试步骤 1. GET /api/mini/client/profile
2. PUT /api/mini/client/profile 更新手机号/姓名
3. 再次GET校验更新结果
预期结果 1. 两个接口均返回HTTP 200
2. 更新结果可读回
3. 不再调用旧路径 /api/mini/user/profile
优先级 P0
测试类型 回归测试

7.3 后端兼容性与回归检查

TC-ALIGN-BE-001:delivery-warning/handle 参数兼容性

项目 内容
用例编号 TC-ALIGN-BE-001
用例名称 delivery-warning/handle 参数兼容性
前置条件 存在未处理预警记录
测试步骤 1. 方式A:POST /api/delivery-warning/handle/{warningId},body传 handleType/remark
2. 方式B:POST 同一路径,query传 handle_type/remark
3. 比对处理结果
预期结果 两种传参方式均可正常处理(HTTP 200)
优先级 P1
测试类型 兼容性测试

TC-ALIGN-BE-002:系统配置批量更新 body 参数校验

项目 内容
用例编号 TC-ALIGN-BE-002
用例名称 系统配置批量更新 body 参数校验
前置条件 已登录并具备配置管理权限
测试步骤 1. POST /api/system-config/batch-status,body缺少 ids
2. POST /api/system-config/batch-status,body缺少 is_active
3. POST完整body
预期结果 1. 参数缺失时返回400及明确错误信息
2. 参数完整时返回200并更新成功
优先级 P1
测试类型 参数校验测试

附录

A. 测试用例执行记录模板

用例编号 用例名称 执行结果 执行人 执行时间 备注
TC-USER-001 Web端正常登录 PASS - - -

A.1 本轮接口对齐回归 - 执行记录预填示例

用例编号 用例名称 执行结果(PASS/FAIL) 执行人 执行时间 备注
TC-ALIGN-WEB-001 Web登录路径对齐验证 待执行 - - -
TC-ALIGN-WEB-002 Web修改密码路径对齐验证 待执行 - - -
TC-ALIGN-WEB-003 报价对比接口验证 待执行 - - -
TC-ALIGN-WEB-004 发票接口路径对齐验证 待执行 - - -
TC-ALIGN-WEB-005 系统配置批量状态更新参数口径验证 待执行 - - -
TC-ALIGN-WEB-006 配送预警详情与处理接口验证 待执行 - - -
TC-ALIGN-MINI-001 小程序登录/登出路径验证 待执行 - - -
TC-ALIGN-MINI-002 小程序客户资料接口路径验证 待执行 - - -
TC-ALIGN-BE-001 delivery-warning/handle 参数兼容性 待执行 - - -
TC-ALIGN-BE-002 系统配置批量更新 body 参数校验 待执行 - - -

B. 缺陷记录模板

缺陷ID 严重级别 所属模块 缺陷描述 复现步骤 预期结果 实际结果 状态
BUG-001 高 用户模块 登录接口... ... ... ... 待修复

C. 接口响应时间要求

接口类型 响应时间要求
登录类 < 500ms
查询类 < 300ms
操作类 < 1s
文件上传 < 5s