1688商品发布框架升级,海量规则如何覆盖?

简介: 阿里QA导读:1688商品发布系统升级发品框架GPF,面对商品模型复杂度极高,发布的海量场景、多重业务逻辑如何覆盖?本文从手工测试到自动化测试,以及完善的质量保障方案一一解答。

1、项目背景

1688商品发布系统运行多年,架构逐步腐化,业务逻辑冗余复杂,开发维护成本居高不下。加上1688新赛道(加工定制、工业品、分销)不断孵化,如何降低不同赛道之间在商品管理的业务逻辑耦合,并让业务侧开发同学也能参与进来,提升项目迭代效率,对商品发布架构提出了更高的要求!2017年淘系BC融合后,淘宝、天猫商品发布由业务中台团队统一承接,过程中孵化了统一发品框架GPF,并通过该框架支撑了集团大部分部门的商品发布工作。GPF框架可以快速搭建商品发布业务,通过流程、组件的复用极大提高开发效率,并支持流程、组件层面的定制,保障业务之间相互隔离不影响。考虑到1688现有商品人手短缺,长期来看没有资源维护独立框架,且中台GPF框架在多个部门运行日益成熟,最终方案选型使用GPF。

2、难点分析

2.1 商品发布的海量场景

1688类目体系组合规则:叶子类目*属性*业务场景*商家身份*购买服务*类目资质,需要覆盖的场景是一个庞大的笛卡尔集合,预计测试集数量级达千万。无法通过手工来全量覆盖验证。

2.2 商品发布的多重业务逻辑

商品发布过程涉及很多行动项,需要保证在特定类目与服务下,N多组件展示逻辑、判断逻辑、联动逻辑、标签数据等的准确性和一致性。

2.3 商品模型的高复杂度

商品模型可以具象化为一个JSON对象,部分商品模型格式化后可以达到数百行,该模型决定了商品发布表单是否显示正常、能否提交生成商品、后续依赖业务如交易等能否正常流转,错误的商品模型将会引发客诉、资损、阻塞交易等。

image.png

3、应对策略

3.1 手工测试

3.1.1 沉淀等价类规则(千万级别 --> 200+)

image.png

3.2 自动化测试(海量数据解决方案)

3.2.1 使用线上数据做回归测试

灰度开放阶段,提前获取线上计划灰度的类目下的商品,并转化成自动化用例执行

image.png

可以解决的问题:

  • 老版有,新版无;
  • 老版有,非必填;新版有,必填;
  • 老版无,新版有,且必填

不能解决的问题:

  • 老版无,新版有,且非必填;
  • 老版有,必填;新版有,且非必填

3.2.2 双发比对做回归测试

数据正确性校验

image.png

3.3.1 建设覆盖主干的自动化保障体系

  • 端到端的UI自动化(UI逻辑自动化和图片对比)
  • 接口自动化(待接入天启,录制回放对比)
  • 单测自动化(在探索基于gpf的组件化的单测能力)

3.3.2 开发迭代阶段,提升研发效率

image.png

4、总结分析

商品发布框架升级是一个比较典型的项目——海量场景/复杂数据模型/新老兼容,静下心做好抽象分析,准备好提效方案,棘手问题和繁重的工作自然迎刃而解。

商品发布海量场景,难以人工覆盖;商品模型大,难以人工校验模型准确。

人工梳理等价类,尽可能提升理论覆盖率;使用对比工具,提升模型比对效率。

采用线上流量数据,作为商品发布自动化入参,提升覆盖回归不同类目的效率。

image.png

过程问题分类:

分类1:特定的类目和服务下,新老版本发布页组件展示逻辑不一致

如:服饰项目、电脑项目、体育运动项目,新老版本产品销售信息组件展示不一样,且新版本发布的商品,在线上商品详情页面出错。

分类2:页面上组件联动,逻辑不一致

如:特定类目(饮料、数码产品等),计量单位组件新老版本不一致。

分类3:新版发布的商品出现部分打标缺失

如:GPF发布的商品出现官方直送标签丢失的现象。

分类4:特定类目下,新版本的组件判断逻辑错误

如:新版发布的商品起批量配置,没有做校验


