关于自动化:场景模型驱动自动化测试在盒马的探索及实践

6次阅读

共计 5280 个字符,预计需要花费 14 分钟才能阅读完成。

简介:盒马业务有如下几个特点:线上线下一体化、仓储配送一体化、超市餐饮一体化、经营作业一体化、多业态与平台化。在以上的种种原因,生鲜及物流体验是盒马的特点,但仓储配送一体化作业中,如何能更高效的晋升测试效率也是盒马品质团队的重点摸索。

作者 | 钦伟
起源 | 阿里技术公众号

一 引言

盒马业务有如下几个特点:线上线下一体化、仓储配送一体化、超市餐饮一体化、经营作业一体化、多业态与平台化。

在以上的种种原因,生鲜及物流体验是盒马的特点,但仓储配送一体化作业中,如何能更高效的晋升测试效率也是盒马品质团队的重点摸索。

二 背景及待解决问题介绍

1 盒马自动化体系倒退新挑战

在盒马,后期业务在狂奔,自动化根底较单薄,近三年来,通过盒马人的一直冲破,曾经具备了肯定的自动化体系,因为盒马业务的特点,盒马属于麻雀虽小但五脏俱全,有独立 App,有自营的物流体系,有本人的供应链体系,因而在自动化方面,咱们从最根底的单元测试、到接口测试、再到畛域场景自动化及跨畛域的自动化以及端的自动化方面都有积攒。即便如此,咱们的代码覆盖率在超过 50% 之后很难有比拟大的晋升,另外,代码的笼罩并不能全副代表业务场景的笼罩,一些线上漏测的问题依然偶然产生,因而,对于盒马来说,基于较全场景的测试是必须。

在这种背景下,盒马品质团队进行了较全场景驱动自动化测试的摸索,利用线上数据建设测试场景模型。上面会更加具体的进行讲述。

2 业务场景全笼罩的挑战

从业界来说,比拟难的也同样是如何用比较简单的伎俩做到业务的全场景笼罩,对盒马来说也同样。

首先,盒马的业务场景泛滥,包含 inbound 与 outbound 全流程,端到端的全流程多业态,含 O2O 模式、B2C 模式、F2 模式、Mini 模式、Mall 模式、X 会员店模式、产地量贩模式、盒马邻里模式等。这么多种业务场景很难一一枚举。

其次,业务场景自动化编写效率也较低,在人工枚举场景,脚本化实现,这种效率比拟低,场景难以枚举全,容易脱漏。

业务场景的实在覆盖率也难以度量,人工枚举的业务场景极易有脱漏,线上已频发漏测问题,无奈笼罩线上全量场景,同时测试的场景覆盖率难以掂量,须要找到线上场景分母。

传统自动化来说,校验个别基于字段级别,容易脱漏。传统校验形式依据预期一一字段加断点校验,新增字段或缺失字段极容易造成脱漏。

因而,在这种多种挑战下,咱们尝试了基于线上海量数据模型构建全行经模型,同时用场景驱动自动化执行的计划。

3 场景模型驱动自动化的思考

回到本文初心,咱们心愿通过线上场景来驱动自动化测试的形式进行测试场景的全量笼罩。思路如下:

一、场景业务模型构建:重点在于如何自动化的构建出场景化的模型数据。大抵的思路为:1)线上执行过后的订单数据存在诸多特色;2)依据线上落盘数据进行特征值剖析;3)构建数据特色汇合与对应的样本数据;

二、执行链路构建:重点在于如何主动构建出克执行的零碎调用链路。大抵思路为:1)基于落盘数据获取线上执行全链路的所有鹰眼;2)依据鹰眼 (trace) 及零碎调用关系构建执行链路;3)执行链路编排构建链路执行能力;

三、执行后果的校验:重点在于如何主动的进行后果数据的一致性校验。大抵思路为:1)所有的数据最终会长久化落盘;2)基于长久化数据进行全字段比照;3)疏忽规定配置;

三 解决思路

1 模型驱动自动化解决策略

联合上文的背景及思考,推演出本文的模型驱动自动化解决策略蕴含:特征提取、场景建模、链路执行、后果验证、覆盖率剖析、缺点定位及报告。

2 业务场景建模问题定义

针对业务场景模型,咱们首先要思考咱们面向的是什么零碎,零碎的法则是什么,该零碎的哪些数据能够被规则化进去的,如何规定进去,最终如何表白,带着这些问题咱们一步步介绍咱们的解决方案。

业务场景建模 - 特征提取办法

本节重点介绍特征提取的通常办法,以后阶段,咱们是以数据库的全量数据作为特征提取的起源,当然不少团队也在尝试应用接口调用过程中的全量入参数据。具体为:

1)DB 全量数据查问:通过 odps 查问形式获取全量多表关联数据,用以作为剖析的数据源。

2)数据的聚合:对于查问的数据进行信息补齐后,字段打平,采纳聚类的形式针对每一字段进行聚合,以呈现无限数量的字段作为特色字段进行基线特色的积淀,对于离散型的数据会抉择适合的区间进行分段解决。

