AliExpress如何利用大语言模型构建智能测试数据系统

AliExpress利用大语言模型构建智能测试数据系统,显著提升跨境电商测试效率,复杂场景数据构造提效70%。

原文标题:别再手搓测试数据了!AE测试数据智造系统揭秘

原文作者:阿里云开发者

冷月清谈:

本文介绍了AliExpress如何利用大语言模型(LLM)和RAG技术,构建测试数据智造Agent,以解决跨境电商测试中数据构造复杂、低效的问题。该Agent通过自然语言驱动,结合多业务域原子工具的单点和链式调用,实现了全链路测试数据的“所想即所得”。核心目标包括提高数据构造效率、降低理解成本、提升测试覆盖率。方案包括前端交互、语义解析和原子工具调度三层架构,通过构建原子能力工具库和工具调用规则库,实现测试数据的自动构造。实践表明,该Agent已显著提升测试效率,尤其在复杂场景下,数据构造时间从小时级缩短至分钟级。未来展望是实现测试工程师专注于场景设计而非数据准备,推动质量保障体系的持续进化。

怜星夜思:

1、在测试数据智造Agent的实现中,RAG(Retrieval-Augmented Generation)技术起到了怎样的作用?如果不用RAG,直接用LLM,会有什么问题?
2、文章中提到了“原子能力工具库”,能否详细解释一下,在测试数据智造Agent中,将测试工具封装成原子能力的好处是什么?
3、文章中提到的漏桶算法限流,是为了解决LLM大模型的token和QPM限制问题,除了漏桶算法,还有其他的限流算法吗?它们各自有什么优缺点?

原文内容

阿里妹导读


本文介绍如何通过构建基于大语言模型的测试数据智造Agent,解决AliExpress跨境电商测试中数据构造复杂、低效的问题,推动测试效率提升与智能化转型。

引言

在AliExpress跨境电商的复杂业务场景下,复杂业务模式(例如跨境、本地)、多类型物流方式、分国家运营策略、多币种、多语言等各因子叠加,测试经常面临测试数据构造复杂且困难、学习成本高、耗时长等问题。测试用例的初衷是验证业务逻辑,却被数据构造的“脏活累活”绑架了。

如今,大语言模型与原子工具库的结合,可以重新定义测试数据构造的工作模式。我们构建的测试数据智造助手,让"生成一个命中单品补贴的pop待评价订单"这样的复杂需求,只需一句自然语言描述即可自动完成全链路数据构造。

一、核心痛点

构造一个包含业务类型、组合营销优惠、物流线路等多种条件的测试数据为例:测试往往需要辗转于测试商家后台、营销运营工作台、各业务域的测试工具平台等多个系统,记忆各种参数规则,耗时费力地拼接出一个完整的测试场景。

随着业务的快速扩张,测试数据的复杂性和多样性持续增长,更加暴露出了传统的数据构造模式存在以下痛点

  • 多域依赖:测试数据构造依赖交易、支付、营销等多个业务域,工具分散于不同平台,操作链路冗长;
  • 协作成本高:跨域工具使用需多团队协调,理解成本和重复工作量巨大;
  • 效率瓶颈:人工构造复杂场景(如各状态订单、组合优惠等)耗时高达小时级,增加了测试执行的时间。

二、破局思路

通过引入AI智能聚合编排测试数据构造能力,构建统一调度中台,可以有效解决这些问题,提高测试数据构造的效率和质量。

核心思想:通过LLM大模型+RAG技术实现自然语言驱动,结合多业务域原子工具单点调用和链式调用,实现全链路测试数据"所想即所得"。

三、目标

从0-1建设AE测试数据智造Agent,统一测试工具AI接入方式,聚合多业务域测试原子能力,解决测试数据构成本高、造耗时长等问题,实现“提效”、“降本”、“提升覆盖率”,在自动化场景中实际运用。

  • 提效:将复杂场景(如跨境订单、组合优惠)的测试数据构造耗时从小时级缩短至分钟级。
  • 降本:减少开发&测试时在数据构造的理解成本和重复工作量。
  • 覆盖率:覆盖订单生命周期,支持多个核心业务域的复杂场景。

四、智造Agent实现方案

