平常我们使用自动化主要是针对 App 端和 Web 端,另外还有两种场景比较少用但是也很重要,分别是:浏览器、微信小程序。
随着微信小程序的功能和生态日益完善,很多公司的产品业务形态逐渐从 App 延升到微信小程序、微信公众号等。小程序项目页面越来越多,业务逻辑也越来越复杂,全手工测试已无法满足快速增长的业务需求。
Minium是微信研发团队专门为小程序的UI自动化提供的一个测试框架,框架的一些接口继承自unittest, 可以使用unittest中的各种断言函数,语言是基于python的,框架里的minium.MiniTest类已经封装好了小程序的启动、调用配置文件、执行测试用等方法。
其特点:
支持一套脚本,iOS & Android & 模拟器,三端运行
提供丰富的页面跳转方式,看不到也能去得到
可以获取和设置小程序页面数据,让测试不止点点点
可以直接触发小程序元素绑定事件
支持往 AppSerive 注入代码片段
可以调用部分 wx 对象上的接口
主要是三大件:
Python 3.8及以上
微信开发者工具
微信版本 >= 7.0.7
minium.MiniTest类里边已经封装好了小程序的启动、调用配置、执行测试计划、关闭等一系列的方法,所以在编写测试用例脚本的时候,定义的类在继承了minium.MiniTest类之后,可以直接开始写测试用例,不用关注怎么启动。
minium框架里面默认配置的项目路径以及CLI工具路径都为None,所以会加载默认配置。
如果我们的项目路径以及CLI工具路径不是用的默认路径,执行会报错找不到路径,所以我们需要在项目路径下新建一个config.json文件,将里面的project_path改为你的小程序项目路径,dev_tool_path改为你的CLI工具路径
minitest -c config.json -m tests.igtest - g
-c 指定配置文件
-m 指定要执行的用例文件名(注意不需要写.py)
-g 生成测试报告
(1)单选择器定位:一般可以使用.class或者#id去定位到元素
(2)多选择器定位:如果元素class有重名,id也有相同的,可以使用.class+#id去定位
(3)组合定位:如果有多个元素的class相同,id又是变化的,可以使用page.get_element(‘.main-menu-txt’, inner_text=’租赁合同’, text_contains=‘租赁合同’),或者使用page.get_elements(‘.main-menu-txt’)
常用的断言主要有三种:
(1)assertEqual(first, second, msg) first == second时,断言成功,用例结果符合预期 first != second时,断言失败,抛出错误信息及msg.
(2)assertTrue(expr, msg) expr为True,断言成功,用例结果符合预期 expr为False,断言失败,抛出错误信息及msg
(3)assertTexts(texts, selector, msg) texts中每个元素的值都包含在selector选择器对应的元素文本集合中,则断言成功,否则,断言失败,抛出错误信息及msg
对testcase采用分层和数据与脚本解耦的管理模式
PO模式,即page object mode,页面对象模式,通过对界面元素和功能模块的封装减少冗余代码,同时在后期维护中,若元素定位或功能模块发生变化,只需要调整页面元素或功能模块封装的代码,提高测试用例的可维护性。
第一层:基础层BasePage,作用:封装一些minium的原生方法,如元素定位、框架跳转等
第二层:PO层,页面对象层,如元素定位、获得元素对象、页面操作
第三层:测试用例层,主要负责业务逻辑和数据驱动
三层之间的关系:PO层继承基础层的类,测试用例层调用PO层
小程序自动化除了可以控制开发者工具中的小程序模拟器,也支持通过远程调试控制真机,以达到在真机上进行自动化测试的目的。
确保目标机器上的基础库版本在2.7.3以上
1.通过SDK启动
可以在测试脚本开头使用 miniProgram.remote 接口启动工具的真机调试功能,调用成功后脚本会在控制台打印二维码。使用目标机器扫码成功连接后,脚本会继续在真机上执行下去。
2.手工启动
如果工具是打开常驻并且使用 automator.connect 接口进行连接,那么可以先手工启用工具的真机调试功能后再运行测试脚本,这样就可以将在真机上测试小程序了。
小程序云测服务简介
MiniTest 微信小程序云测是一套由微信测试团队自主研发,联合 WeTest 云真机能力,共同推出的小程序自动化测试服务。
服务基于云真机,支持开发者简单快捷地实现小程序真机自动化测试和性能分析等能力。 服务平台特色功能如下:
丰富的自动化测试能力
全面的性能分析能力
支持持续集成,打通业务 Devops 流程
支持第三方服务商
免费使用,提供每周免费使用额度,能满足绝大多数项目自动化测试需求
1.接入智能化 Monkey 测试、录制回放、自定义测试(minium)
能力对比:
测试能力 | 突出优势 | 注意事项 | 适用场景 |
---|---|---|---|
智能化 Monkey | 接入即用,智能化点击,也可通过简单配置页面参数提高覆盖率 | 不支持输入,上传图片等复杂操作;无法校验页面逻辑 | 快速冒烟测试 |
录制回放 | 零代码生成用例脚本;快速生成用例,效率高 | 用例调整不如自定义测试灵活 | 较简单的用例,自动化回归测试 |
自定义测试 | 完全定制测试场景;灵活度高,能力全面;支持数据驱动测试(DDT) | 需要编写 Python 脚本,有一定的学习成本 | 较复杂的用例和场景 |
2.全面的性能分析
小程序的性能测试主要分为启动时性能测试和运行时性能测试
启动性能专项分析
小程序启动是小程序用户体验中极为重要的一环,启动耗时过长会影响用户体验、造成用户流失。 云测服务支持小程序启动性能专项测试,无需额外配置接入即用,通过多次测试用户首次访问(需下载代码包)以及用户非首次访问(已下载代码包)两种情况,分析小程序在各个阶段的启动耗时情况,发现启动性能瓶颈。
运行时性能专项分析
常规性能数据:在云测服务跑查任意测试时,会自动获取跑查过程中的常规性能数据,如启动时间、CPU、内存等,并且云测服务会将性能测试结果和现网的平均性能数据进行对比,方便开发者掌握小程序的性能情况。
支持持续集成
支持多个小程序版本:开发中版本、体验版本、线上版本
支持HTTPS接口提测
任务结束提醒
云测服务支持用户配置邮箱及手机号信息,测试任务结束会通知到用户,用户可以利用https轮询任务结果,根据任务结果定制业务逻辑,如错误告警等。
生存是人类第一要务,而欢乐却是生存的唯一原则。欢乐是一个人心灵和精神所表现出来的满足,是最最纯洁和高尚的享受。
人生,最宝贵的就是莫过于光阴。人生,最璀璨的是莫过于事业。愚痴的人,一直想要别人了解他。有智慧的人,却努力的了解自己。
生命是一份空白内容的租约,自主性越强的人生,租约上的条款由自己填写的部分就越多,被动性越强的人生,就会由别人帮你填写。