“AI 技术+人才”如何成为企业增长新引擎?戳此了解>>> 了解详情
写点什么

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

  • 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:201047

评论

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

PostgreSQL技术内幕(九)libpq通信协议

酷克数据HashData

高效运营新纪元:智能化华为云Astro低代码重塑组装式交付

华为云PaaS服务小智

云计算 软件开发 华为云 华为开发者大会2023

华为云出品《IDEA-Plugin-开发手册》电子书——学完即会场景设计

华为云PaaS服务小智

开发者 华为云 编程学习 华为开发者大会2023

使用华为云开发者插件一键部署应用到ECS

YG科技

什么是从人类反馈中强化学习(RLHF)?

高端章鱼哥

LLM RLHF 大语言模型

从Vue到无限可能:数智时代下的低代码快速开发之旅

快乐非自愿限量之名

架构 Vue 低代码 数智化

Docker学习路线4:Docker基础知识

小万哥

Java c++ Go Docker 容器

weblogic基本概念、安装、创建域、服务器、数据源、部署应用

zhengzai7

weblogic

强化学习是否言过其实?

高端章鱼哥

强化学习 计算机程序

插件界的全家桶!对接华为云能力就用它了!

YG科技

我和“华为云”有个约会

YG科技

深入C++常用的三个智能指针

攻城狮Wayne

Git代码管理、提交、问题、仓库创建与管理

zhengzai7

git 代码管理

社区新手小伙伴测评第二弹 | 使用 ChatGPT 可以帮助完成 IoTDB 的写入和查询吗?

Apache IoTDB

时序数据库 IoTDB Apache IoTDB ChatGPT

用ChatGPT搞定12 种编程语言:看看它的表现如何

互联网工科生

人工智能 编程语言 ChatGPT

机器学习之PyTorch和Scikit-Learn第2章 为分类训练简单机器学习算法

Alan

人工智能 机器学习 PyTorch scikit-learn 多层感知机

《面试1v1》java注解

JavaPub

Java 面试 注解

Nginx+Uwsgi+Django+Mysql部署项目

zhengzai7

MySQL Linux mysqldump 数据备份

详解:为什么瓴羊QuickBI被誉为国内口碑最好的BI工具

巷子

成功MLOps具有的五大共同特征

这我可不懂

机器学习

直播 | SDS 容灾方案,让制品数据更安全

CODING DevOps

数智时代加速!云存储与低代码开发:超强联盟引领技术革新

不在线第一只蜗牛

低代码 云存储

华为开发者大会:软件开发小白的华为云云上初体验

YG科技

《深入浅出Java虚拟机 — JVM原理与实战》带你攻克技术盲区,夯实底层基础 —— 吃透class字节码文件技术基底和实现原理(核心结构剖析)

洛神灬殇

Java JVM 深入理解JVM 挖掘底层原理

Weblogic控制台数据源密码的脚本化修改

zhengzai7

Shell 密码 控制台 weblogic 数据源

关于商品推荐方法及系统的思考

zhengzai7

推荐系统 本质

基础推荐算法概述

zhengzai7

推荐系统 推荐算法

机器学习之PyTorch和Scikit-Learn第一章 赋予计算机学习数据的能力

Alan

人工智能 机器学习 PyTorch scikit-learn

适配各类大模型应用!手把手教你选择 Zilliz Cloud 实例类型

Zilliz

Milvus Zilliz 向量数据库 zillzicloud

2023-07-13:如果你熟悉 Shell 编程,那么一定了解过花括号展开,它可以用来生成任意字符串。 花括号展开的表达式可以看作一个由 花括号、逗号 和 小写英文字母 组成的字符串 定义下面几条语

福大大架构师每日一题

福大大架构师每日一题

详解:瓴羊QuickBI为什么是国内口碑最佳的BI工具

对不起该用户已成仙‖

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