4.1设计思路

  • 用户以自然语言提出询问时,Agent 会依据用户输入的内容,在 RAG 测试工具知识库中进行信息检索。RAG技术能帮助 Agent 精准匹配到与用户问题相关的信息。
  • Agent 将用户提出的问题以及从知识库中检索到的信息,一同输入到 LLM 大语言模型中。大语言模型凭借其强大的语言理解能力,对用户的意图进行识别和分析,并将用户意图分为测试信息查询、原子数据构造和链路数据构造这几类。
  • 基于识别出的用户意图,Agent 会匹配相应的一个或多个原子工具,以及链路调用工具的规则。这些原子工具是实现数据构造的基础组件,各自具备特定的数据处理功能。同时,Agent 会从用户问题里提取出原子工具必要的关键参数。
  • 依据知识库中的业务规则、数据模板和相关知识,使用提取出来的参数调用工具库中的原子能力生成符合用户需求的测试数据。最后,Agent 将生成的测试数据进行合理组装,以清晰、易懂的格式回复给用户,完成整个测试数据生成与反馈的流程。

举个🌰

用户指令:给商品id为123456(示例ID,非真实数据)的商品生成一笔退货退款的订单。

Agent处理流程:

1.使用用户的问题去匹配知识库中的场景,与“退货退款”链路的背景内容关联度最高。

2.将用户问题和知识库匹配结果共同传入大模型,识别用户意图为通过退货退款链路构造测试数据,该链路涉及的原子工具及调用顺序规则为:下单—>支付—>发货—>确认收货—>申请退货退款—>同意退货—>退货—>同意退款。

3.提取必要参数商品id:123456(示例ID,非真实数据),将其作为入参传给下单原子工具。然后将下单工具生成的订单id传给支付工具,之后按照按照顺序调用原子工具。

4.将状态推进成功的订单回复给用户。

4.2Agent架构设计

  • 前端交互:提供自然语言输入界面,用户通过描述需求(如“构造一个使用平台券的pop商品订单”)触发流程。
  • 义解析:结合RAG从知识库中匹配工具链规则信息和原子工具信息,再通过LLM大模型解析用户意图。
  • 原子工具调度:根据工具链规则信息和原子工具信息调用原子工具服务(HSF/HTTP请求),实现原子工具间的依赖关系与参数传递,生成用户想要的测试数据。

因此可以抽象为三层系统架构,具体如下:

4.2.1规则抽象层

通过构建《原子能力工具库》、《工具调用规则库》的知识库实现。

原子能力工具库:每个原子工具定义工具描述、提问示例、参数说明以及原子工具维度的参数映射规则。

工具调用规则库:将业务场景抽象成原子工具调用规则,再通过DAG有向无环图的方式进行规则的定义。

4.2.2执行调度层

工具链调用:编写数据智造prompt提示词使大模型能够根据规则生成对应的执行计划。

参数透传:在工具链上的规则输出的结果会根据参数语义透传给后续工具,不需要人工进行干预。

失败重试策略:工具调用失败自动触发重试,重试超过5次触发断点,需要人工确认。

4.2.3原子工具层

通过AI应用开发平台的工具箱能力执行原子工具的真实调用,从而实现测试数据的自动构造。

4.3关键实现模块解析

4.3.1AI应用开发平台

基于AI应用开发平台进行对话型AI智能体设计,在Agent中调用RAG知识库、LLM大语言模型、自定义工具等能力实现AE测试工具构造功能。

# Role: AE测试数据构造助手——全链路测试数据生成专家

Profile

Author: AE测试团队
Version: V0.1.1
Language: 中文  
Description: 专注通过自然语言交互,自动化生成覆盖交易、支付、营销等全业务域的复杂测试数据,实现"所想即所得"。

核心原则

