专栏名称: 美团技术团队
10000+工程师,如何支撑中国领先的生活服务电子商务平台?数亿消费者、数百万商户、2000多个行业、几千亿交易额背后是哪些技术在支撑?这里是美团、大众点评、美团外卖、美团配送、美团优选等技术团队的对外窗口。
目录
相关文章推荐
51好读  ›  专栏  ›  美团技术团队

小程序可测性能力建设与实践

美团技术团队  · 公众号  · 架构  · 2024-06-27 19:58

正文

请到「今天看啥」查看全文


在实际的手工以及自动化测试工作中,小程序可测性能力能够很方便的使用,并在多个场景下发挥了重要的作用。

2.1.1 手工测试

下面将以缓存管理、页面跳转功能为例介绍小程序在手工测试中的使用方式以及效果。

在实际的测试工作中,会结合Lyrebird使用小程序可测性, Lyrebird 是美团到店研发平台自研的终端测试工作台,包含终端状态数据管理、网络请求代理与Mock、缺陷记录、自定义插件扩展等能力。同时它还提供了图形化操作界面,是手工与自动化测试中使用可测性能力的入口。

在小程序接入可测性能力SDK之后,可以通过可测性SDK提供的扫码功能与Lyrebird建立连接,后续就可以通过Lyrebird在PC端利用可测性对小程序进行控制以及观测。

缓存管理

我们可以通过缓存管理功能验证依赖缓存的业务逻辑正确性,如表单信息\用户信息暂存到缓存功能等。

  • 如下图所示,1处为缓存编辑框,展示当前选择设备上的小程序所有的缓存信息,并对这些缓存进行管理,支持批量的增删改。
  • 2处展示目标小程序的缓存变更事件信息,包括在该页面对缓存的编辑以及小程序自身内部对缓存的增删改操作事件,会随着事件的触发实时更新。

页面跳转

页面跳转是小程序业务测试中重度使用的能力,可以利用该功能跳转到如表单页,商品详情页等中间页面,不再需要从首页一步一步操作进入目标被测页面,减少测试前置准备工作,具体可以在该Lyrebird页面中输入页面路径进行跳转。

2.1.2 自动化测试

将可测性能力结合Lyrebird应用于自动化测试。如通过页面跳转能力直达测试场景,然后利用通过可测性录制的页面状态数据进行场景状态还原后进行页面渲染,获取页面上的数据/布局展示,最后将实际运行图和预先设置好的页面基准图进行对比,提供渲染的差异结果,进行视觉DIFF测试。

这类“视觉测试”以页面为单位,通过深度链接跳转技术配合一系列终端应用本身的可测性改造,直达测试场景,并通过图像处理技术如长图融合、图像增量对比和文本识别能力进行视觉DIFF测试。

可测性建设的是对应用内部状态的可观可控能力,对于任何测试方法,只要涉及应用内部,可测性都能发挥重要作用。 比如在健壮性测试中通过可测性构造破坏性异常场景,或者在功能测试中模拟小程序不同的进入方式( 如二维码、视频号、搜索等 )来测试所有可能的使用场景下小程序的运行情况。

| 2.2 接入方式

小程序可测性能力SDK被封装为一个NPM包,在小程序源代码或者编译产物项目中引入此NPM包,便可实现可测性能力的接入,无需进行额外适配工作。

跨平台运行

除了对微信小程序的支持之外,小程序可测性能力SDK通过集成一个适配器( Adapter )将能力扩展到多宿主应用,包括美团、支付宝、快手、百度等平台的支持。这些平台的基础库API与微信类似,适配器会根据不同平台的特点,对代码进行相应的调整,包括基础库API、前端语法或文件类型等,以保证在各个平台上的兼容性和一致性,实现跨平台运行。

| 2.3 实现原理

小程序可测性实现的核心思路是通过JavaScript Hook的方式,在小程序JavaScript Runtime中对如微信小程序JS基础库、业务公共基础组件等目标模块进行透明化介入,实现对其内部的可观可控。在此之后,通过可测性SDK内的中控与外部建立网络链接,从而实现在远端对小程序内部状态与功能的可观可控。

JavaScript Hook介绍

JavaScript Hook基于JavaScript的动态特性,有以下方法:

函数Hook :直接覆盖或修改原函数:







请到「今天看啥」查看全文