缺少微信小程序测试经验?这篇文章带你从0开始

news2024/11/24 10:28:59

微信小程序已经越来越普遍,但目前接触小程序的项目相对较少,对小程序的特性也不了解,缺少小程序测试实战经验。

本文主要通过对微信小程序特性和测试点进行总结,储备测试知识,提高测试效率。

小程序发布审核

发布前需申请外网域名,并在微信web开发者工具里找到项目,设置好服务器的域名。

开发完上传代码后,在微信公众平台—》登录小程序管理后台—》点击开发管理—》点击提交版本审核即可。

审核通过后会有相应提示,接着把审核通过的小程序发布线上。若未审核通过可做相应修改继续提审。

第一次提交小程序审核时,需先上线后端,一般第一次审核时间比较久(3天左右)。

在这里插入图片描述

小程序的限制

页面层级跳转:不能超过10层。

用户本地缓存:不能超过10MB。

小程序代码包:不能超过3M,所以部分图片资源需上传CDN。

小程序发布:需提交微信审核通过才可发版。

提交审核前,外网域名需申请(除微信域名之外)。

层级问题

小程序原生页面存在10层限制问题,即超过10层时便无法打开新页面,而业务流程或者访问形成闭环时,很容易陷入10层问题。

为避免层级限制导致的无法打开页面和层级限制带来的交互路径限制,内部提出了【层级策略】以解决层级限制问题。

【层级策略】将页面路径存储到storage,返回时则刷新拉取存储的页面路径,目前只保存页面路径,不保存表单等数据。

基础库版本

小程序的能力需要微信客户端来支撑,每一个基础库都只能在对应的客户端版本上运行,高版本的基础库对应的api不支持低版本,所以在使用这些新能力的时候需要做兼容。

由于微信版本和基础库版本不是一一对应关系,且小程序api是基于各个基础库版本进行发布的,所以在测试过程中需要提前获悉当前基础库版本号。

目前我们主要通过日志的方式自动获取到版本号,可通过两种途径拿到:

  • 体验版进入首页时通过console查到;
  • 通过我的功能页面拿到。

微信官方基础库版本查看:

在这里插入图片描述

小程序版本管理

小程序并不像服务端那样区别线上和线下版本,而是有开发版、体验版、线上版。

如果只是开发后端逻辑功能,可在三个版本中任意一个进行测试,如果是开发前端功能则需在相应的开发版/体验版进行测试。

三者具体区别如下:
权限层:前两者需申请开发者和体验者权限才可使用,后者则面向所有用户。

性能层:开发版和体验版自身带有vConsole性能面板(回归需关闭此功能),而线上版则没有。

代码层:开发人员可同时在多个开发版上开发互不影响,体验版当前只能有一份代码处于审核中,审核通过后可发布上线,也可直接重新提交审核,覆盖原审核版本。线上版本则为所有用户使用的代码版本,该版本代码在新版本代码发布后被覆盖更新。

包大小:
开发版本不限制包大小;

体验者&正式版则限制包大小。

二维码:体验版保持不变,开发版30min后失效需重新生成。

案例实操

前期准备

微信版本号需在6.3.27及以上,低于提示升级。

QA需申请对应小程序体验者权限&开发者权限。

小程序开发版、体验版、正式版;小程序AppID,项目地址&名字;明确小程序本次测试入口&版本。

微信公众号平台发布的【小程序开发助手】, 可方便快捷的预览和体验线上版本,体验版本以及开发版本。

测试点

授权:目前已实现静默授权,即用户首次访问小程序,主动获取微信授权,通过获取openid,生成转转uid,并存储昵称、头像等信息。后续用户若杀掉小程序重新进入,无需重新授权。

功能:与端内正常测试功能无异。

缓存:功能需求后,此时就需要关注缓存情况(微信给每个小程序提供了10MB的本地缓存)。页面切换时,可能会将上一个页面的数据带到下一个页面展示。对于账号切换、版本发布等带来的缓存,目前解决方法是简单粗暴地将小程序删掉,重新进入生效。

还可从代码层面解决缓存问题:
清除当前存储到storage里的内容,如cookie信息,主要调用wx.clearStorageSync();

从基础库1.9.90开始,小程序支持自动更新上线代码,接口为wx.getUpdateManager()。

性能:开发版和体验版自身带有vConsole性能面板。

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

