首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >微信小程序之自动化亲密接触

微信小程序之自动化亲密接触

作者头像
腾讯移动品质中心TMQ
发布于 2018-02-08 02:56:06
发布于 2018-02-08 02:56:06
2.8K0
举报

导读

山雨欲来风满楼,最近微信小程序相关开发文章吹遍大江南北,亦有摧枯拉朽万象更新之势。问小程序形为何物,直教IT众生怡情悦性高潮迭起。作为一名有着远大理想“包袱”与互联网变革 “使命感”的测试工程师,我再也按耐不住内心中的渴望与好奇,代表测试行业各大门派肩负起了迎接时代变革的挑战。话说经历了围观查看、溜边打探等种种过程,终于在隔壁老王那里弄到了测试体验资格,开始了一场对小程序的自动化亲密接触。

上篇---小程序初探

上手的小程序是微信官方的测试Demo,类似Android Api Demos一样,官方小程序中展示的也是各种控件的使用方法及常用接口扩展能力。通过添加开发者微信账号后,扫描二维码既可以打开微信小程序。

1小程序运行时分析

1. 首先,启动微信,查看一下微信都有哪些进程。

一共四个进程,再看一下当前显示微信画面的进程,从名字来看应该是com.tencent.mm。

通过命令查看,当前top进程是7593,确实是com.tencent.mm。

2. 接下来,看一下启动官方微信小程序demo之后的进程变化。

多了一个进程,com.tencent.mm:appbrand0,那微信小程序是在哪个进程运行的呢?

看一下top进程:

当前top进程是9896,果然是com.tencent.mm:appbrand0。

可见,微信为了保证小程序的资源和独立性,为小程序单独开了进程。

3. 微信小程序和微信里面打开一个网页,是同一个模块实现的吗?

微信里打开一个网页,然后查看一下进程情况:

进程没有变化,看看top进程:

网页居然是在com.tencent.mm:tools进程里面打开的,并且两者的Activity也不一样,小程序是.plugin.appbrand.ui.AppBrandUI,网页是.plugin.webview.ui.tools.WebViewUI。

看来微信小程序和单纯的一个网页还是有区别的。

2小程序的画面构成

使用UIAutomator分析一下构成微信小程序画面的组件

通过UIAutomator分析画面,发现微信小程序Demo整体由3个部分组成,Top ActionBar,中间是一个腾讯自己的WebView,用的应该是腾讯自研的X5内核,下面是一个Bottom ActionBar,在X5 WebView中展示了小程序的内容部分。

可见,微信小程序的页面展示使用了Android原生控件与WebView的H5混合显示方案,这相当于市面上相当常见的H5混合应用。

3如何做小程序自动化测试

目前Android自动化测试框架主要分6大类:

01

单元测试常用的Robolectric,具体实现方案是通过实现一套JVM能运行的Android代码,然后在unit test运行的时候去截取android相关的代码调用,转到他们的实现的代码去执行这个调用的过程,并且在android标准类基础上又丰富了很多扩展接口,这确实极大便利了单元测试过程,但是对于我们关注功能层面的测试同学确实有些麻爪啊,实践意义不是很大。

02

Monkey是Android系统自带的一款稳定性测试工具,很多厂商也将其作为内置产品的稳定性验收衡量工具,他虽然简单易用方便快捷,但是正如其名一样,猴子毕竟还是猴子是无法完成确定功能用例的测试过程,遗憾啊,等着猴子进化成人吧。

03

UIAutomator是为数不多的Android官方支持的自动化测试框架之一,最早发布的版本为API Level17。作为基于控件的自动化框架,UIAutomator确实接口明晰容易上手,基于UIAutomator也发展出了鼎鼎大名的Appium开源自动化框架,业界地位大有舍我其谁之势。然而使用UIAutomator的前提是可以用UIAutomatorViewer查看到我们预操作控件的属性信息,上面分析我们已经看到,小程序部分控件的父容器是weview,此webview还非标准结构,应该是腾讯自研的X5内核。想用appium UIAutomator跑自动化的念头自此打消了。

04

