小程序测试系列——基础篇

一、小程序特性
(https://developers.weixin.qq.com/miniprogram/dev/framework/)

  1. 小程序发布审核
    1)发布前:申请外网域名 ->设置好域名(微信开发者工具 - 项目 - 设置服务器域名)
    2)提交代码审核:上传代码 ->提交版本审核(微信公众平台 - 登录小程序管理后台 - 开发管理 - 提交版本审核)
    3)审核结果:通过 - 发布;审核未通过 - 修改 - 再提交审核
    4)第一次审核时长,3d左右。优先上线后端。

  2. 小程序的限制
    a. 页面层级跳转<10层
    b. 用户本地缓存<10M
    c. 小程序代码包<3M
    d. 小程序须微信审核通过才可发版
    e. 提交审核前,须申请外网域名(微信域名除外)

  3. 层级问题
    a. 小程序原生页面存在10层限制,超过10层时无法打开页面。页面流程和访问形成闭环时,容易陷入10层问题
    b. 层级策略,可以解决层级限制的问题
    c. 层级策略,将页面路径存储到storage,返回页面刷新拉取存储的页面路径。目前只支持保存页面路径,不支持保存表单数据。

  4. 服务通知
    a. 模板消息:基于微信的通知渠道,为开发者提供了可高效触达用户的模板消息能力,以便实现服务的闭环并提供更佳的体验。
    b. 模板推送位置:服务通知。
    c. 模板下发条件:用户在微信体系内与页面有交互行为后触发。
    d. 模板跳转能力:点击查看详情,仅能跳转下发模板的该账户的各个页面。
    e. 小程序给用户推送服务通知,依赖用户的formId

  5. 基础库版本
    a. 小程序能力依赖于微信客户端支撑,每一个基础库只能在对应的客户端版本上运行,高版本的基础库对应的api不支持低版本,所以需要做兼容。
    b. 由于微信版本与基础版本非一一对应关系,且小程序api是基于各个基础库版本进行发布的,所以测试过程需要提前获知当前基础库版本号。
    c. 目前可在zeye后台查看基于转转用户使用的基础库、微信版本、手机型号覆盖率等数据。
    d. 也可通过日志方式获取到版本号,小程序体验版本 - 调试日志 - system-All中可以看到手机型号、微信版本号、微信基础库版本号。

  1. 开发版本、体验版本、线上版本
    a. 小程序有开发版本、体验版本、线上版本,开发后端逻辑功能可选择以上3个版本任意一个测试,开发前端功能需要在开发版本和体验版本上测试。
    b. 三个版本区别:
  • 权限层:前两者需要申请开发者、体验者权限方可使用,后者面向所有用户。
  • 性能层:开发版本和体验版本自带vconsole性能面板,线上无此功能。
  • 代码层:开发人可在多个开发版本上开发互不影响;体验版当前只有一份代码处于审核中,审核通过后可发布上线;线上版本是所有用户使用的版本,该版本代码在新版本代码发布后覆盖更新。
  • 包大小:开发版本不限制大小;体验版本和线上版本限制大小。
  • 二维码:体验版本保持不变,开发版本30min后失效需重新生成。
  1. 缓存机制

a. 为了保证小程序的快速访问和用户体验,微信会缓存小程序,包括小程序文件、授权数据、登录数据等。
b. 小程序经常碰到缓存问题,如切换环境、cookie、发版、登录等,清除缓存的方式是删除小程序重新进入即可。

  • 同一手机,不同小程序应用,至少在逻辑存储上肯定不是共享缓存,满足应用级别隔离。
  • 同一手机,同一个小程序,不同微信用户扫码使用,经测试,也不共享缓存,目前测试条件下,是用户级别隔离。
  • 同一手机,同一个小程序,同一微信用户两次扫码使用,经测试,是共享缓存。
  • 同一手机,同一个小程序,不同微信用户切换使用(分别扫码两次),经测试,同一个用户共享缓存,不同用户间不共享缓存。
    c. 海报页,可生成定制的海报页,用于分享朋友圈。任何版本生成的海报页,扫码都是跳转正式版本的落地页,可借助【小程序码测试工具】跳转相应页面。二维码数据和图片为动态生成过程,不像固定图片的可以预加载。
  1. 微信openId与unionId的区别
    a. 同一公司的多个公众号之间账户互通,微信开放平台提供了unionId机制。
    b. 通过获取用户基本信息接口,开发者通过openId获取用户基本信息,而如果开发者拥有多个公众号,可通过unionId在多公众号之间进行用户帐号互通。
    c. 在不同的公众账号下OpenID是不一样的,而他们的UnionID却是一样的。
    d. UnionId和uid是对应关系;OpenId和sourceId是对应关系.

