【目录】
1. 功能测试
1.1 按功能模块测试
1.2 按业务流程测试
1.3 按数据流向测试
1.4 同一功能不同的入口有效性的检查
1.5 交互性检查
2. 兼容性测试
2.1 操作系统兼容性
2.2 屏幕兼容性
2.3 微信兼容性
3. 安全测试(接口测试)
3.1 使用抓包工具Fiddler抓取接口参数
3.2 使用Jmeter测试接口参数
3.1.1 Jmeter请求配置
3.1.2 查看返回结果
4. 功能的交互测试
5. 性能测试
6. 易用性测试
6.1 导航
6.2 功能入口
6.3 上下层级进入和返回
6.4 字体、图片、动态交互效果
7. 网络测试
8. 消息限制测试
9. 权限测试
9.1 未授权微信登录小程序
9.2 已授权微信登录小程序
9.3 同一微信号在不同手机端登录授权查看数据权限
10. 版本配置测试
11. 测试流程
12. 注意事项
12.1 上线
12.1.1 上线配置
12.1.2 审核
12.1.3发布
12.2 常用功能
12.2.1缓存清理
12.2.2 编译
12.3 常用操作键
小程序分为两个主要部分:view模块和service模块。View模块负责UI展示,它由wxml和wxss转换后的代码以及微信提供的辅助模块组成。一个view模块对应一个webview组件,小程序支持多个view存在,view模块通过微信jsbridge对象来跟后台通信。
微信小程序测试分类思维导图:
1.功能测试
功能测试以需求文档和交互视觉文档为准,如果没有这些文档,参考APP的测试方法,也就是说就把它当做手机的APP来测试即可。
输入、输出:用户上传的材料、描述,登录时输入的用户名、密码等;
边界值:黑盒测试,确定测试域,对具体测试点进行等价类划分,确定上点、内点、离点,进行较为全面的测试;
页面交互:页面与页面之间跳转、点击、下拉、翻页等;
1.1 按功能模块测试
根据设计好的各个大类功能模块划分,然后再逐级细化,覆盖到每个功能尽可能全面的测试点。
1.2 按业务流程测试
小程序的业务,比如咨询、支付、播放、查询、下载。
把各个功能点串联起来形成完整的业务流程来检查;
同一个业务,可能有不能的路径来实现,每个路径都需要覆盖检查。
1.3 按数据流向测试
根据数据从某一端操作输入和输出流向,设计基于数据流的测试用例,输出的数据也可能成为另外一端的输入,检查输入的数据是否按照代码逻辑执行正确的输出,是否数据发生异常(无法输入;
有输入却无任何输出;
输出不正确;
多余的输出其他信息…)。
1.4 同一功能不同的入口有效性的检查
小程序中在首页、列表页、详细页、其他的业务功能相关页面,都有可能存在同一个功能的入口,如付费咨询、免费咨询业务中,可以直接从首页进入付费咨询入口,也可以通过免费咨询入口再切换到付费咨询入口。
每一个入口路径都需要覆盖检查。
1.5 交互性检查
一般而言,产生数据和功能交互变化的情况主要有这几个分类:
前台前台、后台后台、前台后台。
前台从A1页面提交的数据,可能需要在前台A2页面查看到,也会在对应后台的B页面查到记录;
后台B1页面修改or添加的数据,对应到前台的A页面产生交互变化,后台本身的不同页面之间也可能存在同一个数据的输出值。
2.兼容性测试
2.1 操作系统兼容性
这里的操作系统主要是指android系统和iOS系统。
小程序运行在微信中,看起来是跟操作系统没关系,实际上还是有关系的,因为底层调用依赖于具体的操作系统。
按照官方文档在微信小程序在ios上是运行在JavaScriptCore中但在Android上是通过X5JSCore来解析的。
如果有条件,不仅要覆盖android和iOS,包括主流的Android品牌也要覆盖,比如华为,VIVO等等。
覆盖到最新的试用版和当前流行的主要版本。
2.2 屏幕兼容性
普通的手机APP会有屏幕兼容性的问题,小程序同样有这样的问题,只不过相对少了些。
微信小程序定义了一个新的尺寸单位rpx(responsive pixel)可以适配不同尺寸的屏幕,在页面上定义对象的单位是rpx就可以在不同的屏幕上适配。
但1rpx的像素经常在iphone7p上出现断线的情况。
因此需要在测试过程中关注1rpx像素的显示。
2.3 微信兼容性
因为微信小程序SDK的API版本一直都在更新,导致SDK的API有可能有向下的兼容性问题并最终会影响到在最新版本小程序SDK上开发的程序不能在较低版本的SDK上像预期的那样运行。
所以测试微信版本的兼容性之前要先确定小程序使用的库版本在哪些微信版本号上支持,在测试的时候选择测试小程序能支持的最低微信版本,选择最低版本以上的所有版本对Android系统和IOS系统分别测试;
Android: 程序运行于X5内核; IOS: 程序运行于JavascriptCore; 3.安全测试(接口测试)
小程序是内嵌到微信的,但腾讯并未花太多精力在小程序的安全性上,2017年小程序的大漏洞就说明了这一点。不要指望腾讯帮你提升完全性。对于测试人员,安全相关的测试能做的毕竟有限,我们所要做的就是知道小程序有安全隐患就行了,比如小程序运行后在手机上能看到一个wxapkg的一个包,这个包解压后就是可以认为是小程序的源代码。
目前大部分都是微服务的架构,所以前端的小程序调用的是后台的接口,所以要对接口进行测试,这里的接口测试和平时的接口测试是一样的,没有特别之处。
但是我们需要了解的就是,微信小程序SDK提供的接口和websocket,这是另外一种接口形式。
接口测试一般测试传递数据是否安全,身份信息是否加密等方面,由于微信小程序是内嵌于微信平台的应用,微信的安全系数极高,所以安全测试可以忽略。
所以不难理解,我们要对小程序的接口测试需要准备的材料有:
1. 完备的接口文档
2. 测试工具的选型(Jmeter/postman/或者直接写代码),在这里我对jmeter进行讲解
3. 抓包工具Fiddler,更好的分析数据的扭转
3.1 使用抓包工具Fiddler抓取接口参数
打开抓包工具,打开小程序,接口抓取结果如下图:
请求参数和返回值如下图:
3.2 使用Jmeter测试接口参数
3.1.1 Jmeter请求配置
根据抓包工具抓取的参数将接口配置到Jmeter中,如下图所示:
3.1.2 查看返回结果
执行脚本查看返回结果如下图所示:
4.功能的交互测试
因为小程序是在微信里面,所以还需要验证一些跟微信的交互。
功能的交互主要包含入口、交易和缓存。 入口: 顾名思义为进入小程序的方式,例如分享,群组等; 可以通过微信聊天页面的下拉框找到小程序(如果已经打开过一次); 也可以通过“发现”模块下的“小程序”中的搜索框搜索到对应的小程序; 还可以通过“附近的小程序”找到小程序 交易: 和微信钱包、卡包等支付模块相关联。 小程序支持交易,那么它与微信的钱包、卡包都是可以交互的。 如果有交易功能,需要验证各种交易场景。 缓存: 比如需要验证清空微信的缓存是否对小程序有影响 5.性能测试
这里的性能测试考虑的是客户端的性能,服务器的性能则按照传统的服务器性能测试方案即可。
小程序的客户端性能和网页的性能测试非常类似,性能的常用指标也大致相同。
包括页面的白屏时间,首屏时间,资源占用,页面渲染时间,帧率等等。
小程序的开发工具提供了手动查看性能的窗口,只要在小程序开发版中打开性能窗口即可看到页面的性能数据。
但是这个性能窗口的问题是只能手动获取数据,无法自动记录全部页面的数据,因此适用于定位性能问题而不适用于发布前的性能测试。
所以性能测试可以考虑性能打点上报的方式进行性能分析,上报时区分测试环境和运营环境。
发布前先在测试环境分析各个页面的耗时,及时发现页面的性能问题。
页面的渲染时间:Javascript前端各种动态效果的加载时间; 白屏: 页面打开响应的时间; 注: 微信测试时可以忽略测试手机的屏幕大小问题,原因是微信小程序重新的定义了一个新的单位尺寸: rpx,微信小程序把页面分割成750份,1rpx=1/750,自定义适配屏幕。 6.易用性测试
APP的易用性该如何测试,小程序的易用性就如何去测试。 6.1 导航 定位到页面某个模块所在位置,回到顶部or底部,导航条的收展,导航标签的文字是否容易理解。 6.2 功能入口 重要且常用业务的功能入口,是否在比较显眼的位置,业务操作过程是否便于大多数用户使用和查看。 6.3 上下层级进入和返回 首页列表页、列表页详细页 、首页详细页。 不同层级之间的进入和返回实现是否有相应按键易操作。 6.4 字体、图片、动态交互效果 字体: 标签、标题、内容、动态播放字体… 图片: 轮播图、背景图、封面图、触屏产生的交互图… 7.网络测试
网络测试可以参考APP的测试,比如网络状态和环境的切换,断网,通过设置代理进行弱网的测试等等。 主要是考察小程序在各种网络状况下的运行情况。 8.消息限制测试
根据开发文档,有如下消息限制: 支付: 当用户在小程序内完成过支付行为,可允许开发者向用户在7天内推送有限条数的模板消息(1次支付可下发1条,多次支付下发条数独立,互相不影响)。 提交表单: 当用户在小程序内发生过提交表单行为且该表单声明为要发模板消息的,开发者需要向用户提供服务时,可允许开发者向用户在7天内推送有限条数的模板消息(1次提交表单可下发1条,多次提交下发条数独立,相互不影响)。 9.权限测试
这里的权限指的是访问权限是否授权,所以权限测试分为“已授权”和“未授权”,所以需要测试在跳转到微信小程序时“允许访问”和“不允许访问”这两种情况下小程序是否各项功能能够正常工作。 需要检查以下几种情况下微信用户访问的权限: 9.1 未授权微信登录小程序 未授权时,一般使用一些业务功能的时候,都会弹出提醒: 先授权再操作对应功能。 or在提交数据到后台的时候,会提示补充相关身份信息才能提交成功。 9.2 已授权微信登录小程序 授权微信访问小程序,意味着自己的微信账号可被小程序管理方所获取,自动以微信的身份行使业务操作权限,比如咨询、支付、数据查询等。 9.3 同一微信号在不同手机端登录授权查看数据权限 同一微信号在不同手机微信端授权登录同一小程序之后,所能查看的数据和操作的权限都应该是同步一致的。 10.版本配置测试
有时候小程序一次性做了几套不相同的模板,在前端程序代码中修改配置参数,保存后重新编译,即可从一个版本切换到另一版本,同时也需要在管理后台作相应的切换,以保证前端进行数据调用。 对于非公用的部分: 不同版本直接的切换,需要保证彼此的功能模块和数据独立性不受干扰影响,即不同版本的管理后台所添加的数据只应该调用到各自对应模板的前台小程序中,不同版本的小程序从前台提交的数据也只会提交到各自管理后台,不应该有交差重叠。 对于公用的部分: 切换不同的模板,都会显示相同的内容。 11.测试流程
12.注意事项
12.1 上线
12.1.1 上线配置
内网测试、线上测试对应不同url接口;
上线前,需要修改内网测试接口地址为正式环境使用的接口。
同时还有一个配置参数的 转换设置也要关注到。
12.1.2 审核
将程序包提交给微信官方进行审核,工作日审核一般0.5d-1d之内可以搞定。
12.1.3发布
微信官方审核通过后,即可发布小程序到正式环境中访问使用,通过手机微信端搜索对应小程序的名字即可搜索到。
12.2 常用功能
12.2.1缓存清理
微信Web开发者工具、手机端微信的缓存清理。
使用场景:
数据修改后检查修改的效果,程序修改代码后检查效果等情况,可清除缓存后再检查。
12.2.2 编译
更新测试版本时使用。
小程序需要经过几轮的循环测试和修复,开发人员每次修复Bug完成之后会添加新的程序包给到测试人员,测试人员则需要通过微信Web开发者工具删除旧版本的项目程序,重新添加新版本的程序包,然后编译调试。
12.3常用操作键
新建项目:
Ctr+Shift+N
保存:
Ctr+S
关闭文件:
Ctr+W
搜索:
Ctr+F
刷新:
Ctr+R
编译:
Ctr+B
预览:
Ctr+Shift+P
清除缓存:
CTRL+SHIFT+DEL
【参考资料】
微信小程序测试方法和心得: