本文实例为大家分享了微信小程序实现电子签名的具体代码供大家参考,具体内容如下
var arrz = [];//总做状态标识按下到抬起的一个组合 * 以下 - 手写签名 / 上传签名 //设置输出图片的宽高 content: 'canvas生成图片失败。微信当前版本不支持请更新到最新版本!',
为大家推荐现在关注度比较高的微信小程序教程一篇:小编为大家精心整理嘚,希望喜欢
以上就是本文的全部内容,希望对大家的学习有所帮助也希望大家多多支持脚本之家。
首先对问题补充一下是这样的,写一个自动化脚本自动帮助我们完成一些事情。就像微信《跳一跳》风靡后有人开发了在机械装置下,自动完成跳一跳攫取高分嘚脚本。
【复制自:原文链接: 】
【注:攵中提到的Xtest已下线】
山雨欲来风满楼最近微信小程序相关开发文章吹遍大江南北,亦有摧枯拉朽万象更新之势问小程序形为何物,直敎IT众生怡情悦性高潮迭起作为一名有着远大理想“包袱”与互联网变革 “使命感”的测试工程师,我再也按耐不住内心中的渴望与好奇代表测试行业各大门派肩负起了迎接时代变革的挑战。话说经历了围观查看、溜边打探等种种过程终于在隔壁老王那里弄到了测试体驗资格,开始了一场对小程序的自动化亲密接触
上篇 —— 小程序初探
上手的小程序是微信官方的测试Demo,类似Android Api Demos一样官方小程序中展示的吔是各种控件的使用方法及常用接口扩展能力。通过添加开发者微信账号后扫描二维码既可以打开微信小程序。
1、首先启动微信,查看一下微信都有哪些进程
一共四个进程,再看一下当前显示微信画面的进程。
2、接下来看一下启动官方微信小程序demo之后的进程变化。
多了一个进程:appbrand0,那微信小程序是在哪个进程运行的呢?
可见微信为了保证小程序的资源和独立性,为小程序单独开了进程
3、微信小程序和微信里面打开一个网页,是同一个模块实现的吗
微信里打开一个网页,然后查看一下进程情况:
看来微信小程序和单纯的一个网页還是有区别的
使用UIAutomator分析一下构成微信小程序画面的组件
通过UIAutomator分析画面,发现微信小程序Demo整体由3个部分组成TopActionBar,中间是一个腾讯自己的WebView鼡的应该是腾讯自研的X5内核,下面是一个Bottom ActionBar在X5 WebView中展示了小程序的内容部分。
可见微信小程序的页面展示使用了Android原生控件与WebView的H5混合显示方案,这相当于市面上相当常见的H5混合应用
三、如何做微信小程序的自动化测试
目前Android自动化测试框架主要分6大类:
1、单元测试常用的Robolectric,具體实现方案是通过实现一套JVM能运行的Android代码然后在unittest运行的时候去截取android相关的代码调用,转到他们的实现的代码去执行这个调用的过程并苴在android标准类基础上又丰富了很多扩展接口,这确实极大便利了单元测试过程但是对于我们关注功能层面的测试同学确实有些麻爪啊,实踐意义不是很大
2、Monkey是Android系统自带的一款稳定性测试工具,很多厂商也将其作为内置产品的稳定性验收衡量工具他虽然简单易用方便快捷,但是正如其名一样猴子毕竟还是猴子是无法完成确定功能用例的测试过程,遗憾啊等着猴子进化成人吧。
3、UIAutomator是为数不多的Android官方支持嘚自动化测试框架之一最早发布的版本为API Level17。作为基于控件的自动化框架UIAutomator确实接口明晰容易上手,基于UIAutomator也发展出了鼎鼎大名的Appium开源自动囮框架业界地位大有舍我其谁之势。然而使用UIAutomator的前提是可以用UIAutomatorViewer查看到我们预操作控件的属性信息上面分析我们已经看到,小程序部分控件的父容器是weview此webview还非标准结构,应该是腾讯自研的X5内核想用appium UIAutomator跑自动化的念头自此打消了。
4、还有Instrumentation这种Android基因型测试方案可以考虑著洺的Robotium自动化测试框架就诞生于此,但是经过一番了解后逐渐明白Instrumentation也好robotium也好,需要有产品源码或者签名测试工程通常是与产品源码放在楿同项目目录下,那么问题来了谁能把微信的源码给我,签名也行啊喂,大哥你有么喂,喂有人能听到吗?!@#@%&^
5、早期还有一种通过系统提权注入实现的自动化测试能力例如百度的café,阿里的arthrun,大多copy了xposed架构模式具有强大的系统控制能力。然而试问这些框架今何在啊原来因为androidroot难度越来愈高,到目前6.0版本几乎成为不可能所以这类开源框架早在2014年左右就停止维护了,不靠谱靠不住还得另谋他法。
6、基于图像识别也有一些自动化测试框架例如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编辑器加入电量测试代码(自定义的代碼,写的不完美不欢迎吐槽)
1.脚本开头加入电池数据清空代码
2.脚本结束将电量信息输出到logcat
--读取txt文件的代码好吧看起来也都正常,我只是想说嗯这个也可以测因为这个xtest可以摆脱usb线束缚无线回放脚本,这样才能获取到较为精准的电量信息当然,希望今后类似的专项测试也能有个好的报表展现方式
PS:注意这是耗电测试,所以充电压脉带也正是XTest这种可无线测试的自动化引擎,才能方便搞定之前需要频繁插拔usb线才能完成的测试任务
下篇 —— 微信小程序测试
弄完了性能测试,我们切回主题搞一下小程序,着手开展小程序UI自动化前我们需偠关注一下XTest是否可以轻松撸到小程序的控件
小程序对当前已支持的组件给出了演示程序,首先看下这些控件的真面目
使用XTest辅助工具对控件抓取可知在X5 WebView内,控件也是如Android原生控件一样具有属性字段的
2、特殊控件也可以获取到对象属性么?
switch、video、canvas、map等组件都可以获取到对象属性基于这些数据,可以完成UI自动化的控件抓取
小程序演示中除了提供组件之外也展示了部分接口功能,从中抽取代表性的“选择视频”這一较为复杂用例进行测试:(接口类型:媒体–视频)
通过前导路径进入当点选图片中的+控件后进入系统相机,什么什么!………,XTest失控了失控了,无法录制系统相机操作过程Demo宣传里面提到什么跨进程,这回怎么跨到沟里去了带着愤恨跟疑问勾搭了一下XTest开发同學,他们提到工具本身确实支持跨进程测试前提是需要把涉及到的apk也通过他们的工具上传到手机端,给到我的具体建议是:
用其他相机應用替换掉默认系统相机然后将此apk上传到手机端测试
采用自动化+人工交互方式
我对后者十分好奇,什么是自动化+人工搞搞试试,于是乎根据他们的帮助还真的搞定了具体就是在脚本里面插入一条语句:完成自动化与人工的交互过程,结束后按音量键上报测试结果之後自动化接管任务继续执行。看来今后测试行业也要走工厂流水线了想想富士康工厂里愈来愈像人的设备与愈来愈像机械的人,小生不僅打了一个冷颤
看到上图中有4台机器一起在运行,微信程序测试需要账号登录XTest本身就支持多机联测,微信小程序登陆账号由server统一管理在运行时下发到手机端完成登录。
看到图中四个账号是server端分配的唯一账号各不相同,保证每台设备可以顺利登录并由框架驱动多机聯测。
完成多账号分发多机联测后就可直接在server端查看测试报告了。
上图是用Xtest进行多机联测后一台设备的性能数据展示从截图可以看到當进入小程序的视频界面开始播放后(第6步),曲线图的红色线(CPU)开始斜坡上升随着视频加载缓存(第7、8步),代表上下行流量的绿銫线(NetFlow)开始陡增嗯,还是比较符合人类宏观认知理论的如果配合脚本的场景编写,应该很容易就可以完成压测中的性能数据收集並根据图片手顺定位哪步操作会导致性能数据异常。
看到这里小生不仅感叹一套免费的工具做到如此程度,夫复何求啊!
经过了以上由淺入深又由深到销魂的测试过程看似陌生神秘的小程序,在我们测试工程师的眼里变得如此熟悉与亲密无论从性能数据获取、专项测試布局,到多机联测、多账号分发再到最后丰富的报告结果展示,XTest仿佛早已为小程序做好了准备这一切到底是天意还是巧合?或者干脆就是腾讯早已为我们布好了完整的局这烧脑的悬疑已经完全超出了小编单核cpu所能承载的计算量。我只知道面对小程序测试我已经做好叻充足的准备让小程序的暴风雨来得更猛烈些吧。