还有Instrumentation这种Android基因型测试方案可以考虑,著名的Robotium自动化测试框架就诞生于此,但是经过一番了解后,逐渐明白Instrumentation也好robotium也好,需要有产品源码或者签名,测试工程通常是与产品源码放在相同项目目录下,那么问题来了,谁能把微信的源码给我,签名也行啊,喂,大哥你有么?喂,喂,有人能听到吗?

05

早期还有一种通过系统提权注入实现的自动化测试能力,例如百度的café,阿里的arthrun,大多copy了xposed架构模式,具有强大的系统控制能力。然而试问这些框架今何在啊,原来因为android root难度越来愈高,到目前6.0版本几乎成为不可能,所以这类开源框架早在2014年左右就停止维护了,不靠谱靠不住,还得另谋他法。

06

基于图像识别也有一些自动化测试框架,例如sikuli还有testin的自动化工具,然而小生之所以直接就把这类框架pass掉是因为这种测试脚本基本不具备扩展性,系统ui风格变更,想要做断言验证,以及日后用例维护等等,想都不敢想。

铁鞋踏破仍无路,靓女帅哥也踌躇啊,忽然间灵感一现,腾讯自家会不会有什么奇葩产品可用啊,知行合一谷歌百度,搜索腾讯自动化立马看到腾讯优测的介绍,到官网里翻了一下找到一款叫XTest的自动化测试工具,看到简介目前只支持Android平台,想想前面历程这般痛苦,还要啥自行车啊。于是乎赶忙下载了一套热气腾腾的XTest,安装完毕,一切准备就绪,关门,放XTest。在经过一番折腾后基本领悟了XTest的使用心法,下面我就从大家平时经常开展的性能测试走起。

中篇---性能测试

1录制脚本,加入循环等操作

使用XTest录制从体验上确实简单便捷,简单到不用插线不用PC,可以躺着录走着录,即使撩妹都不耽误测试,跟平时操作App无异。对比早期录制脚本又抓控件又摸路径受的罪,幸福感大增。录制很容易上手,就是在录制模式下,按照case跑一遍就OK了,脚本自动生成,这里不做赘述,为了让测试更加充分,我又徒手一口气在复杂路径加了50个循环。真的是徒手,因为就是用手机端的脚本编辑功能就实现了。

2开始回放查看结果

搞定脚本后可进行本地回放或多机联测,由于是基于控件的录制技术,所以回放过程比较顺利。测试结束后在手机/sdcard/kat/result路径下会生成kat_Performance.csv文件,这就是测试过程的性能数据了,具体信息如下:

性能数据比较中规中矩,内存,cpu,电池温度,流量,帧率数据都有,页面切换滑动点击均无丢帧现象(不过这也可能跟XTest脚本回放速度比较慢有关,这点是这款工具目前看来一个比较让人吐槽的点)。

仅此结果就能满足小生的欲望么?那是绝对不可能的,没有设备耗电信息怎么能算是一个完整的性能测试呢。

3导出脚本,追加耗电信息输出

通过前期学习,了解到XTest可以导出脚本进行二次编辑并且支持130多个API作为复杂测试任务的扩展,长话短说我将录制的脚本导出到sublime编辑器,加入电量测试代码(自定义的代码,写的不完美不欢迎吐槽)

1. 脚本开头加入电池数据清空代码

2. 脚本结束将电量信息输出到logcat

3. 重新启动测试,测试完成后到logcat日志中收割电量测试结果,目标文件就在/sdcard/kat/result目录下(logcat.txt)如下:

好吧,看起来也都正常,我只是想说嗯这个也可以测,因为这个xtest可以摆脱usb线束缚无线回放脚本,这样才能获取到较为精准的电量信息。当然,希望今后类似的专项测试也能有个好的报表展现方式。

注意这是耗电测试,所以充电压脉带,也正是XTest这种可无线测试的自动化引擎,才能方便搞定之前需要频繁插拔usb线才能完成的测试任务。

下篇---微信小程序测试

1小程序分析

弄完了性能测试,我们切回主题,搞一下小程序,着手开展小程序UI自动化前,我们需要关注一下XTest是否可以轻松撸到小程序的控件

1. 小程序的Hybrid控件

小程序对当前已支持的组件给出了演示程序,首先看下这些控件的真面目