3)特色举荐:针对上述聚合的内容进行举荐,此局部会将潜在的特色字段全量进行举荐。

4)特色基线积淀:基于举荐的数据,联合专家教训进行特色字段的选取,并进行标注抉择为基线特色。

接下来一一依据细化场景进行介绍。

业务场景的建模 - 特征提取过程

如下图所示,为数据表数据示例,从数据层面能够看出,有一部分字段是有意义的,如 isParent 是否主单,businessType 业务类型,orderTerminal 订单终端类型等等,也有一部分字段是离散且无意义的,如 orderId 订单 ID,itemId 商品 id,GMTCreate 创立工夫等。特征提取的过程指标就是主动的提取出有意义的字段,疏忽无意义的字段。

理论实际过程中,咱们通过一直的迭代以晋升特色的精准度与全面度,具体的外围几个提取过程为:

1、特色裁减:元数据中的字段有可能为原始数据,这部分须要关联到具体数据表并找出有意义的字段。

2、特色分类:依据数据的聚合,对于有意义的离散类型数据,比方订单总价,往往咱们心愿失去零价订单,高值订单及一般订单三类,这三类是未主动打标的,须要咱们聚合出范畴在特征提取过程中动静辨认并分类。

3、特色聚合:依赖于特色的规定,进行所有字段的聚合,最终依据枚举类型字段呈现次数进行无效判断,目前咱们设定的值为 20,这个值能够动静调整,仅仅为参考值而已。

4、特色决策:针对聚合进去的潜在特色,进行基于代码、教训、默认值等多种维度的判断,最终进行特色的举荐,这部分因为业务属性比拟重,咱们在举荐进去的同时,最终更依赖于专家教训进行字段的最终判断,目前举荐进去和最终驳回的比例约为 50%,咱们后续会降级算法和参考维度进一步晋升驳回率。

接下来,针对以上流程中关键环节会进行一一介绍。

1)特征提取 - 特色裁减

本文举例商品及仓的场景,对于商品依据商品 id 关联找到对应商品明细,再将商品明细中有意义的字段,比方:是否是危险品、是否是紧急配送商品、商品的标签、商品的状态等等查问进去关联主数据,对于仓关联查出仓的类型和仓的标签,如此可基于场景的主模型数据进行分支场景的多层级关联,将须要关注到的场景维度值尽可能多的纳入到数据模型中。

2)特征提取 - 特色聚类

本文举例对于加工时长 bomCost 字段,对于标品来说是 0,对于加工品来说,比方鱼类,须要减少 15 分钟宰杀作业工夫,对于凉拌菜等须要减少 10 分钟进行制作等等。此处会独自将特定字段进行区间分类,如此将分类后的值进行特色的开掘根底,即可将离散的值变得有意义。

3)特征提取 - 特色聚合

将所有数据进行裁减结束后,将所有相干字段进行打平解决,依据雷同字段进行值的聚合,雷同值记录次数,不雷同时进行归类,如此便可将相干数据进行初始化的数据处理,而后依据聚合进去的数据进行默认值个数的判断进行特色的举荐。

4)特征提取 - 特色决策

依赖上述聚合进去的全量潜在特色数据,在特色决策模块会基于代码中形象出的特色字段进行匹配,当然最重要的是依赖于业务畛域的测试专家教训进行被动辨认标注,最终积淀出畛域的基线特色汇合。

以盒马某业务畛域为例,下图展现的是最终无效的特色汇合,依据基线特色,咱们的做法是都标注了具体的含意,如此,便可很容易依据一个畛域的业务特色辨认出该畛域的数据场景。

同样,依据特色状况,也能够刻画出每个畛域的特色模型,如下图所示,很轻松的看出畛域的全量特色,同时依据每个特色,能够清晰的看出每个特征值的散布占比状况。

业务场景建模 - 场景提取

有了基线特色后,基于基线特色造成解析规定,再将全量数据基于特色规定匹配解决,对于命中规定的进行打标解决,即可辨认出匹配基线特色的数据汇合,这些数据汇合对于每一条数据代表的特色组咱们称之为场景。具体的解决流程如下图所示。

进行特色规定匹配解决后,可辨认出场景集,这些场景的汇合对咱们来说至关重要,因为这些场景汇合从肯定意义上要代表咱们的线上全量场景。如下图所示,除了有场景的举荐,还有场景对应的数据的举荐。这些数据后续咱们会进行解决并进行执行链路的驱动。

以下为举荐以驱动链路自动化执行的场景及数据状况。

3 执行链路剖析及构建

前文有介绍盒马很多业务畛域都是链路式驱动类型,所以对于如何构建出畛域的执行链路很要害,咱们的思路是通过零碎的调用日志及鹰眼 trace 相结合的形式进行聚合荡涤失去畛域的大略执行链路举荐,这外面的举荐会有多种状况。整体的思路如下图。