二、小程序测试

  1. 测前准备
  • 微信版本号需在6.3.27及以上,低于提示升级。
  • qa需申请对应小程序体验者权限&开发者权限。
  • 小程序开发版、体验版、正式版。
  • 小程序AppID,项目地址&名字。
  • 明确小程序本次测试入口&版本。
  • 微信公众号平台发布的【小程序开发助手】, 可方便快捷的预览和体验线上版本,体验版本以及开发版本。
  1. 测试点
  • 授权:目前已实现静默授权,即用户首次访问小程序,主动获取微信授权,通过获取openid,生成转转uid,并存储昵称、头像等信息。后续用户若杀掉小程序重新进入,无需重新授权。
  • 功能:与端内正常测试功能无异;
  • 缓存:功能需求后,此时就需要关注缓存情况:

1)微信给每个小程序提供了10MB的本地缓存。
2)页面切换时,可能会将上一个页面的数据带到下一个页面展示,例如【主程序-红包需求】点击“未使用”先显示正确文案—》点击“已使用”或“已过期”—》点击“未使用”,文案却展示“已使用”和“未使用”的文案。此时可以给开发人员提bug,通过代码解决页面缓存问题;
3)对于账号切换、版本发布等带来的缓存,目前解决方法是简单粗暴的将小程序删掉,重新进入生效。
4)还可从代码层面解决缓存问题:1.清除当前存储到storage里的内容,如cookie信息,主要调用wx.clearStorageSync();2.从基础库1.9.90开始,小程序支持自动更新上线代码,接口为wx.getUpdateManager()。

  • 性能

  • 分享功能测试
    1)分享到好友列表&生成海报页分享到朋友圈;
    2)用线上/测试/开发版分享给好友,落地页就是相应的线上/测试/开发版;
    3)朋友圈识别跳转都是线上版;所以在测试过程中若涉及到扫码跳转,就需借助【小程序码测试工具】。

  • 服务通知:

1)以模板ID的形式推送服务通知;
2)微信公众号:需关注公众号&无须收集formId;小程序服务通知:收集formId;
3)formId有效期7d,如果用户没有可用的formId,则无法给用户推送相应消息;
4)通过点击操作单个/批量收集formId,主要存储在wtable,触发行为如支付、提交表单等;详情戳一戳它https://mp.weixin.qq.com/debug/wxadoc/dev/api/notice.html
5)批量收集formId:POST请求,如zzwxpush/addFormIds
6)单个收集formId:GET请求,如zzwxpush/addFormId?formId
7)每个小程序收集的formId,只能用于对应的小程序,也只能用于对应的uid。例如闲置社108批量收集formId,却存储在小程序103,结果导致闲置社批量formId失败,而且小程序存储很多无效可用的formId,主要原因是由于前端传入参数source=103导致。

  • 常出现问题:formId无效(命中小程序自身策略)、无可用formId(需收集)。

  • 层级:

1)M页、toast、弹窗等不受限于层级问题;
2)小程序原生页面超过10层后不能再打开新页面,正常业务流程或闭环容易造成10层问题,例如个人中心--》商品列表页--》个人中心……
解决方法【层级策略】:将页面链接存储到storage,返回时则刷新拉取存储的页面链接。目前只保存页面路径,不保存页面数据。

  • 兼容:

1)微信版本:小程序的接口完全依赖于微信,因此部分基础库较高的接口可能在低版本的微信上不生效,需做兼容,如:页面内分享是基于1.2.0的基础库开发,因此要求对应微信版本在6.5.8及以上;
2)不同机型:如某页面在华为机型展示没问题,但到小米机型却展示有问题;
3)手机系统:Android和ios两个版本兼容性可能不同;如个人主页中【安卓和ios】评价样式有问题。

  • 埋点:

1)埋点测试大致和端内测试流程一样,关注actiontype&pagetype等参数;

2)小程序统计常需区分用户来源渠道,因此还需关注【backup】中的channel,pagechannel,type等参数。

3)appid:主要存储小程序source参数值。

