![ea1b58ebf6a1588c8a31723e7e57ada1.png](https://i-blog.csdnimg.cn/blog_migrate/63822036733bbc2e8fadcf6a6e6da317.jpeg)
目前,许多团队的微信小程序都在自动化测试的探索,本文从自动化测试过程中产生的数据进一步分析,得出相关的性能指标,为后续的性能优化做数据支持。
一、自动化测试框架选择
对于微信小程序的测试框架的选择问题上,个人觉得仅仅在于是否使用FAutoTest,这个由腾讯TBS出品的测试框架。该框架对基于TBS内核应用的测试上是非常友好的,但该框架的优势仅仅停留在在早期的小程序版本,其内核能切换至Webview。通过实践发现,最新的小程序版本已经无法切换,因此嫡亲的FAutoTest框架已无明显优势。
转为选择业内比较流行的测试框架。目前,业内的测试框架大致分为两大类,一类是传统的自动化测试框架,如Appium、Macaca(阿里);另外一类是基于UI视觉的自动化测试框架,如SikuliX、Airtest(网易)。两者的实现差别如下表:
![a8216ba0a354bb929d4fa47888d5863c.png](https://i-blog.csdnimg.cn/blog_migrate/9cf1fef2e5bb0b8fb8efeeb6fd6c0141.jpeg)
对于传统的测试框架,实现基本依赖于在客户端安装一个能执行选择或者交互行为的APP,例如在IOS端会安装XCUITest。而基于UI视觉的方案是基于STF框架中的工具,如视频流minicap,minitouch工具等,这些工具是用NDK开发的,只需要向客户端上传对应编译好的文件,后台运行即可。
从两者的实践对比结果如下:
![cc8140b09d71ad90e324052f70904c77.png](https://i-blog.csdnimg.cn/blog_migrate/bbf3d6edaaf778170e7456df30e89193.jpeg)
由于传统的测试框架是基于CS框架,通信交换耗时相对较长。而基于UI视觉的底层框架是基于socket的,实时性较高,再结合与高效的图像diff算法,能快速响应。
二、采集监测框架设计
![79baac7e5e0a9f6cd389bcbcb1a65740.png](https://i-blog.csdnimg.cn/blog_migrate/4228f06bdd801b6c3136568c04ae9e4b.jpeg)
整体的采集监测框架分为采集部分和统计分析部分。在采集部分中,本方案使用了Appium作为自动化测试框架,结合minicap采集实时快照流数据。图中的小程序rpc server能直接将自动化脚本的运行环境与小程序的运行环境连接起来,能提供更多的native能力,如元素的选择等。在自动化脚本中,提供了minicap和小程序性能面板的控制,如在QA流程case中自动打开性能面板和导出traceLog文件等操作,以及集成一些性能case,如每个页面的滚动操作等。在整个QA流程case结束后,会产生快照和TraceLog数据并进行离线存储。在统计分析部分中,首先是对离线文件进行源数据处理,然后根据制定的性能指标进行计算,最后输出统计报表。
二、数据采集
在编写好测试脚本后,即可测试流程,除了正常的流程测试框架的辅助,如断言库等,与此同时我们还能获取到测试过程中的视频,以及针对微信小程序,我们还能导出其独有的TraceLog,这个在开发者工具中Trace选项卡中可以追踪展现。
2.1 数据类型
本方案中采集到的数据,主要分为以下两块: