跳到正文
AWS Machine Learning Blog· Sakthi Chellapparimanam·· 3 小时前AI 评分47

Epsilon 基于 Amazon Nova Act 构建意图驱动的 UI 测试

Building intent-driven UI testing with Amazon Nova Act

AI 导读

Epsilon(Publicis Groupe 旗下公司)基于 Amazon Nova Act 和 Amazon Bedrock AgentCore Browser,构建了意图驱动的 UI 测试即服务,供其 50 人 Agentic Platform 团队支持的多租户平台使用。

正文 · AI 翻译

为了在旗下各产品团队之间扩展基于意图的 UI 测试,作为数据、技术和营销服务公司且隶属于 Publicis Groupe 的 Epsilon 选择了 Amazon Nova Act。凭借数亿消费者画像和数千个品牌合作关系,Epsilon 需要能够跟上应用程序快速变化步伐的 UI 测试。该解决方案不能给每个产品团队带来额外的维护负担。

在 Epsilon 内部,智能体平台(Agentic Platform)团队(50 名工程师)负责构建共享基础设施,使其他产品团队能够安全地构建、部署、治理和运行 AI 智能体。借助这个共享平台,各团队可以获得基于技能的智能体构建器,还可以获得联邦身份和预检授权、Model Context Protocol(MCP)集成以及跨账户配置。当产品团队想要采用 AI 工具时,无需额外配置即可获得这些能力,也无需自行重复解决身份、安全、浏览器基础设施或模型集成问题。

其中一项托管能力就是 UI 测试。借助 Amazon Nova Act 和 Amazon Bedrock AgentCore Browser(Amazon Bedrock AgentCore 的一项能力),Epsilon 的平台团队得以将富有弹性的、基于意图的测试作为服务交付给平台上的各团队。

在本文中,我们将逐步介绍 Epsilon 将 UI 测试作为托管平台服务交付的架构,展示 Nova Act 与 Amazon Bedrock AgentCore Browser Tool 集成的核心代码,重点介绍一个具体的 18 步测试工作流,并分享最佳实践和实测结果。

挑战:增强覆盖率,而非取代行之有效的方法

Epsilon 现有的 UI 测试实践并没有问题。该团队维护着一个 基于 Playwright 的回归测试套件,用于验证其 Web 应用程序的功能,运行良好。Playwright 至今仍是他们的回归测试主干。

Epsilon 发现的机会是叠加式的,而非纠错式的:

  • 脚本化的 Playwright 测试对于确定性的回归检查非常有效。然而,它们与选择器和页面结构紧密耦合。即使底层功能完好无损,外观上的 UI 变更也可能导致测试失败。
  • 多个产品团队需要针对各自的应用程序进行完整的测试覆盖。每个团队都要搭建浏览器基础设施、管理依赖项并与身份系统集成,造成了重复劳动。
  • 平台团队希望 UI 测试成为一种托管能力,契合他们现有的智能体模型,而不是让每个接入团队都必须自行操作的自定义 CLI。

目标是:在现有 Playwright 回归测试套件之上叠加基于意图的测试,并将其作为多租户平台服务交付,使 Epsilon 的每个产品团队都可以通过与其他智能体能力相同的 API 接口来使用它。

Epsilon 为什么选择 Amazon Nova Act 和 Amazon Bedrock AgentCore Browser Tool

