查看原文
其他

BVT系统建设

风飞 酷家乐技术质量 2022-11-08

背景介绍

概念引入

在微服务架构的前提下,服务数量众多,相互之间接口依赖关系错综复杂。在敏捷迭代的情况下,各个发布频繁;尤其是中台服务的变更影响范围非常大。

对于Tob公司来说,有很多SKA这种大客户,需要保障这些用户使用到的核心功能的稳定。而各个前台业务线功能的稳定性不仅仅依赖自身服务的稳定性,而且需要全链路的稳定。每个版本的发布,都需要对应的所有测试场景验证通过。

这样,BVT的概念就比较清晰了:版本验证测试(Build Verification Test),是为了确保版本上线前整体功能的正确性。

思路拆解

举个例子:当前对于定制大客户来说建模、工具设计、生产下单完整的链路构成一个使用版本,这其中除了定制功能之外,云图、商家后台、权限中台、方案中台等都会影响用户操作过程的稳定性。为了保障整个版本的稳定性,将链路进行分层,并集成整个链路的自动化回归能力。

具体来说:

  • 优先运行底层基础设施的自动化方案,确保整体框架的稳定性

  • 运行中台业务自动化方案,确保中台提供能力的正确性

  • 最后运行前台业务进行整体的链路调用验证。前台业务分为自身业务和协作业务:对于定制来说,自身业务即为定制提供的业务能力;协作业务即为前台相关业务方,如云图、BIM、国际化等承载定制业务方,在使用定制业务能力前的必经之路。

从链路自动化能力集成的实施上来看:对于基础设施、中台业务来说,集成自有的自动化方案、接口测试方案;对于前台业务除接口测试外,UI自动化等其他回归能力也是考虑集成的范畴。

BVT除去前台业务版本发布前系统性回归之外,可以有的额外收益有:底层基础设施变更、中台业务变更等,调用前台业务方的BVT能力验证对整体业务的影响。

实现方案

场景映射

对于前台业务来说,可以分场景整理业务关键点,从场景出发梳理从上游到下游全部链路应用相关接口,最后以场景为维度聚合形成版本验证测试集。

在梳理过程中,不同场景存在同时调用同一应用的情况。因此,在梳理完成后,对于某个应用关联的场景进行反向映射,这时有几个好处:

  • 当底层应用自动化构建失败时,能及时判断影响的业务场景

  • 对于不同的场景涉及的同一应用,只需要进行一次全量的自动化运行,节省运行时间

调用链梳理

  • 场景梳理完成后,根据各场景梳理顶层调用接口。

  • 可通过相应的hunter调用链查询顶层接口向下的依赖应用和依赖接口。

同时,在梳理过程中需要注意的点有:

  • 确保场景涉及的接口测试在各个应用的自动化中均存在,如果没有需要补充(包含其他团队)

  • 可只对强依赖的应用和接口进行梳理

可以借助精准测试平台的能力拿到接口间的依赖关系。

产品形态

核心能力

  • 通过录入场景及场景关联的顶层接口,解析接口调用链路,分析链路中涉及接口的自动化运行情况

  • 每天定时更新链路涉及接口自动化覆盖情况

  • 每周一、周四0点触发链路上各系统的自动化运行(release分支、sit环境)

  • 每6个小时收集最新运行结果

tips:什么是顶层接口?前端web页面直接请求的后端接口定义为顶层接口。通过顶层接口调用情况,可以判断业务层面的强弱依赖(如:前端调用某个接口失败,但页面依然能展示,业务核心流程不受影响)

BVT平台操作

场景管理

说明:提供场景录入、调用链分析、场景分析功能

1.场景录入:场景名称、归属敏捷组、优先级、场景包含的顶层接口、UI自动化场景

2.顶层接口涉及调用链路的自动化覆盖查询(推进链路上未覆盖自动化的接口进行自动化)

