Skip to main content

Agent 功能测试闭环

用户明确授权后,在 Linear Project2 创建一个功能测试 Issue,交给既有 project2-linear 执行 agent。agent 每轮尽量覆盖约定功能;发现明确缺陷就建单或补充原单,轮末交接修复,修复交付后继续功能复测。测试 agent 不修改产品,人类负责最终验收和 Done。

本流程承接已跑通的主干登录联调,沿用外部 CI Runner、固定工作区、专属 QA 环境、截图与真实响应、会话租约和清理纪律。既有每日 02:00 登录计划仍只测登录,不自动扩展为玩法测试。执行规则由 autoai/autodev-trial 的 symphony/profiles/project2-linear/WORKFLOW.md 与正式 project2_session_* 工具维护;不另建状态台账或每功能专属 CI。

测试任务与范围​

测试 Issue 写清功能、操作范围、预期结果来源、账号前置、未授权操作和闭环完成条件,包含 <!-- project2-feature-test:v1 --> 标记。产品文档中的待审候选仍是候选;本流程的批准不提升它们的审核状态。预期不明确时记录待确认项,不凭 agent 直觉判 bug。

英雄试炼本次范围​

本次已获授权的任务来源为 project2-feature-test-hero-trial-20261014,在 Linear Project2 创建功能测试 Issue 并交执行 agent;范围如下:

  • 大厅入口、活动展示和倒计时,完整奖励列表的滚动与操作可用性,红点变化。
  • 核对指定英雄等级及各档资格,不能以玩家等级代替英雄等级;100% 等配置含义须核对来源,未知时记录待确认。
  • 免费奖励领取、实际响应和资产变化、重复领取、关闭重进与重新登录后的状态保存。
  • 专属礼包的资格和展示,已有解锁状态且具备条件时检查领取;不进行真实付费购买。

每轮尽量完成上述可执行范围,明确未测原因。缺账号状态、解锁资格或奖励已领取时记录未测;不使用 GM、修改游戏或改数据制造条件。待审产品候选、未知配置含义和不明确的预期不能直接定性 bug。

每轮执行​

  1. 读取任务并开始会话。 先检查现有 Runner 会话及清理结果。仍活跃时继续观察和操作,不重复启动;每次实际启动新会话,包括同一 Issue 重试和复测,都使用 registry 指定主干的最新源码。Runner 自动记录实际运行 SHA,不冻结版本、不沿用旧轮次源码。
  2. 尽量完成覆盖。 先跑完整玩家流程,再检查约定的其他分支。发现问题后取证并继续不受影响的部分;无法恢复的崩溃、入口阻断或环境失败,明确列出未测范围和原因,不把未执行写成通过。
  3. 记录缺陷。 明确违反已知规则或有直接失败证据才定性 bug。操作命令成功不代表游戏成功;领取判断结合实际响应、资产变化和重进状态。按功能、前置、症状和证据查重,已有问题补充本轮证据并关联测试 Issue。
  4. 结束并清理。 写本轮通过、失败、未测、阻塞的报告,正式结束 Runner 会话,确认所属进程、临时配置与租约清理。清理未知或失败时报告阻塞,不开启下一会话或提前交接本轮新 bug。
  5. 交接修复。 本轮报告和 Runner 清理证据齐备后,将本轮新建、非重复、具备明确修复条件且仍处于 Backlog 的 bug 转 Todo,交既有执行流程修复。测试 agent 不自行修复产品。状态更新部分失败时保留未完成清单,按实际状态补齐,不重复建单。
  6. 等待修复后复测。 测试 Issue 在等待修复期间回 Backlog,记录关联问题、交付条件及原因并释放执行资源;等待的问题均已进入 In Review 或 Done,且代码提供方证明修复已合并、CI 通过并进入可测试主干后,由既有 Backlog 调查恢复 Todo,开始下一轮。无需等待 bug 被人类标 Done。按原缺陷步骤验证,并重新尽量覆盖约定功能;仍失败补充原单,新问题按本轮规则处理。账号资产和领奖状态的变化须记录,已领取账号不能冒充再次验证首次领取。

同轮恢复仍活跃会话时继续它当前运行的内容;重新启动会话使用最新主干。各次结果反映各自实际运行版本,不据此单独推断某个提交造成前后差异。

Bug 与调度​

bug 使用独立 Issue,以 related 关系关联测试 Issue,不设置双方 blocks 依赖;同一问题可被多个功能测试关联。新 bug 初始为 Backlog,描述包含:

<!-- project2-test-bug:v1 -->
source_test_issue_id: <真实 Linear 测试 Issue UUID>
source_attempt_id: <正式 Runner 返回的本轮 attempt ID>

补充功能、脱敏前置、复现步骤、预期及来源、实际结果、复现频率、实际运行版本和截图/日志链接。根因未知就写未知。创建请求结果不明时先读取确认是否已创建,不盲目重试。没有绑定真实授权测试 Issue 或正式 attempt ID 时,不伪造运行身份。

本轮仍开放时,Backlog 调查可以读取这些问题和证据,但不得提前把本轮新 bug 推进 Todo;不能通过关闭全项目 Backlog 调查实现等待。放行依据为来源测试 workpad 的本轮报告和 Runner 终态、成功清理证据,不是测试 Issue 的 Done。不得让 bug 修复依赖测试 Issue 完成,否则会阻塞修复后的复测。

已有 bug 保留当前状态和执行归属,不因本轮重现拉回 Backlog。已关闭问题再次出现时补充原单复现证据,依据当前真实交付情况决定重开;Duplicate、Canceled 和预期待确认项不机械转 Todo。其他轮次或其他任务的问题不属于本轮状态批量变更范围。

报告与完成​

测试 Issue 的同一原生 Symphony workpad 保存 project2-feature-test-state:v1 JSON 注释:attempt_id 为当前正式轮次,released_attempts 保留各已结束轮次的既有 test_report receipt,awaiting_bug_issue_ids 为当前等待交付的 bug UUID 清单。宿主以 receipt 读取真实 Runner 终态、清理结果及 Git 提供方交付证据,不依赖 agent 自述;历史轮次 receipt 在复测时保留。修复后开始新 attempt 时清空上一轮 awaiting_bug_issue_ids,保留原问题和复现步骤,轮末再按本轮结果填写等待清单;修复交付证据必须晚于被测轮次,不能用更早的合并证明本轮问题已修复。游戏实际运行 SHA 只是报告信息;controller 和源代码交付 CI 的精确提交要求继续有效。

逐轮报告保存:正式 attempt ID、实际运行版本、执行和清理的原生 pipeline/job/artifact 链接、通过/失败/未测/阻塞清单、关联 bug、状态交接结果及下一轮前置。证据在 Runner artifacts,Linear 只保存必要摘要和链接;账号脱敏,不复制凭据。

已测部分通过但缺少必要账号、规则或环境前置时,保留具体阻塞和未测范围。达到约定覆盖、相关问题复测通过且清理确认后,测试 Issue 进入 In Review,交人类验收;不由 agent 自动 Done,也不通过子任务自动关闭代替验收。

本流程授权实际功能操作与缺陷报告,不授权新增或扩写测试代码、fixtures、Mock、断言或游戏内测试钩子。游戏运行和验证由外部 CI Runner 执行,文档 CI 只证明文档交付。

本地验证:根据项目策略禁止执行。