<!-- title: 测试空屋回访：12天无人认领 -->

# 测试空屋回访：12 天无人认领

## 概述

## 一、回访口径

回访要回答的问题只有一个：09-04 期确认的「编写层真空」，在随后 12 天的新增供给里有没有被填上。

## 二、12 天后的三组口供

**需求端：注册表没动过家具。** 本会话注册表里与「测」字沾边的在册件，与 09-04 期盘点相比一件未增：webapp-testing 依旧测网页行为而非代码正确性，verify 与 run 依旧只管「跑起来看」，gh-fix-ci 依旧只管红灯善后，pptx-test 与 encoding-check 依旧守着内容质检的门。编写层在装机端依然零编制。

**唯一悬案：还是那两个名字。** 全生态可见范围内最接近编写层的两个件——mattpocock/skills 53 件套里的 tdd，与 obra/superpowers 框架里的 test-driven-development、verification-before-completion 子件——09-04 期就因通道未开而只读到名字，今天依旧没读到正文。两个连续多期的「※」背后是个尴尬的事实：**测试轨道上最重要的两个样本，本栏至今没有一眼看过正文。**

供给端不是没干活，是干到了别处。两期快照里与开发效率沾边的全部新面孔，去向如下：

| 新面孔 | 星数（09-15→09-16） | 去向 | 与测试编写层的距离 |
|---|---|---|---|
| x64dbg-mcp-server | 1962→1976 | 二进制调试 | 隔壁楼：修虫线已档 |
| stop-that-shit | 1989 | 行为刹车，拦无需求改动 | 隔壁楼：审 Agent 不审代码 |
| terminal-code | 1997 | 终端里的编辑器 | 非件，工具本体 |
| shadcn-ui/lint | —→1870 | 设计系统门卫 | 已让渡兄弟栏目 |
| ai-data-extractor | 797→825 | AI 编程会话考古 | 已让渡兄弟栏目 |
| appllama-skills | —→1816 | 爆款模式造码件 | 上游：帮写不帮测 |
| rune | 526→713 | 开发环境 | 远亲 |
| ffmpeg-skill | —→1074 | 媒体处理，描述空缺※ | 无关 |
| **测试编写件** | **0 条** | — | **本轮主角，仍无人认领** |

这张表是本文最硬的一块证据：**星积攒得最凶的开发向新货，全部挤在「帮 Claude 写」「给 Claude 立规矩」「替 Claude 记账」三个方向，没有一个愿意站进编写层。**

## 三、空屋为什么还是空的：瓜分完毕

09-04 期给过三个假设：知识冗余（pytest 语法在模型基线里）、知识本地化（测试规范是仓库私产）、成果不可展示（没发生的 bug 换不来星）。12 天过去，三个假设全部经住了复检，但回访补上了第四块拼图——**编写层的地盘不是没人要，是被合法瓜分完了**。把今天测试轨道上的工位摊开看：

```mermaid
flowchart TD
    A["纪律层 tdd※"] --> B["编写层：空"]
    B --> C["执行层 hooks 与 CI"]
    C --> D["观察层 verify 与 run"]
    C -->|红灯| E["下游 gh-fix-ci"]
    F["webapp-testing 网页特例"] -.-> B
    F -.-> C
```

上游，写什么测试由仓库 CLAUDE.md 里的私产约定说了算；纪律，superpowers 的反合理化表和 tdd 的红绿循环把「不许跳过」钉死；执行，update-config 的描述原文写明 hooks 归 harness 而非模型（*"the harness executes these, not Claude"*）；观察，verify 收编了手动测试并自报工位——*「before passing to human review」*；下游，红灯善后划归 gh-fix-ci；网页行为的特例座位，09-10 期闭环横评发给了 webapp-testing（测试关 4.00 分）。六个方向各有一主，编写层剩下的全部地盘，只有两条窄缝：**学本仓库的方言**（fixture 怎么搭、命名跟谁走）和**堵模型的借口**（跳过测试是模型的系统性行为倾向，不是偶发失误）。

这两条缝有个共同的商业缺陷：都产生不了可录屏的 demo。修虫六件那期结过一次账——高频刚需正在从社区回流出厂，社区机会只剩 notebook-fix 这样的窄缝。编写层比那更冷：notebook-fix 至少独占「notebook 崩了」这个触发词，而编写层的触发词被 hooks、CLAUDE.md、tdd 三家摊薄，**剩不下一个可以独占的词**。09-14 期说「下一个生态机会，可能就埋在这间空屋里」，回访的答案是：机会确实在屋里，但房租收不上来，等不来租客。

## 四、样板件：test-writer 设计稿

等不来市场，就自己搬进去。按 09-04 期的三层握手协议（触发层、正文层、钩子层），造一件项目级测试编写件。**以下是设计稿，未在真实仓库实测**，动手前请先小范围试。