层级:M页、toast、弹窗等不受限于层级问题;小程序原生页面超过10层后不能再打开新页面,正常业务流程或闭环容易造成10层问题。

埋点 :测试大致和端内测试流程一样,关注actiontype&pagetype等参数;小程序统计常需区分用户来源渠道,因此还需关注【backup】中的channel、pagechannel、type等参数。

具体规则见微信官方文档:

在这里插入图片描述

更新

小程序的启动方式

冷启动——小程序首次打开或销毁后再次被打开。

热启动——小程序打开后,在一段时间内(目前:5分钟)再次被打开,此时会将后台的小程序切换到前台。

相应更新机制

小程序冷启动时,会检查小程序是否有最新版本。如果有则将异步下载最新版本,但是仍将运行当前版本等到下一次冷启动时再运行最新版本。

如果你想现在就使用最新版本则需要调用wx.getUpdateManagerAPI进行处理,具体规则见微信官方文档。

如何测试

开发在编译时设置下一个版本更新模式。

在这里插入图片描述

测试坑点

小程序测试过程中经常碰到的坑,重点需关注:

  • 层级页面跳转
  • 兼容性
  • 缓存

测试工具

主要为开发者测试工具:

在这里插入图片描述

业界参考一般使用Wetest,可以去官方网站查看文档参考与示例。

测试常见问题总结

缓存

图片

更新机制

现在就使用最新版本则需要调用wx.getUpdateManager API进行处理。

在这里插入图片描述


资源分享

下方这份完整的软件测试视频学习教程已经上传CSDN官方认证的二维码,朋友们如果需要可以自行免费领取 【保证100%免费】

在这里插入图片描述

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/66475.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux jprobe的使用和原理

文章目录前言一、demo1.1 demo演示1.2 struct jprobe二、jprobe 原理2.1 原理简介1.2 原理详解三、源码解析3.1 struct jprobe3.2 register_jprobe3.3 setjmp_pre_handler3.4 jprobe_return3.5 longjmp_break_handler四、Deprecated Features五、使用 perf-probe 获取函数参数总…

CentOS7一键安装OpenStack

环境 CentOS 7 CPU核心数:2x2 RAM:8G DISK:60G 问题说明 在安装openstack过程中,一直卡在下面过程: Testing if puppet apply is finished: 192.168.100.132_controller.pp [ | ]等待一会儿之后会报各种不同的错误…

crontab 实现秒级定时任务的执行(学习笔记)

crontab 实现秒级定时任务的执行 传统暴力法 crontab -e ***** /usr/bin/curl 地址 ***** sleep 10; /usr/bin/curl 地址 ***** sleep 20; /usr/bin/curl 地址地址 ***** sleep 30; /usr/bin/curl 地址 ***** sleep 40; /usr/bin/curl 地址 ***** sleep 50; /usr/bin/cu…

进程和计划任务管理

查看进程信息 ps ps命令 查看静态的进程统计信息 ps -elf 查看进程信息 top top命令 查看动态的进程排名信息 top 查看进程信息 pgrep pgrep命令 根据特定条件查询进程 PID 信息 pgrep -l “log” pgrep -l -U teacher -t tty1 查看进程信息 pstree pstree命令 以树…

面试害怕考到JVM? 看这一篇就够了~

目录 前言 一、JVM内存划分 二、类加载 2.1、类加载是在干什么? 2.2、类加载的过程 2.3、何时触发类加载? 2.4、双亲委派模型(重点考察) 2.4.1、什么是双亲委派模型? 2.4.2、涉及到的类加载器 2.4.3、详细过…

【树莓派】raspberry pi控制超声波测距

目录一、超声波1、模块介绍2、工作原理二、gettimeofday函数三、树莓派控制超声波测距一、超声波 1、模块介绍 简介:   超声波传感器模块上面通常有两个超声波元器件,一个用于发射,一个用于接收。 硬件: 电路板上有4个引脚: …

测试面试被问“期望薪资多少”,不要傻傻直接报价,高情商都这样说

对于软件测试从业者而言,面试很重要,因为那是拿到薪资报酬丰厚程度的关键,你的理论及实操经验确实都很棒,那就尽量别让自己的面试表现拖自己的后腿,否则大概率会让你的薪水大打折扣。 你在面试中是否也遇到很多次以下…

38寻找二叉树的最近公共祖先39序列化和反序列化

