在线购物系统首轮验收测试用例 - casf73/Software-Engineering-Practice GitHub Wiki

在线购物系统首轮验收测试用例

本文档列出首轮验收的 17 个测试用例:T01–T10 为后端自动化用例,U01–U07 为网页和持久化人工检查。现为每个用例建立 3 个独立测试实例,共 51 个实例;后端自动化执行其中 30 个功能实例,另校验全部 51 个实例文件的结构。

项目 单卖家排队购物系统
文档范围 首轮验收;自动化 T01–T10,人工检查 U01–U07
整理日期 2026 年 10 月 14 日

测试用例总览

T 类为后端自动化,U 类为网页与持久化人工检查;每个编号下均有 3 个具体实例。

编号 用例内容
T01 卖家登录、鉴权和退出
T02 商品校验、发布、编辑和单件限制
T03 购买意向、口令码和先进先出队列
T04 交易冻结与撤销边界
T05 交易失败并作废
T06 交易失败并重新排队
T07 交易成功后的商品与意向收尾
T08 卖家主动下架
T09 图片上传与首轮单图限制
T10 旧版多图记录的首轮展示
U01 买家空状态与无图商品
U02 买家表单与口令码查询
U03 队列顺序与队首交易
U04 冻结期间等待者与交易者的撤销
U05 服务重启后的数据保留
U06 页面上传限制与无图发布
U07 桌面与窄屏页面显示

测试实例总览

下表的文件路径以 tests/验收测试数据 为起点。T09 每个实例目录还包含 sample.png、sample.jpg、invalid.txt 和 oversized.png;U 类 21 个实例经用户确认全部测试通过。

