SuperAPI AI 工具集

manual-tester

测试与质量

查看项目

更新于 10-16 06:08

技能介绍

用途

Manual Tester 用于规划和执行对「运行中应用」的人工测试会话。它定位于自动化测试套件之外的领域:自动测试复验已知承诺,而本技能处理其余部分,从寻找未知缺陷到判断某个界面是否合理。其测试姿态是证伪——试图打破「软件正常工作」的信念,而不是确认它。由于 AI 代理的判断并非绝对可靠,技能要求每条结论都必须通过证据纪律的检验。

如果用户要求的是「测试计划」而非「测试会话」,则按 references/test-plan-authoring.md 编写并停止,不驱动应用;此时仍需先解析定制配置并读取适配器。

项目定制配置

开始前须先解析定制配置:

python3 <skill-dir>/scripts/resolve_customization.py

需要 Python 3.11 或 tomli 包。脚本合并三层并输出 JSON:技能自带 customize.toml 默认值、团队覆盖 _project/testing/manual-tester.toml、个人覆盖 _project/testing/manual-tester.user.toml。覆盖文件缺失属正常,表示使用默认值。之后按 customization.workflow 行动:activation_steps_prepend 在预检前执行;persistent_facts 是项目测试策略,须完整阅读并在整个会话中保留,当事实与本技能冲突时以事实为准;activation_steps_append 在预检后、任务开始前执行;on_complete 在报告写完后执行。脚本非零退出时须停止并展示其消息。默认判定词(PASS / FAIL / PARTIAL / UNVERIFIED / OBSERVATION)在项目定义了自己的状态词汇时应替换,且不得向 PASS 方向映射;OBSERVATION 不属于任何状态词汇,应单独成节、不带状态。

会话模式

按用户实际需求选择模式,开放式请求默认使用探索式。所有模式共享同一骨架(步骤 0–5),区别仅在任务形式与驱动方式:

  • exploratory(默认):探测某功能/故事/区域的未知问题,任务形式为「探索 X,借助 Y,以发现 Z」的探索章程。
  • verification:核查具体断言(如缺陷修复、故事行为),任务形式为一个可证伪断言及其复现步骤,随后探索修复周边。
  • smoke:部署/重置/合并后的快速「应用是否还活着」检查,固定核心流程广度清单,仅走正确路径。
  • assessment:面向判断质量的评审(UX、本地化文案、可访问性),一个视角 × 一组界面,输出多为供人工审阅的 OBSERVATION。
  • ai-probe:评估 AI 代理回复的准确性,使用预置问题集并对照数据库核实。

模式在实践中会混合,但每次切换都要记录,且不能让任何模式把冒烟拖入深度测试。

项目适配器

所有环境知识来自仓库的适配器目录 _project/testing/,绝不来自本技能:

  • environment.toml:机器可读事实([project]、[apps]、[services]、[database]、[auth]、[tenants]/[accounts]、[outputs]、[preflight])。
  • environment.md:带上下文的知识,含日期化的「当前状态」快照、认证流程操作说明、注意事项。
  • verification-queries.md:按意图组织的只读数据库查询,匹配本项目 schema。

应信任适配器胜过自身假设与通用文档。若适配器与运行中应用观察结果矛盾,那是关于适配器的问题,应报告并建议更新。若 _project/testing/ 不存在或缺少必需区段,进入 bootstrap 模式:从真实文件研究仓库(不可验证的值标记 TODO(confirm),绝不猜测),按骨架起草三个适配器文件,交用户确认,并在首次会话前验证适配器本身。

会话步骤

0 · 预检:加载 environment.toml 并按顺序运行 [preflight] 检查,首个失败即停止。随后探测任务目标应用(curl 其 [apps] url)。若服务未启动,告知用户或征询后启动。阅读「当前状态」快照。仅在本地开发环境运行,绝不针对生产环境。

1 · 任务:若被分配了测试设计、计划或用例 ID,先做 intake,并阅读目标相关的先前会话记录与缺陷报告,将每个条件按证据类型分类(manual / automated / deferred-unknown)并展示,然后询问是只测手动条件(默认)还是也独立复测 UI 可观察的自动化条件。在接触应用前按模式写出任务形式;探索式需写出章程,若用户只给了目标,则从高风险处(金钱、认证、租户边界、未提及的状态转换、功能接缝)派生 2–4 个候选并选最高风险者。声明时间盒,超时即停止并提议后续会话。

2 · 驱动:用浏览器自动化驱动应用并即时记录(做了什么 → 看到了什么 → 得出什么结论)。探索式让每次观察决定下一个实验;验证式与冒烟式按脚本执行并记录偏差。每次重要操作后扫查标准信号:控制台新增 JS 错误/警告;网络 4xx/5xx、错误载荷、明显慢请求;i18n 原始键或未翻译/不自然文本;租户隔离泄露(立即判为 Critical);认证边界越权;静默失败(UI 称成功而数据库不符)。证据须即时截取,截图存入适配器的 outputs.screenshots_dir 并按所证明内容命名。

3 · 验证:不得仅凭 UI 证据下结论。核心是三方交叉验证:UI 快照 + 只读数据库 SELECT + 网络/控制台。数据变更操作以其数据行为准,而非弹窗提示。判 FAIL 前须自检:证明以正确角色登录、定位到正确元素、页面确已加载,并从干净状态复现两次。判定词为 PASS / FAIL / PARTIAL / UNVERIFIED / OBSERVATION;「我无法测试」属 UNVERIFIED,绝不记 FAIL;纯判断性内容(UX 困惑、措辞怪异、感觉迟缓)记为 OBSERVATION,忠实记录但不判状态,留待人工审阅。

4 · 报告:在仓库中按适配器 [outputs] 声明的路径产出。始终写会话笔记(即使无发现),含覆盖图(访问过、跳过、从未到达)。每个 FAIL/PARTIAL 写一份缺陷报告,完整到未在场的开发者也能复现。会话笔记内含自动化候选项:每条持久发现表述为场景 + 确定性判定 + 建议层级。

5 · 汇报:向用户总结,发现优先:判定计数、缺陷(严重级别、各一行)、需人工判断的观察、开放问题、覆盖诚实性(「未到达:……」)以及按风险排序的后续会话建议。

硬性规则

始终以用户书写所用语言与之交流。数据库访问只读,仅用 SELECT 验证,绝不 INSERT/UPDATE/DELETE;若种子状态太脏无法测试,请用户重置。破坏性或对外部产生影响的动作(删除非种子数据、发送真实邮件/消息、任何不可逆操作)须先询问。报告中每条结论都带证据,每张截图都被某个发现或日志引用。报告实际发生的事,而非本应发生的事。

参考文件

customize.toml 与 resolve_customization.py(会话开始、预检前)、test-plan-intake.md(被分配测试设计/计划/用例 ID)、environment.toml 与 environment.md(会话开始)、verification-queries.md(对照数据库验证数据变更)、adapter-bootstrap.md(_project/testing/ 缺失或不完整)、test-plan-authoring.md(被要求编写人工测试计划或用例)、session-modes.md(运行 verification/smoke/assessment/ai-probe 模式)、assessment-rubric.md(评估模式,每条发现引用一个 rubric ID)、exploration-method.md(写章程、中途缺乏思路、覆盖图)、proof-discipline.md(写任何判定前、判 FAIL 前、探查 AI)、session-note-template.md(写会话笔记)、bug-report-template.md(提交 FAIL/PARTIAL 发现)。