首页 › skills-review › 测试件缺席:效率赛道最后真空

测试件缺席:审查、调试、重构都拆完了,「写测试」这件事没人做

概述

一、三组口供:真空不是错觉

装机端。 本栏 09-04 期装机普查的口径是 390 件、人设件占三分之二;把剩下三分之一的工具件逐名扫过去,与「测」字沾边的只有三件:webapp-testing(官方 E2E 侦察件,已拆)、pptx-test(名字在册、无描述随清单,从名字看是 PPT 产物的质检件※)、encoding-check(环境件※)。数据科学侧最接近「修」的 notebook-fix 也只管修笔记本、不管写测试※。三件没有一件的靶子是「为你的业务代码编写用例」。

出厂端。 官方 16 件 example-skills 清单(r2-0618 存档抓取口径)里,唯一带 test 字样的是 webapp-testing。更妙的是措辞证据:出厂件 verify 的描述原文给了五个触发场景——"verify a PR / confirm a fix works / test a change manually / check a feature works / validate local changes before pushing"——第三个场景里,"test" 这个词的官方触发位给的是「手动测一测」,不是「写测试」。官方把「测试」一词消费在观察行为上,编写用例这件事,官方从未设件。

mindmap
  root((测试件真空<br/>三组口供))
    装机端
      390件在册
      测试写作件为零
      仅E2E与质检沾边
    市场端
      四期快照零上榜
      表达层一周6件
      可展示性筛选
    出厂端
      官方16件无一件
      verify占据test一词
      执行位划给hooks

二、评测对比表:测试轨道上的五个近邻件

口径:五维(功能 25% / 设计 25% / 实战 20% / 上手 15% / 社区 15%),满分 5。verify、gh-fix-ci、verification-before-completion、webapp-testing 为存档实测分或星级沿用;tdd 为本期黑箱估分※。最后一行是本期主角——那个不存在的件。

件 归属 它卡的测试段 功能 设计 实战 上手 社区 加权
verify 出厂件 观察层(跑起来看行为) ★★★★ ★★★★ ★★★★★ ★★★★ ★★★★★ 4.35(沿用)
webapp-testing 官方插件 E2E 特例(仅网页) ★★★★★ ★★★★★ ★★★★★ ★★★★ ★★★★ 4.7(星级换算)
verification-before-completion superpowers 纪律层(不许谎报完成) ★★★★☆ ★★★★★ ★★★★ ★★★★☆ ★★★★★ 4.6(存档实测)
gh-fix-ci 出厂件 下游层(红灯修绿) ★★★★ ★★★★ ★★★★ ★★★★ ★★★ 3.9(实拆沿用)
tdd ※ mattpocock/skills 纪律层(红绿循环编排) ★★★☆ ★★★★☆ ★★★☆ ★★★ ★★★★★ 3.9※
编写层:写测试件 无人 编写用例 — — — — — 缺席

说明:tdd 的社区五星依据是套件级安装量(skills.sh 口径累计约 1820 万次,单源标注),并非 tdd 单件的独立数据;上手三星的依据是 mattpocock 系有「裸仓库装上跑不起来」的前科(triage 强依赖 /setup 写配置,存档已证),tdd 是否可独立可用未经核验。

三、逐件看:它们各自停在离「写测试」一步的地方

verify——行为主义的终点。 它的哲学是「通过运行应用、观察行为来验证」,五个触发场景全是验证动词,零产物产出。它隐含一个前提:要么已有人写了测试,要么人知道该怎么验。官方栈里它拿 4.35 的实拆高分,但它是测试的消费者,不是生产者。

webapp-testing——唯一的真测试件,靶子却是网页。 决策树侦察 + with_server.py 生命周期托管 + examples/ 抽屉,结构是官方范本级(r8-1228 给到 5/5/5/4/4)。但测的是「页面 behaves」,不是「函数 correct」。耐人寻味的是官方为什么单选 E2E:浏览器截图是可观测的证据——又一次「可展示性」筛选,与第三节的假设三呼应。

verification-before-completion——最接近测试灵魂的一件,却一个测试都不写。 它管的是「宣布完成之前必须验证过」的纪律,而它的反合理化表第一行堵的借口恰恰是「这次改动很小不用测了」。把这句话读两遍:生态里写得最好的测试相关文本,是一份防跳过测试的借口反驳表。纪律层齐了,编写层至今没人接盘。

gh-fix-ci——测试的下游。 红灯已经亮了,它负责修绿:inspect_pr_checks.py 处理 gh 字段漂移、非零退出码直通自动化(r5-1133 实拆口径,3.9 分)。它与 github-actions-skill「一个管写对、一个管修好」的分工存档早有记录。停点在于:它假设测试已经存在于流水线里——链路上游的「测试从哪来」,它不问。

tdd(※黑箱)——全生态唯一幸存者。 名字契约先读一层:把「测试驱动开发」这个四十年方法论压成三个字母,赌的是读者自带语境,不做任何解释性展开。从套件血统推断※:同一作者的 writing-great-skills 立过「checkable 且 exhaustive」表述法,grilling 原语、triage 状态机也在同一套件——tdd 大概率不是「教你 pytest」的知识件,而是纪律编排件:先写失败测试→看着它失败→再实现,每步有可检验判据。它卖流程不卖知识,恰好成了本文第四节论点的活注脚。

四、真空为什么存在:三个假设与一个幸存者