```markdown
name: test-writer
description: 为本仓库补写单元测试与回归用例。TRIGGER：要求补测试、
  加用例、覆盖边界、加回归防护，或指出某段代码没有测试。
  SKIP：运行测试归 hooks 与 CI；修红灯归 gh-fix-ci；网页端到端
  验证归 webapp-testing；找 bug 归 code-review。本件只写不改，
  不修改任何产品代码。
# test-writer

## 第一步：先学本仓库的方言
写用例前先读 2~3 个既有测试文件，抄三样：命名风格、断言库、
fixture 搭法。仓库没有测试时按 CLAUDE.md 约定；也没写，先问再动手。

## 第二步：每函数 ≤3 用例起步
正常路径 1 条、边界 1 条、异常 1 条。先写到失败，粘贴失败输出
作为证据，再补最小实现或修用例。覆盖率只报数字，不许诺指标。

## 第三步：证据流水线
每个用例必须留下「运行过」的证据：粘贴命令与输出摘要。
写完不敢跑的测试等于没写。

## 反合理化表
| 借口 | 反驳 |
|---|---|
| 函数太简单不用测 | 简单函数的用例也只多三行，写它 |
| 环境跑不起来 | 标记 skip 并注明原因，不许默默跳过 |
| 改动很小不需要回归 | 回归用例就是为小改动生的 |

## 交接
写完交 hooks 跑；红灯交 gh-fix-ci；绿灯交 verify 验收。
```

设计上有三处直接继承了本栏已档的写法：门牌用「触发-跳过对」加负面清单（查文档层首拆提炼的模式），把四个相邻工位一一推出去，一件的描述同时替五件当了路由器；正文把纪律 checkable 化（粘贴输出作证据），抄的是 superpowers 反合理化表的思路；交接条款把执行权还给 hooks，不越 09-04 期画的那条「编写件不碰执行」的线。它的工作流：

```mermaid
flowchart TD
    U["用户说 补个用例"] --> J{"判断意图"}
    J -->|写用例| T["test-writer 三步纪律"]
    J -->|跑一下| H["推出门 hooks 与 CI"]
    J -->|修红灯| G["推出门 gh-fix-ci"]
    J -->|网页行为| W["推出门 webapp-testing"]
    J -->|找 bug| R["推出门 code-review"]
    T --> V["证据流水线 粘贴输出"]
    V --> E["交接 verify 验收"]
```

## 五、评测对比表：测试轨道复核

权重沿用本栏固定口径（功能 25%、设计 25%、实战 20%、上手 15%、社区 15%），前五件分数直接沿用 09-04 期口径——12 天里没有任何一件发布过新版本信息，本期不复核细节、只复核工位变动：

| 件 | 工位 | 09-04 期分 | 本期复核 | 变动说明 |
|---|---|---|---|---|
| webapp-testing | 网页 E2E 特例 | ★★★★☆（4.7） | 4.7，叙事分上升 | 09-10 闭环横评发给它测试关座席 |
| verification-before-completion※ | 防跳过纪律 | ★★★★☆（4.6） | 4.6，仍未核验正文 | 连续两期通道未开，悬案依旧 |
| verify（出厂） | 行为验收 | ★★★★（4.35） | 4.35 | 修虫期确认其在流水线的验收位 |
| gh-fix-ci | 红灯善后 | ★★★☆☆（3.9） | 3.9 | 修虫期主拆过，定位未变 |
| tdd※ | 纪律孤本 | ★★★☆☆（3.9） | 3.9，仍未核验正文 | 同上 |
| test-writer（本文样板） | 编写层 | 不计分 | 设计稿 | 未实测，不给星 |

> 评分说明：带※者为黑箱估分，正文未读；test-writer 是本文产出的设计稿，自产自评没有意义，只给骨架供批判。

## 六、安装与十分钟验收

```bash
# 唯一在册的纪律件套件（09-04 口径，tdd 正文仍未核验※）
npx skills add mattpocock/skills

# superpowers 框架（含 test-driven-development 与
# verification-before-completion 子件）
/plugin install superpowers@claude-plugins-official

# 官方示例合集（webapp-testing 所在仓库）
npx skills add anthropics/skills

# 本文样板件（设计稿）
mkdir -p ~/.claude/skills/test-writer
# 将第四节 SKILL.md 内容存为该目录下 SKILL.md，重开会话生效
```

装完样板件，用十分钟做三个验收动作：其一，挑一个有小函数的真实仓库，说「给这个补个用例」，看它是否先读既有测试再动笔；其二，说「跑一下测试」，看它是否按门牌约定把你推出门交给 hooks，而不是自己抢活；其三，检查产出的每个用例有没有附命令与输出摘要——没有证据的用例，按它自己的第三步就是不合格品。三条全过，样板才算从设计稿转正。

## 七、分维度排行榜

- **今天就能改善测试 最小成本**：在仓库 CLAUDE.md 里写清测试约定——零安装，直接补编写层最缺的「方言」；
- **最该装的现成件**：superpowers 框架——verification-before-completion 一张反合理化表，堵的是模型最系统的毛病；
- **最该盯的悬案**：tdd 与 verification 两个子件的正文核验——通道一开就该做，本栏欠了三期；
- **最不该装的**：任何自称「AI 自动写全部测试」的知识件——三个假设注定它产出的噪声大于信号；
- **最大的空位**：依然是编写层——但门牌、图纸、样板这次都齐了。

## 结语

回访的结论可以压成一句：这间空屋等不来租客，是因为能当砖用的材料——约定、纪律、执行、观察、善后——早已各归其主，剩下的窄缝又恰好是星换不走的那类活。对使用者，别等了：CLAUDE.md 写约定、hooks 管执行、样板件管编写，三件拼起来今天就能用。对写件的人，编写层确实还空着，但入场券不是 pytest 知识，是纪律与握手——09-04 期画的协议，本文补了一间样板房，能不能住人，等你实测。

## 参考来源

> [!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学通信知识星球海报-扫码加入](https://wiki.500nian.com/images/zhixingqiu_qrcode.png)
