探索网易大型自动化测试解决方案-私有云

简介: 探索网易大型自动化测试解决方案-私有云

网络异常,图片无法展示
|


一、私有云方案简介



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网址: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. 私有化部署的隐私性


现在市面上已有非常多的企业可以提供公有的设备测试服务,按次/使用时长收费,也可以满足企业一定的测试用机需求。


但公有设备服务的缺点,一是不能保证设备机型都满足企业的测试需求;二是不能保证整个测试过程的隐私性,毕竟我们需要将测试包体和脚本等资源,上传到一个公有的平台上面,保密问题确实不容小觑。


因此,现在很多公司越来越趋向于设备集群的私有化部署,网易提供的私有云方案,也是将机柜和软件平台都部署在企业内部,有效地保证了设备使用和测试过程的隐私性,同时,私有化部署也能保障企业可以灵活安排自己的大规模回归/兼容测试任务。


四、方案采购与落地流程



通常情况下,外部企业采购我们的私有云方案,需经历如下的流程:


网络异常,图片无法展示
|

图 网易私有云方案采购流程


其中,企业需求确认,是为了了解每家企业不一样的私有云部署需求/自动化需求,清楚了解企业的需求之后,我们的运营/商务同学才能给出适合企业的方案及该方案的报价情况。


待企业确认方案能够满足自身的需求时,会再来进行报价确认和合同签订等事宜。 合同签订完毕并且企业支付预付款之后,我们会安排硬件(机柜和机柜配件等)邮寄上门的事宜,之后我们还会派出工程师上门部署硬件与软件,确保系统成功部署到企业内部并且可以正常使用。


此时企业可以对我们的产品进行验收,验收通过之后再进行尾款支付。 至此,方案就采购完毕并且落地到企业内部了。后续我们会为企业提供专门的技术支持群,方便企业在方案使用过程中出现疑问或者其它问题,能够得到及时的响应和解决。

相关文章
|
6月前
|
文字识别 小程序 测试技术
网易私有云新增的测试驱动力,Airtest-ocr文字识别点击真香!
网易私有云新增的测试驱动力,Airtest-ocr文字识别点击真香!
406 0
|
7天前
|
JavaScript 测试技术 API
常见的 Vue 3 单元测试问题及解决方案
常见的 Vue 3 单元测试问题及解决方案
22 2
|
1月前
|
运维 监控 安全
构建高效运维体系:从监控到自动化的全面指南在当今数字化时代,运维作为保障系统稳定性和效率的重要环节,其重要性不言而喻。本文将深入探讨如何构建一个高效的运维体系,从监控系统的搭建到自动化运维的实施,旨在为读者提供一套完整的解决方案。
本文详细介绍了高效运维体系的构建过程,包括监控系统的选择与部署、日志分析的方法、性能优化的策略以及自动化运维工具的应用。通过对这些关键环节的深入剖析,帮助运维人员提升系统的可靠性和响应速度,降低人工干预成本,实现业务的快速发展和稳定运行。
|
1月前
|
数据采集 SQL 运维
企业出海WAS安全自动化解决方案
企业出海WAS安全自动化解决方案
|
3月前
|
测试技术 开发工具 iOS开发
iOS自动化测试方案(三):WDA+iOS自动化测试解决方案
这篇文章是iOS自动化测试方案的第三部分,介绍了在没有MacOS系统条件下,如何使用WDA(WebDriverAgent)结合Python客户端库facebook-wda和tidevice工具,在Windows系统上实现iOS应用的自动化测试,包括环境准备、问题解决和扩展应用的详细步骤。
254 1
iOS自动化测试方案(三):WDA+iOS自动化测试解决方案
|
3月前
|
运维 测试技术 持续交付
解决方案 - 自动化单元测试
解决方案 - 自动化单元测试
44 1
|
4月前
|
测试技术 持续交付 微服务
现代软件测试中的自动化挑战与解决方案
在现代软件开发中,自动化测试已经成为提高效率和质量的重要手段。然而,面对不断增长和复杂化的软件项目,自动化测试也面临诸多挑战。本文探讨了当前软件测试中的自动化挑战,并提出了一些解决方案,以帮助开发团队更好地应对这些挑战,提升测试效率和质量。 【7月更文挑战第11天】
49 1
|
5月前
|
存储 测试技术 Python
记一次线上安全测试中误用父类属性导致数据污染的解决方案
在线上安全测试的过程中,会使用 Nmap 进行端口扫描,为了提升端口扫描的效率,扫描策略通常是检测常用端口是否处于开放状态,并在父类中使用名为 all_open_ports 的属性来记录这些开放的端口。 在后续的测试过程中,需要检查所涉及的端口是否包含在 all_open_ports 中。如果不存在,就需要进一步对这些端口进行开放检测。如果端口的检测结果是开放的,测试将继续进行并将这些端口记录到 all_open_ports 中,以便在下次遇到相同端口时无需重复检测。 然而,由于安全测试是多线程进行的,某些情况下可以将 all_open_ports 理解为共享变量,这导致当两个不同的测试环境同
|
5月前
|
敏捷开发 测试技术 持续交付
敏捷开发中的软件测试策略:挑战与解决方案
随着敏捷开发方法在软件工程领域的普及,传统的软件测试流程面临着前所未有的挑战。本文将探讨敏捷开发环境下软件测试所遇到的主要问题,并提出相应的解决策略,以期为软件测试人员和项目管理者提供实用的指导和参考。
96 0
|
6月前
|
安全 数据管理 测试技术
网络安全与信息安全:防范漏洞、加强加密与提升安全意识深入探索自动化测试框架的设计原则与实践应用化测试解决方案。文章不仅涵盖了框架选择的标准,还详细阐述了如何根据项目需求定制测试流程,以及如何利用持续集成工具实现测试的自动触发和结果反馈。最后,文中还将讨论测试数据管理、测试用例优化及团队协作等关键问题,为读者提供全面的自动化测试框架设计与实施指南。
【5月更文挑战第27天】 在数字化时代,网络安全与信息安全已成为维护国家安全、企业利益和个人隐私的重要环节。本文旨在分享关于网络安全漏洞的识别与防范、加密技术的应用以及提升安全意识的重要性。通过对这些方面的深入探讨,我们希望能为读者提供一些实用的建议和策略,以应对日益严峻的网络安全挑战。 【5月更文挑战第27天】 在软件开发周期中,自动化测试作为保障软件质量的关键步骤,其重要性日益凸显。本文旨在剖析自动化测试框架设计的核心原则,并结合具体案例探讨其在实际应用中的执行策略。通过对比分析不同测试框架的优缺点,我们提出一套高效、可扩展且易于维护的自动