litemall 电商系统接口测试报告

litemall 电商系统接口测试报告

一、项目概述

1.1 被测系统

项目 内容
系统名称 litemall(小米商城风格电商系统)
技术架构 Spring Boot 2.x + Vue 2 + MySQL
测试环境 本地部署,http://localhost:8080
数据库 MySQL 5.7+,库名 litemall
测试工具 Postman(接口调试)、MySQL Client(数据校验)

1.2 测试范围

  • 管理后台模块(商品、订单、用户、统计)
  • 用户端模块(认证、商品浏览、购物车、订单、收货地址)
  • 小程序端模块(首页、专题、品牌、分类)

1.3 测试策略

采用黑盒测试为主,结合等价类划分、边界值分析、错误推测法设计测试用例;通过 Postman 构造 HTTP 请求,直接操作数据库校验数据一致性。


二、测试环境

2.1 环境配置

组件 版本/配置
操作系统 Windows 10
JDK 1.8
MySQL 5.7
后端服务 litemall-all-1.0-SNAPSHOT.jar
接口地址 http://localhost:8080

2.2 鉴权方式

系统采用 Token 机制,请求头中携带:

X-Litemall-Admin-Token: {管理员token}   # 管理端
X-Litemall-Token: {用户token}           # 用户端

三、测试用例设计与执行结果

3.1 管理后台 — 商品管理模块

用例编号 用例名称 请求方式 接口路径 请求参数 预期结果 实际结果 是否通过
TC-01-01 商品列表查询-正常 GET /admin/goods/list page=1&limit=20 返回商品列表,errno=0 一致 ✅
TC-01-02 商品列表查询-分页边界 GET /admin/goods/list page=0&limit=0 应返回参数校验错误 返回全部数据 ❌ 缺陷
TC-01-03 商品创建-正常 POST /admin/goods/create 完整商品信息 errno=0,商品创建成功 一致 ✅
TC-01-04 商品创建-价格为负数 POST /admin/goods/create price=-1 应拦截负数价格 创建成功 ❌ 缺陷
TC-01-05 商品创建-缺少必填字段 POST /admin/goods/create 缺少name 返回参数校验错误 返回errno≠0 ✅
TC-01-06 商品编辑-正常 POST /admin/goods/update 修改商品信息 errno=0,修改成功 一致 ✅
TC-01-07 商品删除-正常 POST /admin/goods/delete id=有效id errno=0,逻辑删除成功 一致 ✅
TC-01-08 商品删除-无效id POST /admin/goods/delete id=99999 返回”商品不存在” 一致 ✅
TC-01-09 商品详情查询-正常 GET /admin/goods/detail id=有效id 返回完整商品信息 一致 ✅
TC-01-10 商品详情查询-无效id GET /admin/goods/detail id=0 返回”商品不存在”或空数据 一致 ✅
TC-01-11 未授权访问商品列表 GET /admin/goods/list 无Token 返回401/鉴权失败 返回数据 ❌ 缺陷

3.2 管理后台 — 订单管理模块

用例编号 用例名称 请求方式 接口路径 请求参数 预期结果 实际结果 是否通过
TC-02-01 订单列表查询-正常 GET /admin/order/list page=1&limit=20 返回订单列表 一致 ✅
TC-02-02 订单详情查询-正常 GET /admin/order/detail orderId=1 返回订单详情 一致 ✅
TC-02-03 订单发货-正常 POST /admin/order/ship orderId=2, shipChannel=ZTO, shipSn=TEST123 errno=0,发货成功 一致 ✅
TC-02-04 订单发货-待付款状态 POST /admin/order/ship orderId=2(order_status=101) 应返回”订单不能发货” errno=620 ✅
TC-02-05 订单发货-缺少物流单号 POST /admin/order/ship shipSn为空 应拦截 需确认 ⚠️

3.3 用户端 — 认证模块

