小程序自动化实践方案总结:Minium + 云测
本文旨在为大家在着手做小程序自动化前提供参考,少踩坑。里面不会涉及细节的实践操作,主要讲解流程让大家对小程序自动化有个整体的印象。本文中存在的不足还望指出,多谢~😄 背景:由于每次迭代我们需要手动进行大量小程序用例回归,其中很多都是简单的组件操作,为了提升回归效率将更多的人力放在复杂场景回归和探索式测试中,因此希望通过小程序自动化来实现简单场景的回归用例。 要进行小程序自动化落地,需要先对下面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、AllHouseListCaseAllHouseListPage继承BasePage类,编写页面中各个组件的元素定位和操作方法AllHouseListLogic编写操作流程AllHouseListCase继承minium.MiniTest类,因为是固定在该页面执行用例,每个组件操作的前置步骤都是先进入该页面,所以在setUp里面添加进入该页面的前置操作(举一反三,其它页面的case的前置操作也是如此)。[图片] 4、tips 页面跳转后最好多用wait_for等待元素加载完,不然用例出现找不到元素的报错定位的元素必须绑定了事件,才能触发操作不熟悉怎么写的时候,可以先通过录制脚本同步到云测平台后,查看录制脚本进行参考 四、快速Monkey 只有服务商才有快速Monkey入口,这个我目前用的少,个人见解是每次有小的改动发了bg分支时,可以挑选一些流量大的甲方爸爸小程序进行冒烟测试。