实例 输入或操作 预期结果 实例文件
T01-01 错误密码与未登录拦截 未登录和错误密码均为 401;正确登录后可访问,退出后失效 T01/第1个测试实例/instance.json
T01-02 另一组错误密码 错误密码不能创建会话;正确登录及退出流程正常 T01/第2个测试实例/instance.json
T01-03 大小写错误密码 密码区分大小写,错误登录 401,退出后后台仍为 401 T01/第3个测试实例/instance.json
T02-01 商品甲发布与编辑;价格 88 必填校验 400;单件限制 409;公开查询返回更新商品甲 T02/第1个测试实例/instance.json
T02-02 商品乙发布与编辑;价格 99 发布状态 ON_SALE;编辑和公开查询一致 T02/第2个测试实例/instance.json
T02-03 商品丙发布与编辑;价格 120 第二件商品被拒绝;首件编辑成功 T02/第3个测试实例/instance.json
T03-01 138 号码三人队列;电话前缀 1380000000 唯一口令码;撤销、重排、作废后排位和有效性正确 T03/第1个测试实例/instance.json
T03-02 139 号码三人队列;电话前缀 1390000000 按提交先后排队;撤销和作废使口令码失效 T03/第2个测试实例/instance.json
T03-03 137 号码三人队列;电话前缀 1370000000 重新排队移至队尾并保留原口令码 T03/第3个测试实例/instance.json
T04-01 138 号码冻结边界;电话前缀 1381000000 只选队首;交易者不能撤销,等待者可以撤销 T04/第1个测试实例/instance.json
T04-02 139 号码冻结边界;电话前缀 1391000000 交易中拒绝新意向和直接下架 T04/第2个测试实例/instance.json
T04-03 137 号码冻结边界;电话前缀 1371000000 等待者撤销后后续排位前移 T04/第3个测试实例/instance.json
T05-01 138 号码失败作废;电话前缀 1382000000 商品恢复在售;失败买家原码失效;下一位仍排队 T05/第1个测试实例/instance.json
T05-02 139 号码失败作废;电话前缀 1392000000 失败后不自动开始下一笔交易 T05/第2个测试实例/instance.json
T05-03 137 号码失败作废;电话前缀 1372000000 卖家记录为 TRADE_FAILED,等待计数保持 T05/第3个测试实例/instance.json
T06-01 138 号码失败重排;电话前缀 1383000000 原码继续有效;原买家回到队尾 T06/第1个测试实例/instance.json
T06-02 139 号码失败重排;电话前缀 1393000000 另一位买家升为队首;商品恢复在售 T06/第2个测试实例/instance.json
T06-03 137 号码失败重排;电话前缀 1373000000 重排后没有进行中交易 T06/第3个测试实例/instance.json
T07-01 138 号码成交收尾;电话前缀 1384000000 成交商品下架;其余意向失败;所有口令码失效 T07/第1个测试实例/instance.json
T07-02 139 号码成交收尾;电话前缀 1394000000 成交后可发布下一件商品 T07/第2个测试实例/instance.json
T07-03 137 号码成交收尾;电话前缀 1374000000 卖家记录成功与失败状态正确 T07/第3个测试实例/instance.json
T08-01 138 号码主动下架;电话前缀 1385000000 商品不可浏览;等待意向口令码失效 T08/第1个测试实例/instance.json
T08-02 139 号码主动下架;电话前缀 1395000000 下架后可发布下一件商品 T08/第2个测试实例/instance.json
T08-03 137 号码主动下架;电话前缀 1375000000 相关意向记录仍存在于后端数据库 T08/第3个测试实例/instance.json
T09-01 红色样图上传 JPG/PNG 可上传,错误格式与超 5 MB 被拒绝,商品只允许一张 T09/第1个测试实例/instance.json
T09-02 绿色样图上传 上传后返回 /uploads/ 地址,双图关联返回 400 T09/第2个测试实例/instance.json
T09-03 蓝色样图上传 文件类型、大小和单图限制均生效 T09/第3个测试实例/instance.json
T10-01 旧数据两张图片;首图 /uploads/old-first-a.jpg 公开接口仅返回第一张图片 T10/第1个测试实例/instance.json
T10-02 旧数据另一组图片;首图 /uploads/old-first-b.png 首轮接口不展示第二张图片 T10/第2个测试实例/instance.json
T10-03 旧数据混合格式;首图 /uploads/old-first-c.jpg 数据库旧记录保留,读取时限制为首图 T10/第3个测试实例/instance.json
U01-01 没有商品的首页;清空当前商品后打开买家首页 显示空状态,不要求登录 U01/第1个测试实例/instance.json
U01-02 无图商品页面;卖家发布不带图片的商品;刷新买家首页 显示商品信息和无图占位 U01/第2个测试实例/instance.json
U01-03 有图商品页面;卖家发布一张图片的商品;刷新买家首页 只显示这一张图片 U01/第3个测试实例/instance.json
U02-01 缺少姓名;姓名留空、电话填写后点击提交 页面阻止提交并提示姓名必填 U02/第1个测试实例/instance.json
U02-02 缺少电话;填写姓名、电话留空后点击提交 页面阻止提交并提示电话必填 U02/第2个测试实例/instance.json
U02-03 完整提交与查询;填写姓名电话并提交;保存口令码后凭码查询 口令码仅在成功提示中显示一次,可查询排位 U02/第3个测试实例/instance.json
U03-01 两人顺序;两位买家依次提交;卖家查看侧边目录中的队列 后台依提交顺序显示两人 U03/第1个测试实例/instance.json
U03-02 三人队首交易;三位买家依次提交;卖家点击开始交易 只有第一位买家进入交易 U03/第2个测试实例/instance.json
U03-03 队首退出后的顺序;第二位买家撤销;卖家查看剩余队列 后续买家排位前移 U03/第3个测试实例/instance.json
U04-01 等待者撤销;开始队首交易;等待买家凭码撤销 等待买家退出队列且原口令码失效 U04/第1个测试实例/instance.json
U04-02 交易者撤销;开始队首交易;交易中买家尝试撤销 撤销被拒绝,交易仍保持 U04/第2个测试实例/instance.json
U04-03 新买家提交;开始队首交易;新买家尝试提交意向 页面提示商品交易中,不接受新意向 U04/第3个测试实例/instance.json
U05-01 商品重启保留;发布商品;停止并重启后端;重新打开买家页 当前商品仍存在 U05/第1个测试实例/instance.json
U05-02 队列重启保留;两位买家提交;停止并重启后端;查询两人排位 原意向及队列顺序保留 U05/第2个测试实例/instance.json
U05-03 口令码重启保留;记录有效口令码;停止并重启后端;凭原码查询 原码仍可查到同一意向 U05/第3个测试实例/instance.json
U06-01 无图发布;卖家不选择图片并发布商品 商品可发布,买家页显示无图占位 U06/第1个测试实例/instance.json
U06-02 选择第二张图片;先选择一张图片,再尝试增加第二张 页面只允许保留一张图片 U06/第2个测试实例/instance.json
U06-03 非法图片与超限;选择 TXT 文件,再选择大于 5 MB 的图片 页面分别提示格式和大小错误 U06/第3个测试实例/instance.json
U07-01 桌面买家页;设置浏览器宽度约 1440 像素;查看买家商品页 内容可读、按钮可操作 U07/第1个测试实例/instance.json
U07-02 窄屏买家页;设置浏览器宽度约 375 像素;查看买家商品页 无横向遮挡,表单可操作 U07/第2个测试实例/instance.json
U07-03 窄屏卖家页;设置浏览器宽度约 375 像素;查看卖家登录页和侧边目录 登录和菜单可操作,内容不重叠 U07/第3个测试实例/instance.json

