基于强化学习的质量AI在淘系互动业务的实践之路

2024-03-17 03:48

本文主要是介绍基于强化学习的质量AI在淘系互动业务的实践之路,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!


导读:AI人工智能的概念由来已久,因为alphago在围棋领域击败李世石掀起了全世界范围内的AI热潮,最近又随着DeepMind破解蛋白质折叠难题这一诺奖级成果再次让我们发现AI已经进化到了如此强大的程度。与AI在学术界的关注度相反,工业界中AI的应用则显得悄无声息。但是深入到各行各业中却会发现,从人脸识别到物流路径规划,从服务器数据传输到数据安全,AI已经无处不在。

作为软件行业的重要组成部分,质量保障的技术体系经历了脚本CI时代/大数据测试时代,也正在向智能化时代演进。质量保障工作最主要的价值和目标,是全面找到业务的风险点,并围绕这些风险点构建解决方案。遗漏的风险也许就是毁灭拜占庭帝国的凯尔卡门,让产品的用户体验崩塌。

AI如果能类比alphago,在质量保障领域中做得比领域专家更为出色,才能让这一技术成长到奇点,真正改变质量行业。

互动的业务场景如盖楼最为大家所熟知的,本文将从互动的业务场景出发,介绍互动如何构建质量AI,并用质量AI解决了一系列业务痼疾,让质量AI落地生根。


背景&挑战


互联网电商中,迭代速度在竞争中能决定业务的生死。迭代速度和慢工出细活打磨用户体验看上去非常矛盾,在互动这种强用户体验的产品线矛盾更加突出。用户的游戏化体验是由一条条的用户行为路径的顺畅度和产品提供给用户的获得感来决定的,那我们就找到一个很好的切入点,如何用AI将用户行为路径全面模拟出来?

在解决这个问题之前,我们先来看看互动的业务场景。第一类是手淘上现有的三个典型互动产品,金币庄园,淘宝人生和芭芭农场。第二类是大促互动的产品,也就是大家都接触过的盖楼/养猫这样的大促互动。

这些互动产品的共同特点是极度追求用户的体验效果,不断在玩法上求新求变,没有那次大促大家会玩到不变的互动。同时电商场景下对迭代速度的要求也不断趋向极致,2个月需要完成一款其他游戏公司需要半年才能完成的作品。

在这种情况下,互动需要解决如下三个问题:

  • 环境:互动的测试环境数据构造除了基础的部署环境意外,还有大量的用户状态数据、规则配置数据和权益数据,可能构造一个拉100人在盖楼获胜的场景用例需要一整天而测试执行只需要1分钟。如何构造一个高频易用的环境?

  • 用例生成:互动的特色决定了大部分的功能都是新功能,是没有线上流量可以参考的,这种情况下大数据测试方案会陷入没有数据输入的困境。如何解决新功能的更全面的用例生成?

  • 资损:互动有大量的权益发放,基于现有基于对账的事后资损防控方案,在互动这样的巨量场景下只能说是亡羊补牢。如何提供事前更全面的资损风险识别方案?



构建基于强化学习的质量AI


这个时候再回过头来看互动产品的特色,无论是做任务升级领红包,还是拉人盖楼pk领红包,都是由一条条用户的行为节点构成的行为路径来构成,如果我们能把互动的产品按照一个个的行为节点解构成一个有向图,那互动的用例生成也就抽象成了如何构建一个有向图和求解有向图中的路径集的问题?环境问题是AI执行的前置条件,而风险包括资损风险和架构风险的探测则是AI的用武之地。

有了思路,我们再来一步步看如何让AI真正在业务中落地。

▐  高频易用的环境

现有测试环境的解决方案更多基于如何降低系统部署对于分布式系统的影响来解决,包括监控应用的部署/构造隔离的分布式系统的镜像环境/从变更管控角度管控部署的时间段等等,主要解决不同代码部署情况下的环境问题。对于互动这样迭代速度极致求快的业务,这些方案都还是成本太高。

互动的解决思路是不改变部署结构的情况下,通过数据隔离的方式来解决。

互动环境的的目标是隔离稳定和高频易用。

  • 隔离稳定:通过测试账号和影子数据库来实现流量隔离;通过系统架构改造,将互动所有的配置数据读取的方式进行收口,实现配置隔离,只有指定的账号能读取指定的配置。这样可以实现一套部署结构,同时允许正常的业务逻辑运行和测试流量执行,且互不影响

  • 高频易用:由于没有代码和部署解构的变化,环境的准备变成了测试数据包括配置数据的准备,理论上可以做到随备随用。

有了这样的稳定的环境,AI的落地才有了前提条件。


▐  基于强化学习AI的用例生成

