SuperAPI AI 工具集

dogfood

测试与质量

查看项目

更新于 10-16 06:39

技能介绍

用途

Dogfood 用于系统化地探索一个 Web 应用,发现其中的缺陷、用户体验问题及其他问题,并生成一份报告,为每一项发现提供完整的复现证据。当用户要求进行“dogfood”“QA”“探索性测试”或“查找问题”时使用。

主要能力

  • 以真实用户视角系统化遍历应用:从主导航出发,访问每个顶层区块,测试按钮、表单、下拉菜单、模态框等交互元素。
  • 检查边界情况:空状态、错误处理、边界输入。
  • 尝试真实的端到端工作流(创建、编辑、删除流程)。
  • 定期检查浏览器控制台错误。
  • 为每个问题收集复现证据:交互类问题录制视频并逐步截图,静态类问题使用单张标注截图。
  • 增量式撰写报告,每发现一个问题立即追加,避免会话中断导致丢失。
  • 会话结束时更新严重程度统计并关闭会话。

使用方式

设置

仅需提供目标 URL,其余参数均有合理默认值:

  • 目标 URL(必填):如 vercel.com、http://localhost:3000
  • 会话名称:默认由域名 slug 化生成(如 vercel.com -> vercel-com),可用 --session my-session 覆盖
  • 输出目录:默认 ./dogfood-output/,可用 Output directory: /tmp/qa 覆盖
  • 范围:默认整个应用,可指定如 Focus on the billing page
  • 认证:默认无,可指定如 Sign in to user@example.com

如果用户说“dogfood vercel.com”之类的话,直接使用默认值开始,不要追问澄清问题,除非提到了认证但缺少凭据。

始终直接使用 agent-browser,不要用 npx agent-browser。直接二进制使用快速的 Rust 客户端;npx 经由 Node.js 会明显更慢。

工作流

  1. 初始化:创建会话、输出目录、报告文件。
  2. 认证:如需登录则登录并保存状态。
  3. 定位:导航到起点,拍摄初始快照。
  4. 探索:系统化访问页面并测试功能。
  5. 记录:发现每个问题时截图并记录。
  6. 收尾:更新汇总计数,关闭会话。

1. 初始化

mkdir -p {OUTPUT_DIR}/screenshots {OUTPUT_DIR}/videos
cp {SKILL_DIR}/templates/dogfood-report-template.md {OUTPUT_DIR}/report.md
agent-browser --session {SESSION} open {TARGET_URL}
agent-browser --session {SESSION} wait --load networkidle

2. 认证

如需登录:

agent-browser --session {SESSION} snapshot -i
agent-browser --session {SESSION} fill @e1 "{EMAIL}"
agent-browser --session {SESSION} fill @e2 "{PASSWORD}"
agent-browser --session {SESSION} click @e3
agent-browser --session {SESSION} wait --load networkidle

对于 OTP/邮箱验证码:询问用户,等待回复后输入验证码。登录成功后保存状态:

agent-browser --session {SESSION} state save {OUTPUT_DIR}/auth-state.json

3. 定位

agent-browser --session {SESSION} screenshot --annotate {OUTPUT_DIR}/screenshots/initial.png
agent-browser --session {SESSION} snapshot -i

识别主导航元素,规划要访问的区块。

4. 探索

阅读 references/issue-taxonomy.md 获取完整的问题清单和探索检查表。策略:从主导航开始,访问每个顶层区块;在每个区块内测试交互元素;检查边界情况;尝试真实的端到端工作流;定期检查浏览器控制台。

每个页面执行:

agent-browser --session {SESSION} snapshot -i
agent-browser --session {SESSION} screenshot --annotate {OUTPUT_DIR}/screenshots/{page-name}.png
agent-browser --session {SESSION} errors
agent-browser --session {SESSION} console

自行判断探索深度,核心功能多花时间,外围页面少花时间。若某区域问题集中,深入调查。

5. 记录问题(复现优先)

步骤 4 和 5 同时进行——探索与记录一次完成。发现问题时立即停止探索并记录,不要先探索完整个应用再记录。

