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 编译、目标模拟器镜像行为、折叠真机连续性和平台审核结果仍属于待验证项。完成目标环境验证后,应把版本、设备、构建身份和读回结果补入证据包。
官方资料
最终结论
把安装方式、应用数据版本、依赖模块和测试过滤条件写进基线,避免覆盖安装制造假通过。 适配不是让截图“看起来差不多”,而是让关键任务在形态变化后依然可见、可操作、可恢复。
更多推荐




所有评论(0)