执行记录说明

后端测试使用 MockMvc 和独立内存 H2 数据库。2026 年 10 月 14 日运行 30 个自动化功能实例及 1 个实例文件完整性检查,共 31 项通过、0 项失败。经用户确认,新增的 21 个 U 类页面与重启检查实例也已全部人工执行并通过。

自动化运行:在项目根目录执行 tests\run-tests.cmd;脚本进入 project\mvp-v1.0\backend 后运行 mvn test。测试实例文件位于 tests\验收测试数据,测试数据库不会清空日常运行数据。

后端自动化测试用例

T01–T10 对应 StoreFlowIntegrationTest.java 中的 10 个参数化测试方法,每个方法读取本用例的 3 份 instance.json 并分别执行;每个实例执行前清理独立测试数据库。

T01 卖家登录 鉴权和退出

测试目的:检查卖家后台的会话权限,防止未登录用户操作后台。

前置条件:使用独立测试数据库,初始未登录。

操作步骤:

  1. 未登录访问卖家工作台;使用错误密码登录。

  2. 使用正确账号密码登录,查询会话状态并访问工作台。

  3. 退出登录后,再使用原会话访问工作台。

预期结果:

• 未登录访问及错误密码登录均返回 401。

• 正确登录后 authenticated 为 true,工作台可访问。

• 退出接口返回 204,原会话再次访问工作台返回 401。

T02 商品校验 发布 编辑和单件限制

测试目的:验证商品必填项、正数价格以及同一时间只能上架一件商品。

前置条件:卖家已登录,当前没有商品。

操作步骤:

  1. 查询当前商品;分别用空名称、缺少价格、价格为 0 的数据尝试发布。

  2. 发布一件无图片商品,再尝试发布第二件。

  3. 编辑当前商品的名称和价格,随后通过公开接口查询商品。

预期结果:

• 无商品时查询返回 404;三种无效数据均返回 400。

• 首次发布成功且状态为 ON_SALE,图片列表为空;第二次发布返回 409。

• 编辑成功,公开接口读到修改后的名称。

T03 购买意向 口令码和先进先出队列

测试目的:检查提交、排位、撤销、重排和作废后的状态与口令码。

前置条件:卖家已登录且已发布一件在售商品。

