写点什么

有赞业务中台测试团队介绍

  • 2020-03-15
  • 本文字数:2536 字

    阅读完需:约 8 分钟

有赞业务中台测试团队介绍

一、团队概况

有赞帮助每一位重视产品和服务的商家成功,目前旗下拥有:有赞微商城、有赞零售、有赞美业、有赞小程序等 SaaS 软件产品,适用全行业多场景,帮商家网上开店、网上营销、管理客户、获取订单。


有赞业务中台测试团队按照职责划分为六条线:交易组、营销组、用户赋能组、商品大数据组、基保工具组和稳定性组,各组职能如下:



接下来给大家介绍一下中台测试团队的质量保障体系以及我们在测试效率提升上做的事情。

二、中台质量保障体系

在定义里面测试是对软件规格说明、软件设计和编码的最后复审。但软件质量不是测出来的,而是贯穿整个软件开发生命周期,需要各方配合,测试环节的目的只是在产品交付之前尽可能多的发现问题,测试是一个找错的过程,但无法保证经过测试的代码一定正确,无法证明程序无错。为了保证尽可能地交付高质量软件,我们会要求测试人员介入软件整个生命周期的各个关键节点,如下图所示:


2.1 需求阶段

做正确的事比正确地做事更重要,问题发现越晚,修复的成本就越高,在需求阶段测试左移,开发测试产品一起参与需求评审,测试参与技术评审,提前发现设计问题、可测性问题,当然这会需要开发和测试有比较强的需求分析能力和测试分析能力。

2.2 开发阶段

我们会提供冒烟测试用例,并要求开发在提测之前完成执行,有两个目的,一是减少提测的轮数,提测打回的次数越多,资源浪费就越多;二是很多开发不是不想测而是不知道测什么,冒烟测试阶段测试会给开发用例,可以帮助开发梳理要自测的用例。在冒烟测试执行过程中,开发可以跟测试确定一个合理的冒烟用例数。另外关于冒烟质量的评价,我们有提测打回的机制,3 次打回需求可以不测。


开发阶段,我们对于核心应用的静态代码扫描以及单测也有一定的要求。



上图是 Martin Fowler 博客里面截的测试金字塔,越是上层的测试,就会耗费越多的精力、时间和成本。假设我们在验收阶段发现了问题,这个时候修复代码会导致之前测过的功能很可能需要重新测试一遍,项目延期的风险很高,而且 bugfix 有引入新 bug 的风险。所以我们希望在单测或者静态代码扫描阶段可以尽可能发现问题,降低成本。

2.3 测试阶段

中台需要提供各种能力到上层,目前我们整体的用例量 10000+,如此庞大的用例量无法通过单纯的功能测试进行很好地质量保障,搭建完善的自动化保障体系非常重要。



除了要求各应用的单测覆盖率和有效性以外,我们会花费较多精力在不同维度的集成测试上,如上图所示,其中展现层的业务编排通过集成测试和拨测系统进行保障,这里面还有外部调用的情况,比如电商、零售,所以我们的集成测试还会包含电商零售的 P1P2 场景。在 UI 层,业务稳定的线,会做一部分 UI 自动化,覆盖核心场景。


在这个环节,部分业务线会根据项目情况做专项测试,包括:异常测试、性能测试、安全测试和兼容性测试。另外在中台测试组每月或每季度会成立专项测试小组专门执行对应的专项测试。

2.4 发布阶段

在发布阶段,我们提供了快车发布流程、SOA 合并发布流程和 iron 公交车发布流程,各线根据业务实际情况会做微调,尽量精简并适合各自业务特点的发布流程把控。这样做的好处显而易见,上车的功能会经过测试的二次 check,跟分开单独发相比,质量更有保障,原先多次测试介入合并成一次,更能节约测试资源。


此外根据项目情况,可以选择灰度发布,灰度发布会在生产环境稳定集群之外,额外部署一个小规模的灰度集群,并通过流量控制,引入部分流量到灰度集群,进行正式生产发布前的灰度验证。流量控制可支持百分比、店铺 ID 等,如果灰度发布验证有问题,则流量重新切回稳定集群即可。


针对应用的不同情况,还可以接入流量回放平台,采集线上请求到预发环境执行,然后对比线上和预发响应,如果响应结果不一致则判断可能是预发部署的代码分支有 bug,加速回归速度。

2.5 上线阶段

在这一环节,主要通过线上业务监控和拨测系统进行质量防护,线上拨测的用例是场景化的,即使使用量非常少的业务场景也能发现问题,但不足的点在于无法发现一些特殊店铺才会触发的问题以及一些偶现问题,需要业务监控进行补充。针对前端核心场景,也会有部分的 UI 自动化运行。

三、中台测试效率提升

为了提升大家的测试效率,我们开发了很多工具。部分也在测试博客内做了详细的介绍,篇幅有限,简单介绍几个。

3.1 测试平台

