CPTF:基于 Node.js 生态的跨端自动化测试项目

面向终端设备的跨平台测试框架

Branch20Tags0

CPTF - Cross-Platform Test Framework

业界唯一支持 HarmonyOS 的跨端自动化测试框架

跨端自动化测试框架,专为跨平台应用设计。

为什么选择 CPTF?

特性 CPTF 其他框架
HarmonyOS 支持 ✅ 原生支持 ❌ 不支持
性能指标采集 ✅ 19种性能指标+3种稳定性指标(真实FPS) ⚠️ 2-3种(模拟FPS)
稳定性测试 ✅ SmartMonkey + ANR + 白屏检测 + 内存泄漏 + 崩溃恢复 ❌ 需自行搭建
跨平台对比 ✅ HarmonyOS vs Android ⚠️ 需自行搭建
用例编写 ✅ 声明式(减少70-90%代码) ⚠️ 命令式

核心亮点:

  • 唯一性:业界唯一支持 HarmonyOS 自动化测试
  • 精准性:真实 FPS 采集(RenderService fpsCount + hitchs),非模拟数据
  • 完整性:19种性能指标 + 3种稳定性指标 + 完整稳定性测试套件(SmartMonkey/白屏/内存泄漏/ANR/崩溃恢复)
  • 简洁性:声明式框架 @Test/@Step,代码量减少 70-90%
  • 专业性:五层架构设计(src/ 目录即五层),职责分离清晰,易于扩展

业界最佳实践

React Native for OpenHarmony (RNOH) 基于 CPTF 框架完成全量功能、性能、稳定性测试,是目前业界最大的 HarmonyOS 跨端测试实践:

  • 功能测试:覆盖 Switch、Button、RefreshControl 等核心组件的全量属性跨平台一致性验证
  • 性能测试:19 种指标采集 + Warmup迭代 + 阈值告警 + HTML趋势图
  • 稳定性测试:SmartMonkey + ANR检测 + 白屏检测 + 内存泄漏 + 崩溃自动恢复
  • 跨平台对比:HarmonyOS vs Android UI结构4维对比(属性/样式/位置/层级)

测试用例工程:RNOH Test App

平台支持

平台 状态
HarmonyOS ✅ 已支持
Android ✅ 已支持
iOS 🚧 开发中

项目结构

cptf/
├── packages/framework/    # 框架层(npm 包 @cptf/framework)
│   └── src/               # 五层架构源码(base/infrastructure/system/capability/orchestration)
│       ├── base/           # 基础设施层(类型/配置/工具/设备管理/端口管理)
│       ├── infrastructure/ # 基础设施层(扫描/索引/设备发现)
│       ├── system/         # 系统层(ISystem接口+平台实现+Agent客户端)
│       ├── capability/     # 调度层(UI/断言/对比/采集)
│       ├── orchestration/  # 调度层(运行器/测试类/报告)
│       ├── cli/            # CLI命令
│       └── __tests__/      # 框架单元测试

快速开始

安装与构建

cd packages/framework
pnpm install
pnpm build

CLI命令

cptf devices              # 列出设备
cptf devices -p harmony   # 列出HarmonyOS设备
cptf scan                 # 扫描测试用例
cptf run                  # 执行所有测试(自动平台选择)
cptf run -p harmony       # HarmonyOS测试
cptf run -m performance   # 指定模块测试
cptf run -t all-metrics-performance # 指定用例测试
cptf compare              # 跨平台对比测试
cptf init                 # 初始化配置
cptf check-env            # 检查环境依赖
cptf template performance -n my-test  # 生成测试模板

# 或全局安装后使用
# pnpm link --global  # 可选:全局安装后直接使用 cptf 命令
cptf devices
cptf run -p harmony

配置设备

编辑被测应用的 cptf.config.json:

{
  "platforms": {
    "harmony": {
      "toolPath": "hdc",
      "bundleId": "com.tester.RNTester",
      "appPath": "harmony/entry/build/default/outputs/default/entry-default-signed.hap",
      "devices": [{ "id": "设备ID", "screenWidth": 1280, "screenHeight": 2832 }]
    },
    "android": {
      "toolPath": "adb",
      "bundleId": "com.tester.RNTester",
      "appPath": "android/app/build/outputs/apk/release/app-release.apk",
      "devices": [{ "id": "设备ID", "screenWidth": 1080, "screenHeight": 2400 }]
    }
  }
}

核心功能

多平台支持

  • HarmonyOS (hdc)
  • Android (adb)
  • iOS (WDA + xctrace,模拟器 xcrun simctl)

UI 自动化

  • 元素查找 (testId, text)
  • 点击操作 (坐标、元素)
  • 滑动操作 (scroll, fling)
  • 等待机制 (waitFor)

性能采集

  • FPS 监控(真实FPS:RenderService fpsCount + hitchs)
  • CPU 使用率
  • 内存占用(含泄漏检测:线性回归+R²置信度)
  • 白屏检测(PNG+zlib解析,亮度>240+白像素比>85%)
  • 19种性能指标 + 3种稳定性指标 + HTML趋势图

稳定性测试

  • SmartMonkey(权重衰减+覆盖率引导+安全区域过滤)
  • ANR 自动检测
  • 白屏检测(零外部依赖)
  • 内存泄漏检测(线性回归+高/中置信度)
  • 崩溃自动恢复(forceStop→launchApp→ensureInScene)
  • 场景漂移三层防护

视觉对比

  • 截图采集
  • 图片对比
  • 属性检查

报告生成

  • HTML 格式(默认)
  • Markdown 格式
  • JSON 格式
  • 性能告警

命令速查

cptf devices              # 列出设备
cptf devices -p harmony   # 列出平台设备
cptf run                  # 执行所有测试(自动平台选择)
cptf run -p harmony       # HarmonyOS测试
cptf run -m performance   # 指定模块
cptf run -t calendar-perf-declarative # 指定用例
cptf run -p harmony --rn-version rn84 --update-baseline  # 按 RN 版本分段建立/验证视觉基线
cptf compare              # 跨平台对比测试
cptf init                 # 初始化配置文件
cptf check-env            # 检查环境依赖
cptf template <module> -n <name>  # 生成测试用例模板

文档

文档 说明
架构总览 框架架构、源码目录、依赖规则
架构优势 五层架构、三平台加速、性能优势
能力规格 性能指标、API 规格、数据结构
用户指南 安装、配置、CLI、API 使用
声明式测试指南 @Test/@Step 装饰器、TestConfig 详解
命令式测试指南 命令式测试编写
Expect 断言指南 声明式断言使用
UI 对比指南 跨平台 UI 结构对比
扩展开发 新增平台、能力、报告生成
框架对比分析 与 Jest/Appium/Cypress 等对比
稳定性对比分析 7 维度对标业界稳定性方案
npm 包说明 CLI 命令、快速开始、架构设计

License

MIT

Introduction

面向终端设备的跨平台测试框架

Customize your domain