3.依赖链路强弱依赖设置:对于查询到的依赖链路,可以设置相关接口的强弱依赖标记。对于弱依赖接口,BVT运行时将忽略自动化结果校验

4.查询整个场景未覆盖的接口测试,推进整个场景自动化完善程度;场景评分的详细介绍如下:

  • 顶层api,总分80

    • 每个api覆盖和运行是否成功得分为4:1

  • 依赖api,总分20

    • 强依赖api分数占比80%

  • 如果只有UI自动化也是100分

  • 简单解释:如果顶层api全部覆盖并且全部运行成功则可得80分,所有80分是一个比较明显的阈值

5.场景分析可以统计本业务线的全局数据

通知设置

说明:对于BVT运行的结果进行通知人员设置:

  • 场景运行有失败:通知敏捷组测试owner(kaptain上设置后,更新即可)

  • 接口运行失败:通知应用owner(从cmdb拉test权限用户,准确的用户需要手动确定)

运行设置

支持接口测试和UI自动化配置,可以自助设置定时任务

  • 按照stage和域名来区分接口测试运行环境,一套环境包含本业务线场景涉及到的所有服务

  • 按照repo和分支来区分UI自动化环境

测试报告

说明:对BVT中涉及的接口自动化运行结果进行展示。

1.BVT报告解读:最新的BVT版本、当前版本运行结果影响的场景数目、当前失败的API数目、当前失败的UI自动化数目

2.BVT报告解读:从场景的角度看,哪些场景出现了异常

3.BVT报告解读:从接口的角度看,失败了哪些接口、影响了哪些场景

4.BVT报告解读:异常应用汇总。未接入持续集成:接口测试未接入或应用无接口测试自动化覆盖;触发CI失败:当前bvt会采样前一天的CI结果,若失败需要owner排查。

5.支持持续集成结果修复后,重新拉取,更新当日报告

6.可以查看接口、UI自动化运行详情,并支持手动触发和拉取最新运行结果

BVT通知

1. 如果一个敏捷组下的场景受到影响,会发送通知给敏捷组owner,敏捷组owner需要确认场景受影响情况
2. 如果应用持续集成失败,会发送通知给应用owner,应用owner需要确认持续集成失败原因,并判断是否需要立即修复
3. 每周五汇总当周未响应同学,上报给各自的mgr,汇总给总监。

服务管理

只统计被bvt场景依赖的接口中未覆盖或者自动化运行失败的,默认按照影响场景最多的顺序排列

如果接口新覆盖了或者失败已修复,点接口测试既可以触发运行

看板建设

场景维度

首先关注是场景数量,要与各业务线故障等级梳理出来的场景一致

需要通过场景自动化得分情况来衡量每个场景的自动化得分,对于顶层接口都没有覆盖完全的场景需要推动owner完善

接口维度

接口覆盖比例和数量,以及每个服务未覆盖的接口数是需要关注的数据,对于较多接口未覆盖的服务需要着重推动

版本运行情况

关心每个版本服务失败api数,各个业务线失败的场景数,以及CI触发异常的情况


总结展望

在BVT平台上沉淀下每个业务线的所有场景,随着业务的迭代也逐步完善;所有的场景又有UI、接口等关联关系。那么就可以跟线上巡检、监控等体系打通,当某个接口出现异常时,可以跟场景关联上,从用户的角度去看是否真的有问题。

在卡点方面也要做的更加严格:一个底层服务的变更,需要触发被影响到的上层业务的CI,当整个链路的场景都验证通过,才可以进行prod环境的发布。

总之在发布前BVT的运行结果将是发布卡点的重要依据;而在发布后告警、巡检等也将更加场景化,不仅仅是告知xx接口失败率超过百分之多少,而是告诉对应的owner,xx场景异常;这样可以立即进行验证、定位以及恢复。



推荐阅读


                                

公众号:酷家乐技术质量    知乎:酷家乐技术质量        

TesterHome:kujiale-qa (酷家乐质量效能)


您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存