AirtestProject 探索网易大型自动化测试解决方案 - 私有云
此文章来源于项目官方公众号:“AirtestProject”
版权声明:允许转载,但转载必须保留原链接;请勿用作商业或者非法用途
一、私有云方案简介
1. 发展历程
Airtest 项目(UI 自动化测试框架)于 2014 年启动,在网易内部成功服务数十个项目之后,受邀在 2018 年的 GDC 大会上与谷歌联合对外发布。项目开源至今,已有数万名开发者和上千家公司在使用。
但在内部实践过程,我们发现仅有底层的测试框架远远不足以满足企业对大规模自动化测试的需求,比如,如何搭建稳定高效的设备集群、如何科学地远程管理和调度设备、如何管理测试资源和持续集成 等,都是一套完整的自动化测试方案需要解决的问题。
针对上述需求,我们自研了手机机柜、设备管理系统 DeviceKeeper、Airlab 云测试平台等软硬件,搭建了一套 完整的自动化测试解决方案 ,不仅服务于网易内部,还服务于很多外部企业,都取得了非常好的效果。
2.方案简介
网易推出的自动化测试集群解决方案,包含了设备集群建设、设备管理、脚本编写、设备调度、脚本多机执行、报告生成、持续集成等完整解决方案。它是 软硬件 “一体化” 的产品 ,可以帮助我们快速在企业内部搭建一套私有的移动云测试平台。
图 网易自动化测试解决方案 - 私有云
二、方案产品详细介绍
我们将从 集群建设、集群管理、脚本编写和平台搭建 这 4 个方面来详细介绍我们整个私有云方案。
1.集群建设
传统的设备管理方式,是通过设备管理员人工管理的,测试人员也需要 在线下频繁地进行设备的借用和归还 ,来完成自己繁复的测试工作。另外随着企业内部测试设备的逐渐增加,设备管理也将非常消耗时间和人力,并且设备的利用率也会很低。可以试想一下,1 个设备管理员,人工对 100 台设备进行常规的开关机维护,将耗费多长时间?
那么该如何高效地管理测试设备?如何给测试提供稳定的设备资源呢?我们的方案是搭建真机集群。真机集群可以将设备资源统一地管理起来( 设备资源池化 ),这样既可以让维护的同事能够 线上批量管理、维护这些设备 ;又可以让测试同事迅速并且灵活地获取到指定的设备或者是大量的设备来进行回归性测试/兼容性测试。
为了搭建这样的真机集群,网易自主研发了工业级的手机集群机柜:
图 8*4 规格的专业机柜
图 网易自动化测试机房的机柜
该机柜的设备承载量和层高都支持灵活定制,已有 8 * 4、10 * 8、10 * 9 等不同规格的机柜。每层的设备抽屉均可以抽拉并支持独立工作。
机柜良好的通风设计、内置工业级的网络方案,可以保障持续性测试、或批量设备任务时的设备稳定性和网络流畅性。
除了柜式的机柜(适合放置在机房使用),我们还研发了便携式手提机柜:
图 便携式手提机柜
相比于柜式机柜,便携式手提机柜的设备承载量比较小,最多 10 台,但是小巧灵活,可以实现提到哪里,测到哪里,并不局限于放置在设备机房内。它非常适用于一些 测试效果演示场景、户外环境测试场景 等,甚至直接放在工位上测试也是一个非常不错的选择。
另外,为了解决机柜设备长期在线充电导致电池涨壳或者寿命变短的问题,我们还对机柜内的 USB HUB 进行了定制化的升级,优化成了可以智能控电的版本,通过程序即可方便地控制设备的通断电和数据通断 ,定时对设备进行浅充放操作,大大地延长了设备电池的寿命 ,降低了设备硬件的维护和更新成本。
图 机柜 - 智能控电 hub
2.集群管理
设备集群成功搭建之后,我们接下来需要考虑的就是集群管理的问题:
一方面,我们需要 非常方便地去监控和维护我们的设备集群 ,以保障设备集群的长期稳定性;
另一方面,我们还需要 灵活地管理和分配我们的设备集群 ,区分公有设备和项目专用设备,在保障设备高利用率的同时,还需要保障私有设备的隐私性。
为了解决上述痛点,我们开发了与机柜硬件 “配套” 的设备管理系统 DeviceKeeper:
图 网易 DeviceFarm 集群方案
DeviceKeeper 不仅仅能让设备管理员远程查看设备集群的在线状态,还支持一键批量维护、监控我们的设备集群:
图 DeviceKeeper-查看集群的在线状态
图 DeviceKeeper-异常监控
当然,它还支持对整个机柜或者是机柜上面的设备进行管理和分配,确保私有设备只有特定的项目组或者是特定的用户才能够访问使用(更加符合企业内部的设备使用需求和隐私性):
图 DeviceKeeper-机柜管理
还值得一提的是,大家耳熟能详的云真机平台,也集成了在我们的 DeviceKeeper 设备管理系统上面,方便测试人员 在网页上远程进行部分手工测试工作 :
图 DeviceKeeper-云真机页面
3.脚本编写
自动化测试的目的,就是为了更快更好地发现产品问题,有效提升产品质量。当我们解决了自动化测试的设备资源问题之后,就需要获取这些设备资源,来进行自动化脚本编写、脚本运行和生成测试报告发现产品问题这些工作了。
网易的私有云方案不仅仅给我们提供了底层的自动化测试框架,还提供了快速生产脚本和测试报告的编辑器等工具:
图 自动化测试 - 框架和工具
自动化测试框架的选取,我们需要考虑平台的通用性和上手的难易程度,平台通用性 可以保障框架兼容主流的 Android、iOS、小程序、H5 和各类游戏引擎等平台;上手门槛低 ,可以方便企业快速接入自动化测试并且迅速落地自动化测试方案。
网易开源的 Airtest 和 Poco 框架,就是基于这些痛点研发出来的,配合框架专用的编辑器 AirtestIDE,0 代码基础的测试人员也可以非常迅速地生产出一些 “简单” 的自动化测试脚本(社区版 AirtestIDE 网址:https://airtest.netease.com/):
图 自动化测试的痛点和解决方案
图 Airtest-框架原理及示例
图 Poco-框架原理及示例
另外,私有云方案里面的企业版 IDE 在社区版 IDE 的基础上,开发了更多 高级功能 ,比如 批量运行(小批量兼容测试/回归测试)、一键生成聚合报告、高清模式连接设备(画面兼容性好、更加流畅)等,更加符合企业级别的自动化脚本编写需求。
图 企业版 IDE-批量运行任务
图 企业版 IDE-聚合报告概览
除此之外,私有云方案还为脚本编写提供了一个 Klay 统一安装程序 ,这是一个增强的工具库。它封装了一些我们常用的功能,比如 自动点弹窗 、根据方向滑动、 使用滑动解锁屏幕 等功能,并对部分 Airtest API 进行了功能增强。该库降低了部分脚本编写的难度,测试人员在遇到类似场景时,直接调用提供的 API 即可,无需额外进行封装 。
4.平台搭建
尽管企业版 IDE 支持完成小批量的兼容测试/回归测试(设备数量大概在十几台左右),但是更大规模的回归测试和设备兼容性测试,就需要一个 高效的自动化测试用例运行平台 来完成了。
网易私有云方案提供的 Airlab 云测试平台,不仅 支持基本的批量测试脚本的调度及跑测 ,还 支持测试资源统一管理、自动化测试报告分析和持续集成 等:
图 Airlab-平台功能示意图
使用 Airlab 云测试平台,测试人员只需准备测试资源及提交任务配置,即可启动测试任务,并在大批量设备上进行任务跑测。
图 Airlab-回归测试任务配置
整个测试过程无需人工干预,任务完成后将自动提供本次测试任务的完整运行报告,报告内容包括报告概况,性能报告,错误报告,跑测用例的录屏、脚本日志等,可以帮助测试人员发现产品问题。
图 Airlab-回归测试任务报告概况
对于稳定运行功能的回归测试和兼容测试,只需编写一次测试脚本,保存在该平台上,即可多次重复自动运行,可最大程度提高测试效率和节约测试的人力成本。
另外还值得一提的是,Airlab 自动化测试平台可 支持跑批量设备自动装包、下 Patch 及登录需求 ,帮助测试人员减少装包、启动应用及登录过程的操作耗时。
项目组测试仅需提供测试包体、登录用例、登录脚本及测试账号等测试资源到 Airlab 自动化测试平台,并在 Airlab 自动化测试平台上配置一个测试登录的兼容性测试任务,选择需要进行装包的设备, 平台即自动完成测试应用安装、下 patch 及登录操作,并在任务完成后通知项目组测试:
图 Airlab-装包任务
三、方案优势
1.设备集群搭建的灵活性
我们 支持多种形态、多种规模的真机集群搭建 ,可以满足企业不一样的集群建设需求:
如需小规模的集群,并且集群可以灵活安置在办公室/工位等地方,可以选择我们的便携式手提机柜,能容纳 10 台设备,支持 Android 和 iOS,但 1 个便携式手提机柜只能部署 1 种平台的设备;
如需中大型规模的集群,可以选择我们的工业级机柜,常见规格有 4 * 8(32 台设备)、 8 * 10(80 台设备)、 9 * 10(90 台设备)等,我们还 支持根据企业实际的设备规模对机柜规格进行定制 ;另外,工业级机柜还支持定制层高,可以满足企业上架特殊设备的需求,比如车机、翻译笔、特殊平板等;
当然,我们的工业级机柜也支持 Android 和 iOS 设备,并且 支持按行来进行混合部署 ,举个例子,4*8 规格的工业级机柜,一共有 4 行,每行 8 台设备,我们可以选择第 1 行部署成 iOS 节点,上架 iOS 设备;剩余 3 行部署 Android 节点,上架 Android 设备。
2.机柜的专业性
我们的工业级机柜已经 经历了好几代的硬件试错 ,最终才确认现有的硬件方案,可以较大程度地保障集群运行的稳定性;
并且我们仍在不断地改良和优化我们的机柜,比如 2021 年来,我们已经将普通的 usb hub 升级成了可智能控电的 usb hub,配合智能控电系统,大大地延长了设备的电池寿命;
再比如我们正在测试和使用的机柜智能门锁方案,可以增加机柜的安全性,并且方便测试同事扫码开门线下借用设备。
3.底层测试框架的可拓展性
我们的图像识别框架 Airtest 和控件识别框架 Poco 均为纯 python 语言的框架封装;使用时可以自由进行二次函数封装、脚本封装调用,可灵活组织测试集。
另外我们的框架还支持结合自有的测试服务(如游戏指令服务),在脚本内自由调用指令、结合测试框架的 api 完成更深度的测试功能。
4.工具链的完整性
网易私有云方案,从集群搭建、集群管理、脚本编写、自动化任务运行到报告生成,也就是从硬件层到业务层,都给我们提供了详细的解决方案。
企业可以根据自身的实际需求,灵活地采购我们私有云方案提供的软硬件产品,包含机柜定制、软件方案选取等。
5. 私有化部署的隐私性
现在市面上已有非常多的企业可以提供公有的设备测试服务,按次/使用时长收费,也可以满足企业一定的测试用机需求。
但公有设备服务的缺点,一是不能保证设备机型都满足企业的测试需求;二是不能保证整个测试过程的隐私性,毕竟我们需要将测试包体和脚本等资源,上传到一个公有的平台上面,保密问题确实不容小觑。
因此,现在很多公司越来越趋向于设备集群的私有化部署,网易提供的私有云方案,也是将机柜和软件平台都部署在企业内部,有效地保证了设备使用和测试过程的隐私性,同时,私有化部署也能保障企业可以灵活安排自己的大规模回归/兼容测试任务。
四、方案采购与落地流程
通常情况下,外部企业采购我们的私有云方案,需经历如下的流程:
图 网易私有云方案采购流程
其中,企业需求确认,是为了了解每家企业不一样的私有云部署需求/自动化需求,清楚了解企业的需求之后,我们的运营/商务同学才能给出适合企业的方案及该方案的报价情况。
待企业确认方案能够满足自身的需求时,会再来进行报价确认和合同签订等事宜。
合同签订完毕并且企业支付预付款之后,我们会安排硬件(机柜和机柜配件等)邮寄上门的事宜,之后我们还会派出工程师上门部署硬件与软件,确保系统成功部署到企业内部并且可以正常使用。
此时企业可以对我们的产品进行验收,验收通过之后再进行尾款支付。
至此,方案就采购完毕并且落地到企业内部了。后续我们会为企业提供专门的技术支持群,方便企业在方案使用过程中出现疑问或者其它问题,能够得到及时的响应和解决。
五、联系方式
对网易私有云方案感兴趣的企业,可以通过下述的方式找到我们:
电话:020-85105163 转 57744
微信:a19520913013
QQ:1146924173
官网:https://airlab.163.com/b2b