云裂变营销网

标题: 小程序UI自动化测试选型Minium框架 [打印本页]

作者: 匿名    时间: 2022-2-24 18:53
标题: 小程序UI自动化测试选型Minium框架
一、背景:

对于web or APP UI自动化测试,由于已经发展了多年,因此相关的资料都比较齐全且有效。而小程序UI自动化网上相关的资料比较少,而且有些资料也是过时或者错误的。博主最近也有小程序UI自动化的需要,因此自己逐一实践了以下的各个框架,只有自己尝试之后才能找到最适合自身系统实际情况的框架,希望对你有帮助。
二、UI自动化测试选型之路:

1. Appium

WebDriver的W3C协议与UiAutomator的结合,在App自动化领域地位明显,对于APP原生页面做自动化测试真的是很好使。所以第一反应也是尝试Appium是否可行,但第一步就吃了闭门羹。微信小程序是基于腾讯自研X5内核的webview,Appium无法直接定位这种页面的元素:


小程序UI自动化测试选型Minium框架-1.jpg

继续尝试网上提到的另外一种定位元素的方法:用chrome inspector识别:
Chrome浏览器中输入:chrome://inspect/#devices


小程序UI自动化测试选型Minium框架-2.jpg

点击具体的页面,的确可以定位到元素:


小程序UI自动化测试选型Minium框架-3.jpg

但尝试后也不好用,主要有以下的坑:
#一个小程序有多个窗口, 切换到真正展示内容的窗口
handles = driver.window_handles
for handle in handles:
    driver.switch_to.window(handle)
    if driver.page_source.find("main.html:VISIBLE") != -1:
        break基于以上的原因,该方案可用但不好用,最终放弃,尝试寻找别的解决方案。
2. FAutoTest

这个框架最初定位是专业服务于微信 H5/小程序的UI自动化测试,但最后一次更新提交是2019年9月,而上一次提交是2018年12月,目前已经放弃不再维护更新了。加上实现本身也是要通过chrome inspector识别元素,因此放弃。
3. AirTest

支持图像识别定位操作的框架,通过图片对比来识别完成操作,可以非常快速的完成自动化测试脚本的编写,简单高效,学习成本低,编写脚本效率高。


小程序UI自动化测试选型Minium框架-4.jpg

优点这么明显,自然缺点也是明显的:不管是在AirTest自带IDE里面使用,还是结合Python框架使用,在脚本里维护一大堆图片,始终都很难受,不好维护。


小程序UI自动化测试选型Minium框架-5.jpg

此外,不同真机设备之间分辨率不一致,图片识别就存在了兼容性问题,同样一套脚本A手机上能运行,B手机上可能就识别失败了,甚至同一套脚本在同一台设备上反复运行多次,也会存在偶尔图片识别失败的情况发生。
虽然官方也明确给出了一些增强脚本兼容性的手段,但始终无法100%解决该问题,不能100%解决,那脚本本身就存在了不稳定性,这是硬伤。也尝试过是否可以用PC上的手机模拟器来尽量规避分辨率的问题,但可惜的是很多小程序目前在模拟器上还不能很好的运行,且PC电脑显示器的分辨率不同,对图片识别也有影响。
因此如果这一套自动化脚本只是你一个人使用,设备是固定的,一个人测一个系统,比起脚本兼容性和稳定性,你更在意的高效快速使用自动化辅助验证,AirTest会是一个不错的选择。反之,则不太适合,因此最终也是暂时放弃了该方案。
4. Miniprogram-automator

微信小程序官方自己出的自动化测试框架:https://developers.weixin.qq.com/miniprogram/dev/devtools/auto/quick-start.html 。
通过miniprogram-automator SDK编写脚本在开发者工具或真机中完成各类操作实现自动化测试。需要安装Node.js, 结合前端的测试框架Jest,完成自动化测试脚本的开发。
由于可以直接通过操作小程序开发者工具来执行操作,只要一台电脑就可以完成整个自动化测试,无需外接手机设备。元素定位也可通过小程序开发者工具中直接copy selector,非常方便。
因此整个模式和APP原生页面/web页面的UI自动化测试相似,一套脚本可多处运行,稳定性也有保障。


小程序UI自动化测试选型Minium框架-6.jpg

小程序UI自动化测试选型Minium框架-7.jpg

小程序UI自动化测试选型Minium框架-8.jpg

由于该框架是基于前端的语法来编写测试脚本,尝试学习使用该框架编写脚本后,在编写的过程中也暴露出了问题:一方面大部分测试同学都缺乏前端代码开发经验,因此一边学习一边开发脚本,编写脚本的效率大幅度下降,普适性很低。
另一方面对前端框架的不熟悉,也导致测试框架的优化,如数据驱动、代码分层也变得棘手。个人感觉该框架更适合前端研发自测使用,会更加的事半功倍。因此继续尝试别的框架。
5. Minium

由于前面使用miniprogram-automator在前端编程方面碰壁,因此想找一个类似的框架,要可以使用小程序开发者工具来定位元素和运行脚本,并且如果能用测试人员熟悉的Python来编写就完美了。于是就发现了Minium:https://git.weixin.qq.com/minitest/minium-doc
minium 是为小程序专门开发的自动化框架, 提供了 Python 和 JavaScript 版本。下载并安装好minium-doc之后,参看手册即可快速上手:


小程序UI自动化测试选型Minium框架-9.jpg

minium提供一个基于unittest封装好的测试框架,测试基类Minitest会根据测试配置进行测试,minitest向上继承了unittest.TestCase,并做了以下改动:

小程序UI自动化测试选型Minium框架-10.jpg

base/:页面公共方法
pages/:页面对象模型
outputs/:测试报告
testcase/:测试脚本
config.json:配置文件,测试用例的运行依赖于该配置文件


小程序UI自动化测试选型Minium框架-11.jpg

suite.json:批量运行用例配置文件


小程序UI自动化测试选型Minium框架-12.jpg

run.py: 单个调式脚本或批量执行脚本


小程序UI自动化测试选型Minium框架-13.jpg

测试报告输出样式:


小程序UI自动化测试选型Minium框架-14.jpg

由于Minium是小程序目前官方维护的自动化测试框架,其支持一套脚本,iOS & Android & 小程序开发者工具模拟器,三端运行,并且提供了Python版本,对测试同学非常友好,因此最终选定了该框架作为小程序UI自动化测试的使用框架。
===================================================================
以上就是本篇文章的全部内容,希望对你有帮助!
微信关注程序员杨叔的微信公众号,免费获取更多全栈测试干货内容资料:




欢迎光临 云裂变营销网 (https://www.yunliebian.com/yingxiao/) Powered by Discuz! X3.4