mcpField
L
ln-404-test-executor

ln-404-test-executor

github.com/levnikolaevich测试与质量584378 次安装2 天前更新
代码仓库

关于 ln-404-test-executor

ln-404-test-executor 用于执行单个 Story 测试任务,从 Todo 推进至 To Review。它聚焦业务行为、基于风险的覆盖和严格断言,并将更改留待评审,不会提交。

主要功能

  1. 01执行一个标记为 tests 的任务
  2. 02检查优先级与覆盖约束
  3. 03编写测试并运行
  4. 04更新任务状态与结果
  5. 05保留未提交更改

适用场景

  1. 01验证 Story 中的业务流程
  2. 02添加或更新计划中的测试
  3. 03运行测试并分析新出现的失败
  4. 04将测试结果交给评审者

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/levnikolaevich/claude-code-skills --skill ln-404-test-executor

安装后在 Claude Code 中输入/ln-404-test-executor确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

references/
agent_skill_roots_contract.md
audit_scoring.md
audit_summary_contract.md
audit_worker_core_contract.md
ci_tool_detection.md
code_efficiency_criterion.md
coordinator_summary_contract.md
environment_state_contract.md
epistemic_protocol.md
goal_articulation_gate.md
input_resolution_pattern.md
mcp_tool_preferences.md
provider_file.md
provider_github.md
provider_linear.md
research_tool_fallback.md
references/scripts/coordinator-runtime/lib/
artifacts.mjs
cli-helpers.mjs
core.mjs
loop-health.mjs
runtime-constants.mjs
schemas.mjs
validate.mjs
worker-guards.mjs
worker-runtime.mjs
references/scripts/planning-worker-runtime/
cli.mjs
references/scripts/planning-worker-runtime/lib/
guards.mjs
phases.mjs
store.mjs
references/scripts/task-plan-worker-runtime/
cli.mjs

详细介绍

**路径:**文件路径(references/、../ln-*)均相对于此技能目录。

测试任务执行器

**类型:**L3 Worker

通过实现和执行,将单个 Story 最终测试任务(标签为“tests”)推进至待审核状态。

用途与范围

  • 仅处理标记为“tests”的任务;其他任务交由 ln-401 处理。
  • 遵循 11 节测试任务计划(E2E/集成/单元测试、基础设施/文档/清理)。
  • 执行基于风险的约束:覆盖优先级 ≥15 的场景;每项测试均须满足有用性标准;不得进行框架/数据库/库/性能测试。
  • 仅更新此任务的跟踪器/看板:待办 → 进行中 → 待审核。

**Hex-line 加速(如可用):**读取测试目标前,先使用 outline(file_path)。使用范围较窄的 inspect_path(path=<relevant test dir>) 了解测试结构;如果确实需要完整盘点 tests/,请将 max_entries=0 作为明确选择,而不要假定默认模式上限会显示所有内容。 先使用 grep_search(output_mode="summary") 查找测试/辅助程序/夹具;只有在后续编辑需要规范代码块时,才升级为 output_mode="content", edit_ready=true;仅在明确需要覆盖限制时使用 allow_large_output=true。对测试/代码/配置文件,主要使用 read_file() 和 edit_file()。常规检查时,让 read_file() 保持在发现模式;对于需要遵循修订/校验和协议的编辑,先使用 read_file(edit_ready=true, verbosity="full")。交接前使用 verify() 和 changes()。仅当 hex-line 不可用时,才使用内置 Read/Edit 作为后备方案。

输入

输入必需来源描述
taskId是args、父级 Story、看板、用户要执行的测试任务

**解析:**任务解析链。 **状态筛选:**待办(标签:tests)

任务存储模式

**必须读取:**加载 references/environment_state_contract.md、references/storage_mode_detection.md、references/tracker_provider_contract.md 和 references/input_resolution_pattern.md

**必须读取:**加载 references/ci_tool_detection.md——测试命令执行所需的紧凑输出标志、pipefail,以及截断前先规范化的策略。

提取:task_provider = 任务管理 → 提供方(linear | github | file)。此技能中的操作与提供方无关——规范操作集请参见 references/tracker_provider_contract.md,传输绑定请参见 provider_*.md。

此技能使用的跟踪器操作:getTask、getStory、updateStatus(待办 → 进行中 → 待审核)、addComment(测试结果)。各提供方的传输方式见 references/provider_file.md, references/provider_github.md, references/provider_linear.md。

**必须读取:**加载 references/mcp_tool_preferences.md——只要 hex-line MCP 可用,代码文件就始终使用它。除非 hex-line 停止运行,否则不得回退到标准 Read/Edit。

