面向终端设备的跨平台测试框架
Access rate limit exceeded. Please log in to continue.
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