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