西藏巴青项目

网上培训课程测试用例.md 14KB

网上培训课程 — 测试用例

依据:网上培训课程功能需求.md网上培训课程技术方案.md
接口 Base Path/techService/onlineTrainingCourse;鉴权与若依一致(Cookie / Token)。

通用前置(无特殊说明):具备本模块权限的账号已登录(techService:onlineTrainingCourse:listtechService:onlineTrainingCourse:query)。biz_tech_resource 宜预置(del_flag=0):

样本 resource_type resource_name course_topic publish_status 说明
KC1 4 基础养殖入门 基础养殖 1 已发布 本模块主样本;含 mp4、introduction
KC2 4 牦牛疫病防治要点 疫病防治 1 已发布 用于主题精确筛选
KC3 4 政策解读专题课 政策解读 1 已发布 含封面(可选)
KC-D 4 未发布草稿课 繁育技术 0 未发布 不应出现在本模块列表
KC-O 4 已下架旧课 基础养殖 0 且 offline_time 非空 不应出现
KC-X 4 已删课程 基础养殖 1 del_flag=2不应出现
Z2 1 李专家 1 非视频课程,不应出现

源库维护(交叉验证):通过 /techService/techResource 对 KC-D 发布、对 KC1 下架、对 KC-X 逻辑删除,验证本模块纳入规则(§2.2、§7)。

界面(UI)测试Playwright + Chromiumchannel: 'chrome' 使用本机 Google Chrome)。


一、单元测试用例

用例编号 测试模块 测试项 测试类型 测试工具 测试目的 前置条件 测试步骤 预期结果
ZCZX-WSYPX-UT-001 工具方法 视频文件名解析 单元测试 JUnit5 §3.1 videoFileName path=/profile/upload/2025/a/course.mp4path=nullpath="" 返回 course.mp4;返回「已上传」或约定默认文案
ZCZX-WSYPX-UT-002 纳入规则 固定查询常量 单元测试 JUnit5 §2.1、§2.3 断言 OnlineTrainingCourseRulesTechResourceRules type=004008publish=1delFlag=0 一致
ZCZX-WSYPX-UT-003 Service 列表 Vo 映射 单元测试 JUnit5+Mockito §3.1 Mock 返回 KC1 实体行 selectList courseTitle=资源名;courseIntro=简介;courseTopic 一致;含 videoFileName
ZCZX-WSYPX-UT-004 Service 详情 Vo 映射 单元测试 JUnit5+Mockito §3.2 Mock 返回含封面、视频 URL selectById(KC1.id) videoFileUrlcoverFileUrlcreateTime
ZCZX-WSYPX-UT-005 Service 详情不存在 单元测试 JUnit5+Mockito §3.2、§8 Mapper 返回 null selectById(99999) ServiceException,msg 含「下线或不存在」
ZCZX-WSYPX-UT-006 Service 详情已下架 单元测试 JUnit5+Mockito §7 Mock 对 KC-O 条件查询无行 selectById(KC-O.id) 同上异常
ZCZX-WSYPX-UT-007 Service 课程主题列表 单元测试 JUnit5+Mockito §3.3 Mock 类别 rows selectCourseTopics 返回 {code,name} 列表
ZCZX-WSYPX-UT-008 Service 列表不含未发布 单元测试 JUnit5+Mockito §2.2 Mock 仅应带 published 条件 调用 selectList Mapper 入参或 XML 固定 publish_status=1
ZCZX-WSYPX-UT-009 Mapper 列表 WHERE 固定条件 单元测试 JUnit5 §3.4 读 XML 检查 selectList resource_type='004008'publish_status=1del_flag='0'
ZCZX-WSYPX-UT-010 Mapper 标题模糊与主题精确 单元测试 JUnit5 §3.1 读 XML 检查动态 SQL resource_name likecourse_topic =
ZCZX-WSYPX-UT-011 Mapper 列表排序 单元测试 JUnit5 §3.1 读 XML 检查 order by create_time desc, id desc
ZCZX-WSYPX-UT-012 Mapper 列表不含视频 URL 单元测试 JUnit5 §3.1 selectList 对比 selectById 列表 SQL 无 video_file_url/cover_*(或 Vo 不映射)
ZCZX-WSYPX-UT-013 Mapper 主题 DISTINCT 单元测试 JUnit5 §3.3 读 XML selectDistinctCourseTopics 含 §2.1 三条件;course_topic 非空