既然互动的业务场景抽象成了基于行为节点的有向图构建,已经有了很多针对有向图的算法解决方案。这个时候深入业务的特点和诉求看看要解决的核心问题,再来选取合适的解决方案。

  • 新功能无输入或者少输入:互动的玩法大部分是新功能,能提供的没有大规模可以调用的线上请求数据或者日志数据,只有代码和代码相关的一些接口定义。

  • 要全面:盖楼这样的玩法的用户量级决定了遗漏的风险真的会摧毁整个产品的体验。生成的用例需要更全面,能否发现人难以发现的问题是一个很重要的衡量标准。

  • 自动化:智能化的前提一定是充分的自动化。从给定的输入到训练,从训练到用例生成,从用例生成到用例执行需要完成全自动化。

我们的解法是基于强化学习来构建用例生成的AI。

  • 新功能少输入:用户的行为节点分为两种,一种是无系统数据传输的比如页面的滑动等纯前端交互事件,另一种是有系统数据传输的如按钮点击,这一种我们定义为用户的有效行为。在系统实现上有效行为最后会变成对后端接口的调用。因此基于接口定义而不是基于请求数据来建立有向图模型能极大减少需要的输入。在互动的实践中,只需要配置好需要的接口和对应的入参类型即可。

  • 全面的用例生成:互动的接口调用我们认为是有先后顺序的,这是从接口的参数来体现的。因此有向图的路径构建问题,我们选用了强化学习来构建。这其中最关键的路径覆盖全面问题是一个十分复杂的问题,逻辑调用路径是代码接口调用路径和数据逻辑路径等众多因素的组合体。在互动的实践中,我们针对最急迫的冒烟用例覆盖问题,对探索策略也结合pagerank和dfs做了一些改进,同时对激励函数做了接口参数状态覆盖优先的优化。从最终的实践效果来看,发现了很多人容易遗漏的状态遗漏和动态概率计算问题。

  • 全面自动化:这里最重要要解决的工程问题是将算法跑出来的接口调用路径,转化成可以有最终用户使用的可重复执行的用例,这里不做赘述。


▐  体验还原

自动化生成出来的用例要最终在业务线产生世纪作用,提高易用性是关键。而提高易用性的关键是打通端到端,让生成出来的用例不只是数据,更要成为具像化的可交互的端上的效果。

受益于近几年前端的数据驱动架构演进的红利,我们可以方便地在工程上实现给定接口数据,即可在端上复现出对应的交互行为。结合图像断言等技术可以打通用例自动验证这个测试智能化的最后一公里。



质量AI解决业务问题


当我们在互动场景中解决了环境的问题和用例的自动化生成问题,在工程上也打通了端到端的体验还原,构建了基于强化学习的质量AI,需要真正解决业务中的问题才能业务真正带来价值。

▐  权益链路预跑

资损问题最近两年成为了业界的一个棘手问题,也出现了很多基于对账的资损问题发现的思路和产品。但是如前所述对于互动特别是盖楼这样量级和短周期的产品,事后的亡羊补牢虽然能减少损失但是损失的量级依然很大,互动需要能事前探测资损风险的方案。这样的方案难点主要有二:

  • 什么样的场景会发生资损难定位:资损场景虽然是业务逻辑场景的其中一个子集,如果业务逻辑场景本身都有遗漏,资损场景遗漏更加难以避免。现在的大数据测试方案对于回归类型可以解决,对于新功能新变更还是存在输入数据不够的问题。

  • 资损发生的方式难模拟:资损发生的方式花样繁多,代码逻辑错误/异常处理/并发处理/数据污染/配置错误等等情况层出不穷。

对于质量AI来说,问题1可以归纳用例如何生成更全,问题2可以归纳为环境准备问题。在实现了冒烟用例的AI化之后,互动通过对AI的迭代加入更多如代码路径覆盖/数据血缘分析/异常的执行环境注入等方式逐渐演进风险探测的准确率。目前互动已经实现了核心权益发放场景完全基于智能AI的权益链路预跑。

▐  容错探测


在分布式系统中,单点的故障不仅仅影响自身功能。因此每个系统在做好自身功能验证的事后,还需要考虑对关联系统和关联功能的容错能力,保障极端情况下的自身功能可用性和用户体验。

目前互动核心的功能故障点的容错探测都以实现AI化。



总体展望


质量保障整体上在整个研发体系中处于守门员的角色,在整个世界都在全力拥抱数字化的大背景下,系统的复杂度提升越来越快,业务对迭代效率的诉求也越来越强,传统的解决方案越来越难以满足时代的要求。

智能化给出了质量行业的另一个产品化的解决,未来的质量保障一定是通过研发更好的质量产品来保障业务的快速迭代,而根据各个业务定义的质量AI会是下一代质量产品的最佳选择。虽有曲折,必有改变。


淘宝技术部-质量团队-招贤纳士

