小程序测试及一些限制
1. 功能测试
输入;输出;边界值;页面交互; 特殊/极端情况
2. 兼容性测试
2.1. 操作系统
IOS:运行代码是在JavaScriptCore
Android:X5内核
2.2. 微信版本
小程序的api库;当前微信版本发布的项目;升级微信后测项目
2.3. 手机型号
华为、iphone、小米、iPad
3.安全测试
接口测试==传递数据的安全;须通过微信再攻击小程序
4.与微信的功能交互
4.1. 入口
- 手机桌面(暂只支持android)、窗口顶部最近使用、微信搜索、发现-小程序(附近的小程序、使用列表、小程序搜索)
- 线下扫码、长按识别(二维码、小程序码)、小程序中识别小程序码
- 公众号文章进入、公众号关联推送、聊天窗口、星标小程序、支付完成进入
- 聊天进入、群聊分享、聊天记录、朋友圈
- qq浏览器
4.2. 交易
微信钱包;微信卡包
5.其他
5.1. 权限测试
同一账号在不同手机端登录; 已授权-允许访问;未授权-不允许访问
5.2. 缓存
清理缓存时:是否会有强制退出、后台清理、关机等情况
5.3. 网络测试
网络状态:要覆盖到wifi\2g\3g,net\wap,电信\移动\联通,所有组合进行测试
环境的切换
断网
6.性能测试
- 页面的响应时间:服务器端;
- 渲染时间:白屏时间;首屏时间
- 资源占用
7.易用性
7.1. 导航
- 定位到页面某个模块所在位置
- 回到顶部、底部
- 导航条的收展
- 导航标签的文字是否容易理解
7.2. 功能入口
- 重要及常用业务的功能入口是否在比较显眼的位置
- 业务操作过程是否便于大多数用户使用及查看
7.3. 上下层级进入&返回
- 首页-列表页;列表页-详细页;首页-详细页
- 不同层级之间的进入和放回实现是否有相应按键易操作
8.限制
小程序本身被设计为处理简单逻辑的「工具型」应用;同时具有很强的内容封闭性。
不支持HTML、没有 Dom。网页用的 JS、CSS 基本要全部重写,WXML 的语法和 HTML 差异还挺大,基本是一个个照着手册的属性去改。CSS 选择器不支持级联。
8.1. 版本
- 分三个版本:开发版、体验版、正式版
- 开发版、体验版:只能扫微信开发者工具生成的二维码进入。
- 微信小程序正式环境必须走https,测试环境没有那么多要求。测试的时候正式版审核通过后还得跑一遍流程
8.2. 推送消息
- 微信小程序是支持消息推送的,但是推送有个限制。
- 只有form表单开启report-submit,用户点击提交这样表单的时候才可以获得一个formid,推送时需要使用这个formid进行推送。是AccessToken认证两大问题。
- 所以小程序消息推送需要解决formid的存储,小程序内部接口调用
- 用户在7天之内没访问过小程序,没触发过表单,就收集不到用户的有效权限,就没法给用户发任何消息。
- 只要在7天之内访问过小程序,通过一些转换是可以获取到用户的提交表单行为
8.3. 服务范围
不应超出小程序平台的类目库;如:游戏、直播、虚拟物品购买功能
8.4. 大小
- 源码打包后的大小限制为1M:超大传不上去
- 单次通过网络传输的数据也是1M:wx.request
- 单次网络请求的数据量限制也决定了热更新只能采取小碎步快跑的方式
8.5. 单页的分享
- 小程序由于没有包含WebView控件,开发者无法在小程序内部打开一个网页
- 所有的网络通信只能在客户端与预设域名之间进行
- 任何一个小程序的页面都无法以一个标准的资源标识符(比如URL)代表,所以无法分享
8.6. 普通网页
不支持 A 标签,无法打开普通网页: 需要添加白名单
8.7. 富文本
- 小程序没有 webview 控件,自带的 view 和 text 又不支持图文混排
- 不能动态 set WXML
- 小程序上的富文本也就只能做到固定焦点图+纯文本+emoji了
8.8. 页面层级
- MINA 框架实现的 tab bar,最多5个 tab
- 通过 wx. navigateTo 推入后台的页面最多5层
- 超过会无法打开新页面
8.9. 请求限制
- 默认超时时间和最大超时时间都是60s
- request、uploadfile、downloadfile的最大并发限制是10个
- 网络请求的referer header不可设置
格式固定为:https://servicewechat.com/{appid}{version}/page-frame.html
{appid}为小程序的appid
{version},0表示开发版体验版以及审核版本
{version}为devtools,表示开发者工具
其余为正式版本
- 小程序进入后台运行后(非置顶聊天),如果5s内网络请求没有结束,会回调错误信息fail interrupted;再回到前台之前,网络请求接口调用都会无法调用
- 返回值编码
8.10. 服务器返回
建议服务器返回值使用UTF-8编码
对于非UTF-8编码,小程序会尝试进行转换,但有转换失败的可能
小程序会自动对BOM头进行过滤
- 回调
只要成功接收到服务器返回,无论statusCode是多少,都会进入success回调
开发应根据业务逻辑对返回值进行判断