作者 | 谢水宁


2017年1月9号微信小程序正式上线,小程序无须安装就能使用,依托微信强大的生态环境,能做到很多 H5 所不能做的事情。目前公司已有小程序主要有 11 个。
但对于小程序如何做测试,依然没有一个相应完整的操作文档。这里将从四个方面简单介绍如何对小程序进行测试。

小程序相关介绍

在测试前,先简单理解下小程序特性。

  1. 小程序发布审核
    1. 发布前需申请外网域名,并在微信 web 开发者工具里找到项目,设置好服务器的域名。
    2. 开发完上传代码后,在微信公众平台—》登录小程序管理后台—》点击开发管理—》点击提交版本审核即可。
    3. 审核通过后会有相应提示,接着把审核通过的小程序发布线上;若未审核通过可做相应修改继续提审。
    4. 第一次提交小程序审核时,需先上线后端,一般第一次审核时间比较久(3d 左右)。
  2. 小程序的限制
    1. 页面层级跳转不能超过 10 层。
    2. 用户本地缓存不能超过 10MB。
    3. 小程序代码包不能超过 3M,所以部分图片资源需上传 CDN。
    4. 小程序发布需提交微信审核通过才可发版。
    5. 提交审核前,外网域名需申请(除微信域名之外)。
  3. 层级问题
    1. 小程序原生页面存在 10 层限制问题,即超过 10 层时便无法打开新页面,而业务流程或者访问形成闭环时,很容易陷入 10 层问题。
    2. 为避免层级限制导致的无法打开页面和层级限制带来的交互路径限制,内部提出了【层级策略】以解决层级限制问题。
    3. 【层级策略】将页面路径存储到 storage,返回时则刷新拉取存储的页面路径,目前只保存页面路径,不保存表单等数据。具体解决方案见文档 “层级策略.txt”。
  4. 服务通知
    1. 基于微信的通知渠道,为开发者提供了可以高效触达用户的模板消息能力,以便实现服务的闭环并提供更佳的体验。
    2. 模板推送位置:服务通知。模板下发条件:用户本人在微信体系内与页面有交互行为后触发。模板跳转能力:点击查看详情仅能跳转下发模板的该帐号的各个页面。
    3. 小程序给用户推送服务通知,依赖用户的 formId。
    4. 更多服务通知详情戳一戳https://mp.weixin.qq.com/debug/wxadoc/dev/api/notice.html
  5. 基础库版本
    1. 小程序的能力需要微信客户端来支撑,每一个基础库都只能在对应的客户端版本上运行,高版本的基础库对应的 api 不支持低版本,所以在使用这些新能力的时候需要做兼容。
    2. 由于微信版本和基础库版本不是一一对应关系,且小程序 api 是基于各个基础库版本进行发布的,所以在测试过程中需要提前获悉当前基础库版本号。
    3. 目前可在 zeye 后台查看基于转转用户使用的基础库、微信版本、手机型号覆盖率等数据。
    4. 目前我们主要通过日志的方式自动获取到版本号,可通过两种途径拿到:1.体验版进入首页时通过 console 查到;2.通过我的功能页面拿到。
    5. 更多可查看此https://mp.weixin.qq.com/debug/wxadoc/dev/framework/client-lib.html
  6. 开发版、体验版、线上版
    1. 小程序并不像服务端那样区别线上和线下版本,而是有开发版、体验版、线上版。
    2. 如果只是开发后端逻辑功能,可在三个版本中任意一个进行测试;如果是开发前端功能则需在相应的开发版/测试版进行测试。
    3. 三者具体区别如下:
      • 权限层:前两者需申请开发者和体验者权限才可使用,后者则面向所有用户。
      • 性能层:开发版和体验版自身带有 vConsole 性能面板(回归需关闭此功能),而线上版则木有。
      • 代码层:开发人员可同时在多个开发版上开发互不影响;体验版当前只能有一份代码处于审核中,审核通过后可发布上线,也可直接重新提交审核,覆盖原审核版本;线上版本则为所有用户使用的代码版本,该版本代码在新版本代码发布后被覆盖更新。
    4. 包大小:开发版本不限制包大小;体验者&正式版则限制包大小。
    5. 二维码:体验版保持不变,开发版 30min 后失效需重新生成。
  7. 缓存机制
    1. 为了保证小程序的快速访问和用户体验,微信会缓存小程序,包括小程序文件、授权数据、登录数据等。
    2. 使用小程序常碰到缓存问题,例如切换环境(线上线下互切)、cookie、发版、登陆等,简单粗暴的方法就是将小程序删掉重新进入即可。更多缓存可查看https://mp.weixin.qq.com/debug/wxadoc/dev/api/data.html
    3. 小程序启动机制主要为 “冷启动”&“热启动”,如下。
      • 同一手机,不同小程序应用,至少在逻辑存储上肯定不是共享缓存,满足应用级别隔离。
      • 同一手机,同一个小程序,不同微信用户扫码使用,经测试,也不共享缓存,目前测试条件下,是用户级别隔离。
      • 同一手机,同一个小程序,同一微信用户两次扫码使用,经测试,是共享缓存。
      • 同一手机,同一个小程序,不同微信用户切换使用(分别扫码两次),经测试,同一个用户共享缓存,不同用户间不共享缓存。
    4. 海报页
      1. 可生成定制的海报页,用于分享朋友圈。
      2. 任何版本生成的海报页,扫码都跳转到正式版落地页,可借助【小程序码测试工具】跳转相应页面。
      3. 二维码数据和图片为动态生成过程,不像那种固定图片的可以预加载。
  8. 微信 openId 和 UnionID 区别
    1. 同一公司下多个公众号之间需要用户帐号互通,微信开放平台提供了 UnionID 机制。
    2. 通过获取用户基本信息接口,开发者可通过 OpenID 来获取用户基本信息,而如果开发者拥有多个公众号,可通过 UnionID 在多公众号之间进行用户帐号互通。
    3. 在不同的公众账号下 OpenID 是不一样的,而他们的 UnionID 却是一样的。
    4. UnionId 和 uid 是对应关系;OpenId 和 sourceId 是对应关系。

小程序测试工作

  1. 前期准备
  2. 测试点
  3. 测试坑点 小程序测试过程中经常碰到的坑,重点需关注:

常见问题定位&解决

测试微信侧消息时,由于线上访问和线下访问的账号是不通的,所以需要把线上数据写到线下,比如线上 uid=1 线下 uid=2,需要把线上 uid=1 的信息,同步到线下 uid=2 的记录中,才能访问成功。

工具篇

为了方便小程序测试,已开发了入口构造工具&小程序码测试工具。


↙↙↙阅读原文可查看相关链接,并与作者交流