本文旨在为大家在着手做小程序自动化前提供参考,少踩坑。里面不会涉及细节的实践操作,主要讲解流程让大家对小程序自动化有个整体的印象。本文中存在的不足还望指出,多谢~😄
背景:由于每次迭代我们需要手动进行大量小程序用例回归,其中很多都是简单的组件操作,为了提升回归效率将更多的人力放在复杂场景回归和探索式测试中,因此希望通过小程序自动化来实现简单场景的回归用例。
要进行小程序自动化落地,需要先对下面2点进行了解:
- 全方位了解微信官方提供的小程序自动化能力的特点(云测、录制回放、Minium、虚拟账号)
- 熟悉自己项目小程序的特性:是否支持一键登录、项目代码编译后元素class属性值是否会变、自己的公司是否是第三方服务商
在了解小程序自动化能力之后,结合自己小程序特性,选择合适的方案进行落地。
下面陆续讲述的内容会涉及上面2点。
一、小程序自动化能力简介
1、云测整体流程
云测平台可以基于你上传的用例创建相应的测试计划,然后选择小程序不同版本(开发版、体验版、线上版)、手机系统类型(安卓和ios)、测试账号等根据测试计划创建任务,跑测完毕可以通过短信和邮件通知测试结果。
2、录制回放
如果想要把录制回放的用例上传到云测,必须使用虚拟账号进行录制。这里有篇腾讯团队内部实践的文章。
3、Minium
要进行Minium用例编写,前提是搭建好小程序开发环境,这个可以询问自己项目组的前端开发。下图是以我们组内实践为例画的流程图,让大家对如何运行Minium脚本有个概念。图内的切换小程序,若你们不是第三方服务商则不涉及;云盾是我们公司的用例管理执行平台,同理也可以替换为你们自己的用例平台,将跑测完的结果同步到用例平台。
编写用例也是采用的PO模式,在微信开发中工具上进行元素定位,整体思路与写web自动化差异不大,这里可以参考有赞的文章,就不赘述了。
特别注意:若使用的是wxss选择器定位元素,一定要确认元素的class属性值会不会在每次编译小程序的时候发生改变,若会的话强烈建议使用xpath进行定位。
4、虚拟账号
虚拟账号常用在录制回放和云测跑测试任务的时候。
若小程序必须登录才能使用,且符合截图中标记的这3项之一,就不能通过云测平台来跑自己录制或编写的用例了。
5、持续集成
目前提供了在云测平台创建测试任务和获取测试任务结果的接口,所以可以搭配jenkins使用。举个例子:调用接口创建测试任务----调用接口查询任务结果----将结果同步到用例平台或定制化测试结果邮件
二、方案选择
1、3种自动化方式对比
2、方案选择
页面多少决定选择录制还是minium,是否适用虚拟账号决定能否用云测,用例执行时间决定本地还是云测运行更方便(当然全部跑本地也行啊~)
选择云测平台跑测的一个好处是基于真机去跑,据了解后面可能会支持付费选择手机机型和付费增加跑测时间。还有一点就是不用自己去倒腾本地配置真机运行(😂我现在都还没实践本地真机运行)。
3、举我们产品这个例子
我们作为小程序服务提供商小程序页面有上百个,绝大多数场景对账号没有要求,落地方案是:minium+云测。
所以每次迭代发布,只需运行一下测试任务的脚本便可坐等测试结果就好。
三、基于项目编写Minium用例
1、目录结构
2、用例编写流程
若小程序页面不是非配置化的,可以省去配置这一步;若不需要同步测试结果到用例平台,可以省去最后一步。
3、基于下面这个页面编写用例,步骤如下。
- 分别在page、logic、case目录下,分别创建allHouseListPage、AllHouseListLogic、AllHouseListCase
- AllHouseListPage继承BasePage类,编写页面中各个组件的元素定位和操作方法
- AllHouseListLogic编写操作流程
- AllHouseListCase继承minium.MiniTest类,因为是固定在该页面执行用例,每个组件操作的前置步骤都是先进入该页面,所以在setUp里面添加进入该页面的前置操作(举一反三,其它页面的case的前置操作也是如此)。
4、tips
- 页面跳转后最好多用wait_for等待元素加载完,不然用例出现找不到元素的报错
- 定位的元素必须绑定了事件,才能触发操作
- 不熟悉怎么写的时候,可以先通过录制脚本同步到云测平台后,查看录制脚本进行参考
四、快速Monkey
只有服务商才有快速Monkey入口,这个我目前用的少,个人见解是每次有小的改动发了bg分支时,可以挑选一些流量大的甲方爸爸小程序进行冒烟测试。
虚拟账号录制的用例脚本,在云测一直同步失败啊