Epsilon 根据两项需求评估了各种方案:自然语言测试编写(以补充基于选择器的 Playwright 测试)和托管浏览器基础设施(以契合其多租户平台模型)。将 Amazon Nova Act 与 Amazon Bedrock AgentCore Browser Tool 结合使用,Epsilon 可以同时满足这两项需求。

  • 自然语言步骤。测试步骤是由 Nova Act 执行的纯英文指令。它们能够抵御界面外观变化,并且非工程师也能读懂。像 “确认奖励余额可见” 这样的步骤,远比脆弱的 CSS 选择器更能经得起时间考验。
  • AWS 托管的一次性浏览器会话。借助 Amazon Bedrock AgentCore Browser Tool,团队可获得隔离的浏览器实例,无需分发二进制文件,也无需维护显示服务器。Amazon Bedrock AgentCore Browser Tool 还提供实时视图以便人工观察或接管(对 CAPTCHA 或多因素认证很有用)、将会话录制到 Amazon Simple Storage Service (Amazon S3),以及 AWS CloudTrail 审计,这一切都无需额外配置。
  • 基于 AWS Identity and Access Management (AWS IAM) 的身份验证。使用 Nova Act,您可以通过标准的 AWS 凭证链(任务角色)进行身份验证。这契合 Epsilon 现有的安全模型,无需分发单独的 API 密钥。
  • 对跨账户友好。借助 Nova Act 和 Amazon Bedrock AgentCore Browser Tool,您可以接入现有的 AWS Security Token Service (AWS STS) AssumeRole 配置。每个接入的团队都可以在各自的 AWS 账户中,使用限定范围的角色运行测试。这保持了隔离性和可审计性。

Epsilon 选择 Amazon Bedrock AgentCore Browser Tool 的具体原因是,它消除了管理浏览器二进制文件、显示服务器和会话生命周期的运维负担。智能体平台团队对拥有这类基础设施毫无兴趣。

解决方案:架构与实现

Epsilon 的解决方案包含三个主要组件:用于创建工作流的平台 API、用于执行工作流的后台任务运行器,以及驱动浏览器的 Nova Act 和 Amazon Bedrock AgentCore Browser Tool 集成。

平台架构

Epsilon 的 UI 测试能力遵循一条清晰的流水线:

  1. 用户通过平台 API 创建工作流,指定一个 target_url 和一系列自然语言步骤。
  2. 创建时,平台在 AWS 上注册一个 Nova Act 工作流定义。
  3. 执行时,后台任务运行器(Celery,一个用于异步任务处理的 Python 框架)开启一个 Amazon Bedrock AgentCore Browser Tool 浏览器会话。它通过 Chrome DevTools Protocol (CDP) WebSocket(以编程方式控制 Chromium 浏览器的标准接口)由 Nova Act 执行每个步骤,包括条件逻辑(例如,“如果出现引导框,则跳过它”)。
  4. 系统为每个步骤捕获屏幕截图,跟踪每个步骤的通过/失败情况,计算总体通过率,并存储所有内容(结果 JSON、Amazon S3 中的屏幕截图、会话 ID)。
  5. 完成后触发一个完成钩子,以便将结果记录回平台。

Epsilon UI Testing Service architecture with user, authentication, API, execution runner, and Amazon S3 storage layers

图 1:Epsilon 的 UI 测试服务架构

图 1 展示了 Epsilon 的 UI 测试服务的分层架构。用户请求从 Agent Cloud 前端经过带有身份验证和权限检查的 API 网关。API 层(Django REST)提供工作流、执行、自动化套件和统计信息的端点。业务逻辑层包括 Workflow Manager、Execution Orchestrator 和 Suite Coordinator。测试任务被排入 Amazon Simple Queue Service(Amazon SQS)队列,由运行在 Amazon Elastic Container Service(Amazon ECS)上的 Runner Service 接取,该服务包含 Nova Act 引擎和一个无头 Chromium 浏览器。结果、截图、轨迹和 HTML 报告存储在 Amazon S3 中。

该能力以标准智能体(ui-test-agent)的形式暴露,具备两项技能:

  • ui-test-recorder:交互式地探索一个场景并记录自然语言步骤。
  • ui-test-executor:运行已记录的步骤并返回结构化结果。

已接入的团队使用 UI 测试的方式与使用其他任何平台智能体相同。无需管理额外的基础设施。接入流程非常简单。平台团队为新团队创建跨账户 IAM 角色,注册其目标应用程序 URL,并通过现有的平台 API 授予对 ui-test-agent 的访问权限。从那时起,团队就可以通过他们已经用于其他平台能力的同一界面创建工作流、触发执行并检索结果。

核心集成

Nova Act 与 Amazon Bedrock AgentCore Browser Tool 的集成非常简洁:

import boto3
from bedrock_agentcore.tools.browser_client import browser_session
from nova_act import NovaAct

boto_session = boto3.Session(region_name=region)

with browser_session(region) as client:
    ws_url, headers = client.generate_ws_headers()
    with NovaAct(
        cdp_endpoint_url=ws_url,
        cdp_headers=headers,
        boto_session=boto_session,
        starting_page=url
    ) as nova_act:
        result = nova_act.act(instruction)

这一模式(打开托管浏览器会话,通过 CDP WebSocket 连接,并使用自然语言驱动操作)是基础。Epsilon 用其平台的多租户编排、结果捕获和可观测性层对其进行了封装。

示例:自动化“Create an agent”流程

为了说明基于意图的测试,下面是来自 Epsilon 平台的一个代表性工作流。它涵盖了登录、表单填写、条件处理、滚动和验证。以下步骤突出了 Nova Act 的差异化模式:

步骤 指令
1 输入用户名并选择 Next
2 输入密码并选择 Verify
3 导航到 Create Agent 并选择 Design a new specification 卡片
4 如果出现新手引导框,选择 Skip Tour,然后验证是否加载了正确的页面
5 填写智能体名称和描述字段
6 向下滚动,直到 Goal Statement 字段可见,然后填写它
7 如果技能搜索框不可见,滚动直到其出现。然后搜索并添加一项技能
8 选择 Save,确认成功提示,返回上一页,并验证新智能体出现在列表中

步骤 4 和步骤 7 展示了条件逻辑:“如果出现某个元素,就处理它”和“如果目标不可见,就滚动直到它可见”。在传统框架中,这些模式需要显式的分支逻辑。Nova Act 通过语言理解自然地处理了它们。

运行时隔离

Epsilon 在一个专用的运行器服务(FastAPI sidecar)中运行 UI 测试,该服务固定使用nova-act 3.x,支持 Workflow 和 IAM 身份验证,并集成了 Amazon Bedrock AgentCore Browser Tool 客户端。这样可以将依赖与主后端分离,避免与 Strands 智能体技术栈冲突。如果运行器被禁用,worker 会回退到进程内执行,从而在部署期间提供弹性。

最佳实践

基于将 UI 测试构建为平台能力的经验,Epsilon 团队给出以下建议:

1. 以意图而非机制的方式编写步骤

GOOD: "Confirm the rewards balance is visible"
BAD: await page.locator('#rewards-balance-container > span.amount').toBeVisible()

基于意图的步骤可以在 UI 改版后继续使用。不编写代码的产品经理和质量保证(QA)负责人也可以直接审阅它们。

2. 隔离 Nova Act 运行时

将 Nova Act 和 Amazon Bedrock AgentCore Browser Tool 的依赖固定在专用的服务或容器中。Epsilon 发现,无论浏览器会话所在区域如何,Nova Act 的签名端点都指向us-east-1。在具有独立依赖锁文件的单独服务中运行它可以避免难以调试的冲突。

3. 复用录制的轨迹以降低成本

Epsilon 在草稿状态下使用轨迹重试,保存成功的轨迹,然后在激活状态下重放。重复运行会跳过多余的大语言模型(LLM)“思考”,从而降低回归式重复执行的延迟和成本。

4. 从第一天起就为多租户而设计

使用带有范围受限 IAM 策略的跨账户 AssumeRole。每个租户的测试都在自己的账户中以其自己的角色运行。这提供了隔离性、可审计性和故障影响范围控制,而无需为每个团队定制基础设施。

5. 依托托管式可观测性