假设一:知识冗余。 pytest 语法、断言库、mock 手法都在模型基线能力里,「教知识」的测试 Skill 没有增量,市场自然不生产。但反证同样硬:纪律半是模型最弱的一环——superpowers 的反合理化表第一行就是证据,「跳过测试」是模型的系统性行为倾向,不是偶发失误。

假设二:知识本地化。 测试规范是仓库私有约定——fixture 怎么搭、命名跟谁走、覆盖率阈值多少。写错约定的测试比没有测试更吵。这类知识的正确容器是仓库自己的 CLAUDE.md 与项目配置,不是全局 marketplace 件:一个全局测试件装进十个仓库,九个在制造噪声。官方栈的分咎佐证这一点——执行位划给了 hooks(update-config 描述原文:"hooks configured in settings.json … the harness executes these, not Claude"),修红灯划给了 gh-fix-ci。测试在官方体系里的存在形态是配置与下游件,唯独不是编写件。

假设三:成果不可展示。 测试的成果是「没发生的 bug」,负向成果没有截图、没有 demo。0133 期已记录本周母题:新 Skill 集体卷表达层,因为视觉成品才能换星。榜单逻辑天然淘汰拿不出 demo 的品类——质检层横评(r4-0257)观察过同款现象:门禁件好用,但难上榜。

幸存者即证词。 tdd 是唯一活下来的,而它活下来的方式恰好是绕开三个假设:不卖知识(过假设一)、纪律全局可迁移、不依赖仓库约定(过假设二)、以过程纪律而非成品截图立身(假设三的部分豁免)。这也解释了为什么幸存者只有一个而不是一打。

flowchart LR
    A[改代码] --> B["纪律层<br/>tdd※ · verification-before-completion"]
    B --> C["编写层<br/>⚠️ 无人设件"]
    C --> D["执行层<br/>hooks / CI 配置(非技能)"]
    D --> E["观察层<br/>verify · run"]
    D -->|红灯| F["下游层<br/>gh-fix-ci"]
    W["webapp-testing<br/>E2E特例:仅网页"] -.-> C
    W -.-> D

五段轨道里,唯獨编写层空着。需要一个免责声明:superpowers 14 件中存档仅点名 9 件,mattpocock 53 件的完整清单也未在本期材料中逐件核对——不排除某处藏着第二只测试件,这是本文论断的最大不确定点。

五、想填坑的人怎么写:三层握手协议

按本文三假设,编写层的正确形态不是「AI 帮你写测试」的知识件,而是纪律件 + 钩子握手件。三层可抄:

触发层(description)。 TRIGGER 卡技术信号:「no tests for」「coverage」「regression」「补个用例」;SKIP 把近邻场景明确推出去——「跑测试归 hooks,修红灯归 gh-fix-ci」。这是 r3-0104 提炼的触发-跳过对与边界让渡模式的直接应用。

正文层(纪律 checkable 化)。 把红绿循环写成有证据的流水线:先写失败测试→运行→粘贴失败输出作为证据→最小实现→再运行→粘贴通过输出。配一条开篇算式(借 code-review 的写法):每函数 ≤3 用例起步——正常路径/边界/异常,覆盖率只报数、不许诺。再预装一张反合理化表(superpowers 资产直接搬)。

钩子层(与 harness 握手)。 SKILL.md 明写「本件只管写,执行归钩子」,并在文末给出交接配置(结构示意,以官方 hooks 文档为准):

{
  "hooks": {
    "PostToolUse": [{
      "matcher": "Edit|Write",
      "hooks": [{ "type": "command", "command": "pytest -x -q" }]
    }]
  }
}

改完即跑交给 harness,红灯善后交给 gh-fix-ci——一个编写件与官方栈的完整握手协议。

六、安装与使用

# tdd 所在套件(53 件;triage 类需先跑 /setup 写配置,tdd 是否独立可用未经核验※)
npx skills add mattpocock/skills

# verification-before-completion 所在框架(官方插件市场一条命令)
/plugin install superpowers@claude-plugins-official

# webapp-testing 所在官方合集
npx skills add anthropics/skills

# verify / gh-fix-ci 为出厂件,随 Claude Code 分发,无需安装

七、推荐排行榜与结论

测试真空不是生态的疏忽,是三次理性投票(知识冗余、知识本地化、成果不可展示)投出来的形状。对使用者,今天就能做的三件事:装 verification-before-completion 堵借口、用 hooks 把执行自动化、在仓库 CLAUDE.md 里写清本仓库测试约定——三件拼起来,就是一个不叫 Skill 的「写测试件」。对写技能的人,空位在编写层,但入场门票是纪律与握手,不是 pytest 知识。

参考来源

[!tip] 51学通信知识星球 星主:爱卫生(微信:gprshome201101)——公众号「51学通信」创办者,19 年通信行业运维与讲师经验,著有《GPRS网络信令实例详解》《EPC原理与实践》《5G核心网原理与实践》三本纸质书(各大电商平台有售)。 星球定位:深耕 5G 核心网、IMS、NFV/AI、云原生等 ICT 领域,主打运维岗位与信令分析。 当前规模:5200 篇主题 / 990 个回答,198 元/年。 加入福利:加入星球后请加爱卫生微信,拉您进知识星球年度陪伴与答疑群——不限量回复您的各种问题,另有群内分享。 AI 加持:51学通信知识星球已作为 skill 接入 WorkBuddy,使用 deepseek-4-flash 在海量星球帖子中精准找贴、找视频、找 FAQ 和案例,做总结、找文档和 PPT 等场景全覆盖。

51学通信知识星球海报-扫码加入