用例编号 用例名称 请求方式 接口路径 请求参数 预期结果 实际结果 是否通过
TC-03-01 用户注册-正常 POST /wx/auth/register username/password/mobile errno=0,注册成功 一致 ✅
TC-03-02 用户注册-用户名为空 POST /wx/auth/register username=”” 返回参数校验错误 一致 ✅
TC-03-03 用户注册-密码为空 POST /wx/auth/register password=”” 返回参数校验错误 一致 ✅
TC-03-04 用户登录-正常 POST /wx/auth/login username=user123, password=123456 errno=0,返回token 一致 ✅
TC-03-05 用户登录-密码错误 POST /wx/auth/login password=wrong 返回”用户名或密码错误” 一致 ✅
TC-03-06 用户登录-用户名为空 POST /wx/auth/login username=”” 返回参数校验错误 一致 ✅
TC-03-07 用户登录-用户名不存在 POST /wx/auth/login username=notexist 返回”用户名或密码错误” 一致 ✅

3.4 用户端 — 商品浏览模块

用例编号 用例名称 请求方式 接口路径 请求参数 预期结果 实际结果 是否通过
TC-04-01 商品列表-正常分页 GET /wx/goods/list page=1&limit=10 返回商品列表 一致 ✅
TC-04-02 商品详情-正常 GET /wx/goods/detail id=1181000 返回商品详情 一致 ✅
TC-04-03 商品分类列表 GET /wx/goods/category id=有效id 返回分类信息 一致 ✅
TC-04-04 首页数据 GET /wx/home/index – 返回banner/频道/新品/热销 一致 ✅
TC-04-05 品牌列表 GET /wx/brand/list page=1&limit=10 返回品牌列表 一致 ✅

3.5 用户端 — 购物车模块

用例编号 用例名称 请求方式 接口路径 请求参数 预期结果 实际结果 是否通过
TC-05-01 加入购物车-正常 POST /wx/cart/add goodsId=1181000, productId=1, number=1 errno=0 一致 ✅
TC-05-02 加入购物车-商品已下架 POST /wx/cart/add goodsId=1, productId=1 返回”商品已下架”(errno=710) 一致 ✅
TC-05-03 加入购物车-商品id不存在 POST /wx/cart/add goodsId=99999 返回”商品不存在” 一致 ✅
TC-05-04 加入购物车-数量为0 POST /wx/cart/add number=0 应拦截 需确认 ⚠️
TC-05-05 购物车列表查询 GET /wx/cart/index – 返回购物车商品列表 一致(修复后) ✅
TC-05-06 购物车列表-空购物车 GET /wx/cart/index – cartList为空 一致 ✅
TC-05-07 更新购物车数量-正常 POST /wx/cart/update id=2, number=3 errno=0,更新成功 一致 ✅
TC-05-08 更新购物车数量-超过库存 POST /wx/cart/update number=99999 应返回”库存不足” 需确认 ⚠️
TC-05-09 删除购物车商品-正常 POST /wx/cart/delete productIds=[2] errno=0,删除成功 一致 ✅

3.6 用户端 — 收货地址模块

用例编号 用例名称 请求方式 接口路径 请求参数 预期结果 实际结果 是否通过
TC-06-01 保存收货地址-正常 数据库插入 litemall_address 完整地址信息 插入成功 一致 ✅
TC-06-02 地址列表查询 GET /wx/address/list – 返回地址列表 一致 ✅
TC-06-03 设置默认地址 POST /wx/address/save is_default=1 更新成功 一致 ✅

3.7 用户端 — 订单模块(核心业务流程)

用例编号 用例名称 请求方式 接口路径 请求参数 预期结果 实际结果 是否通过
TC-07-01 提交订单-正常 POST /wx/order/submit cartId=2, addressId=2 errno=0,orderId=1 一致 ✅
TC-07-02 提交订单-无收货地址 POST /wx/order/submit addressId=无效 返回”请选择收货地址” 需确认 ⚠️
TC-07-03 订单详情查询 GET /wx/order/detail orderId=1 返回订单详情 一致 ✅
TC-07-04 订单列表查询 GET /wx/order/list showType=0 返回订单列表 一致 ✅
TC-07-05 取消订单-正常 POST /wx/order/cancel orderId=1 errno=0,取消成功 一致 ✅
TC-07-06 支付订单-环境限制 POST /wx/order/prepay orderId=1 errno=724,”订单不能支付” 一致 ⚠️ 环境问题
TC-07-07 确认收货-正常 POST /wx/order/confirm orderId=2 errno=0,确认成功 一致 ✅
TC-07-08 确认收货-待付款状态 POST /wx/order/confirm orderId=2(status=101) errno=620,”订单不能确认收货” 一致 ✅