借助 Amazon Bedrock AgentCore Browser Tool,团队可以获得实时视图、会话录制和 AWS CloudTrail 集成。Epsilon 使用这些内置能力而不是构建自定义可观测性,从而减少维护工作,并为合规团队提供熟悉的审计界面。

6. 考虑 Amazon Bedrock AgentCore Browser Tool 的视口行为

在为 Nova Act 编写步骤提示时,要考虑 Amazon Bedrock AgentCore Browser Tool 的浏览器视口默认设置。引用滚动的步骤(例如“向下滚动直到 Goal Statement 文本框可见”)可以验证 Nova Act 能否正确处理页面下半部分的内容。

成果与影响

Epsilon 的 UI 测试能力已在多个团队投入运行,其多租户架构也在生产环境中得到了验证。

维度 Amazon Nova Act Playwright(等价方案)
编写行数 18 个自然语言步骤 约 80-150 行代码
选择器/DOM 检查 无 每个交互步骤都需要
编写时间(每个工作流) 约 5-10 分钟 约 30-90 分钟
工作量比 基准 4-6 倍工作量

以下是实测结果:

  • 测试编写速度提升 4-6 倍(基于 Epsilon 的内部基准测试)。一个具有代表性的 18 步工作流使用 Nova Act 只需 5–10 分钟即可编写完成,而等价的 Playwright 脚本(80–150 行代码)则需要 30–90 分钟。Playwright 脚本中的每个交互步骤都需要检查 DOM、选择稳定的选择器,并针对条件情况编写显式等待、断言和分支逻辑。Nova Act 用 18 条自然语言指令取代了这些每步开销,无需任何选择器或 DOM 检查,条件逻辑(例如 tour-box 和滚动直至可见的步骤)直接用平实的英语表达。
  • 基于 Epsilon 内部基准测试,轨迹回放通过率达到 100%。在一个工作流通过最初的探索阶段(通常需要 4–5 次提示词迭代)后,Epsilon 会保存成功的轨迹并对其进行确定性回放。已保存的轨迹在多次重复运行中实现了 100% 的通过率。
  • 降低测试编写的门槛。步骤读起来像通俗的英文。核心测试工程师之外的团队成员也能阅读、评审并提出测试,从而扩大质量管理的参与范围。
  • 内置审计追踪。AWS CloudTrail 集成和 Amazon Bedrock AgentCore Browser Tool 会话记录使调试和合规沟通变得更加容易。这是团队最初并未打算实现的一项收益。
  • 每个团队零基础设施开销。接入的团队通过与所有其他平台智能体相同的 API 接口获得 UI 测试能力。无需管理浏览器二进制文件、无需 Selenium 网格、无需显示服务器。
  • 每一步的通过/失败可见性。每一步的屏幕截图捕获提供了细粒度的调试上下文,缩短了诊断故障的平均时间。

“Nova Act 让我们把 UI 测试从一项脆弱的、追逐选择器的苦差事,转变为一项托管平台能力。我们的测试现在用通俗的英文描述意图,运行在 AWS 托管的浏览器上,而且我们接入的每个产品团队无需额外配置即可获得可靠的测试。”

— Epsilon 智能体平台团队

了解更多

Epsilon 的智能体平台团队展示了如何使用 Amazon Nova Act 和 Amazon Bedrock AgentCore Browser Tool 将弹性强、以意图驱动的 UI 测试作为托管服务交付。您可以将同样的模式应用于自己的多租户平台,消除浏览器基础设施开销,并让非工程师也能编写测试。

如果您想使用 Amazon Nova Act 和 Amazon Bedrock AgentCore Browser Tool 构建类似的以意图驱动的 UI 测试能力,以下资源可以帮助您入门:

要详细了解您的组织如何使用基于意图的浏览器自动化进行测试,请访问 Amazon Nova Act 产品页面。

Epsilon 是阳狮集团(Publicis Groupe)旗下的公司。欲了解更多信息,请访问 epsilon.com。


关于作者

来源: AWS Machine Learning Blog · aws.amazon.com