HarmonyOS学习笔记65:用单元测试验证数据转换 个人主页杨利杰YJlio❄️个人专栏《Windows 疑难杂症与工单复盘案例库》 《Sysinternals实战教程》《WINDOWS教程》 《Windows PowerShell 实战》 《IOS插件分析测试》《超简单用Python让Excel飞起来》让复杂的事情更简单让重复的工作自动化HarmonyOS学习笔记65用单元测试验证数据转换文章目录HarmonyOS学习笔记65用单元测试验证数据转换一、先说清楚被测行为二、样例要覆盖不同输入类别三、把转换逻辑与外部依赖分开四、断言要描述“正确”而非只看“没报错”五、逐项增加用例缩小失败范围六、失败记录要能让别人复现七、用一张记录表连接预期与证据八、在 HarmonyOS 工程中落地时的边界总结参考资料大家好我是杨利杰 YJlio。这篇记录一个容易被页面测试掩盖的问题**数据转换函数能否在不同输入条件下稳定地产生预期结果**例如把接口或本地记录整理成页面可用的数据结构时字段映射、默认值和格式处理都可能出错。把转换逻辑单独拿出来验证定位会更直接。本文是一份测试设计练习。原始笔记没有提供可运行工程、测试代码或设备运行记录因此不虚构测试通过结果涉及 DevEco Studio、SDK、测试框架的实际操作请以自己的工程版本和官方文档为准。一、先说清楚被测行为测试开始前先用一句话描述转换函数的职责它接收什么输入应该返回什么结构哪些情况需要拒绝或保留。描述越具体越容易写出有意义的断言。可以先把函数看作一个边界清晰的步骤输入进入转换逻辑输出交给页面或后续业务。测试重点放在转换前后的数据不把页面渲染、网络请求、数据库访问等无关环节一并带进来。例如若职责是“将原始记录整理成展示模型”测试问题可以是必需字段是否按约定映射可选字段缺失时如何处理不符合预期的输入如何反馈转换前后的数据是否互相污染。先定义输入、输出和异常边界再选择测试工具不要从测试框架 API 开始猜。二、样例要覆盖不同输入类别只验证一条正常数据通常只能说明最简单的路径可用。测试设计应先按输入特征分类再根据当前业务约定填入真实样例。样例类别需要确认的问题预期结果怎么写常规输入正常字段能否完成映射明确每个关键字段的目标值或结构空或缺失字段可选字段缺失时是否有约定行为写明保留空值、使用默认值或返回错误中的实际规则边界输入长度、范围或格式临界值如何处理使用业务允许范围内的真实边界值异常输入类型或格式不符合约定时怎么办明确错误、忽略或降级策略不凭空设定表格里的“空、边界、异常”是测试类别不代表某个具体业务字段一定采用某种规则。预期结果必须来自产品约定或现有实现不能为了让用例通过而临时编造。三、把转换逻辑与外部依赖分开数据转换往往可以独立于页面进行验证。若函数内部同时读取页面状态、请求网络或访问持久化数据测试就会变得复杂也更难判断失败来自哪里。实践中可以按这个顺序梳理找出输入数据进入应用的位置。定位字段映射、格式整理或默认值处理代码。确认这部分逻辑能否接收明确输入并返回结果。将页面、网络、文件和数据库等依赖留在转换逻辑之外若无法拆开先记录依赖边界。这是一种设计检查思路不是要求为每个场景强行重构。若转换规则依赖业务状态测试数据就应同时记录相关前置条件。四、断言要描述“正确”而非只看“没报错”函数没有抛出异常不代表转换结果正确。断言应对应实际需求检查关键字段、集合顺序、默认值或失败行为不需要把每个内部实现细节都锁死。一条清晰的用例至少包含**输入**本次传入的记录以及必要前置条件**动作**调用被测转换逻辑**预期**按业务规则写出的结果或错误**实际**运行后观察到的返回值、异常或日志**结论**实际与预期是否一致以及差异在哪里。测试框架提供的断言写法可能随工程、SDK 与依赖版本不同。请从当前工程模板和官方对应版本文档确认导入路径及 API再编写可运行用例。没有确认环境时本文不提供看似可复制、实则未经核验的测试代码。五、逐项增加用例缩小失败范围覆盖更多情况不等于一次把许多条件塞进同一个用例。每条用例尽量只改变一个关键条件这样失败时比较容易判断是哪条规则引起的。例如先固定其他字段只改变一个可选字段是否缺失确认结果后再单独测试另一种输入格式。实际条件和预期值必须由当前业务规则给出不要把图示当成可直接运行的测试数据。出现失败时不要马上同时修改转换逻辑和测试期望。先核实期望是否有依据再比较实际输出如果规则本身不清晰先补充需求说明。六、失败记录要能让别人复现测试失败的价值在于暴露差异。只写“用例失败”或截一张没有上下文的局部图通常不足以帮助定位。建议保留用例名称和前置条件完整输入或经过脱敏的最小样例实际输出与预期差异完整错误文本及出现位置DevEco Studio、SDK、设备或模拟器的真实版本信息从干净状态开始的复现步骤。错误截图应来自自己的工程。分享日志或数据前先去除账号、令牌、个人信息和业务敏感字段。七、用一张记录表连接预期与证据原始笔记给出的记录格式可以直接作为练习模板用例记录前置条件 | 步骤 | 预期 | 实际 | 设备/SDK | 证据 每次只改变一个条件失败时保存完整错误和复现步骤。发布文章或团队复盘时再把模板替换为本机实际记录。设备和 SDK 栏填写真实环境“实际”和“证据”在没有运行前保持待补充不能用示意图替代执行结果。八、在 HarmonyOS 工程中落地时的边界华为开发者文档介绍了 DevEco Studio 的 Instrument Test测试用例放在ohosTest测试目录支持 ArkTS/JS并需要在设备上运行。不同工程模板、SDK/API 版本的目录结构和接口细节可能有差异动手前应打开与当前版本匹配的文档并以工程实际生成结构为准。建议按下面的检查单推进先确认当前工程版本、测试目录和运行目标选择一段边界清楚的数据转换逻辑按业务约定列出常规、空缺、边界和异常输入在当前工程中编写用例并运行保存实际输出、错误和环境信息修改后重新运行相关用例记录回归结果。没有在当前工程执行过的步骤只能称为测试设计不能写成“测试已通过”。总结数据转换测试的关键不在于用例数量而在于输入范围有依据、预期结果可解释、失败证据能复现。先把转换逻辑的边界理清再逐项增加输入类别最后把实际结果和环境一起记录下来。本篇没有附带可运行工程或实测数据发布前应补上自己的 DevEco Studio/SDK 版本、测试代码和运行证据不适用的内容就保持明确说明。参考资料华为开发者联盟仪器测试Instrument Test华为开发者联盟HarmonyOS 开发者测试服务入门原始学习笔记065_20261124_HarmonyOS学习笔记_单元测试覆盖数据转换逻辑.md说明本文为个人学习记录与测试设计示例。配图为概念示意不是 DevEco Studio、模拟器或真机实测截图环境版本、执行结果与错误信息需由实际练习补充。返回顶部