人工智能
使用 Amazon Nova Act 构建意图驱动的 UI 测试为了在其各产品团队中扩展意图驱动的 UI 测试, Epsilon——一家数据、技术和营销服务公司,也是 Publicis Groupe旗下的一员——转而采用 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 执行的纯英文指令。它们能够适应外观性的 UI 变更,并且非工程师也能读懂。像 “确认奖励余额可见” 这样的步骤,其生命周期远比脆弱的 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,是因为它消除了管理浏览器二进制文件、显示服务器和会话生命周期的运维负担。Agentic Platform 团队无意承担这套基础设施。
解决方案:架构与实现
Epsilon 的解决方案包含三个主要组件:用于创建工作流的平台 API、用于执行工作流的后台任务运行器,以及驱动浏览器的 Nova Act 与 Amazon Bedrock AgentCore Browser Tool 集成。
平台架构
Epsilon 的 UI 测试能力遵循一条清晰的流水线:
- 用户通过平台 API 创建工作流,指定一个
target_url以及一组自然语言步骤。 - 创建时,平台在 AWS 上注册一个 Nova Act 工作流定义。
- 执行时,后台任务运行器(Celery,一个用于异步作业处理的 Python 框架)会打开一个 Amazon Bedrock AgentCore Browser Tool 浏览器会话。它通过 Nova Act 在 Chrome DevTools 协议(CDP) WebSocket(以编程方式控制 Chromium 浏览器的标准接口),包括条件逻辑(例如, “如果出现导览框,就跳过它”).
- 系统会为每个步骤截取屏幕截图,跟踪每个步骤的通过/失败情况,计算总体通过率,并存储所有内容(结果 JSON、Amazon S3 中的屏幕截图、会话 ID)。
- 完成钩子会触发,以便将结果记录回平台。
图 1:Epsilon 的 UI 测试服务架构
图 1 展示了 Epsilon 的 UI 测试服务的分层架构。用户请求从 Agent Cloud 前端流经带有身份验证和权限检查的 API 网关。API 层(Django REST)暴露工作流、执行、自动化套件和统计信息的端点。业务逻辑层包括工作流管理器、执行编排器和套件协调器。测试作业在 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 在其之上叠加了平台的多租户编排、结果捕获和可观测性层。
示例:自动化“创建代理”流程
为了说明意图驱动的测试,这里给出 Epsilon 平台中的一个代表性工作流。它涵盖了登录、表单填写、条件处理、滚动和验证。以下步骤突出了 Nova Act 的差异化模式:
| 步骤 | 指令 |
| 1 | 输入用户名并选择 下一步 |
| 2 | 输入密码并选择 验证 |
| 3 | 导航到 创建代理 并选择 设计新规范 卡片 |
| 4 | 如果出现入门导览框,请选择 跳过导览,然后验证加载了正确的页面 |
| 5 | 填写代理名称和描述字段 |
| 6 | 向下滚动,直到 目标陈述 字段可见,然后填写该字段 |
| 7 | 如果技能搜索框不可见,请滚动直到其出现。然后搜索并添加一项技能 |
| 8 | 选择“ 保存,确认成功提示,返回上一页,并验证新代理出现在列表中步骤 4 和 7 展示了 |
条件逻辑 :“如果某个元素出现,就处理它”以及“如果目标不可见,就滚动直到它可见。”这些模式在传统框架中需要显式分支。Nova Act 通过语言理解自然地处理它们。运行时隔离
Epsilon 在一个
专用运行器服务 (一个 FastAPI sidecar)中运行 UI 测试,该服务固定使用 3.x 版本,支持 Workflow 和 IAM 身份验证,并包含 Amazon Bedrock AgentCore Browser Tool 客户端。这将依赖项与主后端分离,因此不会与 Strands 代理栈发生冲突。如果运行器被禁用,工作进程会回退到进程内执行,从而在部署期间提供弹性。最佳实践基于将 UI 测试构建为平台能力的经验,Epsilon 团队建议:1. 将步骤编写为意图,而非 (一个 FastAPI sidecar),固定使用 nova-act 3.x 版本,支持 Workflow 和 IAM 身份验证,并包含 Amazon Bedrock AgentCore Browser Tool 客户端。这将依赖项与主后端分离,因此不会与 Strands 代理栈发生冲突。如果运行器被禁用,工作进程会回退到进程内执行,从而在部署期间提供弹性。
最佳实践
基于将 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检查取代了这种逐步开销,条件逻辑(例如旅游框和滚动直到可见的步骤)用纯英文表达。
- 轨迹重放的通过率为100%(基于Epsilon的内部 基准测试)。 在工作流通过初始探索阶段(通常为4–5次提示迭代)后,Epsilon会保存成功的轨迹并以确定性方式重放它。保存的轨迹在重复运行中实现了100%的通过率。
- 降低测试编写的门槛。 步骤读起来像纯英文。核心测试工程师之外的团队成员可以阅读、审查并提出测试,从而扩大质量的所有权。
- 内置审计跟踪。 AWS CloudTrail集成和Amazon Bedrock AgentCore Browser Tool会话录制使调试和合规对话变得更加容易。这是团队最初并未打算实现的一个好处。
- 每个团队的基础设施开销为零。 接入的团队通过与其他所有平台代理相同的 API 接口获得 UI 测试能力。无需浏览器二进制文件,无需 Selenium 网格,也无需管理显示服务器。
- 逐步显示通过/失败状态。 每一步都进行截图捕获,提供细粒度的调试上下文,缩短诊断失败的平均时间。
“Nova Act 让我们把 UI 测试从一项脆弱、追逐选择器的苦差事,转变为一项由平台统一管理的托管能力。我们的测试现在用通俗英语描述意图,在 AWS 托管浏览器上运行,而我们接入的每个产品团队都能获得可靠的测试,无需额外配置。”
— Epsilon Agentic Platform 团队
了解更多
Epsilon 的 Agentic Platform 团队演示了如何使用 Amazon Nova Act 和 Amazon Bedrock AgentCore Browser Tool,将具有韧性、意图驱动的 UI 测试作为托管服务交付。你可以将同样的模式应用到自己的多租户平台,从而消除浏览器基础设施开销,并让非工程师也能轻松编写测试。
如果你想使用 Amazon Nova Act 和 Amazon Bedrock AgentCore Browser Tool 构建类似的意图驱动 UI 测试能力,以下资源可供入门:
- Amazon Nova Act 文档
- Amazon Bedrock AgentCore Browser Tool 用户指南
- PyPI 上的 Nova Act Python SDK
- Amazon Bedrock AgentCore 文档
- Nova Act + Amazon Bedrock AgentCore Browser Tool 示例代码(GitHub)
- 相关文章: 使用 Amazon Nova Act 通过代理式 QA 自动化加速软件交付
如需进一步了解贵组织如何利用意图驱动的浏览器自动化进行测试,请访问 Amazon Nova Act 产品页面.
Epsilon 是 Publicis Groupe 旗下公司。如需了解更多信息,请访问 epsilon.com.