介绍 agent-qa:具备执行记忆的开源代理式 QA 框架
传统的自动化质量保证(QA)方法通常涉及编写僵硬脚本、处理脆弱的选择器,并花费无数时间修复因 UI 元素稍微移动几像素而立即失效的测试。随着应用程序的复杂度提升,这些测试的维护开销往往超过其价值。
agent-qa 由 Vostride 开发,旨在通过引入代理式测试方法来解决此问题。它将自然语言测试定义与先进的执行记忆系统相结合,将 QA 从静态脚本编写转变为随产品演进的动态自愈过程。
自然语言测试编写
agent-qa 的核心是能够使用人类语言定义测试。开发者无需编写复杂的 Playwright 或 Selenium 脚本,而是可以使用普通英文在 YAML 中编写测试。例如,验证 Linear 中创建议题的测试可以这样写:
- 点击 “Create issue” 图标。
- 验证 “Create issue” 模态框已显示。
- 在 “Issue title” 输入框中输入 “Fix mobile login”。
- 从 Team 选择器中选择 “Engineering”。
- 点击 “Create issue” 按钮。
由于代理基于可见的角色、标签和当前屏幕状态工作,它能够动态解释这些指令。这消除了对硬编码 CSS 选择器或 XPath 的需求,使测试对细微 UI 变化具有显著的韧性。
执行记忆的力量
agent-qa 最具创新性的功能之一是其 Execution Memory。大多数 AI 驱动的测试工具将每次运行视为全新起点,迫使代理每次都重新发现导航模型和 UI 模式。而 agent-qa 则从产品、套件和测试观察中构建知识库。
记忆工作原理
当代理执行测试时,它会整理 “contracts” 与观察。例如,它可能学到 “在 Docs 与 Projects 之间切换后,侧边栏组保持可见”。这些记忆随后被注入后续运行,使代理能够:
- 避免冗余: 跳过重新发现如何在工作区导航的过程。
- 提升准确性: 使用已确认的模式(例如,了解命令面板需要精确的标题搜索)以避免常见陷阱。
- 降低失败率: 识别某些元素(如页面工具栏)仅在特定操作后出现,防止代理将隐藏元素误判为失败。
自愈与性能优化
为了解决困扰自动化测试的 “不稳定性”,agent-qa 实现了 Self-Healing Execution。如果子操作(例如点击或填充)失败,代理不会立即使测试失败,而是重新观察 UI 并尝试在同一次运行中找到替代路径以实现相同目标。
为确保这些代理能力不会导致过高的延迟或成本,平台加入了 Smart Cache。通过在相似的后续运行中复用已验证的行动计划,agent-qa 能够减少规划器工作量和 token 使用,据称可将执行速度提升至 5 倍(例如,将 42 秒的运行缩短至 8 秒)。
开发者中心的基础设施
尽管由 LLM 驱动,agent-qa 仍被设计为适配专业软件开发生命周期(SDLC):
- 版本控制: 测试、配置和钩子以代码形式存储,可通过 Pull Request 进行差异比较和审查。
- 沙箱钩子: 用户可在隔离的 Docker 容器中运行 Node、Bun、Python 或 Bash 钩子,以生成固定数据、调用 API 或清理状态。
- LLM 中立: 系统支持多种提供商,包括 OpenAI、Anthropic、Gemini,以及通过 Ollama 或 LM Studio 使用的本地模型。
- 机器可读: 通过 MCP(模型上下文协议)和特定技能,其他编码代理可以自动发现模式并对失败进行分流。
结论
通过将关注点从 如何 与 UI 交互转移到 期望的结果,agent-qa 降低了维护完整测试套件的摩擦。虽然当前重点主要在前端和移动交互,但执行记忆和自愈机制的结合为更具韧性、自治的质量保证提供了蓝图。