Files
gym-manage/docs/superpowers/plans/2026-07-21-ui-auto-test-suite-grill.md
T

14 KiB
Raw Blame History

UI 层级全自动测试套件 — 需求共识文档

文档编号: GYM-GRILL-UI-TEST-001
日期: 2026-07-21
状态: 已确认
产出命令: /grill-with-docs


一、功能概述

为健身房管理系统构建 UI 层级的全自动测试套件,覆盖 管理后台 WebVue 3会员小程序(UniApp 两个 UI 终端,确保所有已实现功能通过系统化测试,达到 ≥95% 通过率的交付水平。

目标终端

UI 层级 技术栈 当前测试状态 目标
管理后台 Web Vue 3 + Element Plus + Vite Vitest 单元测试 + Playwright E2E81%通过率) 修复失败 → 补齐覆盖 → ≥95%
会员小程序 UniAppVue 零测试 从零构建 → 完整覆盖

二、当前状态分析

2.1 已实现功能清单(管理后台 - 21个页面)

模块 页面 关联功能清单 已有 E2E Page Object 已有 E2E 测试
系统管理 Login / Dashboard / 403 P0 模块7 LoginPage / DashboardPage
系统管理 UserManagement P0 模块7 UserManagementPage journeys
系统管理 CoachManagement —(额外功能)
系统管理 RoleManagement P0 模块7 RoleManagementPage journeys
系统管理 MenuManagement P0 模块7 MenuManagementPage
配置 ConfigManagement —(额外功能) SystemConfigPage
配置 DictManagement —(额外功能) DictionaryManagementPage
文件 FileManagement —(额外功能) FileManagementPage
通知 NoticeManagement —(额外功能) NotificationPage
轮播图 BannerManagement —(额外功能)
审计 LoginLog —(额外功能) LoginLogPage
审计 OperationLog —(额外功能) OperationLogPage
审计 ExceptionLog —(额外功能) ExceptionLogPage
团课 GroupCourseManagement P1 模块2 (Page 缺失)
团课 CourseTypeManagement P1 模块2
团课 CourseLabelManagement —(额外功能)
团课 CourseRecommendManagement —(额外功能)
会员 MemberManagement P1 模块1
会员 MemberCardManagement P0 模块1
统计 StatisticsDashboard P1 模块4

标记 的为 新增测试缺口,共 10 个页面

2.2 已实现功能清单(小程序 - 6个页面)

页面 关联功能清单 测试状态
首页 (index) P0 模块1 微信登录入口
登录 (login) P0 模块1 微信快捷登录
课程详情 (course-detail) P0 模块2 团课详情
我的课程 (my-courses) P0 模块2 预约记录
个人中心 (profile) P0 模块1 会员信息
搜索 (search) P0 模块2 团课搜索

2.3 现有测试资产

资产 状态 价值
12 个 Page Object 成熟 可直接复用
TestDataManager + TestDataFactory 成熟 可直接复用
RetryHelper + TestStabilityHelper 成熟 可直接复用
global-setup / global-teardown 成熟 可直接复用
customReporterHTML+JSON+控制台) 成熟 可直接复用
auth.setupstorageState 有 Bug 需修复 storageState 冲突
10 个 Journey 测试(100%通过) 健康 保持不变

2.4 现有失败测试分析(9个)

失败测试 根因 修复策略
auth-test.spec.ts (4用例) storageState 冲突:全局认证状态下,登录相关测试无法模拟未登录场景 为该文件配置独立 project(禁用 storageState
basic-ui-test.spec.ts 已登录后重定向到 Dashboard 而非登录页 调整测试预期或独立 project
config-management.spec.ts 超时/选择器不匹配 更新选择器,增加等待策略
dict-management.spec.ts 超时/选择器不匹配 同上
menu-management.spec.ts 超时/选择器不匹配 同上
debug/debug-role-assignment.spec.ts 测试逻辑问题 重写或移除

三、用户故事

US-1: 测试工程师运行全量回归

As a 测试工程师
I want 一键运行全部 UI 测试并自动生成报告
So that 每次发版前能快速确认系统质量状况

US-2: 开发者在 CI 中获得反馈

As a 开发者
I want Push 代码后 Jenkins 自动运行冒烟测试
So that 核心功能回归能在 5 分钟内给出反馈

US-3: 产品经理验证业务规则

As a 产品经理
I want 测试覆盖功能清单中的业务规则和技术要点
So that 交付的功能与设计一致

US-4: 小程序团队确保质量

As a 小程序开发者
I want 微信模拟器中的自动化测试
So that 小程序端的回归不需要手动点点点


四、测试架构设计

4.1 整体分层

┌─────────────────────────────────────────────────┐
│  L3: 性能测试 (Performance)                       │
│  - 页面加载性能                                  │
│  - API 响应性能                                  │
│  - 报告:performance-report/                     │
├─────────────────────────────────────────────────┤
│  L2: 用户旅程测试 (Journey Tests)                 │
│  - 管理后台:按模块拆分用户旅程                  │
│  - 小程序:按页面拆分用户旅程                    │
│  - 报告:test-results/ + customReporter          │
├─────────────────────────────────────────────────┤
│  L1: 角色边界测试 (Role Boundary)                 │
│  - 权限隔离验证                                  │
│  - 多角色并发验证                                │
│  - 报告:test-results/                           │
├─────────────────────────────────────────────────┤
│  L0: 冒烟测试 (Smoke)                            │
│  - 管理后台:登录/登出                            │
│  - 小程序:启动/首页渲染                          │
│  - 运行频次:每次 Push                           │
│  - 时限:≤ 5 分钟                                │
└─────────────────────────────────────────────────┘

4.2 技术方案

层级 管理后台 Web 会员小程序
框架 Playwright + TypeScript miniprogram-automator + Jest
设计模式 Page Object Page Object(模拟)
数据管理 TestDataManager + TestDataFactory 独立 DataFactory(复用 API 层)
报告 customReporterHTML+JSON Jest HTML Reporter
运行环境 复用 global-setup 自动启动服务 微信开发者工具 CLI + 模拟器
CI Jenkins Pipeline Jenkins Pipeline

五、业务流程(测试范围)

5.1 管理后台核心流程

flowchart LR
    A[登录] --> B[Dashboard]
    B --> C1[用户管理 CRUD]
    B --> C2[角色管理 + 权限分配]
    B --> C3[菜单管理]
    C1 & C2 --> D[角色边界验证]
    B --> E1[团课管理 CRUD]
    B --> E2[会员管理 查看/搜索]
    B --> E3[会员卡管理]
    B --> E4[数据统计看板]
    B --> F1[教练管理]
    B --> F2[轮播图管理]
    B --> F3[参数配置]
    B --> F4[字典管理]
    B --> F5[文件管理]
    B --> F6[通知公告]
    B --> F7[审计日志]

5.2 小程序核心流程

flowchart LR
    A[微信授权登录] --> B[首页]
    B --> C[搜索团课]
    C --> D[课程详情]
    D --> E[预约课程]
    B --> F[我的课程]
    F --> G[取消预约]
    B --> H[个人中心]

六、验收标准

通用标准

编号 标准 量化指标
AC-1 测试通过率 ≥ 95%(总用例)
AC-2 核心业务链路 100% 通过(登录→关键操作→退出)
AC-3 冒烟测试耗时 ≤ 5 分钟
AC-4 全量 E2E 耗时 ≤ 15 分钟(管理后台 + 小程序并行)
AC-5 测试报告 自动生成 HTML + JSON 报告,包含失败截图
AC-6 CI 集成 Jenkins Pipeline 可一键触发,结果自动归档
AC-7 测试数据隔离 每次运行使用独立数据前缀,运行后自动清理
AC-8 稳定性 连续 3 次无随机失败(flake rate = 0%

功能覆盖标准

编号 标准
AC-9 管理后台 21 个页面,每个至少 1 个 Happy Path 测试
AC-10 核心 CRUD 操作(用户/角色/团课)覆盖增删改查全流程
AC-11 角色边界测试覆盖至少 3 个角色(Admin / 店长 / 前台)
AC-12 小程序 6 个页面,每个至少 1 个 Happy Path 测试
AC-13 小程序预约/取消流程端到端验证
AC-14 性能测试至少覆盖 Dashboard 和团课列表 2 个关键页面

七、实施计划(优先级排序)

第1阶段:修复现有测试(预计 1 天)

任务 产出
修复 storageState 冲突 auth-test.spec.ts 4 个用例通过
为需要未登录状态的测试创建独立 Playwright project basic-ui-test.spec.ts 通过
更新选择器 + 等待策略 config/dict/menu 3 个 spec 通过
处理 debug 目录 重写或移除 debug-role-assignment
目标 53/53 测试通过(100%

第2阶段:补齐管理后台缺失测试(预计 2 天)

任务 覆盖页面
创建 10 个新 Page Object CoachManagement, BannerManagement, GroupCourseManagement, CourseTypeManagement, CourseLabelManagement, CourseRecommendManagement, MemberManagement, MemberCardManagement, StatisticsDashboard(以及团课页面类)
编写 8 个 Journey 测试 对应上述缺失页面
扩展角色边界测试 3 角色 × 5 关键页面
编写 2 个性能测试 Dashboard + 团课列表

第3阶段:构建小程序测试(预计 2 天)

任务 产出
搭建 miniprogram-automator 环境 安装依赖、配置微信开发者工具 CLI
创建小程序 Page Object6 个页面) 首页/登录/课程详情/我的课程/个人中心/搜索
编写 4 个 Journey 测试 登录→首页→课程详情→预约;登录→我的课程→取消;登录→个人中心→信息编辑;首页→搜索→课程详情
编写 1 个冒烟测试 启动→首页渲染→登录

第4阶段:Jenkins CI 集成(预计 1 天)

任务 产出
编写 Jenkinsfile 定义 Stage:环境准备 → 冒烟测试 → 全量 E2E(Web + 小程序并行) → 性能测试 → 报告归档
配置测试报告归档 HTML Report Plugin + JUnit Plugin
配置失败通知 企业微信/邮件通知

八、涉及的领域概念

领域概念 测试关注点
会员 (Member) 会员管理 CRUD、会员卡购买/查看
用户 (User) 用户管理 CRUD、角色分配
角色 (Role) 角色 CRUD、权限分配、边界验证
权限 (Permission) 菜单可见性、按钮权限、越权访问验证
团课 (Group Course) 团课 CRUD、类型/标签/推荐管理
预约 (Booking) 预约/取消流程(小程序端)
签到 (Check-in) 扫码签到(后续迭代,依赖微信环境)
会员卡 (Membership Card) 会员卡管理、到期提醒

九、非功能需求

类型 要求
可靠性 连续 3 次运行无随机失败(flake-free)
可维护性 Page Object 模式,禁止硬编码选择器
可扩展性 新页面通过添加 Page Object + 1 个 Journey 即可接入
数据隔离 测试数据使用唯一前缀,运行后自动清理,不影响开发环境
CI 兼容 Jenkins Pipeline 声明式,参数化(支持选择运行范围)

十、风险与应对

风险 应对策略
miniprogram-automator 与 UniApp 兼容性问题 先用 H5 模式验证可行性,再切换模拟器
微信开发者工具在 Jenkins 无头环境运行受限 Jenkins Agent 部署在 Windows 有桌面环境机器上
现有 E2E 测试大规模重构引入回归 第1阶段仅修复,不做重构;后续新增测试在独立文件中
小程序登录依赖真实微信环境 使用 Mock 微信 API 或测试用 OpenID/UnionID
性能测试基准不稳定 取 3 次运行中位数,允许 ±15% 波动

十一、待确认项

  • UI 层级范围:管理后台 + 小程序
  • 功能范围:全部已实现功能,对齐功能清单业务规则
  • 交付标准:≥95% 通过率 + Jenkins CI
  • 测试类型:E2E / 冒烟 / 性能 / 角色边界 / 小程序专项
  • 小程序方案:miniprogram-automator
  • CI 平台:Jenkins
  • 测试环境:复用 global-setup
  • 优先级:修复现有 → 补齐 Web → 构建小程序 → CI
  • 用户体验测试 (UAT)不纳入,聚焦自动化测试,UAT 由人工执行
  • 视觉回归测试:不纳入,避免基准截图频繁更新的维护成本

十二、相关文档