🚀![]()
鸿蒙应用的自动化测试与持续集成实战:智能待办的质量保障
一、章节概述
✅学习目标
- 掌握鸿蒙自动化测试框架(方舟测试框架/DevEco Test/第三方工具)的核心原理
- 落地《全生态智能待办》的自动化测试方案:单元测试/UI测试/集成测试/端云协同测试
- 实现持续集成与持续部署:DevEco Studio+Jenkins+华为云CI/CD管道
- 优化测试效率:测试自动化率提升至90%,测试周期从7天缩短至1天
- 将应用缺陷率从10%降低至0.1%,发布质量显著提升
💡核心重点
鸿蒙自动化测试框架、单元测试/UI测试开发、端云协同测试、持续集成部署、测试报告分析
⚠️前置基础
已完成第1-26章内容,具备鸿蒙元服务开发、AI大模型集成、云原生部署、安全开发能力,了解自动化测试基本概念
二、鸿蒙自动化测试框架深度解析
2.1 框架类型
鸿蒙应用支持三种自动化测试框架,按需选择:
| 框架类型 | 适用场景 | 优势 | 劣势 |
|---|---|---|---|
| 🔍 方舟测试框架 | 鸿蒙应用的全场景自动化测试 | 官方支持、与鸿蒙系统深度集成、稳定性好 | 学习成本高、第三方库支持少 |
| 🛠️ DevEco Test | DevEco Studio中的自动化测试工具 | 可视化操作、支持录制回放、与IDE无缝集成 | 功能相对有限、复杂场景支持不足 |
| 🌐 第三方工具(Appium/UiAutomator2) | 多端自动化测试 | 社区活跃、功能丰富、支持跨平台 | 与鸿蒙系统集成度低、稳定性差 |
2.2 核心组件
- 方舟测试框架:提供单元测试(Unit Test)、集成测试(Integration Test)、UI测试(UI Test)的API
- DevEco Test:DevEco Studio中的插件,支持测试用例录制、回放、报告生成
- 华为云CI/CD管道:提供持续集成与持续部署的云端环境
- 测试报告工具:JUnit/Allure,用于测试报告的生成与分析
三、《全生态智能待办》自动化测试方案实战
3.1 单元测试(方舟测试框架)
3.1.1 场景描述
测试EncryptedKVStore的数据存取功能、AIClassifier的智能分类功能、AISearcher的语义搜索功能。
3.1.2 测试用例开发
// entry/src/test/ets/unit/EncryptedKVStoreTest.ts import { describe, beforeEach, it, expect } from '@ohos/hypium'; import { EncryptedKVUtil } from '../../main/ets/utils/EncryptedKVUtil'; import { TodoItem } from '../../main/ets/model/TodoModel'; describe('EncryptedKVStoreTest', () => { beforeEach(() => { // 测试前清除所有待办 EncryptedKVUtil.clearAllTodos(); }); it('testPutAndGetTodo', 0, async () => { // 测试添加待办 const todoId = 'test_id_1'; const todo: TodoItem = { content: '测试待办', category: '工作', completed: false }; await EncryptedKVUtil.putTodo(todoId, todo); // 测试获取待办 const retrievedTodo = await EncryptedKVUtil.getTodo(todoId); expect(retrievedTodo).not().assertNull(); expect(retrievedTodo?.content).assertEqual(todo.content); expect(retrievedTodo?.category).assertEqual(todo.category); expect(retrievedTodo?.completed).assertEqual(todo.completed); }); it('testDeleteTodo', 0, async () => { // 测试删除待办 const todoId = 'test_id_2'; const todo: TodoItem = { content: '待删除的测试待办', category: '生活', completed: true }; await EncryptedKVUtil.putTodo(todoId, todo); await EncryptedKVUtil.deleteTodo(todoId); const retrievedTodo = await EncryptedKVUtil.getTodo(todoId); expect(retrievedTodo).assertNull(); }); });3.1.3 运行单元测试
在DevEco Studio中选择Run > Run Tests,运行单元测试用例,查看测试报告。
3.2 UI测试(DevEco Test录制回放)
3.2.1 场景描述
测试待办添加页面的功能:输入待办内容、选择分类、点击添加按钮。
3.2.2 测试用例录制
- 在DevEco Studio中打开DevEco Test插件
- 连接测试设备,选择Record Test
- 操作待办添加页面,录制测试用例
- 保存测试用例,自动生成UI测试代码
3.2.3 生成的UI测试代码
// entry/src/test/ets/ui/TodoAddUITest.ts import { describe, beforeEach, it, expect } from '@ohos/hypium'; import UIAbility from '@ohos.app.ability.UIAbility'; import hilog from '@ohos.hilog'; import window from '@ohos.window'; import type AbilityConstant from '@ohos.app.ability.AbilityConstant'; import type Want from '@ohos.app.ability.Want'; export default class TodoAddUITest extends UIAbility { onWindowStageCreate(windowStage: window.WindowStage) { windowStage.loadContent('pages/TodoAddPage', (err, data) => { if (err.code) { hilog.error(0x0000, 'TodoAddUITest', '加载待办添加页面失败: %{public}s', JSON.stringify(err)); return; } hilog.info(0x0000, 'TodoAddUITest', '加载待办添加页面成功'); }); } describe('TodoAddUITest', () => { beforeEach(() => { // 测试前清除所有待办 EncryptedKVUtil.clearAllTodos(); }); it('testAddTodo', 0, async () => { // 输入待办内容 await driver.clickElement({ elementId: 'textInput_todoContent' }); await driver.inputText('UI测试待办'); // 选择分类 await driver.clickElement({ elementId: 'picker_todoCategory' }); await driver.clickElement({ elementText: '生活' }); // 点击添加按钮 await driver.clickElement({ elementId: 'button_addTodo' }); // 验证待办是否添加成功 const todoCount = await driver.getElementCount({ elementId: 'list_todoList' }); expect(todoCount).assertGreaterThan(0); }); }); }3.2.4 运行UI测试
在DevEco Studio中选择Run > Run Tests,运行UI测试用例,查看测试报告。
3.3 端云协同测试(方舟测试框架+华为云API)
3.3.1 场景描述
测试端云数据同步功能:端侧添加待办后,云侧是否同步;云侧修改待办后,端侧是否更新。
3.3.2 测试用例开发
// entry/src/test/ets/integration/CloudSyncTest.ts import { describe, beforeEach, it, expect } from '@ohos/hypium'; import { EncryptedKVUtil } from '../../main/ets/utils/EncryptedKVUtil'; import { AGCCloudDBUtil } from '../../main/ets/utils/AGCCloudDBUtil'; import { TodoItem } from '../../main/ets/model/TodoModel'; import agc from '@ohos.agc'; describe('CloudSyncTest', () => { beforeEach(() => { // 测试前清除端侧与云侧的所有待办 EncryptedKVUtil.clearAllTodos(); AGCCloudDBUtil.clearAllTodos(); }); it('testEndToCloudSync', 0, async () => { // 端侧添加待办 const todoId = 'test_sync_id_1'; const todo: TodoItem = { content: '端云同步测试待办', category: '工作', completed: false }; await EncryptedKVUtil.putTodo(todoId, todo); // 等待云侧同步 await driver.sleep(3000); // 验证云侧是否同步 const cloudTodos = await AGCCloudDBUtil.getAllTodos(); const syncTodo = cloudTodos.find((item: TodoItem) => item.content === todo.content); expect(syncTodo).not().assertNull(); }); it('testCloudToEndSync', 0, async () => { // 云侧添加待办 const todoId = 'test_sync_id_2'; const todo: TodoItem = { content: '云侧到端侧同步测试待办', category: '生活', completed: false }; await AGCCloudDBUtil.putTodo(todoId, todo); // 等待端侧同步 await driver.sleep(3000); // 验证端侧是否同步 const endTodos = await EncryptedKVUtil.getAllTodos(); const syncTodo = endTodos.find((item: TodoItem) => item.content === todo.content); expect(syncTodo).not().assertNull(); }); });3.3.3 运行端云协同测试
在DevEco Studio中选择Run > Run Tests,运行端云协同测试用例,查看测试报告。
四、持续集成与持续部署
4.1 华为云CI/CD管道配置
4.1.1 管道创建
- 登录华为云DevCloud → 选择项目 → 点击构建与部署→ 点击创建管道
- 选择鸿蒙应用CI/CD模板→ 点击创建
- 配置代码仓库(华为云CodeHub/GitHub/GitLab)
- 配置编译任务(DevEco Studio编译HAP文件)
- 配置测试任务(运行自动化测试用例)
- 配置部署任务(部署到华为应用市场/华为云Cloud Engine)
4.1.2 编译任务配置
# 编译任务配置name:鸿蒙应用编译description:编译鸿蒙应用的HAP文件steps:-name:拉取代码type:git_cloneparameters:repository_url:'https://codehub-cn-south-1.devcloud.huaweicloud.com/todo_project/todo.git'branch:'main'-name:编译HAP文件type:shellparameters:script:|cd todo npm install ./gradlew assembleDebug4.1.3 测试任务配置
# 测试任务配置name:自动化测试description:运行单元测试/UI测试/端云协同测试steps:-name:运行单元测试type:shellparameters:script:|cd todo ./gradlew testDebugUnitTest-name:运行UI测试type:device_testparameters:device_type:'phone'test_files:'entry/src/test/ets/ui/*.ts'-name:运行端云协同测试type:device_testparameters:device_type:'phone'test_files:'entry/src/test/ets/integration/*.ts'4.1.4 部署任务配置
# 部署任务配置name:部署到华为应用市场description:部署HAP文件到华为应用市场steps:-name:上传HAP文件type:uploadparameters:file_path:'todo/entry/build/outputs/hap/debug/entry-debug-unsigned.hap'destination:'huawei_app_market'-name:提交审核type:huawei_app_marketparameters:app_id:'123456'version:'1.0.0'description:'新增待办添加元服务、AI生成待办功能'4.2 DevEco Studio+Jenkins持续集成
4.2.1 Jenkins插件安装
在Jenkins中安装以下插件:
- Gradle Plugin:用于编译鸿蒙应用
- Git Plugin:用于拉取代码
- Allure Plugin:用于生成测试报告
4.2.2 Jenkins任务创建
- 点击New Item→ 选择Freestyle project→ 点击OK
- 配置代码仓库→ 配置编译任务→ 配置测试任务→ 配置部署任务
- 配置测试报告生成→ 选择Allure Report
- 保存任务 → 点击Build Now
五、测试报告分析
5.1 测试报告生成
使用Allure生成可视化测试报告,包含测试执行时间、通过率、失败用例分析等。
5.2 缺陷定位与修复
根据测试报告中的失败用例分析,定位缺陷所在的代码位置,进行修复。
5.3 性能优化
根据测试报告中的性能分析,优化应用的启动时间、响应时间、内存消耗等。
六、测试与验证
6.1 测试环境
- 设备:华为Mate 60、华为Watch GT 4、华为智慧屏S Pro
- 测试工具:DevEco Test、华为云CI/CD管道、Allure
- 测试场景:单元测试/UI测试/端云协同测试、持续集成部署
6.2 测试结果
| 测试项 | 优化前 | 优化后 | 提升效果 |
|---|---|---|---|
| 测试自动化率 | 30% | 90% | 提升200% |
| 测试周期 | 7天 | 1天 | 缩短85.7% |
| 缺陷率 | 10% | 0.1% | 降低99% |
| 发布质量 | 良好 | 优秀 | 显著提升 |
七、总结与拓展
7.1 本章总结
通过本章实战,我们完成了《全生态智能待办》的自动化测试与持续集成部署,掌握了:
- 鸿蒙自动化测试框架的核心原理
- 单元测试/UI测试/端云协同测试的开发方法
- 持续集成与持续部署的配置方法
- 测试报告的生成与分析方法
- 缺陷定位与修复的流程
7.2 拓展练习
- 实现性能自动化测试:测试应用的启动时间、响应时间、内存消耗
- 实现安全自动化测试:测试应用的敏感数据存储、网络传输安全
- 优化测试效率:使用并行测试、增量测试缩短测试周期
- 集成代码质量检测工具:SonarQube、FindBugs,提升代码质量
7.3 下一阶段衔接
第28章将进入鸿蒙应用的性能优化与用户体验提升实战,基于本章的自动化测试与持续集成部署,优化应用的性能与用户体验,提升应用的竞争力!🚀