Skip to main content

一夜之间测试完 8 个未测试模块

在夜间启动 8 个并行 Devin 会话——每个会话为一个测试覆盖率较低的模块编写单元测试,并在早上前创建一个 PR。
AuthorCognition
CategoryDevin 优化
Features高级, Playbook
1

创建测试编写指南

你的电商 monorepo 中有 30 多个模块,但只有少数拥有有效的测试覆盖率。你希望将整体覆盖率从 44% 提升到 80%——从覆盖率最差的 8 个模块开始。在启动并行会话之前,你需要一个 Playbook(操作手册),确保这 8 个会话都以相同的方式编写测试。使用 Advanced Devin 来创建这个 Playbook——点击输入框下方的 Advanced,选择 Create Playbook 选项卡,然后描述你的测试规范:这个 Playbook 会成为每个并行会话的共享指令集。你也可以添加关于测试工具、mock 模式或任何项目特有细节的 Knowledge 条目(例如,“在 afterEach 中始终调用 resetMocks()”)。
2

在下午 6 点启动 8 个并行会话

在你结束一天工作时,点击 Devin 主页输入框下方的 Advanced 打开 Devin 高级模式,然后选择 Start Batch Sessions 选项卡。
  1. 从下拉菜单中选择你的测试编写 playbook
  2. 在提示中描述任务:
  1. 查看拟创建的会话 — Devin 高级模式会列出每个模块及其当前覆盖率,并确认将要创建哪些会话:
建议的会话(8 个模块,覆盖率均低于 50%):
  1. src/services/PaymentService — 31% coverage
  2. src/services/UserService — 38% coverage
  3. src/api/routes/billing — 42% coverage
  4. src/middleware/auth — 44% coverage
  5. src/services/NotificationSvc — 47% coverage
  6. src/components/Checkout — 49% coverage
  7. src/utils/validation — 51% coverage
  8. src/services/SearchService — 53% coverage

启动 8 个并行会话?(y/n)
  1. 批准该批次后合上你的笔记本电脑。所有 8 个会话会在不同的 Devin 机器上同时启动,每个都会独立地按照你的操作手册执行。
3

一觉醒来就有 8 个 PR

到早上时,每个会话都已完成并创建了各自的拉取请求(PR)。你将在代码仓库中看到 8 个 PR,每个都包含新的测试文件和覆盖率摘要:
Module                       | Before | After  | PR     | Status
-----------------------------|--------|--------|--------|--------
src/services/PaymentService  |  31%   |  87%   | #412   | Ready
src/services/UserService     |  38%   |  84%   | #413   | Ready
src/api/routes/billing       |  42%   |  91%   | #414   | Ready
src/middleware/auth           |  44%   |  82%   | #415   | Ready
src/services/NotificationSvc |  47%   |  85%   | #416   | Ready
src/components/Checkout      |  49%   |  83%   | #417   | Ready
src/utils/validation         |  51%   |  93%   | #418   | Ready
src/services/SearchService   |  53%   |  86%   | #419   | Ready

Overall coverage: 44% -> 68% (+24 pts across targeted modules)
可以按任意顺序合并这些 PR——由于每个会话只会向其所属模块添加新的测试文件,几乎不会产生冲突。如果两个会话修改了共享的测试辅助工具,请手动解决冲突,或让 Devin 来修复。
4

为下一层级再运行一批

单靠一晚上的批处理,无法让整个代码库的覆盖率达到 80% 的目标。第二天晚上,再为下一层级的模块跑一轮补充批处理:你也可以从单元测试转向针对关键用户流程的集成测试:两晚的批处理会话就能把代码库的覆盖率从不足 50% 提升到超过 80%——这些工作如果由工程师手动完成,需要几周的专门投入。