小程序测试方案
一、小程序误区
1.小程序是Html5
小程序是微信全新定义的规范,是基于xml+js的,不支持也不兼容HTML,兼容受限的部分css写法,自成体系,过去web上的第三方工具、框架生态完全没用
2.小程序是新的App Store
小程序确实是按OS标准打造的,开发语言、IDE都是自成体系的,并且是封闭生态,并且类似iOS生态,需要交年费
3.小程序是b/s的
小程序并不是b/s的在线页面,它是c/s架构的。在wxml里面,通过wx.request(类似ajax)或socket连接服务器
4.小程序与X5内核相关
小程序和腾讯X5内核没有关系。X5是QQ浏览器团队的,是基于HTML的,但是小程序是微信团队自研的
5.把M站改改就能接入小程序里
一个基于HTML、b/s架构的M站,跟小程序没有关系,小程序是相当于重新做了个APP,从开发、设计、测试、运维升级都是单独一套
6.小程序体验不好
过去体验主要是指进入应用后的体验流畅度,但是随着硬件和网络的发展,这块用户感受不到,相反小程序无须安装,触手可及,用完即走,无须卸载
二、小程序授权登录流程
授权流程:见微信小程序官网wiki说明
开发者角度:见微信小程序官网wiki说明
大致步骤:
1.小程序调用“获取登录凭证”接口,获取由微信返回的 code 。
2.小程序端将 code 传送给开发者服务端,由服务端将获取的 code 以及 AppID 和 AppSecret ,发送给微信服务端。
3.开发者服务端获取微信服务端返回的 OpenID 和会话密钥等信息。
几个名词解释:
Code: 用户登录凭证(每次都会改变,有有效期)
wx_id: 微信用户的全局唯一识别码
AppID:小程序的唯一识别码
OpenID:每个用户针对每个公众号或小程序等应用会产生一个安全的OpenID,便于用户下次登录时辨识其身份
UnionId: 也是用户的标识符,同一个微信用户,登录同一个开发主体下的多个小程序或公众号的时候,分配的UnionId是一样的
三、小程序架构(了解)
1.一个view模块对应一个webview组件,小程序支持多个view存在
2.当我们对 view 层进行事件操作后,会通过 WeixinJSBridge 将数据传递到 Native 系统层。Native 系统层决定是否要用 native 处理,然后丢给 逻辑层进行用户的逻辑代码处理。逻辑层处理完毕后会将数据通过 WeixinJSBridge 返给 View 层,View 渲染更新视图
小程序页面包含:
1、小程序页面(WXML+WXSS)
2、M页页面(H5移动网页)
3、toast信息(过一段时间会自动消失的信息,比如登录成功的提示信息,1、2秒后自动消失)
4、弹窗
四、测试方案
4.1 测试准备
小程序的三个版本:
开发版、体验版:无需审核,管理员给予权限即可通过二维码访问;
开发版小程序的二维码有效期比较短,给微信号授权即可访问
正式版:需要通过微信审核通过后才可以发布使用
4.2 测试方案
4.2.1 功能测试
进入小程序的几种常用方式:
主要分为两个: 二维码,超链接
长按小程序的二维码识别进入
发现tab页小程序的历史列表
朋友分享转发 (测试需要看的)
公众号文章推送
附近的小程序
用户扫描二维码
搜索(正式版)
微信tab下拉(正式版)
别的小程序植入
权限测试
未授权微信登录小程序:
1)未授权时,使用一些业务功能的时候,都会弹出提醒‘先授权再操作对应功能’;
2)在提交数据到后台的时候,会提示补充相关身份信息才能提交。
3)拒绝授权或者授权失败后,页面处理方式
4)过期重新授权
已授权微信登录小程序:
1)授权微信访问小程序,意味着自己的微信账号可被小程序管理方获取;
2)自动以微信的身份行使业务操作权限,比如咨询、支付、数据查询等 。
同一微信号在不同手机端登录授权查看数据权限所能查看的数据和操作的权限都应该是同步一致的
取消小程序授权:
小程序/微信 自有功能测试:
添加到桌面(android,添加到桌面后卸载微信)
从我的小程序中移除,重新添加(涉及到授权)
转发、分享(信息查看权限)
覆盖更新(需要注意更新版本时,用户是否需要删除小程序才会有效果)
小程序与微信客户端联系:1.入口 2.交易(卡包,钱包)
页面层级跳转默认不能超过10次
常规业务功能测试,UI测试
4.2.2 兼容测试
大概从 机型、操作系统、分辨率、微信版本、数据等几发面去考虑
操作系统兼容性:因为Android和iOS系统上小程序的JavaScript脚本执行的环境不同,所以存在操作系统兼容性官方文档中说明,在开发工具上,小程序的js代码是运行在nwjs中,在iOS上是运行在JavaScriptCore中,在Android上是通过X5JSCore来解析的
机型、分辨率和系统版本:小程序部分api依赖于系统底层实现,以及JavaScript标准库也与系统版本强关联,所以尤其是安卓设备,在兼容性方面尤其要注意
微信兼容性: 微信版本的兼容性主要体现在小程序api库的版本上;(新旧版本问题)
缓存数据兼容性:由于小程序在使用过程中可能会缓存部分数据,在新版本中,数据可能会被重新使用。如果存在数据不兼容,会出现非预期行为。
1)微信小程序缓存的数据是否和服务器端一致
2)切换相似的页面,看是否缓存的数据会产生混乱,比如居家和餐厨两个分类,切换分类的时候,会不会因为缓存导致具体信息不发生变化。
3)不同的微信号在同一手机上进行切换操作后,查看数据显示是否正常
发布兼容性:最新微信客户端中小程序基础库发布有个灰度过程,一般为12个小时,API新老版本兼容
兼容性标准制定以后,主要通过以下3种方式进行兼容性测试:
Top10机型和微信客户端组合手工兼容(通过长按删除微信小程序清理缓存方式,进行新安装及覆盖安装的数据兼容性测试)
开发版本可以通过微信开发者工具提交远程真机随机测试(4-8台远程真机,免费,1天只能提交一次,追求最大覆盖页面算法)
外部兼容测试服务
4.2.3 性能测试
小程序客户端的性能和网页的性能测试非常类似,性能指标也大致相同。
比如页面的白屏时间,首屏时间,资源占用,页面渲染时间等等。
小程序的开发工具提供了手动查看性能的窗口,只要在小程序开发版中打开性能窗口即可查看性能数据