二、接口测试用例

用例编号 测试模块 测试项 测试类型 测试工具 测试目的 前置条件 测试步骤 预期结果
ZCZX-WSYPX-API-001 列表 默认分页排序 接口测试 Postman §5.1.2、§3.1 有 KC1/KC2 GET .../list code=200rows≤20;仅 004008 已发布;createTime 新在前
ZCZX-WSYPX-API-002 列表 课程标题模糊 接口测试 Postman §2.4 有 KC1 courseTitle=养殖 含 KC1;不含 KC2
ZCZX-WSYPX-API-003 列表 课程主题精确 接口测试 Postman §2.4 有 KC2 courseTopic=005002 仅 KC2;courseTopic=005 无结果
ZCZX-WSYPX-API-004 列表 标题+主题组合 接口测试 Postman §5.1.1 有 KC1 courseTitle=基础+courseTopic=005001 仅 KC1
ZCZX-WSYPX-API-005 列表 筛选无结果 接口测试 Postman §8 已登录 courseTitle=不存在xyz rows=[]total=0
ZCZX-WSYPX-API-006 列表 不含未发布 接口测试 Postman §7 有 KC-D GET list 无 KC-D
ZCZX-WSYPX-API-007 列表 不含已下架 接口测试 Postman §7 有 KC-O GET list 无 KC-O
ZCZX-WSYPX-API-008 列表 不含已删除 接口测试 Postman §7 有 KC-X GET list 无 KC-X
ZCZX-WSYPX-API-009 列表 不含非视频类型 接口测试 Postman §7 有 Z2 GET list 无 Z2
ZCZX-WSYPX-API-010 列表 分页参数 接口测试 Postman §3.1 ≥21 条已发布课程 pageSize=10&pageNum=2 第 2 页 10 条;total 正确
ZCZX-WSYPX-API-011 列表 行字段结构 接口测试 Postman §3.1 有 KC1 GET list 取 KC1 行 id,courseTitle,courseIntro,courseTopic,videoFileName;无 videoFileUrl
ZCZX-WSYPX-API-012 详情 有效 id 接口测试 Postman §5.2.2、§3.2 有 KC1 GET /{KC1.id} code=200;含简介全文、videoFileUrlcourseTopic
ZCZX-WSYPX-API-013 详情 含封面样本 接口测试 Postman §5.2.2 有 KC3 GET /{KC3.id} coverFileUrl(或路径)
ZCZX-WSYPX-API-014 详情 无封面样本 接口测试 Postman §5.2.2 KC1 无封面 GET /{KC1.id} coverFileUrl 空或 null
ZCZX-WSYPX-API-015 详情 未发布 id 接口测试 Postman §5.2.3 有 KC-D GET /{KC-D.id} 失败;msg 含「下线或不存在」
ZCZX-WSYPX-API-016 详情 已下架 id 接口测试 Postman §5.2.3 有 KC-O GET /{KC-O.id} 同上
ZCZX-WSYPX-API-017 详情 已删除 id 接口测试 Postman §5.2.3 有 KC-X GET /{KC-X.id} 同上
ZCZX-WSYPX-API-018 详情 不存在 id 接口测试 Postman 异常 已登录 GET /999999999 失败;可读 msg
ZCZX-WSYPX-API-019 详情 非视频已发布 id 接口测试 Postman §7 有 Z2 GET /{Z2.id} 失败(无纳入行)
ZCZX-WSYPX-API-020 主题下拉 courseTopics 接口测试 Postman §3.3 有类别数据 GET .../courseTopics data{code,name} 数组;含 005001/基础养殖
ZCZX-WSYPX-API-021 交叉 源库发布后可见 接口测试 Postman §10 KC-D 未发布 techResource 发布 KC-D→本模块 list 列表出现;GET detail 成功
ZCZX-WSYPX-API-022 交叉 源库下架后不可见 接口测试 Postman §10 KC1 已发布 techResource 下架 KC1→本模块 list+detail 列表无 KC1;详情失败
ZCZX-WSYPX-API-023 写接口 无 POST 新增 接口测试 Postman §3、§3.2 已登录 POST .../onlineTrainingCourse 404 或 405;或权限拒绝
ZCZX-WSYPX-API-024 写接口 无 PUT/DELETE 接口测试 Postman 只读 已登录 PUTDELETE /{id} 404/405 或权限拒绝
ZCZX-WSYPX-API-025 鉴权 未登录 接口测试 curl 安全 无 Token GET list 401 或统一未登录
ZCZX-WSYPX-API-026 权限 无 list 权限 接口测试 Postman §6 仅 query 权 GET list 403 或业务无权限
ZCZX-WSYPX-API-027 权限 无 query 权限 接口测试 Postman §6 仅 list 权 GET /{KC1.id} 403 或业务无权限