测试平台包含数据工厂(https://tech.youzan.com/dmm-develop/)、用例平台、mock工厂、云测平台、测试报告等。大家可以点击到具体的文章查阅详细设计思路。


3.2 混沌工程

微服务化后,快速迭代的门槛越来越低,但是对复杂系统稳定性的考验却在成倍增长,在复杂的分布式服务体系中,故障发生的随机性和不可预测性都大大增加了。混沌工程可以提高系统弹性,通过设计和执行一系列实验,帮助我们提前发现系统中潜在的问题,除了常规故障注入,也可以探究更多其他的非故障类的场景。关于混沌工程的介绍可以看《混沌工程 - 软件系统高可用、弹性化的必由之路》

3.3 持续交付

为了让项目更有质量地交付,我们深度参与并设计了持续交付流程,实现底层调度逻辑,将质量保障策略融入整个 pipeline,让产品交付的质量得到更好的保障。


3.4 公交车系统

公交车系统的作用是为了让整个发布测试流程更有效率,同时通过将多人变更合并发布,节约测试轮次。另外公交车系统与持续交付系统也做了一些融合,比如开发自测的需求可以在发车时及时关注到自动化测试结果。


3.5 线上拨测系统

在介绍质量保障体系时提到过上线后的节点,我们主要通过线上业务监控和拨测系统进行质量防护,关于拨测系统的详细介绍可以见《有赞线上拨测系统实践(一)》

3.6 性能测试平台

性能测试平台目前分成单接口压测和全链路压测两块,除了让压测过程更加简单便捷以外,还提供了自动生成压测结果图表的功能,方便大家生成压测报告。

3.7 度量平台

我们提供了数据度量平台,通过分析项目过程、质量数据以及上线以后的各类数据表现,判断出不同纬度的质量情况以及软件开发生命周期中出现的问题,方便及时调整优化,这部分数据比较敏感,暂时不给截图了。

3.8 覆盖率与精准

我们目前用的覆盖率工具是 JaCoCo ,在之前的博客里面,也跟大家介绍过我们针对 JaCoCo 做的改造,使它支持计算增量代码覆盖率。另外结合调用链,我们做了精准测试工具,可以通过代码改动,精确评估影响范围。


2020-03-15 20:201678

评论

发布
暂无评论
发现更多内容

从vivo的创新方法论中,读懂高端突破的“因果”

脑极体

低代码实现探索(五十四)低代码的描述文本

零道云-混合式低代码平台

React源码分析(三):useState,useReducer

flyzz177

React

深入react源码看setState究竟做了什么?

flyzz177

React

AH协议

穿过生命散发芬芳

12月月更 AH协议

2022-12-15:寻找用户推荐人。写一个查询语句,返回一个客户列表,列表中客户的推荐人的编号都 不是 2。 对于示例数据,结果为: +------+ | name | +------+ | Wil

福大大架构师每日一题

数据库· 福大大

聊聊产品中的状态机设计

产品海豚湾

产品经理 产品设计 产品开发 需求分析 主业务流程梳理

细说react源码中的合成事件

flyzz177

React

明道云联合契约锁共建人事场景电子签约解决方案

明道云

【从零开始学爬虫】采集收视率排行数据

前嗅大数据

大数据 数据采集 爬虫软件 爬虫教程 数据采集教程

React Context源码是怎么实现的呢

flyzz177

React

用javascript分类刷leetcode23.并查集(图文视频讲解)

js2030code

JavaScript LeetCode

2022面试官常考的前端面试题

loveX001

JavaScript

手写一个Redux,深入理解其原理-面试进阶

beifeng1996

React

2022全球边缘计算大会,火山引擎荣获“优质边缘云服务提供商”称号

火山引擎边缘云

云原生 CDN 边缘计算 边云协同 火山引擎边缘计算

极客时间运维进阶训练营第八周作业

9527

阿里前端常考面试题集锦

loveX001

JavaScript

js事件循环与macro&micro任务队列-前端面试进阶

loveX001

JavaScript

2022前端高频react面试题集锦

beifeng1996

React

通过WSL2运行GUI程序

吴脑的键客

WSL2 GUI

架构实战 - 模块3作业

mm

学生管理系统架构 #架构实战营

React源码分析(二)渲染机制

flyzz177

React

前端leetcde算法面试套路之堆

js2030code

JavaScript LeetCode

js异步编程面试题你能答上来几道

loveX001

JavaScript

KCL 与其他 Kubernetes 配置管理工具的异同 - Kustomize 篇 [一个自研编程语言能做什么?(系列 2)]

Peefy

开发者 工具 编程语言 Kubernetes Serverless #DevOps

明道云携手衡石科技共建企业应用数据分析联合解决方案

明道云

前端leetcde算法面试套路之回溯

js2030code

JavaScript LeetCode

零代码平台在政府智慧城市领域的应用

明道云

2022年的各大平台小游戏生态发展到哪一步了?

FN0

游戏开发 小游戏开发 小程序游戏开发

Linux RT 进程引发内核频繁卡死的优化方案

火山引擎边缘云

云计算 Linux 云原生 边缘计算 火山引擎边缘计算

React源码分析1-jsx转换及React.createElement

flyzz177

React

有赞业务中台测试团队介绍_文化 & 方法_Winta_InfoQ精选文章