4)scene:场景值,详情https://mp.weixin.qq.com/debug/wxadoc/dev/framework/app-service/scene.html

5)channel:只对小程序入口页生效,会伴随整个生命周期,直到退出小程序。如果没有明确的参数值,则默认为none。

6)pagechannel:针对页面url参数,只带到落地页,不会带到后续页面。如果没有明确的参数值,则默认为none。

7)type:目前用在详情页,主要用于区分此商品是个人mine/圈子group/他人normal。

8)根据pm需求还可以增加相应渠道参数。

  • 内嵌M页:

1)1.6.4版本开始陆续支持小程序内嵌M页。

2)M页不受限于小程序的层级页面,如【游戏M页】点击首页—》游戏频道为1层页面,而不是2层页面。

[图片上传失败...(image-febfb1-1570778913435)]

3)测试M页需做相应的适配,以在小程序能够正常使用,如登陆等。若M页嵌入native页面,则还需要额外做native页面交互的适配。如【游戏—我的拼团】没做适配,则提示此错误。

[图片上传失败...(image-2bde00-1570778913435)]

4)M测重点关注页面跳转功能,展示等问题。

  1. 测试坑点 小程序测试过程中经常碰到的坑,重点需关注:
  • 层级页面跳转
  • 兼容性
  • 缓存

三、 常见问题定位&解决

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

  1. 线下测公众号消息报“未关注公众号”
  • 原因:由于微信公众号对于我们而言只有线上,并无所谓线下一套的说法,从而导致在线下测公众号消息的时候会打出“未关注公众号”日志,从而测不通。
  • 解决:将线上相应用户的unionid和openid复制黏贴到线下用户中,步骤如下。
  • 线上uid查询线上user库user_auth表获取用户source=26的unionid和openid;
  • 在线下uid的user库user_auth表添加上述source=26的记录。
  • 同时线下push库wechat_user_map表添加相应的unionid和openid,此时测试公众号就能通了。
  • 若出现openid hint/unionid hint等错误,则说明同步的openid/unionid有问题,需要重新线上确认同步到线下。
  1. 报错“用户未授权”
  • 原因:在线下测试时,由于操作不规范,经常会出现“用户未授权”的情况。如下错误展示,查询dbwww58com_user库 user_auth表,发现不存在对应小程序端的uid,即日志source=103,但库source=108 ,两个source对不上。
  • 解决:将user_auth同步线上source=103即可。
  • formid错误汇总
  • 测微信服务通知时,经常出现formid以下错误提示。
  • formid过期(有效期7d)&收集格式错误导致(格式为时间戳/字母+数字组成的32位)。
  • 当前用户没有formid导致。
  • formid已使用导致,主要是同一时间可能多个用户收集formid,从而形成的formid可能一样。
  • 明确每个小程序收集的formId,只能用于对应的小程序,也只能用于对应的uid。
  • 目前发服务通知时,为防止用户下发失败,会重复调用formId接口3次,若3次下发都失败,则以公众号的形式下发服务通知(目前下发成功率达到98%)。
  1. 消息模板跳转链接错误
  • 出现这种错误,首先需要确认url是否解析成小程序可跳转的链接;若已解析,则是小程序这个页面还没上线导致微信检索不到此链接导致。
  • page路径配置错误,重配即可。

转自:https://testerhome.com/topics/16299

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,233评论 6 495
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,357评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,831评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,313评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,417评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,470评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,482评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,265评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,708评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,997评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,176评论 1 342
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,827评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,503评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,150评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,391评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,034评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,063评论 2 352

推荐阅读更多精彩内容

  • 2017年1月9号微信小程序正式上线,小程序无须安装就能使用,依托微信强大的生态环境,能做到很多H5所不能做的事情...
    ChivalryJerry阅读 1,119评论 0 5
  • 有一段时间,一直想尝试着学习失忆,比如昨日种种,那些可以归属与辨别的往事,那曾经在生命里出现过的名字,那荒凉的山,...
    王芊骅阅读 286评论 4 10
  • 越长大越不愿跟人交际,甚至跟家人相处,沉默的时候也越来越多。 偶然一天妈妈突然问我,你年纪轻轻的,有什么压力?有什...
    我爱吃鱼吃火锅阅读 153评论 0 0
  • iOS空项目地址:https://github.com/11dd/gitTestProjectOne 使用coco...
    ZIM东东阅读 441评论 0 0