使用XTest辅助工具对控件抓取可知,在X5 WebView内,控件也是如Android原生控件一样具有属性字段的。

例如控件的resource-id属性字段为”SPAN”; text属性字段为”text”, 以及控件的矩形坐标范围值和layout层级结构,这些数据使用XTest都可以准确获取。

2. 特殊控件也可以获取到对象属性么?

switch、video、canvas、map等组件都可以获取到对象属性,基于这些数据,可以完成UI自动化的控件抓取。

2小程序测试实践

1. 视频接口测试

小程序演示中除了提供组件之外也展示了部分接口功能,从中抽取代表性的“选择视频”这一较为复杂用例进行测试:(接口类型:媒体—视频)

通过前导路径进入当点选图片中的+控件后,进入系统相机,什么?什么!……..,XTest失控了,失控了,无法录制系统相机操作过程。Demo宣传里面提到什么跨进程,这回怎么跨到沟里去了?带着愤恨跟疑问勾搭了一下XTest开发同学,他们提到工具本身确实支持跨进程测试,前提是需要把涉及到的apk也通过他们的工具上传到手机端,给到我的具体建议是:

1)用其他相机应用替换掉默认系统相机,然后将此apk上传到手机端测试

2)采用自动化+人工交互方式

我对后者十分好奇,什么是自动化+人工?搞搞试试,于是乎根据他们的帮助还真的搞定了,具体就是在脚本里面插入一条语句:完成自动化与人工的交互过程,结束后按音量键上报测试结果,之后自动化接管任务继续执行。 看来今后测试行业也要走工厂流水线了,想想富士康工厂里愈来愈像人的设备与愈来愈像机械的人,小生不仅打了一个冷颤。

2. 多账号分发测试

看到上图中有4台机器一起在运行,微信程序测试需要账号登录,XTest本身就支持多机联测,微信小程序登陆账号由server统一管理,在运行时下发到手机端完成登录。

看到图中四个账号是server端分配的唯一账号,各不相同,保证每台设备可以顺利登录,并由框架驱动多机联测。

3. 联测报告展示

完成多账号分发多机联测后,就可直接在server端查看测试报告了。

上图是用Xtest进行多机联测后一台设备的性能数据展示。从截图可以看到当进入小程序的视频界面开始播放后(第6步),曲线图的红色线(CPU)开始斜坡上升,随着视频加载缓存(第7、8步),代表上下行流量的绿色线(NetFlow)开始陡增。嗯,还是比较符合人类宏观认知理论的。如果配合脚本的场景编写,应该很容易就可以完成压测中的性能数据收集,并根据图片手顺定位哪步操作会导致性能数据异常。

看到这里小生不仅感叹,一套免费的工具做到如此程度,夫复何求啊!

尾篇---总结