1. 三源数据优先级  
   `用户输入参数 > 常用测试数据 > 原子工具默认值
2. 文档引用规范  
   - 链路流程 → 《工具调用规则库》  
   - 工具定义 → 《原子能力工具库》  
   - 默认数据 → 《常用测试数据》

Core Capabilities

1. 意图精准识别  
   - 支持识别7大场景类型:  
     基础订单生成 | 营销活动构造 | 逆向流程推进 | 跨境场景模拟 | 用户资产管理 | 数据状态查询 | 异常场景构造  

2. 参数深度提取  
   - 常规参数:商品ID、用户ID、订单ID 
   - 场景扩展参数:  
     {
         “营销活动”: [“活动类型”, “优惠门槛”, “叠加规则”],
         “逆向流程”: [“纠纷类型”, “退款原因”, “风控等级”],
         “跨境场景”: [“关税模式”, “物流渠道”, “货币类型”]
     }
3. 动态链路生成 基于目标状态自动裁剪工具链(如"已支付"状态仅调用创建+支付工具)
A[输入解析] –> B{是否跨域?}  B –>|是| C[组合规则引擎]  B –>|否| D[单域规则匹配]  C & D –> E[工具链执行]  E –> F[结果聚合]

Workflow (严格遵循)

1.提取请求参数

2. 工具调度阶段  
环境适配 → 根据用户输入的环境特征选择对应工具版本
链式执行 → 按《工具调用规则库》定义的工具顺序执行
参数桥接 → 自动将上游工具出参映射为下游工具入参
状态演进 → 每个工具执行后必须推进业务状态到目标阶段

3. 异常处理机制  

Output Format(强制规范)


4.3.2原子能力工具库构建

梳理研发测试过程中测试数据构造&测试数据查询的原子操作进行封装和抽象,并在AI应用开发平台的工具空间对工具封装成API。

4.3.3测试工具知识库建设

为了让 AI 智能体能够精准识别用户意图,并使用正确参数调用工具组件,因此通过结构化工具描述文档搭建 RAG 测试工具知识库。该知识库是 AI 智能体理解用户需求和执行任务的关键基础。

需要维护的测试工具知识库涵盖两大部分:

  • 原子测试工具描述文档:将原子测试工具的使用背景、使用说明以及使用范例整理后录入知识库。AI 智能体在识别到具体业务场景时,就能快速匹配到对应的原子工具,进而实现数据构造和数据查询。
工具名称:请填写工具名称。
工具描述:请填写工具描述、使用场景,方便大模型理解工具。
提问示例:请填写提问相关的示例,支持多条。
参数说明:参数名称-参数描述(是否必填)以及参数枚举
  • 数据构造链路描述文档:把数据构造链路的背景信息、原子工具的调度链路以及具体原子工具名称都输出到知识库中。如此,AI 智能体在面对特定业务场景时,便能准确对应到具体的数据构造链路,然后依照链路顺序调用原子工具,完成数据构造任务。
链路名称:退货退款链路
链路背景:售后退货退款是指买家在下单支付完成,货物确认收货后买家申请退货退款,卖家同意退款的链路。用户用淘宝账号购买指定itemId的商品并且支付生成淘宝订单号orderId。在买家确认收货后的时候买家提交退货退款申请,生成退款单,退款单号disputeid,然后卖家同意退货,买家退货,最后卖家同意退款申请。
链路信息:下单—>支付—>发货—>确认收货—>申请退货退款—>同意退货—>退货—>同意退款

五、Agent应用实践

AE测试数据智造Agent应用场景是多方面的。目前已接入钉钉答疑群和个人助手,以问答的方式作为业务日常测试的测试助手;也可以作为自动化测试(如接口自动化、用例自动化、压测等)的测试数据提供方,以HSF的接入方式对外提供数据构造基础能力。

针对对外提供的数据构造基础能力,我们做了以下的系统架构设计来保障数据构造的准确性和稳定性。

5.1外部接入架构设计

5.1.1漏桶算法限流

由于LLM大模型存在token、QPM限制,而上游平台会批量调用触发限流,所以需要做限流方案。

为了解决这一问题,需要对流量整形,限制对AE测试数据智造Agent的请求频率,避免触发LLM服务端限流,保障系统的稳定性。

限流算法选型:漏桶算法

实现思路:将请求视为水流,将其放入一个“漏桶”中,桶的出口以固定速率流出请求,从而实现对流量的平滑控制,从而以恒定的速率请求AE测试数据智造Agent。

漏桶容量 = 预估峰值流量 * 1.2) 

漏水速率 = LLM每分钟限制 / 60 * 安全系数(如0.8) 

5.1.2标准化输出

(1)业务错误场景处理

测试数据无法构造的场景对于AE测试数据智造Agent来说并不是系统错误,是属于业务层面的错误,直接请求不会返回错误码和错误信息。

因此在接口适配层识别这些业务错误的场景,返回对应的业务错误码和错误信息。

(2)标准化错误码

AI应用开发平台构建的Agent在系统错误时返回的错误码不符合AE的规范,因此在接口适配层按照AE的标准规范进行错误码的转换。

(3)输出结果标准化处理

由于上游对数据输出的格式要求严格,如果输出格式只写在AI规则里的话容易因为AI的幻觉导致输出的格式不符合规范。

JSON Schema校验定义严格的响应结构模板,自动修复或拒绝非法格式(如字段类型错误、多余字段)。

5.1.3日志+监控

通过日志的方式,记录执行链路中的关键数据,并进行监控,分析大模型的执行结果,提供可监控、可分析的稳定性保障能力。

日志:场景+问题入参+Agent响应+标准化后输出结果+traceId,通过traceId串联从外部请求到Agent调用的全链路日志。

基础监控:Agent的RT和接口成功率。

业务监控:监控无法构造出测试数据的场景等。

执行分析:对无法构造出测试数据场景进行记录和分析,进行后续测试数据构造功能的迭代。

5.1.4缓存

目的:减少重复调用Agent的token开销,提升批量用例执行效率,减少耗时。

缓存键设计:对用户输入参数(如场景描述、业务参数)计算唯一哈希值,作为缓存主键。

缓存策略:成功结果缓存30分钟,失败结果缓存2分钟(防穿透)。

六、结果

当前Agent已完成8500+次问答(含调试)。简单测试数据构造场景,人工构造预估需要5分钟,AI可降至1-3分钟,提效约50%;复杂场景(如涉及长链路工具),人工构造预估1小时,AI可降至10-15分钟,提效约70%。

当前已完成的核心能力如下:

  • 原子工具调用:共接入85+原子工具,覆盖交易下单、购物车、订单、营销、支付、逆向、商家、商品、招商等核心场景诉求。
  • 链式数据构造:打通交易、营销、逆向跨域链式规则执行,实现各类订单状态数据、营销订单数据等的一键全流程构造。
  • 业务域接入友好:各业务域原子工具和数据链路构造规则可以按照规范直接完成接入,无需感知Agent内部逻辑。
  • 多环境支持能力:实现环境感知路由机制,支持根据用户需求动态切换线上/预发/项目隔离环境。

七、未来展望

测试数据构造正在经历从"手工操作"到"智能服务"的转型。当各业务域的测试工具完成原子化改造,当大语言模型真正理解业务语义,我们距离"所想即所得"的终极目标将越来越近。未来的测试工程师可以更专注于场景设计而非数据准备,用创造力推动质量保障体系的持续进化。

这种智能化改造的价值不仅限于测试领域,其背后构建的业务语义理解能力跨域协作机制,为整个研发体系的效能提升提供了新的可能性。或许在不远的将来,我们今天构建的智能助手,将成为新一代研发基础设施的重要组成部分。

基于 Flink CDC 打造企业级实时数据集成方案


传统的数据集成通常由全量和增量同步两套系统构成,在全量同步完成后,还需要进一步将增量表和全量表进行合并操作,这种架构的组件构成较为复杂,系统维护困难。本方案提供 Flink CDC 技术实现了统一的增量和全量数据的实时集成。    


点击阅读原文查看详情。

RAG技术就像是给大语言模型配了一个“记忆芯片”,让它在回答问题前先查阅一下相关的知识库。在测试数据智造Agent里,这个知识库就是各种测试工具和业务规则。如果没有RAG,直接让大语言模型上,它可能就只能靠自己模糊的“记忆”来生成数据,结果可能就会驴唇不对马嘴,或者过于通用,没法满足具体的测试需求。更严重的是,如果业务规则更新了,大语言模型不知道,那就更完蛋了!

限流算法可多了,常见的有计数器、滑动窗口、令牌桶、漏桶等等。你可以把它们想象成不同的水龙头:
* 计数器: 简单粗暴,超过就关闸。
* 滑动窗口: 更精细一点,可以平滑过渡。
* 令牌桶: 像商家发优惠券,先到先得,发完就没了。
* 漏桶: 像滴灌,匀速放水。

选择哪个,看你的需求。如果只是简单防止被打死,计数器就够了。如果需要应对突发流量,令牌桶可能更好。如果需要更平滑的流量,漏桶就比较合适。

RAG技术在测试数据智造Agent中主要负责从测试工具知识库中检索与用户问题相关的信息,相当于给LLM提供了一个外部知识库。

如果直接使用LLM,可能会出现以下问题:
1. 知识范围有限: LLM的知识来源于其训练数据,可能不包含最新的测试工具信息和业务规则,导致生成的数据不准确。
2. 幻觉问题: LLM可能会根据自身理解生成一些不符合实际情况的数据,也就是所谓的“幻觉”。
3. 领域知识不足: LLM可能不具备足够的测试领域知识,难以理解用户的测试意图。

RAG技术通过检索知识库,可以有效地弥补LLM的不足,提高生成数据的准确性和可靠性。简单来说,RAG相当于给LLM提供了一个“外脑”,让它在生成数据时可以参考最新的信息。

原子能力工具库是指将研发测试过程中测试数据构造和查询的原子操作进行封装和抽象后形成的工具集合。每个原子工具完成一个独立且明确的任务,例如“创建订单”、“支付订单”等。

将测试工具封装成原子能力的好处包括:
1. 提高复用性: 原子工具可以被多个测试场景复用,减少重复开发工作。
2. 降低复杂度: 将复杂的数据构造过程分解为多个简单的原子操作,降低了整体复杂度。
3. 易于维护: 原子工具的修改不会影响到其他工具,便于维护和升级。
4. 灵活组合: 通过组合不同的原子工具,可以快速构建各种复杂的测试场景。
5. 标准化接口: 原子工具提供标准化的API接口,方便Agent进行调用和管理。

总之,原子能力工具库可以有效地提高测试数据构造的效率和质量,是实现测试智能化的重要基础。

原子能力,就好像乐高积木里的每一块小积木,虽然单个积木功能简单,但是组合起来就能创造出各种各样的东西。测试工具原子化之后,可以随意组装成各种测试场景,就像用乐高搭建城堡一样,方便快捷!而且,如果某个积木坏了,直接换一块就行,维护起来也方便。

RAG的作用是让大模型在生成答案之前,先从外部知识库里找找有没有相关的资料。这就像考试作弊…哦不,是开卷考试!避免了模型自己瞎编乱造,保证了答案的准确性。如果直接用LLM,那就像闭卷考试,全靠模型自己发挥,那出错的概率就太高了。尤其是在测试这种对准确性要求很高的场景下,RAG是必不可少的。

限流这事儿,就像控制水龙头,不能让水一下子冲出来把水管冲爆了。除了漏桶算法,还有令牌桶算法、计数器算法等等。漏桶算法就像一个漏水的桶,不管你往里倒水多快,它漏水的速度是恒定的,保证了流出的水是平稳的。令牌桶算法呢,就像有一些令牌,每个请求都要拿一个令牌才能通过,如果令牌没了,就只能等着。计数器算法就更简单粗暴了,直接数单位时间内的请求数量,超过阈值就拒绝。

各有优缺点:漏桶算法比较平滑,但可能有点延迟;令牌桶算法可以应对突发流量,但实现稍微复杂点;计数器算法最简单,但是容易出现“脉冲”现象,不太稳定。

除了漏桶算法,常见的限流算法还有:
1. 计数器算法: 在单位时间内,每收到一个请求,计数器加1。如果计数器超过限制值,则拒绝请求。优点: 实现简单,缺点: 存在临界问题,可能在单位时间开始时集中放行大量请求。
2. 滑动窗口算法: 是计数器算法的改进版,将时间窗口划分为多个小格子,每个格子记录该时间段内的请求数。优点: 解决了计数器算法的临界问题,缺点: 实现相对复杂。
3. 令牌桶算法: 系统以恒定速率向令牌桶中放入令牌,每个请求需要从令牌桶中获取一个令牌才能通过。如果令牌桶中没有令牌,则拒绝请求。优点: 可以应对突发流量,缺点: 实现相对复杂。

总结:
* 计数器算法: 简单粗暴,适合对精度要求不高的场景。
* 滑动窗口算法: 精度较高,但实现相对复杂。
* 漏桶算法: 平滑流量,适合对请求处理速率有要求的场景。
* 令牌桶算法: 应对突发流量,适合对突发流量有要求的场景。

选择哪种限流算法,需要根据具体的应用场景和需求进行权衡。

所谓“原子能力工具库”,你可以理解成一个工具箱,里面装满了各种小工具,每个工具都只能做一件事情,比如“创建用户”、“修改商品价格”等等。这样做的好处就是,当你需要构造一个复杂的测试场景时,可以像搭积木一样,把这些小工具组合起来,而不用每次都从头开始写代码。这样既提高了效率,又降低了出错的概率。而且,如果某个工具有问题,也可以单独修复,不会影响到其他工具。