38.寻找二叉树的最近公共祖先 这题和上一题的区别在于这不是二叉搜索树,无法根据值的大小来判断节点的位置,于是需要遍历 法1 递归写法 递归在左右子树寻找o1和o2 import java.util.*;/** public class TreeNode {* int val 0;* TreeNode left …

12月编程语言排行榜公布啦~

2022年迎来了最后一个月,我们可以看到,在这一年中编程语言起起伏伏,有的语言始终炙手可热,而有的语言却逐渐“没落”...... 日前,全球知名TIOBE编程语言社区发布了12月编程语言排行榜,有哪些新变化&#x…

Test Squence测试过程中如何按照特定条件暂停或者停止仿真

在Simulink模型做Test Squence测试时,工程师有时候希望测试用例能按照自己期望的条件来停止或暂停仿真,这个期望的特定条件,可以是时间达到,也可以是任何能达到的特定状态。 具体实现方法如下: 1、在Test Harness测试…

公司 CTO:高性能开发,你不会 Netty,怎么好意思拿 20K?

主管:这个版块用 Netty 框架就可以了呀,不会吗? (此时,公司 CTO 路过) 某程序员:这个我真不会... 主管:好了好了,那这一块我交给别人去做,这个也不难啊&am…

代码随想录刷题记录day36 整数拆分+不同的二叉搜索树

代码随想录刷题记录day36 整数拆分不同的二叉搜索树 参考:代码随想录 343. 整数拆分 思想 一个数可以被拆分成2个数或者3个及以上的数。 dp[i]表示拆分i以后,得到的最大的乘积 拆分成两个数 j和i-j,拆分成三个数及以上 j 和dp[i-j],dp[i…

面试10分钟就完事了,问的实在是太...

干了两年外包,本来想出来正儿八经找个互联网公司上班,没想到算法死在另一家厂子。 自从加入这家外包公司,每天都在加班,钱倒是给的不少,所以也就忍了。没想到11月一纸通知,所有人不许加班,薪资…

【矩阵乘法】C++实现外部矩阵乘法

问题描述 ​ 使用文件和内存模拟系统缓存,并利用矩阵乘法验证实际和理论情况。 算法思想 设计一个Matrix类,其中Matrix是存在磁盘中的一个二进制文件,类通过保存的矩阵属性来读取磁盘。前八个字节为两个int32,保存矩阵的行列数…

Linux||报错:vboxuser is not in the sudoers file. This incident will be reported.

一、问题描述 打算在Ubuntu虚拟机上部署SonarQube时,为避免各种不必要的奇怪问题,预先使用sudo命令修改系统参数。 命令如下:sudo sysctl -w vm.max_map_count262144 报错如下:vboxuser is not in the sudoers file. This inciden…

制造业企业库存管理的现状与解决措施

在竞争激烈的现代经济时代,制造行业面临着巨大的挑战和压力,必须与时俱进,适应市场的各种变化才能生存并保持活力。随着经营模式的变化与产品数量的增加,对产品库存管理也提出更大的挑战。库存管理是指与库存相关的计划和控制活动…

数据库设计 Relational Language

除了最为常用的SQL语句之外,还存在着几种不常用的数据库语言,这里简单介绍,了解即可。 Relational Algebra(RA) 一种程序性语言,可以与SQL对应着转换,语法即转换规则如下: σ:与WHERE对应&am…

一篇文章让你搞懂各种压缩,gzip压缩,nginx的gzip压缩,Minification压缩

前言 同学们可能听过这些压缩,但是可能不是了解,这篇文章让你弄清他们 webpack的gzip压缩和nginx的gzip压缩有什么区别?怎样开启gzip压缩?Minfication压缩又是什么鬼?怎样使项目优化的更好?本篇文章讲的是…

DBCO点击试剂1629057-08-4,DBCO-C3-Maleimide,DBCO-C3-Mal

一、基础产品数据(Basic Product Data): CAS号:1629057-08-4 中文名:二苯基环辛炔-C3-马来酰亚胺、二苯并环辛炔-C3-马来酰亚胺 英文名:DBCO-C3-Maleimide,DBCO-C3-Mal 结构式(Struc…

MAC 通过IDEA启动tomcat,显示80端口被占用解决办法

mac系统下使用IntelliJ IDEA中的Tomcat报错问题:Address localhost:80 is already in use 一、状况描述 本人在跑一个tomcat的项目时,由于项目限制了用域名访问,为了方便本地开发调试,需在tomcat在IDEA中将端口设置为80&#xff…