经过了以上由浅入深又由深到销魂的测试过程,看似陌生神秘的小程序,在我们测试工程师的眼里变得如此熟悉与亲密。无论从性能数据获取、专项测试布局,到多机联测、多账号分发,再到最后丰富的报告结果展示,XTest仿佛早已为小程序做好了准备。这一切到底是天意还是巧合?或者干脆就是腾讯早已为我们布好了完整的局,这烧脑的悬疑已经完全超出了小编单核cpu所能承载的计算量。我只知道面对小程序测试我已经做好了充足的准备,让小程序的暴风雨来得更猛烈些吧。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2017-01-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 腾讯移动品质中心TMQ 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
数据分析要凉?Netflix大溃败,放弃算法崇拜
导读:每当有人谈起大数据应用案例,Netflix依据数据分析创作的爆红神剧《纸牌屋》一定是不得不提的经典。但如今,在影视界扮演颠覆者的Netflix遇到了一些大麻烦……
IT阅读排行榜
2018/12/19
9150
Quibi:我轻轻地咬一口 你最爱的Netflix和TikTok
无论是短视频流媒体的下半场,还是原创剧集流媒体服务的混战,似乎都要在四月迎来一位新成员——Quibi,一款好莱坞加持、资本青睐的短视频付费应用,一个将在今年陆续释出8400集影视级原创内容的流媒体平台,而Quibi的这一口“quick bite”究竟会咬到谁,到现在都还很难说。
LiveVideoStack
2021/09/01
3670
Quibi:我轻轻地咬一口 你最爱的Netflix和TikTok
Wolfram 分析 | 根据维基百科数据,《鱿鱼游戏》在全球电视界占据主导地位
韩国新剧《鱿鱼游戏》风靡全球,成为全球爆款。其发行商 Netflix 宣布,“鱿鱼游戏正式拥有 1.11 亿粉丝——这是我们有史以来最大的系列发行!” 它在包括美国在内的 90 个不同国家/地区的排行榜上名列前茅,并被称为“口碑全球轰动”,在新闻和社交媒体中随处可见。
WolframChina
2021/11/04
7900
使用 Python-Matplotlib 制作有趣的数据可视化分析,一起来看看吧
今天,我们使用 Netflix 电影和电视节目数据集,来进行数据可视化,当然这是一个有趣的实战过程哦!
周萝卜
2021/10/13
5160
日本学者神研究:追剧学英语两不误,眼动数据分析为你定制专属字幕
但是,这样“学习”的过程可谓十分煎熬了,常常是关了字幕练听力,一会就睡着了;而全部打开字幕的话,我的眼里就只有中文了。一部剧看下来,既没有学到几个单词,还牺牲了看剧的乐趣。
大数据文摘
2019/04/26
8930
日本学者神研究:追剧学英语两不误,眼动数据分析为你定制专属字幕
Netflix:探索理解媒体内容的平台
 点击上方“LiveVideoStack”关注我们 ▲扫描图中二维码或点击阅读原文▲ 了解音视频技术大会更多信息   //   编者按:Netflix探索了许多通过机器学习提升视频生产效率的方式,比如对话搜索和视频搜索。但由于不同项目均独立开发,维护成本巨大。目前,Netflix正在着手解决这一问题。本文来自Netflix科技博客。 文 / Guru Tahasildar, Amir Ziai, Jonathan Solórzano-Hamilton, Kelli Griggs, Vi Iyengar 译
