测试用例清单 - xych5q/online-shop GitHub Wiki

测试用例清单

第 1 组 · 在线购物系统(迭代 1 基线) | 负责人:陈星宇(组长/DevOps) 完整清单全文:test-cases/测试用例清单.md(仓库内);可执行脚本:test-cases/api-smoke.sh 本页是索引与执行结论,明细编号以仓库文件为准。


一、测试资产一览

类别 数量 位置 当前结果
自动化单元测试(JUnit 5 + MockMvc) 18 组 server/src/test/java/(BuyerApiTest 252 行 + TradeFlowTest 240 行) 18/18 通过,mvn clean package BUILD SUCCESS
接口冒烟(curl 脚本,含 18 项附加校验) 44 项断言 test-cases/api-smoke.sh 44/44 通过(2026-10-13,端口 8092 全新空库实例整跑)
UI 端到端(手工) 8 个场景 见本页第四节 / 前端页面说明 8 张截图 通过(Selenium 化列为迭代 2)

每个 JUnit 用例执行前 @BeforeEach cleanUp() 会清空 intent 与 product 两张表(seller 账号表不动), 因此用例互不依赖、可任意顺序单独运行。冒烟脚本自带遗留数据清理(检测到遗留在售商品会先标记成功下架),可重复执行。


二、三条常用命令

# ① 单测 + 打包
cd server && mvn -B clean package

# ② 起一个干净实例(用独立数据目录,不污染开发库)
cd server && java -jar target/online-shop.jar --server.port=8090 \
     --spring.datasource.url="jdbc:h2:file:./data-smoke/onlineshop;DB_CLOSE_ON_EXIT=FALSE" \
     --app.upload.dir=./data-smoke/uploads

# ③ 另开终端跑接口冒烟
cd test-cases && BASE=http://localhost:8090 bash api-smoke.sh

环境:JDK 21 + Maven 3.9 + Spring Boot 3.3.4 + H2 文件库;卖家初始账号 admin / seller123(application.yml 的 app.seller.*,首次启动由 DataInitializer 创建)。


三、自动化用例速览(TC-A01 ~ A18)

编号 用例名 对应用例 / 需求
TC-A01 错误密码登录返回 401 UC-01 / FR-S1
TC-A02 不带 X-Token 访问卖家总览返回 401 UC-01 / FR-S1
TC-A03 发布负价格商品返回 400 UC-03 / FR-S3
TC-A04 发布成功且价格保留两位小数 UC-03 / FR-S3
TC-A05 已有在售商品再次发布返回 400 UC-03 / FR-S3
TC-A06 三个买家依次入队位次分别为 1/2/3 UC-12 / FR-B1
TC-A07 姓名或电话为空提交意向返回 400 UC-12 / FR-B1
TC-A08 无效口令码查询返回 404 UC-13 / FR-B2
TC-A09 修改电话后位次不变 UC-14 / FR-B4
TC-A10 撤销后该口令码查询返回 404 UC-15 / FR-B5
TC-A11 商品冻结后提交意向返回 400 UC-11 / FR-B1
TC-A12 交易中手动解冻返回 400 UC-04 / FR-S4
TC-A13 标记交易失败后下一位自动递补 UC-07 / FR-S6
TC-A14 失败买家重新排队后原口令码有效且排到队尾 UC-08 / FR-S7
TC-A15 标记交易成功后队列剩余意向全部转失败 UC-07 / FR-S6
TC-A16 历史详情意向流水不含口令码 UC-10 / FR-S10
TC-A17 交易中买家可撤销且队列自动递补(2026-10-13 新增) UC-15 / FR-B5
TC-A18 交易中撤销且队列无人时商品恢复在售(2026-10-13 新增) UC-15 / FR-B5

TC-A17 / A18 用于锁死第 1 次评审后的 FR-B5 整改结果(原实现为「交易中拒绝撤销」,与需求拍板口径矛盾),详见 需求规格说明书 4.2 的代码对齐记录。


四、UI 端到端(TC-U01 ~ U08,手工)

编号 场景 截图证据
TC-U01 买家浏览在售商品 / 无商品空态 01-买家首页.png
TC-U02 提交购买意向并拿到一次性口令码 02-提交购买意向弹窗.png、03-口令码展示页.png
TC-U03 凭口令码查询排队位次 04-凭口令码查询排队位次.png
TC-U04 凭口令码修改信息,位次不变 —
TC-U05 凭口令码撤销意向 —
TC-U06 卖家登录后台 05-卖家后台登录页.png
TC-U07 发布 / 冻结解冻 / 意向购买人 / 标记结果 / 历史 06-后台当前商品页.png、07-后台历史记录页.png
TC-U08 修改密码并重新登录 08-修改密码弹窗.png

五、覆盖率与执行记录

覆盖 15 个 UC、17 个接口、FR-S1S10 与 FR-B1B5,全部 100%。

日期 执行范围 执行人 结果
2026-10-07 TC-A01~A16 + 卖家端 12 接口 curl 陈星宇 16/16 通过
2026-10-13 TC-A01~A18 全量回归 陈星宇 18/18 通过
2026-10-13 TC-I01~I26 接口冒烟(44 项断言) 陈星宇 44/44 通过
2026-10-13 TC-U01~U08 UI 手工 陈星宇 通过

六、已知未覆盖项(迭代 2 补齐)

  1. Selenium 端到端自动化:UI 用例目前为手工。
  2. JMeter 并发压测:未验证并发提交意向时的口令码唯一性与队列顺序一致性。
  3. 图片上传分支:JPG/PNG ≤5MB 的格式与体积校验未纳入自动化。
  4. 口令码字符集(Q4):现取值 8 位大写字母数字、剔除 I/O/0/1,已提交需求方追认,若变更需同步调整用例期望。