操作步骤:

  1. 分别用空姓名、空电话提交意向。

  2. 甲、乙、丙依次提交,记录口令码并查询排位。

  3. 乙撤销意向;卖家将甲排到队尾,再作废丙。

预期结果:

• 无效数据返回 400;甲、乙、丙初始排位依次为 1、2、3。

• 乙撤销后口令码失效,丙升至第 2 位。

• 甲重排后原码有效,丙为第 1 位、甲为第 2 位;丙作废后原码失效,甲成为第 1 位。

T04 交易冻结与撤销边界

测试目的:保证交易只选队首,并区分交易中的买家和仍在等待的买家。

前置条件:商品在售,甲、乙、丙依次排队。

操作步骤:

  1. 卖家开启交易,查询甲及商品状态。

  2. 新买家丁尝试提交,甲尝试撤销,卖家尝试下架。

  3. 仍在等待的乙撤销,查询乙口令码及丙的排位。

预期结果:

• 系统自动选择甲;甲与商品均处于 IN_TRADE。

• 丁提交、甲撤销和交易中下架均返回 409。

• 乙可以撤销,原口令码失效;丙成为等待队列第 1 位。

T05 交易失败并作废

测试目的:确认失败后商品恢复在售,同时不会自动开始下一笔交易。

前置条件:甲正在交易,乙仍在等待。

操作步骤:

  1. 卖家将甲的交易登记为失败,并选择 VOID。

  2. 查询甲、乙口令码、商品状态和卖家工作台。

预期结果:

• 甲状态为 TRADE_FAILED,口令码失效。

• 乙仍可查询且排位为 1;商品恢复 ON_SALE;工作台无进行中的交易。

T06 交易失败并重新排队

测试目的:确认失败买家无需重新提交资料,原口令码继续使用。

前置条件:甲正在交易,乙仍在等待。

操作步骤:

  1. 卖家将甲的交易登记为失败,并选择 REQUEUE。

  2. 使用甲、乙原口令码查询状态、排位和商品状态。

预期结果:

• 甲恢复 WAITING,排到第 2 位且原码有效;乙为第 1 位。

• 商品恢复 ON_SALE,当前无进行中的交易。

T07 交易成功后的商品与意向收尾

测试目的:确认成交商品下架,未轮到买家的意向结束且口令码失效。

前置条件:甲正在交易,乙仍在等待。

操作步骤:

  1. 卖家登记甲交易成功。

  2. 查询当前商品及甲、乙口令码,并检查已保存的意向状态。

  3. 尝试发布下一件商品。

预期结果:

• 当前商品查询返回 404;甲为 TRADE_SUCCESS、乙为 TRADE_FAILED。

• 甲、乙口令码均失效;卖家可以发布下一件在售商品。

T08 卖家主动下架

测试目的:确认主动下架后商品不可继续浏览,相关口令码失效。

前置条件:商品在售,甲已有等待中的购买意向。

操作步骤:

  1. 卖家主动下架当前商品。

  2. 查询公开商品和甲的口令码,再发布下一件商品。

预期结果:

• 下架接口返回 204;公开商品查询返回 404,甲口令码失效。

• 卖家可以发布下一件在售商品。

T09 图片上传与首轮单图限制

测试目的:检查上传接口的文件类型、大小限制及商品图片数量限制。

前置条件:卖家已登录,已有一件在售商品。

操作步骤:

  1. 分别上传标记为 PNG、JPEG 的文件,记录返回地址。

  2. 编辑商品,先关联 1 张图片,再尝试关联 2 张。

  3. 分别上传 text/plain 文件和超过 5 MB 的 PNG 文件。

预期结果:

• PNG、JPEG 上传成功并返回 /uploads/ 开头的地址。

• 关联 1 张图片成功,关联 2 张返回 400。

• 不支持的类型和超大文件均返回 400。

T10 旧版多图记录的首轮展示

