黎伟健 胡斌 柯树森 张建豪 区德成
摘 要:该文以个人云盘为例,基于Jenkins持续集成框架与ATX自动化测试框架,通过模拟用户真实操作,在终端设备上实现个人云盘应用的关键性能指标自动化测试,并通过7×24 h任务调度与分省部署,开展分省测试数据采集,实现多地域常态化品质监控。通过该系统实时获取个人云盘产品的真实使用数据,并加以多维度分析,一方面可以发现产品突发或潜在的性能缺陷,另一方面也可以快速针对产品功能改动、运营策略调整得到测试数据的反馈,达到全面把控产品关键性能表现的目的。
关键词:持续集成 自动化测试 ATX 品质监控
中图分类号:TP311 文献标识码:A文章编号:1672-3791(2021)04(c)-0006-05
Implementation of Automatic Monitoring System for Personal Cloud disk
LI Weijian HU Bin KE Shusen ZHANG Jianhao OU Decheng
(Quality Management Department, China Mobile Internet Co., Ltd., Guangzhou, Guangdong Province, 510640 China)
Abstract:Taking personal cloud disk as an example, based on Jenkins continuous integration framework and ATX automated testing framework, this paper realizes the automatic testing of the key performance indicators of personal cloud disk application on terminal devices by simulating the real operation of users, and carries out provincial test data collection through 7×24 hour task scheduling and provincial deployment to achieve multi-regional normal quality monitoring. Through the system to obtain the real usage data of personal cloud disk products in real time and make multi-dimensional analysis, on the one hand, we can find sudden or potential performance defects of the product, on the other hand, we can quickly get the feedback of the test data according to the product function change and operation strategy adjustment, so as to achieve the purpose of comprehensively controlling the key performance of the product.
Key Words:Continuous integration; Automated testing; ATX; Quality monitoring
对于运营商的互联网应用产品来说,产品基础功能的稳定是第一要务。如何实时感知用户对产品的实际使用体验、获知产品当前的基础功能表现情况,并与历史数据对比来判断产品当前的品质表现,一直是各互联网公司亟待解决的问题。针对这个问题,目前主要有两种解决方法:人工拨测与服务器数据监控。但这两种方法均存在一定缺陷。
人工拨测主要依赖人力,定期对产品主要功能点进行拨测以判断是否正常。此方法存在的缺陷显而易见,手工测试的时间覆盖粒度大,某个用例被执行后需等待较长时间方能再次被执行,难以及时发现异常,若提高覆盖粒度则人力成本倍增。此外,人工拨测也难以进行7×24 h的实时监控。
服务器数据监控主要针对服务器与业务关键进程的各项指标如CPU、內存、带宽、磁盘状态、数据库、业务接口等进行实时监控,该方法可以精确发现业务运行过程中的各项数据异常并进行告警,但主要的不足在于产品实际体验并不一定与监控告警强相关,部分指标异常告警时由于业务系统设计的冗余机制或自动修复,仍可保证产品功能正常。因此,此方法实际执行过程中需熟悉运维工作与业务的人员进行告警分析,或辅以人工拨测验证,未能直接获知用户的实际体验。
综合以上原因,中移互联网有限公司品质管理部基于Jenkins持续集成框架与ATX自动化测试框架,以和彩云App为例搭建了一套互联网产品品质监控系统,对以上两种方法的不足之处进行补充。
1 系统特点
该系统基于Jenkins持续集成框架[1]与ATX自动化测试框架搭建,主要具备以下特点。
(1)基于Jenkins配置定时持续集成任务,每次执行任务时从Gitlab代码仓库拉取最新版本测试脚本执行自动化测试,达到7×24 h全天候自动化数据采集。
(2)采用控件、文本、图像、xpath等多种方式对手机设备进行通用的自动化定位与控制,避免复杂机型、分辨率带来的适配难题。
(3)具备高度可拓展性,可简单拓展至多个分省,开展批量多地数据采集。
(4)配合多台测试终端、用例错峰执行等任务调度策略,测A试覆盖粒度小,可以及时发现异常,同时因测试过程模拟了用户真实操作,故能直接定位异常功能点。
(5)多地测试数据存储于同一中央数据库,方便开展多维度数据分析,寻找产品潜在问题。
2 方案设计
该系统主要由统一代码库、持续集成平台、测试终端、数据存储系统与数据分析工具组成,系统架构见图1。
2.1 代码库管理
为方便多人协作开发测试脚本、多测试节点实时保持脚本更新,该方法使用代码版本控制VCS[2](Version Control System)进行代码库管理。该司已采用基于分布式代码管理系统Git实现的Gitlab进行开发团队的统一代码管理,该方法使用公司Gitlab创建独立代码仓库进行代码管理与版本控制,Gitlab的使用方法该文不进行赘述。
2.2 持续集成平台
该系统采用主流的持续集成平台Jenkins作为中心管理系统。Jenkins是一个用Java编写的开源工具,可以自动化开展集成、测试、部署等重复性工作,且具备友好的GUI配置界面与操作界面。在该系统中主要利用Jenkins的自动化特性,承担任务调度工作以及报告定期输出。
2.3 测试终端
该系统主要针对移动端App开展品质监控,所以该系统的测试终端主要包括Android与iOS两种系统的手机。其中Android设备无需root,但需开启调试模式;执行iOS手机的自动化需额外准备Mac系统的服务器与iOS开发者账号。
2.4 数据存储系统与分析工具
基于该系统的数据规模与使用需求,采用MySQL数据库作为数据存储系统。MySQL支持多线程,可以充分利用CPU,性能表现出色。分析工具方面,MySQL数据库也提供了丰富的API接口并支持多种开发语言,该系统使用Python进行分析工具开发。
2.5 自动化测试框架
ATX是一个基于Python语言的开源自动化测试框架[3],可以实现对Android与iOS手机的自动化操作,如运行App、获取App控件属性、点击屏幕、输入文本等。该系统通过ATX的自动化接口,模拟真实用户操作对手机进行自动化控制。
3 实例研究
以该司产品和彩云Android客户端App为例,采用上文介绍的互联网产品监控系统设计方案,完成环境搭建、测试代码编写、任务调度与测试结果输出,并展示部分历史数据分析结果。
3.1 持续集成平台与数据库搭建
分别从Jenkins官网(https://www.jenkins.io/download/)与MySQL官网(https://www.mysql.com/downloads/)下载安装包,推送至Linux服务器上完成安装并部署服务。
3.2 测试代码编写
3.2.1 安装ATX自动化测试框架
ATX是一个开源的Python第三方库,安装之前需确保计算机安装了Python环境。在命令行界面下,分别通过pip安装atx、weditor、opencv-python等组件。
3.2.2 通过ATX连接手机
(1)通过ADB连接Android手机。
Android手机在设置菜单的开发者选项中开启USB调试后,通过数据线连接计算机,在命令提示符窗口输入“adb devices”命令,若得到以下信息,则表示已成功连接(7b3c713c为示例手机的序列号)。
List of devices attached
7b3c713c device
(2)测试手机安装ATX组件。
在命令提示符窗口输入“python -m uiautomator2 init”,若得到以下信息,则表示测试手机已成功安装ATX组件。
Successfully init AdbDevice(serial=7b3c713c)
3.2.3 App控件信息获取
ATX框架提供了weditor组件用于App控件的获取,这种基于App控件的点击方式摆脱了手机屏幕尺寸与分辨率的限制。
(1)启动weditor。在命令提示符窗口输入“python -m weditor”后,计算机的默认浏览器启动weditor界面,在首行处输入手机序列号(此处为“7b3c713c”),点击Connect,浏览器显示手机屏幕内容。
(2)获取控件信息。在手机端启动和彩云App,切换至“我的”tab,刷新weditor页面。以“活动中心”控件为例,在页面上可以看到该控件的className、resourceId、text、Xpath、左上角坐标与长宽等属性(见图2)。得到以上信息后,可以在ATX框架中对控件进行精准定位,一般情况下使用resourceId与text等属性;若页面出现多个相同resourceId且不具备text属性的控件时,可以使用Xpath属性。
3.2.4 执行自动化操作
以和彩云App为例,模拟用户启动和彩云并进行文件下载的简单代码[4-5],具体见图3。后续可通过数据库操作代码、监控告警代码等可以将数据进行进一步处理。
上述代码使用resourceId与text两个控件属性对和彩云App客户端的页面控件元素进行了定位与点击操作,并通过查找toast的方式来判断执行结果。而ATX除了模拟定位、点擊等操作外,还支持模拟双击、拖曳、长按、输入文本等常见用户操作。
3.3 Jenkins任务配置
通过ATX模拟用户真实操作,完成和彩云一系列主要功能如登录、文件上传、文件下载、图片预览、视频观看等测试代码编写后,将其提交至Gitlab项目主分支,在Jenkins任务中,配置Gitlab项目地址与账号密码与定时构建功能。至此,系统已初步搭建完成,Jenkins根据定时规则,7×24h访问Gitlab获取最新代码,并通过在测试手机上执行代码,获取最接近客户感知的真实测试数据,存储进MySQL数据库。
3.4 结果分析
通过将该系统进行分省部署,从多地域、多网络、多机型分别针对和彩云App的关键质量指标进行性能数据采集,并将数据汇总至中央数据库,对和彩云的性能表现开展监控,挖掘产品潜在的性能短板,保障用户的使用体验。通过地域这一维度,可以清晰反映和彩云在全国各省的性能表现,有助于开展分省的点对点性能提升[6],具体见图4、图5。
4 结语
通过搭建该互联网产品品质监控系统,实现了个人云盘产品的自动化关键性能指标的采集、处理与存档,一方面相对人工拨测更加高效,一方面相对服务器数据监控更加直观,便于直接观察到性能指标的变动情况,对产品的改动、运营的调整能很快得到测试数据的反馈。另外,通过将该系统进行分省部署,结合不同地域、不同网络、不同设备环境下产品性能数据的对比,可实现对产品性能情况的全面把握。
参考文献
[1] 雷建胜,苏晓,金明磊.一种分布式可持续集成自动化测试平台[J].计算机与现代化,2020(4):14-18.
[2] 王真.版本控制工具在软件开发项目管理中的應用——以GIT为例[J].项目管理技术,2020,18(6):
131-134.
[3] 蔡维婷,黎伟健,范敏.Android自动化测试工具链的设计与实现[J].计算机应用与软件,2018,35(11):
194-198.
[4] 梁俊.基于Selenium与TestNG的自动化测试框架的设计与实现[D].山东科技大学,2018.
[5] Chun W.Python核心编程[M].孙波翔,李斌,李晗,译.3版.北京:人民邮电出版社,2016:198-255.
[6] 柳萌萌,赵书良,韩玉辉,等.多尺度数据挖掘方法[J].软件学报,2016,27(12):3030-3050.
①作者简介:黎伟健(1973—),男,硕士,高级工程师,研究方向为信息技术。
区德成(1993—),男,本科,助理工程师,研究方向为软件工程。