Files
novalon-website/docs/plans/2026-03-05-mobile-automation-test-design.md
T

15 KiB
Raw Blame History

移动端自动化测试完善方案设计

创建时间: 2026-03-05
设计者: 张翔
状态: 已确认
版本: v1.0


一、项目背景

1.1 当前状态

技术栈

  • Next.js 16 + React 19 + TypeScript
  • Playwright E2E测试框架
  • 已有基础移动端测试(覆盖率30%

现有测试类型

  • Smoke测试(4个文件)
  • 回归测试(2个文件)
  • 性能测试(3个文件)
  • 响应式测试(2个文件)
  • 视觉测试(2个文件)
  • 移动端测试(1个文件,13个用例)
  • 安全测试(3个文件)
  • 可访问性测试(2个文件)

1.2 存在问题

  1. 测试覆盖不足 - 移动端测试覆盖率仅30%
  2. 设备覆盖有限 - 仅配置Pixel 5和iPhone 12
  3. 性能测试不完整 - 缺少Core Web Vitals完整测试
  4. 触摸交互测试缺失 - 没有手势操作测试
  5. 可访问性测试不足 - 缺少屏幕阅读器兼容性测试

1.3 改进目标

  • 移动端测试覆盖率:从30%提升到90%+
  • 设备覆盖率:覆盖95%用户
  • 测试稳定性:失败率<2%
  • 测试执行时间:15-60分钟(根据测试类型)

二、设计原则

2.1 分层渐进策略

测试金字塔原则

  • 70% 基础功能测试:确保所有页面核心功能正常
  • 20% 性能/兼容性测试:覆盖不同设备和浏览器的性能表现
  • 10% 深度用户体验测试:触摸手势、可访问性、边缘场景

2.2 智能设备矩阵

设备覆盖策略

  • 核心设备:iPhone 12/14、Samsung Galaxy S21、iPad(覆盖70%用户)
  • 关键断点:375px、414px、768px、1024px、1280px
  • 动态调整:根据用户访问数据定期更新设备矩阵

2.3 完全自动化

自动化程度

  • 所有测试自动执行
  • 自动生成报告(Allure + HTML + JUnit XML
  • 失败时自动截图和录制视频
  • 通过CI/CD自动运行

三、整体架构设计

3.1 架构分层

1. 测试金字塔层(70%基础功能)

  • 页面对象层:扩展现有的BasePage、ContactPage、HomePage,添加MobilePage专用方法
  • 测试用例层:按页面组织,每个页面包含基础功能测试套件
  • 设备模拟层:使用Playwright的devices配置,覆盖核心移动设备

2. 性能兼容层(20%性能/兼容性)

  • 性能监控:集成PerformanceMonitor,测量LCP、FID、CLS等Core Web Vitals
  • 设备矩阵:iPhone 12/14、Samsung Galaxy S21、iPad + 关键响应式断点
  • 网络模拟:测试3G、4G、WiFi不同网络条件下的表现

3. 深度体验层(10%用户体验)

  • 触摸交互:手势操作、触摸目标大小、多点触控
  • 可访问性:WCAG 2.1 AA合规、屏幕阅读器兼容、键盘导航
  • 边缘场景:弱网、低电量、后台切换等

4. 自动化执行层

  • CI/CD集成:GitLab CI自动运行测试
  • 报告系统:Allure报告 + HTML报告 + JUnit XML
  • 失败处理:自动截图、录制视频、生成错误日志

3.2 目录结构

e2e/src/
├── pages/
│   ├── BasePage.ts              # 基础页面对象(扩展)
│   ├── MobilePage.ts            # 移动端专用页面对象(新增)
│   ├── ContactPage.ts           # 联系页(扩展)
│   ├── HomePage.ts              # 首页(扩展)
│   ├── ProductsPage.ts          # 产品页(扩展)
│   ├── ServicesPage.ts          # 服务页(扩展)
│   └── AboutPage.ts             # 关于页(扩展)
├── tests/
│   ├── mobile/
│   │   ├── mobile-ux.spec.ts            # 移动端用户体验(扩展)
│   │   ├── mobile-functionality.spec.ts # 移动端功能测试(新增)
│   │   ├── mobile-performance.spec.ts   # 移动端性能测试(新增)
│   │   ├── mobile-compatibility.spec.ts # 移动端兼容性测试(新增)
│   │   ├── mobile-touch.spec.ts         # 触摸交互测试(新增)
│   │   └── mobile-accessibility.spec.ts # 移动端可访问性(新增)
│   ├── performance/
│   │   └── core-web-vitals.spec.ts     # Core Web Vitals(新增)
│   └── responsive/
│       └── device-matrix.spec.ts       # 设备矩阵测试(新增)
├── utils/
│   ├── PerformanceMonitor.ts    # 性能监控(扩展)
│   ├── TestDataGenerator.ts     # 测试数据生成(扩展)
│   ├── DeviceMatrix.ts           # 设备矩阵配置(新增)
│   └── MobileHelper.ts           # 移动端辅助工具(新增)
└── fixtures/
    ├── base.fixture.ts          # 基础fixture(扩展)
    └── mobile.fixture.ts        # 移动端fixture(新增)

四、测试用例设计

4.1 基础功能测试(70%

首页测试套件

  • Hero区域:标题、描述、CTA按钮可见性、响应式布局
  • 导航测试:移动菜单开关、导航链接、面包屑导航
  • 内容区域:服务、产品、案例、新闻卡片的响应式布局
  • 页脚测试:联系信息、社交媒体链接、版权信息
  • 表单交互:快速联系表单的移动端适配

联系页测试套件

  • 表单字段:姓名、邮箱、电话、消息字段的移动端输入
  • 表单验证:必填字段、格式验证、错误提示显示
  • 提交流程:表单提交、成功消息、错误处理
  • 联系信息:地址、电话、邮箱的可点击性
  • 地图集成:移动端地图显示和交互

产品/服务页测试套件

  • 列表展示:卡片堆叠布局、图片响应式、文本可读性
  • 详情页:产品详情、服务描述的移动端适配
  • 筛选功能:移动端筛选器交互
  • 分页导航:移动端分页控件

4.2 性能兼容测试(20%

Core Web Vitals

  • LCP(最大内容绘制):首屏加载时间 < 2.5秒
  • FID(首次输入延迟):交互响应时间 < 100毫秒
  • CLS(累积布局偏移):布局稳定性 < 0.1

设备兼容性

  • iPhone 12/14iOS Safari浏览器测试
  • Samsung Galaxy S21Android Chrome浏览器测试
  • iPad:平板横竖屏切换测试
  • 响应式断点:375px、414px、768px、1024px

网络条件

  • 3G网络:慢速网络下的加载表现
  • 4G网络:正常移动网络下的性能
  • WiFi:高速网络下的性能表现

4.3 深度体验测试(10%

触摸交互

  • 触摸目标:最小44x44px,符合WCAG标准
  • 手势操作:滑动、长按、双击、捏合缩放
  • 多点触控:双指滚动、三指手势

可访问性

  • 屏幕阅读器:VoiceOver、TalkBack兼容性
  • 键盘导航:Tab键导航、焦点管理
  • 颜色对比度:文本与背景对比度 ≥ 4.5:1

边缘场景

  • 弱网环境:超时处理、重试机制
  • 后台切换:页面状态保持
  • 低电量模式:性能降级表现

五、技术实现

5.1 页面对象增强

BasePage扩展

// 新增移动端专用方法
- tapElement(): 模拟触摸点击
- swipe(): 模拟滑动操作
- longPress(): 模拟长按操作
- pinchZoom(): 模拟捏合缩放
- waitForMobileLoad(): 移动端加载等待
- checkTouchTarget(): 验证触摸目标大小
- measurePerformance(): 性能指标测量
- captureMobileScreenshot(): 移动端截图

MobilePage新建

// 专门的移动端页面对象
- handleMobileMenu(): 移动菜单操作
- handleMobileNavigation(): 移动导航
- handleMobileForm(): 移动表单交互
- handleMobileScroll(): 移动滚动行为
- handleMobileGestures(): 移动手势操作

5.2 设备矩阵配置

智能设备矩阵

const mobileDevices = {
  // 核心设备(覆盖70%用户)
  core: [
    'iPhone 12',      // iOS主流
    'iPhone 14',      // iOS最新
    'Galaxy S21',     // Android主流
    'iPad Pro',       // 平板横屏
    'iPad Mini'       // 平板竖屏
  ],
  // 响应式断点
  breakpoints: [
    { width: 375, height: 667 },   // iPhone SE
    { width: 414, height: 896 },   // iPhone 11 Pro Max
    { width: 768, height: 1024 },  // iPad竖屏
    { width: 1024, height: 768 },  // iPad横屏
    { width: 1280, height: 720 }   // 小屏笔记本
  ]
};

5.3 性能监控集成

PerformanceMonitor增强

// Core Web Vitals监控
- measureLCP(): 最大内容绘制
- measureFID(): 首次输入延迟
- measureCLS(): 累积布局偏移
- measureTTI(): 可交互时间
- measureTTFB(): 首字节时间

// 移动端特定指标
- measureFCP(): 首次内容绘制
- measureFMP(): 首次有意义绘制
- measureNetwork(): 网络性能
- measureBattery(): 电池消耗(模拟)

5.4 测试数据管理

TestDataGenerator扩展

// 移动端测试数据
- generateMobileFormData(): 移动端表单数据
- generateMobileUserAgent(): 移动设备User-Agent
- generateNetworkConditions(): 网络条件模拟
- generateTouchEvents(): 触摸事件数据

六、自动化执行与CI/CD集成

6.1 测试执行策略

分层执行计划

# 快速冒烟测试(每次提交)
npm run test:mobile:smoke
- 核心功能基础测试
- 2-3个主流设备
- 执行时间:2-3分钟

# 完整功能测试(PR合并)
npm run test:mobile:full
- 所有功能测试
- 核心设备矩阵
- 执行时间:10-15分钟

# 性能兼容测试(每日构建)
npm run test:mobile:performance
- 性能指标测试
- 完整设备矩阵
- 执行时间:20-30分钟

# 全面回归测试(发布前)
npm run test:mobile:regression
- 所有测试套件
- 智能设备矩阵
- 执行时间:45-60分钟

6.2 GitLab CI配置

CI/CD Pipeline

stages:
  - smoke
  - full
  - performance
  - regression

# 冒烟测试(每次提交)
mobile:smoke:
  stage: smoke
  script:
    - cd e2e
    - npm install
    - npm run test:mobile:smoke
  artifacts:
    when: always
    paths:
      - e2e/test-results/
      - e2e/allure-results/
  only:
    - branches

# 完整测试(PR
mobile:full:
  stage: full
  script:
    - cd e2e
    - npm run test:mobile:full
  artifacts:
    when: always
    paths:
      - e2e/test-results/
      - e2e/allure-results/
  only:
    - merge_requests

# 性能测试(每日)
mobile:performance:
  stage: performance
  script:
    - cd e2e
    - npm run test:mobile:performance
  artifacts:
    when: always
    paths:
      - e2e/test-results/
      - e2e/allure-results/
  only:
    - schedules

# 回归测试(发布)
mobile:regression:
  stage: regression
  script:
    - cd e2e
    - npm run test:mobile:regression
  artifacts:
    when: always
    paths:
      - e2e/test-results/
      - e2e/allure-results/
  only:
    - tags

6.3 报告系统

多格式报告

// Allure报告(详细)
- 测试用例详情
- 失败截图和视频
- 性能指标图表
- 设备覆盖率统计

// HTML报告(快速查看)
- 测试执行摘要
- 失败用例列表
- 趋势分析图表

// JUnit XMLCI集成)
- 测试结果XML
- 失败用例标记
- 执行时间统计

// JSON报告(数据分析)
- 测试结果JSON
- 性能数据JSON
- 设备矩阵JSON

6.4 失败处理机制

自动失败处理

// 失败时自动执行
- 截图:失败页面截图
- 录制:失败过程视频
- 日志:详细错误日志
- 网络请求:失败时的网络请求记录
- 控制台日志:浏览器控制台错误
- 性能数据:失败时的性能指标

// 失败重试策略
- 轻量测试:重试2
- 重量测试:重试1
- 性能测试:不重试

七、实施计划

7.1 分阶段实施计划

第一阶段:基础设施完善(3天)

  • Day 1: 扩展BasePage,添加移动端专用方法
  • Day 2: 创建MobilePage页面对象,配置智能设备矩阵
  • Day 3: 增强PerformanceMonitor,建立测试数据管理

第二阶段:核心测试开发(5天)

  • Day 1-2: 首页移动端测试套件(基础功能)
  • Day 3: 联系页移动端测试套件(表单交互)
  • Day 4: 产品/服务页移动端测试套件(响应式布局)
  • Day 5: 导航和通用组件测试

第三阶段:性能兼容测试(3天)

  • Day 1: Core Web Vitals测试
  • Day 2: 设备兼容性测试
  • Day 3: 网络条件测试

第四阶段:深度体验测试(2天)

  • Day 1: 触摸交互测试
  • Day 2: 可访问性测试

第五阶段:CI/CD集成(2天)

  • Day 1: GitLab CI配置
  • Day 2: 报告系统和失败处理

总计:15天(3周)

7.2 质量保障措施

代码质量

  • TypeScript严格模式:100%类型安全
  • ESLint规则:遵循项目规范
  • 代码审查:所有测试代码需要审查

测试质量

  • 测试覆盖率:目标90%以上
  • 测试稳定性:失败率<2%
  • 测试性能:单次执行<60分钟

文档质量

  • 测试用例文档:每个测试用例都有说明
  • 测试报告:详细的测试结果分析
  • 维护文档:测试框架使用指南

7.3 持续优化机制

定期评估

  • 每周:测试执行结果分析
  • 每月:设备矩阵更新(基于用户数据)
  • 每季度:测试策略评估和优化

智能调整

  • 根据失败率调整重试策略
  • 根据执行时间优化测试顺序
  • 根据用户数据调整设备矩阵

性能监控

  • 测试执行时间趋势
  • 测试稳定性趋势
  • 设备覆盖率趋势

7.4 风险控制

风险识别

  • 测试环境不稳定:使用容器化环境
  • 测试数据污染:每次测试前清理数据
  • 设备模拟不准确:定期验证设备配置
  • 测试执行超时:设置合理超时时间

应急预案

  • 测试失败:自动通知开发团队
  • 性能下降:触发性能优化流程
  • 兼容性问题:标记为高优先级修复
  • CI/CD失败:阻止代码合并

八、预期成果

8.1 量化指标

  • 测试覆盖率:从30%提升到90%+
  • 设备覆盖率:覆盖95%用户
  • 测试稳定性:失败率<2%
  • 测试执行时间15-60分钟(根据测试类型)
  • Core Web VitalsLCP<2.5s, FID<100ms, CLS<0.1

8.2 质量提升

  • 功能完整性:所有移动端功能都有测试覆盖
  • 性能优化:性能问题提前发现和修复
  • 兼容性保障:主流设备兼容性得到验证
  • 用户体验:触摸交互和可访问性得到保障

8.3 效率提升

  • 自动化程度100%自动化执行
  • 反馈速度2-3分钟快速反馈
  • 维护成本:降低人工测试成本
  • 发布信心:提升发布质量信心

九、总结

9.1 核心优势

  1. 全面覆盖:功能、性能、兼容性、用户体验四个维度
  2. 分层渐进70%基础+20%性能+10%深度,资源利用最优
  3. 智能设备矩阵:结合设备覆盖和响应式断点
  4. 完全自动化CI/CD集成,自动报告,失败处理
  5. 持续优化:基于数据的智能调整机制

9.2 关键成功因素

  • 严格的分层测试策略
  • 智能的设备矩阵管理
  • 完善的自动化执行机制
  • 持续的监控和优化
  • 有效的风险控制

9.3 后续优化方向

  • 引入AI驱动的测试用例生成
  • 实现测试即代码(TaaC
  • 扩展到更多移动端场景
  • 集成更多性能监控工具
  • 建立测试数据驱动的决策机制

文档版本: v1.0
最后更新: 2026-03-05
维护者: 张翔
状态: 已确认,准备实施