草帽路飞UU 发表于 2022-10-10 17:11:01

外卖平台的自动化测试实践与落地

随着美团到家业务的发展,系统复杂度也在持续增长。测试用例数量近两年增长约一倍,单端数量超过1万2千条,而研发人员的工作从大部分时间在开发,转变成一半时间在开发、一半时间在模拟环境和自

测。因此,引入自动化测试就显得十分有必要,本文介绍了美团外卖在自动化测试方向做的一些探索和实践,希望对从事相关领域工作的同学能够带来一些启发或帮助。

  1. 项目背景
  美团外卖的业务场景比较多元化,除了外卖自身的业务,还作为平台承接了闪购、团好货、医药、跑腿等其他业务。除此之外,在全链路动态化的大基调下,外卖各个页面的技术形态也变得越来越复杂,


除了Native代码,还包括Mach(外卖自研动态化框架)、React Native、美团小程序、H5等,不同技术栈的底层技术实现不同,渲染机制不同,进而对测试方式要求也有所不同,这也在无形中增加了测试的


难度。下图汇总了美团多业务、多技术、多App的一些典型场景。




在产品交付上线的过程中,测试的占比也是非常大的,甚至大于总时长的30%。如下图所示,整个测试包括了冒烟测试、新功能测试、二轮回归测试、三轮测试。然而,现在需求测试绝大部分还是采用非自动


化的方式,这就使得人力成本变得非常之高。



另一方面,相比于2018年,2022年的测试用例数量增长近3倍,已经超过1万2千条(如下图所示)。同时,外卖的业务是“三端复用”,除了外卖App,还需要集成到美团App和大众点评App上,这样一来,


测试工作量就翻了3倍,业务测试压力之大可想而知。如果按照当前的增长趋势持续下去,要保障外卖业务的稳定,就必须持续不断地投入大量的人力成本,所以引入能够支持外卖“多业务场景”、“多App


复用”、“多技术栈” 特点的自动化测试工具来提升人效和质量,势在必行。



2. 项目目标

  为了解决外卖面临的测试困境,我们尝试去探索一种零学习成本、低维护、高可用的自动化测试方案,能够支持外卖复杂多变的测试场景,它必须同时满足下面几点要求:

  易用性:工具/平台的上手难度,使用复杂度应该尽可能的低,因为自动化测试的目的是提效人力,而不是增加人力负担。

  平台支持:移动端至少需要覆盖iOS和Android双平台,同时基于外卖的业务特点,不仅需要对Native支持,也需要支持Mach(自研局部动态化框架)、H5、React Native、美团小程序等技术栈。

  稳定性:自动化测试用例的执行需要有足够的稳定性和准确性,测试过程中不应因测试工具本身的不稳定而出现稳定性问题。

  维护成本:维护成本很大程度上决定了测试工作量的大小,因需求产生变动或架构重构等问题时,用例的维护成本应该尽可能的小。

  可扩展性:当测试方案不能满足测试需求时,工具/平台应具备可扩展的能力。

  3. 方案选型

  自动化测试工具那么多,自研是重复造轮子吗?

  针对终端的UI自动化测试工具/平台可谓“屡见不鲜”,市面上也有很多相对成熟的方案,相信大家都有用过,或者至少有所耳闻,但这些方案是否能真的满足我们提效的诉求呢?以下我们挑选了三类非


常具有代表性的自动化测试工具/平台 - Appium、Airtest Project、SoloPi进行了分析,来帮助大家对自动化测试技术建立一个认知:




Appium是一个开源工具,用于自动化测试iOS手机、Android手机和Windows桌面平台上的原生、移动 Web和混合应用。它使用了各系统自带的自动化框架,无需SDK集成,Appium把这些系统本身提供的


框架包装进一套API——WebDriver API中,可以使用任何语言编写Client脚本向服务器发送适当的HTTP请求。这让不同技术栈的人员都能快速上手编写测试用例,可以选择自己最为熟悉的语言,但是对于没


有语言开发基础的人来说,还是有一定学习成本,而且这种方式在多人协作时并没有太大作用,为了保证自动化用例的可维护性,团队内部应该需要统一脚本语言。值得一提的是:Appium在iOS、Android和


Windows 测试套件之间可做的一定程度的复用代码。但是由于不同端界面及元素定位的差异,这往往是不现实的,更无法保证测试的准确性,所以这种所谓的“跨端”就变得毫无意义。

  Airtest Project是由网易游戏推出的一款自动化测试平台,除了支持通过系统自带的自动化测试框架,还支持了通过图像识别的方式,对于非基于原生UI系统的一些游戏引擎提供了SDK的支持。其上手难


度稍低,可以一定程度上通过IDE进行相关操作来生成简单的脚本指令。Airtest虽然基于图像进行控件识别,为跨端提供了一定的可能性,然而图像识别并不能达到人眼识别的准确度,除此之外移动端页面的


构成和游戏页面也存在不小的差别,页面元素的展示规则和样式受屏幕分辨率影响较大,单纯依靠图像识别来进行元素查找成功率不高,无法保证测试的准确性。

  SoloPi是一个无线化、非侵入式的自动化测试工具,通过录制回放的方式进行UI自动化测试,SoloPi虽然只支持Android,但是在录制回放的这种方式中,还是极具代表性的。传统的自动化测试工具由于


需要编写测试脚本,所以存在着一定的上手难度(Airtest还是存在代码编辑的),便产生了SoloPi这种纯基于录制回放的自动化测试方式,将用例的所有操作事件进行录制,生成一个完整的录制脚本,通过对


脚本的回放来还原所有的操作,从而进行自动化测试。但是,这种方式只能记录操作,而不能记录数据,在外卖这种数据驱动展示的场景下无法满足测试要求。并且外卖的业务要复用到美团App和大众点评


App中,不同App存在部分视图和逻辑性的差异,SoloPi也无法支持我们“一端录制多端回放”的测试场景。

  可以看出,以上这些自动化测试工具/平台对于数据记录,环境模拟、维护成本、跨App复用等方面,都是有所欠缺的。所以无论是哪种方案,在易用性、维护成本、稳定性、可扩展性以及最终的测试效


果上,都无法满足我们对自动化测试的需求。我们并不是为了自动化而自动化,而是要解决实际的提效问题。

  那么,怎样才能确定一个自动化工具/平台的可用性,并长期落地去使用自动化,带着上述提到的较高门槛的上手成本、操作繁琐的环境模拟、差强人意的测试成功率、定位模糊的测试缺陷、难以维护的


用例脚本等几大重要痛点,本文我们将介绍美团外卖自研的测试平台——AlphaTest,都具备哪些能力以及是如何解决这些问题。






页: [1]
查看完整版本: 外卖平台的自动化测试实践与落地