• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >微信小程序 > 微信小程序之自动化亲密接触

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

作者:匿名 字体:[增加 减小] 来源:互联网 时间:2018-11-30

匿名通过本文主要向大家介绍了微信小程序等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
上手的小程序是微信官方的测试Demo,类似Android Api Demos一样,官方小程序中展示的也是各种控件的使用方法及常用接口扩展能力。通过添加开发者微信账号后,扫描二维码既可以打开微信小程序。


一、小程序运行时分析


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

shell@HWNXT:/ $ ps | grep u0_a539
u0_a539   6688  533   1751392 84976 SyS_epoll_ 0000000000 S com.tencent.mm:push
u0_a539   7593  533   2228476 252492 SyS_epoll_ 0000000000 S com.tencent.mm
u0_a539   8047  533   1984672 854121 SyS_epoll_ 0000000000 S com.tencent.mm:tools
u0_a539   8117  533   1770972 86280 SyS_epoll_ 0000000000 S com.tencent.mm:sandbox
shell@HWNXT:/ $

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

shell@HWNXT:/ $ dumpsys activity top | grep ACTIVITY
  ACTIVITY com.tencent.mm/.ui.LauncherUI 44c445f pid=7593

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


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

u0_a539   6688  533   1750852 84420 SyS_epoll_ 0000000000 S com.tencent.mm:push
u0_a539   7593  533   2223164 272116 SyS_epoll_ 0000000000 S com.tencent.mm
u0_a539   9853  533   2092872 117492 SyS_epoll_ 0000000000 S com.tencent.mm:tools
u0_a539   9896  533   2351160 212336 SyS_epoll_ 0000000000 S com.tencent.mm:appbrand0
shell@HWNXT:/ $

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

看一下top进程:

shell@HWNXT:/ $ dumpsys activity top | grep ACTIVITY
  ACTIVITY com.tencent.mm/.plugin.appbrand.ui.AppBrandUI 15a772 pid=9896
shell@HWNXT:/ $

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

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


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

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

shell@HWNXT:/ $ ps | grep u0_a539
u0_a539   6688  533   1751212 86184 SyS_epoll_ 0000000000 S com.tencent.mm:push
u0_a539   7593  533   2187672 263352 SyS_epoll_ 0000000000 S com.tencent.mm
u0_a539   8047  533   2336360 224436 SyS_epoll_ 0000000000 S com.tencent.mm:tools

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

shell@HWNXT:/ $ dumpsys activity top | grep ACTIVITY
  ACTIVITY com.tencent.mm/.plugin.webview.ui.tools.WebViewUI 1502038 pid=14685

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

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


二、小程序的画面构成


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

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

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


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


三、如何做微信小程序的自动化测试


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


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

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

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

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

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

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


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

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


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

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

二、开始回放查看结果


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

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

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


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


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


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


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

-- 电池数据清空

shell('dumpsys batterystats --reset && echo True')

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

 --输出耗电结果
    shell("dumpsys batterystats > /sdcard/kat/Result/batterystats.txt && echo True")
--读取txt文件的代码
local f = io.open('/sdcard/kat/Result/batterystats.txt', 'r')
    for line in f:lines() do
        print(line)
        shell('log -p i -t getbatterystats "' .. line .. '" && echo True')
    end
    f:close()
<
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

相关文章

  • 2018-11-30微信小程序 LOL 英雄的开发介绍
  • 2018-11-30微信小程序想要最短服务路径
  • 2018-11-30微信小程序开发实现tabs选项卡效果实例代码
  • 2018-11-30微信小程序开发指南:关于Tab分页
  • 2018-11-30微信小程序中使用ECharts 异步加载数据的方法
  • 2018-11-30微信小程序实现动态改变view标签宽度和高度的方法
  • 2018-11-30mac版微信web开发者工具(小程序开发工具)无法显示二维码 解决方案
  • 2018-11-30微信小程序-getUserInfo回调的介绍
  • 2018-11-30图片路径导致webpack打包错误如何处理
  • 2018-11-25微信分享 "Reference error wx is not defined"错误

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • 微信小程序表单组件 label
    • 微信小程序小组件 基于Canvas实现直播点赞气泡效果
    • 微信小程序开发之选项卡(窗口底部TabBar)页面切换实现
    • 支付宝小程序开发-利用支付宝的SDK获取用户User ID
    • 微信小程序阅读器的简单实例开发
    • 微信小程序怎么申请 从零开始做一个微信小程序教程
    • 微信小程序)表单验证开发二
    • 详解一个自定义的微信小程序组件(modal弹窗组件)
    • 微信小程序应用号开发教程详解
    • 微信小程序云开发服务端数据库API 指定返回结果中记录需返回的字段

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有