工作流(简洁版)

  1. 解析 taskId: 按指南运行任务解析链(状态筛选器:[Todo,标签:tests])。
  2. 加载任务: 通过已配置的跟踪器提供方(getTask)获取完整的测试任务描述;阅读关联的指南、手册、ADR 和研究资料;查看父级 Story(getStory)及提供的手动测试结果。 2b) 目标门槛: 必须阅读: 加载 references/goal_articulation_gate.md — 陈述这些测试的真实目标(必须验证哪种业务行为,而不是“编写测试”)。目标不是:测试基础设施或框架行为,而非业务逻辑。隐藏约束:哪些现有测试可能因实现变更而失败。
  3. 阅读环境文档: 阅读 docs/project/infrastructure.md — 获取服务器 IP、端口和服务端点。阅读 docs/project/runbook.md — 了解测试环境设置、Docker 命令和测试执行的前置条件。使用 runbook 中的准确命令。
  4. 验证计划: 检查优先级 ≥15 的覆盖范围和实用性标准;确保重点放在业务流程上(不只测试基础设施)。
  5. 开始工作: 通过已配置的跟踪器提供方(updateStatus)将任务设为 In Progress;在看板中移动任务。
  6. 实现并运行: 必须阅读: 加载 references/code_efficiency_criterion.md — 按计划编写或更新测试;复用现有 fixture 和辅助函数;运行测试;修复已有测试中的失败;按需更新基础设施和文档部分。交接前,完成 3 项效率自检(尤其是:复用 fixture,而不是重复设置)。
  7. 完成: 确保数量和优先级仍在限制范围内;将任务设为 To Review;在看板中移动任务;添加评论,总结覆盖范围、运行的命令及任何偏差。

关键规则

  • 仅处理单个任务;不得批量更新。
  • 不要标记为 Done;由审核者批准。任务最终必须处于 To Review。
  • 与任务使用的语言(EN/RU)保持一致。
  • 不得进行框架、库、数据库、性能或负载测试;重点验证业务逻辑正确性(而非基础设施吞吐量)。
  • 遵守限制和优先级;若违反,停止并汇报发现。
  • 不要提交。 保留所有未提交的更改 — 由审核者审核并提交。

运行时摘要制品

必须阅读: 加载 references/coordinator_summary_contract.md、references/worker_runtime_contract.md、references/task_worker_runtime_contract.md

共享约定:

  • 输出 summary_kind=task-status
  • 独立模式下省略 runId 和 summaryArtifactPath
  • 受管模式下,在 worker 写入经过验证的摘要之前传入 runId 和确切的 summaryArtifactPath

监控(2.1.98+): 对预计超过 30 秒的测试或覆盖率命令,使用 Monitor。备用方案:Bash(run_in_background=true)。

完成定义

  • 已识别为测试任务并设为 In Progress;已更新看板
  • 已验证计划(优先级/限制)并阅读指南
  • 已实现或更新并执行测试;已修复已有测试中的失败
  • 已按任务计划更新文档/基础设施
  • 已将任务设为 To Review;已在看板中移动任务;已添加包含命令和覆盖范围的摘要评论
  • 已将运行时摘要制品写入共享的 task-status 位置。

测试失败分析流程

重要: 当一个新编写的测试失败时,应先停止并进行分析,再做任何更改(新测试失败往往表明实现存在错误,而不是测试有问题——盲目修复会掩盖根本原因)。

步骤 1:验证测试是否正确

  • 测试是否与 AC 要求完全一致?(Story 中的 Given/When/Then)
  • 根据业务逻辑,预期值是否正确?
  • 如果不确定:查询 ref_search_documentation(query="[domain] expected behavior")

步骤 2:作出判断

测试符合 AC?操作
是代码存在错误 → 修复实现,而不是测试
否测试有误 → 修复测试断言
不确定必须执行: 查询 MCP Ref,并在更改前询问用户

步骤 3:在跟踪器评论中记录(addComment) "测试 [name] 失败。分析:[测试正确 / 测试有误]。操作:[已修复代码 / 已修复测试]。原因:[justification]"

警示信号(需要用户确认):

  • ⚠️ 更改断言以匹配实际输出(“让测试变绿”)
  • ⚠️ 删除“不起作用”的测试用例
  • ⚠️ 放宽预期(例如,使用 toContain 而不是 toEqual)

可以继续处理:

  • ✅ 修复测试设置/mock 数据中的拼写错误
  • ✅ 修复代码,使其符合 AC 要求
  • ✅ 添加缺失的测试设置步骤

编写测试的原则

1. 严格断言——任何不匹配都应失败

默认使用精确匹配断言:

严格(优先)宽松(避免,除非有正当理由)
精确相等检查部分匹配/子字符串匹配
精确长度检查“任意长度”检查
完整对象比较部分对象匹配
精确类型检查真值/假值检查

禁止使用 WARN 级别断言——测试要么通过,要么失败,不应产生警告。

2. 对确定性输出进行基于预期值的测试

对于确定性响应(API、转换):

  • 对复杂的确定性输出使用快照/黄金文件测试
  • 将实际输出与预期参考文件进行比较
  • 比较前对动态数据进行规范化处理(时间戳 → 固定值,UUID → 占位符)
3. 黄金法则

“如果你知道预期值,就断言精确值。”

禁止: 当精确值已知时,使用宽松断言来“让测试通过”。

参考文件

  • 环境状态: references/environment_state_contract.md
  • 存储模式操作: references/storage_mode_detection.md
  • Kanban 格式:docs/tasks/kanban_board.md
  • 必须阅读: 加载 references/research_tool_fallback.md

版本: 3.2.0 最后更新: 2026-01-15

评论

支持 Markdown