三、界面测试用例(UI)

测试工具Playwright + Chromiumchannel: 'chrome' 使用本机 Google Chrome)。

用例编号 测试模块 测试项 测试类型 测试工具 测试目的 前置条件 测试步骤 预期结果
ZCZX-WSYPX-UI-001 列表 默认展示列 UI 测试 Playwright+Chrome §5.1.3 已登录;有 KC1/KC2 进入「网上培训课程」 列含课程标题、简介、主题、视频文件、操作;有 KC1/KC2
ZCZX-WSYPX-UI-002 列表 课程主题筛选 UI 测试 Playwright+Chrome §5.1.1 有 KC2 下拉选「疫病防治」(005002)→搜索 仅 KC2;选「繁育技术」且无 KC 时为空
ZCZX-WSYPX-UI-003 列表 课程标题筛选 UI 测试 Playwright+Chrome §5.1.1 有 KC1 输入「养殖」→搜索 含 KC1;输入「不存在xyz」无数据
ZCZX-WSYPX-UI-004 列表 重置 UI 测试 Playwright+Chrome §5.1.1 已筛选 搜索→点「重置」 条件清空;恢复默认列表
ZCZX-WSYPX-UI-005 列表 无维护按钮 UI 测试 Playwright+Chrome §5.1.4、§3.2 已登录 查看工具栏与行操作 无新增/编辑/删除/发布/下架;仅有「查看」
ZCZX-WSYPX-UI-006 列表 未发布不可见 UI 测试 Playwright+Chrome §7 仅有 KC-D 未发布、无已发布 打开列表 空状态「暂无…」或等价;无 KC-D
ZCZX-WSYPX-UI-007 列表 视频列不内嵌播放 UI 测试 Playwright+Chrome §5.1.3 有数据 查看列表视频列 为文件名/文案;无 <video> 播放器
ZCZX-WSYPX-UI-008 详情 查看只读全字段 UI 测试 Playwright+Chrome §5.2.2 有 KC1 点「查看」 弹窗/页展示标题、简介全文、主题、视频可播、创建时间;无保存按钮
ZCZX-WSYPX-UI-009 详情 封面展示 UI 测试 Playwright+Chrome §5.2.2 有 KC3 含封面 查看 KC3 封面预览可见
ZCZX-WSYPX-UI-010 详情 无封面占位 UI 测试 Playwright+Chrome §5.2.2 KC1 无封面 查看 KC1 封面区「—」或占位
ZCZX-WSYPX-UI-011 详情 关闭返回列表 UI 测试 Playwright+Chrome §4.1 已打开详情 关闭/返回 回到列表;筛选条件保持
ZCZX-WSYPX-UI-012 详情 下线课程提示 UI 测试 Playwright+Chrome §5.2.3 记下 KC1 id;源库下架 KC1 直接访问详情或刷新后点原「查看」 提示「已下线或不存在」;无有效视频
ZCZX-WSYPX-UI-013 交叉 源库发布后列表出现 UI 集成 Playwright+Chrome §10 KC-D 未发布 视频课程库发布 KC-D→刷新本模块 列表出现 KC-D
ZCZX-WSYPX-UI-014 交叉 源库下架后列表消失 UI 集成 Playwright+Chrome §10 KC2 在列表 视频课程库下架 KC2→刷新 KC2 不在列表
ZCZX-WSYPX-UI-015 权限 无 list 菜单 UI 测试 Playwright+Chrome §6 账号无 list 权 登录后看菜单 无「网上培训课程」或进页 403
ZCZX-WSYPX-UI-016 权限 无 query 禁用查看 UI 测试 Playwright+Chrome §6 仅 list 无 query 进入列表 「查看」不可点或点击提示无权限
ZCZX-WSYPX-UI-017 分页 翻页 UI 测试 Playwright+Chrome §5.1.2 >20 条已发布课 翻到第 2 页 数据切换;条数符合分页
ZCZX-WSYPX-UI-018 端到端 查-看-筛 UI 集成 Playwright+Chrome §4.1 有 KC1/KC2 主题筛选→查看 KC2→关闭→标题筛选→重置 全程无报错;字段与 API 一致

