测试生成Skill test-generation

这个技能用于自动生成软件测试,基于测试驱动开发(TDD)原则,遵循项目测试标准,提高代码质量和测试覆盖率。它支持多种测试行为,包括正面和负面测试,并使用AAA模式进行测试实施,帮助开发者高效进行自动化测试和错误预防。关键词:测试生成、TDD、自动化测试、软件测试、测试覆盖、AAA模式、vitest、JWT验证、中间件测试。

测试 0 次安装 0 次浏览 更新于 3/13/2026

name: 测试生成 description: 当用户询问测试、提到TDD,或者编写了新代码需要测试覆盖时使用。 context: fork agent: 测试工程师

测试生成

概述

生成全面测试,遵循TDD原则和项目测试标准。在隔离的测试工程师上下文中运行,预加载测试约定。

开始时宣布: “我使用测试生成技能为[功能/组件]创建测试。”

过程

步骤 1: 指定测试要求

向测试工程师提供清晰的要求:

/测试生成

特性:JWT令牌验证中间件

行为:
1. 有效令牌 → 允许请求
2. 过期令牌 → 拒绝,状态码401
3. 无效签名 → 拒绝,状态码401
4. 缺少令牌 → 拒绝,状态码401

覆盖:所有关键路径

测试标准(预加载):
- 框架:vitest
- 模拟:vi.mock()
- 结构:AAA模式

步骤 2: 审查测试计划

测试工程师提出测试计划:

## 测试计划

行为:
1. 有效令牌
   - ✅ 正面:允许带有有效JWT的请求
   - ❌ 负面:拒绝格式错误的JWT
2. 过期令牌
   - ✅ 正面:正常令牌有效
   - ❌ 负面:过期令牌被拒绝,状态码401

模拟策略:
- JWT验证:使用vi.mock()模拟
- 请求/响应:使用测试替身

覆盖目标:95%行覆盖,所有关键路径

重要:在实施前审查并批准。

步骤 3: 实施测试

测试工程师遵循AAA模式(安排-执行-断言)实施:

describe('JWT中间件', () => {
  it('允许带有有效令牌的请求', () => {
    // 安排
    const req = mockRequest({ headers: { authorization: 'Bearer valid.jwt.token' } });
    
    // 执行
    const result = jwtMiddleware(req);
    
    // 断言
    expect(result.authorized).toBe(true);
  });
});

步骤 4: 运行自我审查

测试工程师验证:

  • ✅ 每个行为的正面和负面测试
  • ✅ 遵循AAA模式
  • ✅ 所有外部依赖模拟
  • ✅ 测试是确定性的(无随机性)
  • ✅ 标准合规

步骤 5: 运行测试

执行测试套件并验证所有通过:

npm test -- jwt.middleware.test.ts

步骤 6: 返回结果

status: success
tests_written: 8
coverage:
  lines: 96%
  branches: 93%
  functions: 100%
behaviors_tested:
  - name: "有效令牌处理"
    positive_tests: 2
    negative_tests: 2
test_results:
  passed: 8
  failed: 0
deliverables:
  - "src/auth/jwt.middleware.test.ts"

TDD工作流

对于测试驱动开发,在实施前调用:

/测试生成

为用户注册端点编写测试(尚未实施):

预期行为:
- POST /api/register 带有有效数据 → 201 + 用户对象
- POST /api/register 带有重复邮箱 → 409错误
- POST /api/register 带有无效邮箱 → 400错误

注意:实施尚未存在。编写定义预期行为的测试。

测试最初会失败—使用它们作为规范指导实施。

错误处理

测试不匹配项目约定:

  • 主代理必须预加载 .opencode/context/core/standards/tests.md

缺少边缘情况:

  • 在要求中明确指定

不稳定测试:

  • 确保所有外部依赖模拟

红色标志

如果您想到任何这些,停止并重新阅读此技能:

  • “实施足够简单,不需要测试”
  • “我现在只编写正面路径测试”
  • “模拟此依赖太复杂”
  • “功能稳定后我再添加测试”

常见合理化

借口 现实
“太简单,不会坏” 简单代码以简单方式坏。测试记录契约,不仅仅是捕获错误。
“负面测试是明显失败,不值得编写” 负面测试是错误隐藏的地方。“明显失败"不等于"正确失败”。
“模拟此依赖太难” 难以模拟的依赖是设计问题。无论如何模拟并注意问题。
“测试减慢交付” 没有负面案例的测试给出虚假信心。虚假信心更减慢交付。

记住

  • 在调用技能前预加载测试标准
  • 指定清晰的行为和接受标准
  • 在实施前审查测试计划
  • 正面和负面测试都是必需的
  • 所有外部依赖必须模拟(没有真正的网络/数据库调用)
  • AAA模式(安排-执行-断言)强制使用
  • 测试必须是确定性的(没有随机性或时间依赖)

相关

  • code-execution
  • code-review
  • context-discovery