测试目的:检查已有多图记录在首轮接口中只展示第一张。

前置条件:卖家已发布商品;在测试数据库中模拟旧版多图记录。

操作步骤:

  1. 向商品记录写入两条旧图片地址。

  2. 调用公开接口查询当前商品的 images 列表。

预期结果:

• 接口只返回第一张图片地址,列表长度为 1。

• 本测试只断言接口返回内容,未检查磁盘文件清理。

网页与持久化人工检查用例

U01–U07 是页面与持久化人工用例,每项包含 3 个具体实例。经用户确认,共 21 个实例已完成测试并全部通过;逐项截图和执行时间未提供。

U01 买家空状态与无图商品

测试目的:检查商品发布前后的买家页面。

前置条件:浏览器可访问前端与后端;初始无当前商品。

操作步骤:

  1. 不登录打开买家首页。

  2. 卖家登录并发布无图片商品,刷新买家页面。

预期结果:

• 发布前显示空状态;发布后显示商品名称、价格和无图片占位。

实际结果:通过(用户确认对应的 3 个实例均已测试通过)。

U02 买家表单与口令码查询

测试目的:检查免注册提交的空值提示和口令码查询体验。

前置条件:已有在售商品。

操作步骤:

  1. 分别不填姓名或电话尝试提交。

  2. 填写完整信息后提交并保存口令码。

  3. 使用口令码查询排位。

预期结果:

• 空值有提示;提交成功后展示口令码;凭码能查询当前排位。

实际结果:通过(用户确认对应的 3 个实例均已测试通过)。

U03 队列顺序与队首交易

测试目的:检查后台展示顺序和卖家开启交易后的对象。

前置条件:已有在售商品。

操作步骤:

  1. 两位买家先后提交购买意向。

  2. 卖家查看后台队列并开启交易。

预期结果:

• 后台依次显示姓名、电话、提交时间和状态;只有队首进入交易。

实际结果:通过(用户确认对应的 3 个实例均已测试通过)。

U04 冻结期间等待者与交易者的撤销

测试目的:检查交易中不同买家的撤销权限与排位变化。

前置条件:一位买家正在交易,另一位买家仍在等待。

操作步骤:

  1. 让等待中的买家撤销。

  2. 让正在交易的买家尝试撤销,刷新页面查看排位。

预期结果:

• 等待者撤销成功并退出队列;交易者不能撤销;页面排位更新。

实际结果:通过(用户确认对应的 3 个实例均已测试通过)。

U05 服务重启后的数据保留

测试目的:检查文件型数据库重启后的持久化。

前置条件:已有商品及仍然有效的买家口令码。

操作步骤:

  1. 记录商品、有效意向及顺序。

  2. 关闭并重新启动后端,再凭原口令码查询。

预期结果:

• 商品、有效意向和排队顺序在重启后保留。

实际结果:通过(用户确认对应的 3 个实例均已测试通过)。

U06 页面上传限制与无图发布

测试目的:检查首轮图片数量、文件类型和大小提示。

前置条件:卖家已登录并打开商品编辑弹窗。

操作步骤:

  1. 选择一张图片后尝试再选第二张。

  2. 尝试上传错误格式和大于 5 MB 的图片。

  3. 移除图片或不选图片,尝试发布商品。

预期结果:

• 商品最多显示、保存一张图片;错误格式和超大图片有提示;无图片仍可发布。

实际结果:通过(用户确认对应的 3 个实例均已测试通过)。

U07 桌面与窄屏页面显示

测试目的:检查买家页、卖家登录页和后台侧边目录的基本可用性。

前置条件:前端页面可在浏览器中打开。

操作步骤:

  1. 分别使用桌面宽度和窄屏宽度查看三个页面。

  2. 检查文字、输入框、按钮和侧边目录。

预期结果:

• 内容可阅读,按钮可操作,无明显遮挡。

实际结果:通过(用户确认对应的 3 个实例均已测试通过)。