Playwright 与谷歌浏览器(实施提示)

  • 安装:npm i -D @playwright/testnpx playwright install chrome
  • 配置:use: { channel: 'chrome', locale: 'zh-CN', baseURL: 'http://localhost:80' }storageState 复用登录态。
  • 路由:page.goto('/techService/onlineTrainingCourse')(以菜单 component 为准)。
  • 筛选:page.getByLabel('课程主题') 或 placeholder「请选择」;page.getByLabel('课程标题')(若页面有标题框)。
  • 查看:page.getByRole('button', { name: '查看' }).first().click();断言 page.getByText('课程简介')、视频区域 video 或播放器容器。
  • 断言无维护:expect(page.getByRole('button', { name: '新增' })).toHaveCount(0)
  • 交叉用例:另开页或 API 调用 /techService/techResource 发布/下架后 page.reload()

覆盖对照

类别 单元 UT 接口 API 界面 UI
正常流程 UT-003~004、007 API-001~005、011~014、020 UI-001~004、008~011、018
异常流程 UT-005~006 API-005、015~019、018 UI-003、006、012
纳入约束 UT-002、008~013 API-006~009、019 UI-006、013~014
只读约束 API-023~024 UI-005
源库交叉 API-021~022 UI-013~014
权限/鉴权 API-025~027 UI-015~016

功能需求追溯(自查)

需求章节 要点 主要对应用例
§2.2 纳入规则 已发布视频、未删 UT-008~009;API-006~009、021~022;UI-006、013~014
§5.1 列表 模糊标题、精确主题、列、分页 API-001~005、010~011;UI-001~004、017
§5.2 详情 全字段、视频、封面、失效 UT-004~006;API-012~018;UI-008~012
§5.1.4 / §3.2 无维护能力 API-023~024;UI-005
§6 权限 list / query API-025~027;UI-015~016
§10 源库衔接 发布/下架联动 API-021~022;UI-013~014

修订记录

版本 说明
1.0 初版:单元 13、接口 27、UI 18;覆盖只读 list/detail/courseTopics、纳入规则、源库交叉、权限;Playwright+Chrome;编号前缀 ZCZX-WSYPX