适用AI工具:DevEco Code / Cursor
前置博客:第10篇
预计阅读时间:20分钟
一、为什么测试是 AI 提效最确定的环节
编码领域 AI 是"提效"——人还是要审;测试领域 AI 是"补量"——用例覆盖不足是团队的常态痛点,而用例生成恰好是大模型最稳定的输出形式(给定输入/输出契约,产出结构化断言)。本篇先搭 Hypium 测试骨架,再讲 AI 在三个层级的用例生成与维护用法。
二、测试金字塔与工具选型
三、Hypium 骨架:单元测试
// entry/src/test/List.test.ets 与本地用例import{describe,it,expect}from'@ohos/hypium';import{ThemeModel}from'../../main/ets/model/ThemeModel';exportdefaultfunctionthemeModelTest(){describe('ThemeModel',()=>{it('default_is_light',0,()=>{constmodel=newThemeModel();expect(model.initialDark()).assertEqual(false);});it('toggle_persists',0,()=>{constmodel=newThemeModel();model.setDarkForTest(true);expect(model.initialDark()).assertEqual(true);});});}可测性的关键前置:业务逻辑与 UI、系统能力解耦。第 04 篇的分层架构(Manager 独立类)在这里兑现——纯逻辑类直接 new 出来测,不需要拉起 Ability。
四、UI 自动化:Hypium UiTest
import{Driver,ON}from'@ohos.uitest';exportdefaultfunctionsettingsPageTest(){describe('SettingsPage',()=>{it('dark_mode_toggle',0,async()=>{constdriver=Driver.create();awaitdriver.delayMs(1000);// 按文案定位开关并点击awaitdriver.assertComponentExist(ON.text('深色模式'));consttoggle=awaitdriver.findComponent(ON.type('Toggle'));constbefore=awaittoggle.isChecked();awaittoggle.click();awaitdriver.delayMs(500);constafter=await(awaitdriver.findComponent(ON.type('Toggle'))).isChecked();expect(after).assertNotEqual(before);// 状态翻转});});}五、AI 用法一:从实现代码生成用例
把被测类贴给 AI,要求按"契约优先"生成用例:
为 VideoFilter 类生成单元测试。要求:
- 先列测试点清单(正常/边界/异常),我确认后再生成代码
- 覆盖:空列表、单元素、重复评分、评分超界
- 每个用例命名"行为_期望"格式,断言具体到字段
先出清单再出代码是关键——AI 直接生成的用例容易只测正常路径,清单阶段人工补"异常与边界",覆盖率立刻上一个台阶。实测一个 300 行的过滤类,AI 清单 14 个测试点,人工补充 5 个,最终 19 个用例中 16 个一次通过,其余是暴露出来的真 Bug。
六、AI 用法二:Mock 层与失败诊断
Mock 生成:单元测试离不开 Mock(preferences、网络、系统能力)。让 AI 按接口签名批量生成 Mock 类与注入桩,纪律是"Mock 返回值必须与真实实现的数据结构一致"——把真实接口的返回样例 JSON 一起给 AI,可大幅减少 Mock 失真。
失败诊断:CI 失败日志回流给 AI 是日常化用法:
以下 Hypium 失败日志与被测代码。定位失败原因,
区分:用例错误 / 实现 Bug / 环境问题,并给出修复建议。
实测它对"断言写错字段"“异步未等待”“Mock 数据过期"三类高频问题的定位准确率在 80% 以上,人从"读日志找原因"变成"复核结论”。
七、AI 用法三:用例维护与回归裁剪
用例的长期成本在维护。两个进阶用法:
- 接口变更影响分析:改了
VideoItem字段后,把 diff 给 AI,让它列出"哪些测试文件引用了变更字段并需要同步",避免跑一遍 CI 才发现编译挂掉 - 回归裁剪:按本次 diff 的调用链(结合第 03 篇的 MCP 能查工程结构)圈定必须回归的用例子集,PR 级只跑子集,每日全量——大型工程 CI 时长可压缩一半以上
八、CI/CD 集成要点
- 提交触发:单测 + 编译(快,5 分钟内)
- 每日触发:UI 自动化全量 + 性能基线对比(对接第 04 篇的 Profiler 数据)
- 失败处理:日志自动存档,AI 诊断结论附在流水线通知里,人只处理"AI 看不懂的少数"
九、下一步
质量兜住之后,下一篇解决鸿蒙开发的另一道大题:一次开发多端部署。