你是不是也在想——“鸿蒙这么火,我能不能学会?”
答案是:当然可以!
这个专栏专为零基础小白设计,不需要编程基础,也不需要懂原理、背术语。我们会用最通俗易懂的语言、最贴近生活的案例,手把手带你从安装开发工具开始,一步步学会开发自己的鸿蒙应用。
不管你是学生、上班族、打算转行,还是单纯对技术感兴趣,只要你愿意花一点时间,就能在这里搞懂鸿蒙开发,并做出属于自己的App!
📌 关注本专栏《零基础学鸿蒙开发》,一起变强!
每一节内容我都会持续更新,配图+代码+解释全都有,欢迎点个关注,不走丢,我是小白酷爱学习,我们一起上路 🚀
全文目录:
- 前言
- 1. 前言:为什么一定要在鸿蒙项目里“上自动化”?
- 2. 方案鸟瞰:一张图说清楚
- 3. 测试金字塔×鸿蒙实践:怎么切蛋糕最省心?
- 4. 工程脚手架与目录约定(建议)
- 5. 单元测试(ArkTS/Hypium)——快、准、狠
- 6. UI 自动化(UiTest)——把关键路径“按脚本走一遍”
- 7. 命令行与报告:把测试变成“看得见的数据”
- 8. 性能与稳定:用 DevEco Testing 做“场景化体检”
- 9. CI 集成:把质量卡在每一次提交上
- 10. 可复用的测试用例清单(建议你直接抄)
- 11. 几个“踩坑实录”与规避姿势
- 12. 方案落地甘特(两周版)
- 13. 进阶拓展:把“自动化”做成资产
- 14. 小结:自动化不是“仪式感”,而是交付的“安全带”
- 参考与延伸阅读(强烈建议通读官方原文)
前言
直球开场:你是想要“写完上真机赌人品”,还是让流水线把风险一刀刀剁碎?这一篇,我们把基于 DevEco Studio 的鸿蒙自动化测试方案从 0 到 1 讲透:从测试金字塔设计到工具与框架选型,从ArkTS 单元/组件/UI 自动化到性能/稳定性,再到命令行与 CI 集成。全程有代码、有命令、有落地清单,力求“今天看,明天用”。(顺手埋点几处“吐槽”,当个有温度的测试人😂)
1. 前言:为什么一定要在鸿蒙项目里“上自动化”?
鸿蒙的应用形态越来越多:手机、大屏、穿戴、车机……环境一复杂、人工回归就会失真。好消息是,鸿蒙官方已经给到一整套自动化测试框架与 DevEco Studio 的内外联动:ArkTS/JS 单元测试(JsUnit/Hypium)、UI 自动化(UiTest),再到 DevEco Testing 的专项能力与命令行工具,从 IDE 到 CLI 形成闭环。核心设计理念:用单元测试兜底、UI 自动化点关键链路、专项测试盯性能,再把它们挂到 CI,让每一次提交都有“判官”。(华为开发者中心官网)
2. 方案鸟瞰:一张图说清楚
开发机/DevEco Studio
├─ 本地调试:ArkTS 单元测试(JsUnit/Hypium) → 覆盖业务逻辑
├─ 本地/真机:UI 自动化(UiTest) → 覆盖关键用户路径
├─ 专项测试:DevEco Testing 性能/稳定 → 场景化指标
└─ CLI:devecocli/工具链 → 报告、截图、控件树、录制回放
CI(GitHub Actions/GitLab CI)
├─ 拉起模拟器或接物理设备(USB/WLAN)
├─ 执行单元 + UI 自动化 + 性能脚本
└─ 产出:HTML/JSON 报告、覆盖率、性能趋势、失败快照
自动化测试框架由单元测试框架 + UI 测试框架组成;同时提供 shell/CLI 能力:一键截图、抓取控件树、录制操作、注入模拟点击/输入。这使得“脚本 + 证据链(快照/树)”合为一体,便于复盘与问题定位。(华为开发者中心官网)
3. 测试金字塔×鸿蒙实践:怎么切蛋糕最省心?
- 底层(最多)— 单元测试:ArkTS 直接命中业务函数、ViewModel、工具库,速度快、稳定性高。**本地(Local Test)**无需设备;**设备侧(Instrument Test)**可和系统 API 打交道。(华为开发者中心官网)
- 中层 — 组件/页面测试:对 ArkUI 组件做交互级验证(轻 UI 自动化或组件桩);
- 顶层(少而精)— UI 自动化:覆盖“支付下单”、“登录+鉴权”、“设备绑定”这类跨页面主链路,失败率必须极低。(ost.51cto.com)
- 旁路专项 — 性能/稳定:用 DevEco Testing 的场景化性能测试,抓帧率、CPU、内存、启动时长等指标,形成趋势线。(华为开发者中心官网)
4. 工程脚手架与目录约定(建议)
entry/
src/
main/ets/… # 业务代码
test/ # Local Test(不依赖设备)
unit/… # 纯单元
ohosTest/ # Instrument Test(设备/模拟器上运行)
unit/… # 设备侧单元/集成
ui/… # UiTest 脚本
tools/
ci/… # CI 脚本(设备选择、模拟器拉起、报告归档)
DevEco Studio 中 ohosTest(Instrument) 与 test(Local) 两类测试目录是内建约定;UI 自动化脚本运行在设备/模拟器,单元测试两端都能跑。(华为开发者中心官网)
5. 单元测试(ArkTS/Hypium)——快、准、狠
5.1 断言与用例组织(最小可跑示例)
// entry/src/test/unit/calculator.test.ets (Local Test)
import { describe, it, expect } from '@ohos/hypium';
function add(a: number, b: number) { return a + b; }
export default function calculatorSuite() {
describe('Calculator', () => {
it('add: 2 + 5 = 7', () => {
expect(add(2, 5)).assertEqual(7);
});
});
}
5.2 设备侧拉起一个 Ability 并断言当前页面
// entry/src/ohosTest/unit/ability_smoke.test.ets (Instrument Test)
import { describe, it, expect } from '@ohos/hypium';
import { abilityDelegatorRegistry } from '@kit.TestKit';
import { UIAbility, Want } from '@kit.AbilityKit';
const delegator = abilityDelegatorRegistry.getAbilityDelegator();
export default function abilitySuite() {
describe('Ability smoke', () => {
it('launch EntryAbility then check page', async () => {
const want: Want = { bundleName: 'com.example.demo', abilityName: 'EntryAbility' };
await delegator.startAbility(want);
const current = await delegator.getCurrentTopAbility();
expect((current as UIAbility).context.abilityInfo.name).assertEqual('EntryAbility');
});
});
}
Hypium + Delegator 是设备侧测试常用组合:能启动 Ability、获取栈顶信息,适合“冷启动/热启动/路由”验证。官方指南明确了依赖导入、识别与执行流程。(华为开发者中心官网)
6. UI 自动化(UiTest)——把关键路径“按脚本走一遍”
6.1 查找元素与操作(点击、输入、断言)
// entry/src/ohosTest/ui/login_flow.test.ets
import { describe, it, expect } from '@ohos/hypium';
import { byText, byId, findComponent, click, inputText, takeScreenshot } from '@ohos.UiTest'; // API示意
export default function uiSuite() {
describe('Login flow', () => {
it('should login successfully', async () => {
await findComponent(byText('登录'));
await click(byText('登录'));
await inputText(byId('input_username'), 'tester@home.com');
await inputText(byId('input_password'), 'P@ssw0rd');
await click(byText('提交'));
await findComponent(byText('欢迎回来'));
// 断言:页面出现欢迎文案
expect(await findComponent(byText('欢迎回来'))).assertTrue();
// 失败时的证据链
await takeScreenshot('/data/test-reports/login-success.png');
});
});
}
6.2 外挂利器:截图、控件树、录制回放、注入操作
除了脚本 API,框架还提供了shell/命令行能力:一键截图、导出控件树、录制用户操作、将录制转脚本/注入回放,非常适合“先录后改”的提效流。(华为开发者中心官网)
7. 命令行与报告:把测试变成“看得见的数据”
- 执行与选择:可按模块/套件/标签执行,支持模拟器或真机;社区与实务文章给出常见 CLI 用法与报告产出示例。(ost.51cto.com)
- DevEco Testing 门户:提供专项测试与工具集,新版强调快速上手、回归与上架前检查;与 IDE/CLI 协作,形成统一体验。(华为开发者中心官网)
典型动作还包括拉起 uitest 进程、获取版本信息等辅助命令,方便排查环境问题(如设备兼容、权限缺失等)。(华为开发者中心官网)
8. 性能与稳定:用 DevEco Testing 做“场景化体检”
别只盯功能链路,性能退化往往是用户最先体感的痛。DevEco Testing 的场景化性能测试 Codelab支持“一键执行场景→采集 FPS/CPU/内存/耗时→生成报告”,适合关键场景(首屏、列表滚动、视频播放)的常态化体检与趋势分析。(华为开发者中心官网)
9. CI 集成:把质量卡在每一次提交上
GitHub Actions 示范(精简)
name: harmony-tests
on: [push, pull_request]
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
# 1) 安装工具链(示意):devecocli / sdk / emulator
- name: Setup DevEco CLI
run: |
echo "install sdk & devecocli ..."
# 2) 启动模拟器或连接真机(WLAN/USB)
- name: Launch emulator
run: |
echo "start emulator & wait device ..."
# 3) 执行测试
- name: Run Unit & UI Tests
run: |
devecocli test --module ohosTest --suite "Unit"
devecocli test --module ohosTest --suite "UiFlow" --report html --output reports/
# 4) 归档报告
- uses: actions/upload-artifact@v4
with:
name: test-reports
path: reports/
官方与社区资料均强调:命令行优先、报告可生成 HTML/JSON,便于 CI 平台归档与可视化。新版本还强化了“流水线搭建”的指南与命令行能力,适配团队协作。(华为开发者中心官网)
10. 可复用的测试用例清单(建议你直接抄)
- 启动健诊:首次冷启/二次热启时长、闪屏是否卡住;
- 鉴权链路:注册/登录/Token 续期/退出;
- 分布式场景:跨设备迁移/投屏/共享(若涉及);
- 关键交易:下单/支付/退款/状态回滚;
- 离线与弱网:断网重试、缓存一致性;
- 权限弹窗:相机、定位、蓝牙等权限的首次/二次体验;
- 性能守门:首屏/FPS/内存泄露巡检(场景化性能)。(华为开发者中心官网)
11. 几个“踩坑实录”与规避姿势
- 把 UI 自动化当“回归全覆盖”:结果就是脆。请把 UI 自动化只留给关键主链路,其余下沉到单元/组件层。(ost.51cto.com)
- 脚本不做证据链:失败了只有一句 “assert false”。建议每步关键动作截图 + 导出控件树,方便复盘。(华为开发者中心官网)
- 环境漂移:模拟器/真机分辨率、系统版本差异导致选择器失效。用byId 优先、文本/路径兜底,为易变控件加 testId。(华为开发者中心官网)
- 性能脚本无人维护:建议在 DevEco Testing 场景里固化阈值,纳入 CI 的趋势回归。(华为开发者中心官网)
12. 方案落地甘特(两周版)
- D1–D2:拉起 Local/Instrument 基础用例框架;
- D3–D5:补齐单元测试 60% 覆盖(核心模块优先),抽象 UI 选择器;
- D6–D8:实现 3 条 UI 主链路(登录、下单、设置);
- D9–D10:串 DevEco Testing 场景化性能;
- D11–D12:接 CI,产出 HTML 报告与覆盖率徽章;
- D13–D14:稳定性回归、失败用例处置 SLO、文档化。
13. 进阶拓展:把“自动化”做成资产
- 测试数据工厂:ArkTS 侧封装 Faker/Builder,无副作用地生成场景数据;
- 录制→脚本:借助录制与注入能力,加速脚本雏形,再人工打磨成鲁棒用例;(华为开发者中心官网)
- 异步排队器:对“网络/分布式”场景引入重试与超时兜底,把偶发抖动控制在脚本层;
- 报告“故事化”:把截图/控件树/性能曲线缝在同一 HTML,失败一目了然(领导爱看,团队也省心🤭)。
14. 小结:自动化不是“仪式感”,而是交付的“安全带”
DevEco Studio + 自动化测试框架把编写、执行、取证、分析连成一条线;DevEco Testing 把专项指标与流水线再度夯实。把简单的稳定交给机器,把困难的策略交给人——这才是鸿蒙应用在多形态设备上稳定演进的正解。
最后一问:**“下一次提测,你想靠人肉祈祷,还是让报告替你说话?”**😉
参考与延伸阅读(强烈建议通读官方原文)
- 自动化测试框架使用指导:JsUnit/Hypium 与 UiTest 的原理、API、脚本与 shell 能力(截图/控件树/录制/注入)。(华为开发者中心官网)
- DevEco Testing 官方指南:快速上手、专项测试、回归与上架前检查,命令行能力与报告。(华为开发者中心官网)
- 场景化性能测试 Codelab:一键采集 FPS/CPU/内存等指标并分析报告。(华为开发者中心官网)
- 实务命令与最佳实践(社区):DevEco/CLI 执行选择与报告产出示例。(ost.51cto.com)
- 入门文章(社区):10 分钟上手 DevEco Testing,覆盖率生成与 CI 挂钩示例。(掘金)
想要我把上面的脚手架直接拼成一个最小可运行样例仓库(含三条 UI 主链路、性能脚本、CI YAML、HTML 报告模板)吗?给我你的 bundleName/主链路描述/目标设备列表,我就按这个“配方”烤一份“出炉即用”的测试工程!🚀
❤️ 如果本文帮到了你…
- 请点个赞,让我知道你还在坚持阅读技术长文!
- 请收藏本文,因为你以后一定还会用上!
- 如果你在学习过程中遇到bug,请留言,我帮你踩坑!
4826

被折叠的 条评论
为什么被折叠?



