第 46 期 - 小程序可测性建设的策略与实践成果
摘要
本文介绍了小程序可测性能力建设的相关内容,包括终端测试的挑战、小程序可测性概念、使用方式、接入方式、实现原理等,并结合美团门票业务讲述了可测性能力的实际应用与成果,还对相关疑问进行了解答。
一、终端测试面临的挑战
- 从测试的本质过程(激励->响应->检查)出发,阐述可测性的概念,如激励可控、响应可观即为可测。
- 在实际业务测试中,如打点测试、用户登录测试等场景对可测性能力有需求。
- 终端测试在完备构造目标场景和观测结果方面比较困难。
- 小程序由于依赖宿主应用环境,除了终端测试的固有难点外,还有特殊影响因素,如无法直接控制宿主应用和手机系统。
- 目前针对小程序的测试工具和策略存在不足,缺乏综合性、易用性的测试工具集。
二、小程序可测性介绍
(一)目标与特点
- 目标是构建全方位通用的小程序可测性能力集合,支持多环境、多平台且易接入。
- 涵盖业务逻辑、应用、系统&设备三个层级的可测性,有特有能力。
(二)使用方式与效果
1. 手工测试
- 以缓存管理和页面跳转功能为例。
- 结合 Lyrebird 使用,Lyrebird 是美团到店研发平台自研的终端测试工作台,有多种能力并提供图形化操作界面。
- 小程序接入可测性能力 SDK 后,可通过扫码与 Lyrebird 建立连接,在 PC 端进行控制和观测。
- 缓存管理:可以验证业务逻辑正确性,如管理缓存信息、查看缓存变更事件信息。
- 页面跳转:能跳转到中间页面,减少测试前置准备工作。
2. 自动化测试
- 结合 Lyrebird 应用于自动化测试,如视觉 DIFF 测试。
- 可通过页面跳转能力直达测试场景,利用可测性录制的数据进行场景状态还原、页面渲染,对比实际运行图和基准图。
- 可测性在健壮性测试、功能测试等多种测试方法中都能发挥重要作用。
(三)接入方式
- 可测性能力 SDK 封装为 NPM 包,在小程序源代码或编译产物项目中引入即可接入,无需额外适配。
- 通过集成适配器实现跨平台运行,支持多个宿主应用,适配器会根据不同平台调整代码。
(四)实现原理
- 核心思路是通过 JavaScript Hook 的方式在小程序 JavaScript Runtime 中对目标模块进行介入,再通过可测性 SDK 与外部建立网络链接。
- JavaScript Hook 介绍:包括函数 Hook、对象属性 Hook、原型链 Hook、Proxy 对象、静态 Hook 等方法。
- 可测性 SDK 大体分为四层:通信层、指令分发层、功能层、Hook 层。
- 以网络请求可观可控为例介绍实现原理,外部传递指令,经过通信层、指令分发层、功能层到 Hook 层,Hook 层拦截 wx.request 方法,修改请求代理状态。
三、美团门票业务小程序测试实践
(一)可测性落地
- 通过门票业务新需求测试例子介绍,需求背景是用户在填单页操作后再次进入保持信息不变。
- 操作路径划分包括进入填单页、选择日期等多个步骤。
- 技术实现通过缓存,测试分析包括从 UI 和数据上进行验证。
- 可测性能力实践落地,通过可观校验“写”的正确性,通过可控校验“读”的正确性。
- 门票业务多种可测性能力在测试活动中有落地应用。
(二)业务实践总结
- 可测性改进使测试覆盖更全面,30%+的测试场景依赖可测性能力构建。
- 有上百个自动化测试用例,页面覆盖率 100%,场景覆盖程度 80%+,辅助发现上百个有效问题。
四、总结与展望
- 美团从 2021 年开始建设小程序可测性,融入到店终端测试工具链和质量保证体系。
- 未来将持续关注基础可测性能力稳定性,聚焦更多业务特性的可测性能力建设。
五、Q & A 解答
- 代理逻辑 Bug 影响不大,有异常监控和兜底策略。
- 可测性 SDK 不需要对业务代码进行改造。
- Lyrebird 与小程序可测性是独立项目,可通过连接使用可测性能力。
- 不需要做适配即可接入可测性能力。
- 可测性 SDK 对性能有一定影响但可接受,生产环境不引入。
- 小程序可测性在特定场景下适用性受限,如宿主应用自身可测性需求和后端服务链路验证场景。
扩展阅读
Made by 捣鼓键盘的小麦 / © 2025 Front Talk 版权所有