淘系技术质量团队负责保障整个淘宝和天猫主站的业务质量,在这里有丰富多样的业务场景和技术挑战。在这里你能够面对双十一海量峰值流量,沉淀最具挑战的大促稳定性保障产品,在这里可以为过亿DAU的互动产品保驾护航,感受行业最复杂的营销玩法技术魅力,在这里可以近距离了解目前炙手可热的内容电商,见识李佳琦、薇娅等是怎样成为带货红人,在这里还可以探索大数据驱动下的前线业务和增长策略,在3D、AI、5G等新技术加持下打造一个个电商领域的新赛道。

简历投递至:zongma.xb@taobao.com

扫描上方二维码了解职位详情

✿  拓展阅读



作者|徐兵(纵马)

编辑|橙子君

出品|阿里巴巴新零售淘系技术

这篇关于基于强化学习的质量AI在淘系互动业务的实践之路的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/817707

相关文章

Spring Boot集成/输出/日志级别控制/持久化开发实践

《SpringBoot集成/输出/日志级别控制/持久化开发实践》SpringBoot默认集成Logback,支持灵活日志级别配置(INFO/DEBUG等),输出包含时间戳、级别、类名等信息,并可通过... 目录一、日志概述1.1、Spring Boot日志简介1.2、日志框架与默认配置1.3、日志的核心作用

破茧 JDBC:MyBatis 在 Spring Boot 中的轻量实践指南

《破茧JDBC:MyBatis在SpringBoot中的轻量实践指南》MyBatis是持久层框架,简化JDBC开发,通过接口+XML/注解实现数据访问,动态代理生成实现类,支持增删改查及参数... 目录一、什么是 MyBATis二、 MyBatis 入门2.1、创建项目2.2、配置数据库连接字符串2.3、入

Android Paging 分页加载库使用实践

《AndroidPaging分页加载库使用实践》AndroidPaging库是Jetpack组件的一部分,它提供了一套完整的解决方案来处理大型数据集的分页加载,本文将深入探讨Paging库... 目录前言一、Paging 库概述二、Paging 3 核心组件1. PagingSource2. Pager3.

Spring AI使用tool Calling和MCP的示例详解

《SpringAI使用toolCalling和MCP的示例详解》SpringAI1.0.0.M6引入ToolCalling与MCP协议,提升AI与工具交互的扩展性与标准化,支持信息检索、行动执行等... 目录深入探索 Spring AI聊天接口示例Function CallingMCPSTDIOSSE结束语

在Java中使用OpenCV实践

《在Java中使用OpenCV实践》用户分享了在Java项目中集成OpenCV4.10.0的实践经验,涵盖库简介、Windows安装、依赖配置及灰度图测试,强调其在图像处理领域的多功能性,并计划后续探... 目录前言一 、OpenCV1.简介2.下载与安装3.目录说明二、在Java项目中使用三 、测试1.测

MyBatis-Plus 自动赋值实体字段最佳实践指南

《MyBatis-Plus自动赋值实体字段最佳实践指南》MyBatis-Plus通过@TableField注解与填充策略,实现时间戳、用户信息、逻辑删除等字段的自动填充,减少手动赋值,提升开发效率与... 目录1. MyBATis-Plus 自动赋值概述1.1 适用场景1.2 自动填充的原理1.3 填充策略

Olingo分析和实践之EDM 辅助序列化器详解(最佳实践)

《Olingo分析和实践之EDM辅助序列化器详解(最佳实践)》EDM辅助序列化器是ApacheOlingoOData框架中无需完整EDM模型的智能序列化工具,通过运行时类型推断实现灵活数据转换,适用... 目录概念与定义什么是 EDM 辅助序列化器?核心概念设计目标核心特点1. EDM 信息可选2. 智能类

Olingo分析和实践之OData框架核心组件初始化(关键步骤)

《Olingo分析和实践之OData框架核心组件初始化(关键步骤)》ODataSpringBootService通过初始化OData实例和服务元数据,构建框架核心能力与数据模型结构,实现序列化、URI... 目录概述第一步:OData实例创建1.1 OData.newInstance() 详细分析1.1.1

Olingo分析和实践之ODataImpl详细分析(重要方法详解)

《Olingo分析和实践之ODataImpl详细分析(重要方法详解)》ODataImpl.java是ApacheOlingoOData框架的核心工厂类,负责创建序列化器、反序列化器和处理器等组件,... 目录概述主要职责类结构与继承关系核心功能分析1. 序列化器管理2. 反序列化器管理3. 处理器管理重要方

虚拟机Centos7安装MySQL数据库实践

《虚拟机Centos7安装MySQL数据库实践》用户分享在虚拟机安装MySQL的全过程及常见问题解决方案,包括处理GPG密钥、修改密码策略、配置远程访问权限及防火墙设置,最终通过关闭防火墙和停止Net... 目录安装mysql数据库下载wget命令下载MySQL安装包安装MySQL安装MySQL服务安装完成