Instrument Test 连续通过,清空数据却失败:保留应用数据如何污染鸿蒙测试基线

Instrument Test 的自定义任务允许勾选“保留应用数据”,这意味着覆盖安装并保留缓存。它适合升级和连续性测试,却会污染首装、默认配置和迁移边界用例。连续十次通过可能只是继承了旧登录态或已完成引导;清空数据后第一次失败,才暴露真实基线错误。

Instrument Test 干净、升级与连续性测试基线

先按这张现场排查表行动

1. 首装任务禁止保留旧数据。

2. 升级任务固定旧版本数据。

3. 依赖 HSP 必须随任务安装。

4. 保存实际过滤参数与用例数。

5. 报告记录构建和数据版本。

复现与取证起点

准备首装引导、升级迁移和已登录回归三组测试。分别使用干净安装、勾选保留应用数据的覆盖安装、Wipe User Data 后重装;记录 installMode、dataVersion、loginState、onboardingDone、dependencyPackages、testFilter、coverageMode 和 result。固定同一测试代码,只改变基线,观察哪些用例从通过变为失败。

复现记录至少包含设备形态、窗口尺寸、字体或显示配置、关键状态、操作路径和截图时间。只保存一张最终截图,无法解释问题是在布局、状态恢复还是输入阶段发生。

三个判断点

保留应用数据会改变测试前置状态

覆盖安装不会回到首装。若用例没有显式准备数据,它会读取上轮缓存,结果不可复核。

这里必须同时保存输入条件、设备或窗口形态、触发动作和最终可观察状态。工具报告用于缩小范围,任务是否可完成仍由同一条用户路径的读回结果决定。

不同测试目标需要不同基线

首装从 clean 开始,升级从指定旧版本数据开始,连续性用例才保留当前状态。不要用一个运行配置覆盖三类目标。

这里必须同时保存输入条件、设备或窗口形态、触发动作和最终可观察状态。工具报告用于缩小范围,任务是否可完成仍由同一条用户路径的读回结果决定。

依赖模块与过滤条件也属于证据

HAP/HSP 依赖缺失会造成与业务无关的失败;level、size、testType 过滤错误会让关键用例根本没有执行。报告必须保存实际筛选集合。

这里必须同时保存输入条件、设备或窗口形态、触发动作和最终可观察状态。工具报告用于缩小范围,任务是否可完成仍由同一条用户路径的读回结果决定。

方案对比

方式优点风险
所有用例都保留数据执行快首装与默认态假通过
所有用例都清空数据基线简单无法验证升级和连续性
按目标维护 clean/upgrade/continuity 三类基线结论准确需要管理运行配置

我的选择:采用第三种,并把基线身份写入每份测试报告。

案例一:首装引导用例连续通过,Wipe 后失败

旧数据里 onboardingDone=true,测试直接跳过了引导。首装任务禁用保留数据,并在断言前读回数据版本与首屏状态。

修复后用原始条件再次执行完整任务,并保留修改前后同一节点的可见性、可操作性和状态对照。

案例二:升级迁移用例每次清空后都无法覆盖真实路径

升级测试需要固定旧版本数据包,不应完全清空。准备可校验的旧版本快照,覆盖安装新包后核对迁移收据与数据版本。

第二个案例选择不同形态或不同状态,用来证明方案不是对单一截图的局部修补。

工程侧模型

type Baseline='clean'|'upgrade'|'continuity'
function baseline(goal:'firstInstall'|'migration'|'session'):Baseline{return goal==='firstInstall'?'clean':goal==='migration'?'upgrade':'continuity'}

模型只表达稳定的决策边界,界面组件、窗口事件和工具结果通过适配器接入,避免把设备差异散落在每个页面。

可独立执行的状态断言

function b(g){return g==='first'?'clean':g==='migration'?'upgrade':'continuity'}
if(b('first')!=='clean'||b('migration')!=='upgrade'||b('session')!=='continuity')throw new Error('测试基线映射错误');

这些断言验证纯状态、几何或边界计算,不代表 API 26 工程已经编译,也不代表真机、模拟器特定镜像或应用市场审核已经通过。

封装与复用

封装 TestBaselineManifest,记录安装模式、数据版本、登录态、依赖模块、过滤参数与构建身份;测试启动先校验清单,不匹配就拒绝运行。

复用层输出决策和证据,不强行统一所有页面视觉。每个页面仍可保留自身信息层级,但必须满足相同的任务可达性与状态连续标准。

验证边界

本文依据当前华为官方文档整理能力与约束,纯状态模型已在本机执行。当前本机 HarmonyOS SDK 为 API 24,且没有连接 HDC 设备,因此 API 26 编译、目标模拟器镜像行为、折叠真机连续性和平台审核结果仍属于待验证项。完成目标环境验证后,应把版本、设备、构建身份和读回结果补入证据包。

官方资料

最终结论

把安装方式、应用数据版本、依赖模块和测试过滤条件写进基线,避免覆盖安装制造假通过。 适配不是让截图“看起来差不多”,而是让关键任务在形态变化后依然可见、可操作、可恢复。

Logo

作为“人工智能6S店”的官方数字引擎,为AI开发者与企业提供一个覆盖软硬件全栈、一站式门户。

更多推荐