相关文章
|
设计模式 前端开发 Java
总结丨Spring 源码学习,看这一篇就够了
在日常工作中,产品不断写业务需求,他们加班一天,我们开发就得工作一周来完成。 业务领域达到一定地步后,发现日常编写业务代码已经很难让我有突破性的进步,日复一日,担心自己变成一个业务代码生产机器,而无法面对新技术和环境变化。 同时也有危机感,长江后浪推前浪,自己不继续学习的话,很快就会有人超过。 而且我算是比较热心的好同学,喜欢帮别人解决问题和记录解决方案,所以不希望在别人问我工作中有什么常用的框架,遇到这个问题该怎么办,我却回答不上的感觉
8632 1
总结丨Spring 源码学习,看这一篇就够了
|
微服务
微服务迁移模式之Martin Flower绞杀者模式
绞杀者模式(Strangler Pattern)是一种非常流行的从单体系统向微服务迁移的策略,其主张通过用新服务替换特定功能来将单体系统逐步转换为微服务,一旦新服务已经能够代替原有旧有功能,就将原有功能组件绞杀(即彻底停用)。
3778 1
微服务迁移模式之Martin Flower绞杀者模式
|
3月前
|
人工智能 运维 Rust
最新版 Codex(终端 AI 编程助手) 功能介绍及接入阿里云百炼 Coding Plan、Token Plan 教程
在现代软件工程快速迭代的背景下,传统IDE体积臃肿、启动缓慢、操作繁琐,图形界面AI插件依赖可视化环境,无法适配纯终端远程开发、轻量化脚本迭代、服务器运维编码等场景。多数终端编程工具功能单一,仅支持基础代码补全,不具备项目全局理解、多步骤任务自治、批量工程重构、安全沙箱防护等高阶能力,且普遍存在海外模型访问不稳定、计费不可控、无法适配国内合规开发体系等问题。
1227 1
|
5月前
|
人工智能 前端开发 测试技术
Agent 时代的生产力悖论:当协作本身成为最大的瓶颈
文章内容基于作者个人技术实践与独立思考,旨在分享经验,仅代表个人观点。
Agent 时代的生产力悖论:当协作本身成为最大的瓶颈
|
人工智能 自然语言处理 Rust
【内附榜单】评估AI大模型的代码修复能力!Multi-SWE-bench:字节开源代码修复能力评估基准,覆盖7大主流编程语言
Multi-SWE-bench是首个覆盖Python外7种主流编程语言的代码修复基准,包含1632个真实GitHub问题样本,通过严格筛选与人工验证确保数据质量。
1606 0
【内附榜单】评估AI大模型的代码修复能力!Multi-SWE-bench:字节开源代码修复能力评估基准,覆盖7大主流编程语言
|
人工智能 自然语言处理 DataWorks
DataWorks Copilot 集成Qwen3-235B-A22B混合推理模型,数据开发与分析效率再升级!
阿里云DataWorks平台正式接入Qwen3模型,支持最大235B参数量。用户可通过DataWorks Copilot智能助手调用该模型,以自然语言交互实现代码生成、优化、解释及纠错等功能,大幅提升数据开发与分析效率。Qwen3作为最新一代大语言模型,具备混合专家(MoE)和稠密(Dense)架构,适应多种应用场景,并支持MCP协议优化复杂任务处理。目前,用户可通过DataWorks Data Studio新版本体验此功能。
3071 23
DataWorks Copilot 集成Qwen3-235B-A22B混合推理模型,数据开发与分析效率再升级!
|
SQL 运维 关系型数据库
阿里云DTS踩坑经验分享系列|如何使用DTS进行MySQL->ClickHouse同步
在使用阿里云DTS 进行MySQL->ClickHouse同步时,从准备工作,到创建任务,再到后期运维处理,新手可能会感到茫然和不知所措。为了帮助新手顺利过渡,本文将介绍使用阿里云DTS在进行MySQL到ClickHouse迁移时的最佳实践以及常见踩坑问题, 我们希望通过这篇文章,让您能无忧使用阿里云DTS进行数据迁移,享受ClickHouse带来的高效数据分析体验。
100069 13
阿里云DTS踩坑经验分享系列|如何使用DTS进行MySQL->ClickHouse同步
|
Java API
使用 Java 来实现两个 List 的差集操作
使用 Java 来实现两个 List 的差集操作
1926 3
|
消息中间件 存储 缓存
消息队列之 MetaQ 和 Kafka 区别和优势详解
本篇文章介绍MetaQ和Kafka这两个消息队列的区别和优势。
|
API 数据格式 JSON
宜搭应用与第三方系统数据互通怎么做?
使用 HTTP 连接器向宜搭的 API 发送请求。具体来说,您可以使用集成自动化中的 HTTP 连接器,设置其为定时触发,并将编写的脚本中转换后的数据作为 HTTP 请求的 body,发送 POST 请求到宜搭的 API 接口。
宜搭应用与第三方系统数据互通怎么做?

热门文章

最新文章