3.8 完整业务流程验证

流程一:正常下单→发货→收货闭环

用户登录 → 加购物车 → 提交订单 → [支付:环境限制] → 管理端发货 → 用户确认收货
步骤 接口 关键参数 结果
1 /wx/auth/login username=user123 ✅ token获取成功
2 /wx/cart/add goodsId=1181000, productId=1 ✅ cartId=2
3 /wx/order/submit cartId=2, addressId=2 ✅ orderId=1
4 /wx/order/prepay orderId=1 ⚠️ errno=724(微信支付未配置)
5 DB: UPDATE order_status=201 id=2 ✅ 模拟已支付
6 /admin/order/ship orderId=2, shipChannel=ZTO ✅ errno=0
7 /wx/order/confirm orderId=2 ✅ errno=0

结论:业务状态流转完整,订单从创建→待付款→待发货→已发货→已收货,各环节接口行为符合预期。


四、缺陷汇总

缺陷编号 模块 严重程度 缺陷描述 复现步骤 期望结果 实际结果 状态
BUG-01 商品管理 中 商品价格支持负数 /admin/goods/create, price=-1 应提示”价格不能为负数” 创建成功 待修复
BUG-02 商品管理 中 分页参数为0时未限制 /admin/goods/list?page=0&limit=0 应校验最小值 返回全部数据 待修复
BUG-03 商品管理 高 未携带Token可访问管理端接口 GET /admin/goods/list 无Header 返回401鉴权失败 返回数据 待修复
BUG-04 订单管理 低 发货接口缺少物流单号校验 shipSn传空 应提示必填 未验证 待确认
BUG-05 购物车 低 更新数量未校验上限 number=99999 应返回”库存不足” 未验证 待确认
BUG-06 支付模块 低 支付接口无模拟模式 /wx/order/prepay 本地应有模拟支付 errno=724 环境限制

五、测试结论

5.1 整体评估

本次测试覆盖 litemall 系统 3 大模块、7 个子模块、50+ 接口,共计执行测试用例 48 条:

状态 数量 占比
✅ 通过 40 83.3%
❌ 未通过(缺陷) 3 6.3%
⚠️ 环境问题 1 2.1%
⚠️ 待确认 4 8.3%

5.2 核心业务流程验证结果

流程 状态
用户注册→登录→浏览商品→加购→下单→发货→收货 ✅ 完整闭环通过
订单取消流程 ✅ 通过
支付流程 ⚠️ 受环境配置限制,需补充微信支付配置

5.3 风险评估

风险项 等级 说明
管理端鉴权缺失 高 未登录可直接访问,存在越权风险
价格字段未做边界校验 中 可能导致异常订单金额
分页参数未限制 中 可能导致全表扫描,性能风险

5.4 最终结论

系统核心业务功能运行正常,用户端完整购物链路(浏览→加购→下单→发货→收货)测试通过。管理端存在鉴权、数据校验方面的缺陷,建议修复后再上线。


六、附录

6.1 测试数据

数据项 值
测试用户 user123 / 123456
管理员 admin123 / 123456
商品ID(有效) 1181000
商品ID(已下架) 1
收货地址ID 2
订单ID 1, 2

6.2 测试环境信息

  • 后端启动命令:java -jar litemall-all-1.0-SNAPSHOT.jar
  • 数据库初始化脚本:litemall.sql
  • 接口文档:基于 Swagger + 代码注释

作者:ZCNIX
本文链接:https://blog.zcnix.com/litemall-api-test/
许可协议:CC BY-NC-SA 4.0
上一篇
下一篇