每个问题必须可复现。选择合适级别的证据:

交互/行为类问题(功能、UX、操作时的控制台错误):需要用户交互才能复现,使用完整复现流程,录制视频并逐步截图:

agent-browser --session {SESSION} record start {OUTPUT_DIR}/videos/issue-{NNN}-repro.webm
agent-browser --session {SESSION} screenshot {OUTPUT_DIR}/screenshots/issue-{NNN}-step-1.png
sleep 1
# 执行操作
sleep 1
agent-browser --session {SESSION} screenshot {OUTPUT_DIR}/screenshots/issue-{NNN}-step-2.png
sleep 1
# ...继续直到问题出现
sleep 2
agent-browser --session {SESSION} screenshot --annotate {OUTPUT_DIR}/screenshots/issue-{NNN}-result.png
agent-browser --session {SESSION} record stop

在报告中写入编号复现步骤,每步引用对应截图。

静态/加载即可见的问题(错别字、占位文本、文字截断、错位、加载时的控制台错误):无需交互,单张标注截图即可,无需视频和多步复现:

agent-browser --session {SESSION} screenshot --annotate {OUTPUT_DIR}/screenshots/issue-{NNN}.png

在报告中写简要描述并引用截图,将 Repro Video 设为 N/A。

所有问题:立即追加到报告,不要批量留到后面;递增问题计数器(ISSUE-001、ISSUE-002……)。

6. 收尾

目标找到 5-10 个记录充分的问题后收尾。证据深度比总数更重要——5 个带完整复现的问题胜过 20 个描述模糊的问题。

探索后:重新阅读报告,更新汇总严重程度计数,使其与实际问题一致;每个 ### ISSUE- 块都必须在总计中体现。关闭会话:

agent-browser --session {SESSION} close

告知用户报告已就绪,并总结发现:问题总数、按严重程度分类、最关键的项目。

适用场景

  • 对 Web 应用进行探索性测试和 QA。
  • 在发布前系统化查找缺陷和体验问题。
  • 需要为每个问题提供可复现证据的测试报告。

限制与指导

  • 复现是关键。每个问题都需要证据,但证据要与问题匹配:交互类问题需要视频和逐步截图;静态问题只需单张标注截图。
  • 收集证据前先验证可复现性:至少重试一次确认问题可稳定复现,否则不是有效问题。
  • 不要为静态问题录制视频。
  • 交互类问题逐步截图,捕捉操作前、操作中、操作后。
  • 复现步骤要与截图对应,读者应能不看浏览器就跟随步骤。
  • 使用正确的快照命令:snapshot -i 用于查找可点击/可填写元素;snapshot(无参数)用于阅读页面内容。
  • 要彻底但要有判断力:不是按测试脚本执行,而是像真实用户一样探索。
  • 增量式撰写发现,会话中断时发现得以保留。
  • 绝不删除输出文件,不在会话中途删除截图、视频或报告,不关闭会话后重启。
  • 绝不阅读目标应用的源代码:以用户身份测试,而非审计代码。不读取被测应用的 HTML、JS 或配置文件,所有发现必须来自浏览器中观察到的内容。
  • 检查控制台:许多问题在 UI 中不可见,但会以 JS 错误或失败请求出现。
  • 像用户一样测试,而非机器人:尝试常见工作流端到端,点击真实用户会点击的内容,输入真实数据。
  • 像人一样打字:录制视频时填写表单字段使用 type 而非 fill(逐字符输入);仅在视频录制之外、速度重要时使用 fill。
  • 为人类调整复现视频节奏:操作间加 sleep 1,最终结果截图前加 sleep 2。视频应能以 1 倍速观看。
  • 高效使用命令:独立命令可在单次 shell 调用中批量执行;滚动使用 agent-browser --session {SESSION} scroll down 300,不要用 key 或 evaluate 滚动。

参考资料

  • references/issue-taxonomy.md:会话开始时阅读,校准要查找的内容、严重程度级别、探索检查表。
  • templates/dogfood-report-template.md:复制到输出目录作为报告文件。