LiveVideoStack
2023/04/04
4140
Netflix:探索理解媒体内容的平台
媒体的未来:电影,游戏,元宇宙和更多
在过去的一百年里,人们的注意力发生了重大的转变,转向了庞大的幻想世界。随着技术使我们能够以更多途径、更持久、更频繁、更沉浸、更多用户控制和资金投入来表达该 IP,该 IP 变得越来越大。这里有几个例子:
用户1324186
2021/09/17
5960
这场流媒体的“无限战争”,究竟谁能胜出?
(VRPinea 3月29日)2021年流媒体之战愈演愈烈,3月18日推出的扎导版《正义联盟》登陆HBO MAX,再加上Disney+前不久上映的《旺达与幻视》以及近期上线的《猎鹰与冬兵》,就连Netflix也于近期推出了《DOTA:龙之血》的原创动画剧集。
VRPinea
2021/04/09
3460
这场流媒体的“无限战争”,究竟谁能胜出?
复盘 Netflix 发展史
可能大家都是从《纸牌屋》了解到Netflix,是一家非常著名的流媒体公司,但其实Netflix在开源界的贡献也极其伟大,我们现在使用的Spring Cloud 技术,核心技术都来自Netflix贡献的开源代码,这篇文章带大家了解Netflix的20年发展史。文章由36氪编译,希望能够为你带来启发。 从租赁DVD到提供流媒体服务,再到制作原创内容。Netflix的每一次转变看上去都是合乎逻辑的。但ProductHabits研究了Netflix 20年的发展史指出,有时候,哪怕是坚持做一些显而易见、合乎逻
纯洁的微笑
2018/07/19
1.4K0
别被数据带进沟里:这才是应用数据的正确姿势!
你以为数据能够告诉你一切?其实如果你不能用正确的姿势运用数据,很可能会被它蒙蔽,做出非常危险的错误决定。
IT阅读排行榜
2018/08/16
3560
凯哥讲数据中台[004]Netflix的数据中台(上)
在《#凯哥讲数据中台#数据中台的使命,愿景和六大核心能力中》,我提到,数据中台的愿景是"打造数据驱动的智能企业"。
凯哥
2020/02/19
1.9K0
凯哥讲数据中台[004]Netflix的数据中台(上)
AVA:Netflix的剧照个性化甄选平台
在Netflix公司,无论是内容平台工程师团队,还是全球产品创意团队都知道,观众在寻找新的节目和电影观看时,封面插图扮演着非常重要的角色。我们可以透过封面插图,揭示故事的独特元素,而这些元素将我们的观众与不同的角色和故事线索联系起来。我们为此感到很自豪。随着我们的原创内容不断增多,我们的技术专家的任务是寻找新的方式来处理不多扩展的资源,并使我们的创意可以摆脱不断增长的令人厌烦的数字宣传需求。其中的一个方法是直接从我们的源视频中采集静态图像帧,以提供更加灵活的原始插图来源。
LiveVideoStack
2021/09/02
1.2K0
AVA:Netflix的剧照个性化甄选平台
TransformerRanker 高效地为下游分类任务找到最适合的语言模型的工具 !
自然语言处理(NLP)中的分类任务通常是通过从模型仓库中选择预训练语言模型(PLM)并对其进行微调来解决的。然而,现有的大量的PLM使得从模型仓库中选择最佳性能的PLM成为实际挑战。作者将介绍TransformerRanker,一种轻量级的库,能够有效地对分类任务中的PLM进行排名,且不需要进行计算成本高昂的再训练。
AIGC 先锋科技
2024/11/14
1250
TransformerRanker 高效地为下游分类任务找到最适合的语言模型的工具 !
换个姿势看《权力的游戏》,第七季回归之推特数据分析
原作者 Conor Dewey 编译 Mika 本文为 CDA 数据分析师原创作品,转载需授权 作为一部红遍全球的美剧,《权力的游戏》可谓是当之无愧的神剧。自2011年第1季问世以来,就吸引了无数粉
CDA数据分析师
2018/02/26
8610
换个姿势看《权力的游戏》,第七季回归之推特数据分析
【强基固本】总结优秀的prompt案例,学习更有效的prompt提示词工程写法,值得收藏
“强基固本,行稳致远”,科学研究离不开理论基础,人工智能学科更是需要数学、物理和神经科学等基础学科提供有力支撑,为了紧扣时代脉搏,我们推出“强基固本”专栏,讲解AI领域的基础知识,为你的科研学习提供助力,夯实理论基础,提升原始创新能力,敬请关注。
马上科普尚尚
2024/05/23
9.2K0
【强基固本】总结优秀的prompt案例,学习更有效的prompt提示词工程写法,值得收藏
程序员的英语学习指南
对程序员来说,“渣英语”可是限制自己更上一层楼的重要阻碍。不仅阅读最新英文研究与教程困难,去国际顶会与别人开口交流也成了问题。
量子位
2019/04/24
1.4K0
程序员的英语学习指南
写剧本、模仿声音、制造笑点,机器学习进军好莱坞
屡获殊荣的电影制作人Kevin Macdonald曾执导过许多部电影,包括《末代独裁》和《国家要案》等,而在去年,Macdonald第一次尝试了拍摄由机器编写剧本的影片。
大数据文摘
2019/05/15
6620
写剧本、模仿声音、制造笑点,机器学习进军好莱坞
人工神经网络对人类语言习得的启示
What Artifificial Neural Networks Can Tell Us
CreateAMind
2024/02/06
2550
人工神经网络对人类语言习得的启示
分析你的个人Netflix数据
这是一个在过去几年里反复出现在我脑海中的问题。很长一段时间以来,情景喜剧一直是我的首选。
磐创AI
2021/04/21
1.9K0
分析你的个人Netflix数据
独家 | 探索性文本数据分析的新手教程(Amazon案例研究)
本文利用Python对Amazon产品的反馈对数据文本进行探索性研究与分析,并给出结论。
数据派THU
2020/07/22
1.8K0
独家 | 探索性文本数据分析的新手教程(Amazon案例研究)
推荐阅读
相关推荐
数据分析要凉?Netflix大溃败,放弃算法崇拜
更多 >
交个朋友
加入架构与运维学习入门群
系统架构设计入门 运维体系构建指南
加入架构与运维工作实战群
高并发系统设计 运维自动化实践
加入前端学习入门群
前端基础系统教学 经验分享避坑指南
换一批
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档