执行链路举荐进去后,这时候的链路还是无奈执行的,咱们的指标是依据举荐可能主动生成执行链路,只是以后基于停顿的思考,咱们先将举荐的链路进行人工链路编排以执行场景模型中的数据。以盒马 ” 履约 ” 畛域的零碎执行流程链路为例,如下,咱们将对所有业态的数据的解决进行对立流程编排,如此,即可更大限度和实在的解决模型数据。

4 数据校验

数据执行实现之后,对于自动化来说一个最要害且有意义的事件是进行后果的校验,为了可能更全面的比对后果,咱们将执行链路进行线上生产环境和测试环境的双向执行,对于两套环境的后果数据进行全量的数据比对,可将比对后果准确到像素级别。

5 场景覆盖率剖析

针对场景覆盖率,咱们将场景模型所转换的测试数据对应的全量场景与线上全量场景进行比拟得出场景覆盖率。在往年的 OKR 指标下,咱们也是指标将业务场景覆盖率达到 80% 以上。

四 产品解决方案

1 产品解决方案架构图

联合以上外围模块的介绍,零碎的产品解决方案框图如下所示,基于外围的场景模型驱动自动化执行过程为基准,分为业务场景建模模块、测试数据生产模块、回归策略执行抉择模块、链路用例执行、后果校验以及后果推送模块。基于运维视角,蕴含统计大盘、用例治理等。

在盒马场景摸索的场景模型驱动自动化,曾经在交易、履约、商品、配送、自提等诸多畛域进行了实际,并获得了肯定的成绩。同时在公布回归、小量数据的常规化压测、零碎重构、线上业务巡检等诸多场景中取得了不错的应用。

五 实际后果

基于场景模型驱动自动化的模式,曾经在盒马事业群内多个团队进行了推广接入应用,整体上累计积淀无效的场景化用例 2000 以上,场景的特色覆盖率均大于 90%,各个领域新接入业务的自动化构建老本直线升高 80% 以上,无效的解决了传统脚本形式的人工依赖过重,引流形式无奈笼罩链路场景的问题,也成为团队内重要的公布前的回归可信赖保障伎俩。

1 在盒马交易畛域的实际

盒马交易域是比拟早的实际方之一,基于上述计划,交易域进行了整体的计划对接,积淀了大量的场景及回归用例。尤其交易畛域在覆盖率晋升方面做了较多的工作。

在交易畛域的特色覆盖率的晋升通过了以下几个阶段,初始的测试单据(日常测试单据 + 链路自动化单据)特色覆盖率仅 50% 左右,覆盖率的确不高,通过覆盖率报告的剖析发现,除了的确无单据笼罩的特色,还有一类问题是有单据笼罩然而平台无奈匹配上的特殊字符类特征值或不可穷尽枚举类特征值,通过二次解决后,特色覆盖率进步到 65% 左右;第三阶段,现有的全业态全场景用例构建进去后覆盖率晋升到 90% 左右,残余的 10% 特色根本是线上特定期间小概率呈现场景阶段性单据没剖析到或临时无奈构建数据的特色,通过指定单据有针对性地补充后特色覆盖率达到 96%,至此覆盖率达到咱们冀望的 95% 以上,基线用例搭建实现。

因而,从最终后果看,交易畛域属于基于最终后果反推过程执行,整体接入过程,基于场景构建与链路编排的执行能力,联合本身能力的构建,接入过程约三周,举荐场景累计 2000 多例,对 8 种业态进行全面撑持,可能做到疾速的回归笼罩,很好的做到需要的高质量继续交付。

2 在盒马其余典型畛域的实际

在商品畛域,从全新的畛域对接,整体投入 2 天,实现 500+ 线上场景的接入,整体投入老本降落高达 90%,代码覆盖率在原有脚本自动化根底上晋升了 28%,疾速达到 50% 以上。

在履约畛域:整体积淀场景化链路用例 1000+,成功率 95% 以上,特色覆盖率 95% 以上,链路的仿真精准度 90% 以上,全面保障履约域的品质。

在配送畛域:配送域积淀场景化链路用例 300+,作为作业操作的零碎,链路场景的覆盖率 97% 以上,特色覆盖率 100%,新业务的自动化老本降落 80% 以上。

六 将来瞻望

基于场景模型驱动自动化实现,只是开始,远没有终结,后期只是针对一部分畛域进行了摸索实际落地,接下来心愿可能扩大更多畛域的同时,更加深刻的开掘自动化用例主动生成及测试数据保活的能力,使之可能更好的服务好盒马的各团队业务,也心愿通过本文的分享,启发更多的团队一起投入进行摸索并做出尝试。

七 结束语

本文的摸索计划前后历时近一年半的工夫,从 0 开始投入,团队也累计多人参加,投入虽大,但给咱们的品质保障工作带来了不错的回报,接下来的工夫里也会持续前行摸索,敢于尝试。

原文链接
本文为阿里云原创内容,未经容许不得转载。

正文完
 0