AgentSkillsCN

tdd-workflow

测试驱动开发(TDD)工作流,适用于新功能开发、缺陷修复及代码重构等场景。采用测试优先的编写方法,确保测试覆盖率超过 80%

SKILL.md
--- frontmatter
name: tdd-workflow
description: 테스트 주도 개발(TDD) 워크플로우. 새로운 기능 작성, 버그 수정, 코드 리팩토링 시 사용. 80% 이상의 커버리지로 테스트 우선 작성 방법론 적용

Test-Driven Development Workflow

Ensures all code development follows TDD principles with comprehensive test coverage.

When to Activate

  • Writing new features or functionality
  • Fixing bugs or issues
  • Refactoring existing code
  • Adding API endpoints

TDD Workflow Steps

Step 1: Write Test First (RED)

go
func TestProcessOrder(t *testing.T) {
    order := NewOrder(100, SideBuy)
    result, err := ProcessOrder(order)
    if err != nil {
        t.Fatalf("unexpected error: %v", err)
    }
    if result.Status != "filled" {
        t.Errorf("got status %q; want %q", result.Status, "filled")
    }
}

Step 2: Run Test — Verify FAIL

bash
go test ./...
# Expected: FAIL

Step 3: Write Minimal Implementation (GREEN)

go
func ProcessOrder(order *Order) (*Result, error) {
    // Minimal implementation to pass the test
    return &Result{Status: "filled"}, nil
}

Step 4: Run Test — Verify PASS

bash
go test ./...
# Expected: PASS

Step 5: Refactor (IMPROVE)

  • Remove duplication
  • Improve naming
  • Optimize performance
  • Keep tests green

Step 6: Verify Coverage

bash
go test -cover ./...
# Target: 80%+

Coverage Requirements

Code TypeTarget
Critical business logic100%
Public APIs90%+
General code80%+
Generated codeExclude

Edge Cases Checklist

  • Nil/zero value inputs
  • Empty collections
  • Boundary values (min/max)
  • Error conditions
  • Concurrent access
  • Large datasets

Common Mistakes to Avoid

  • Testing implementation details instead of behavior
  • Tests depending on each other (shared state)
  • Skipping error path testing
  • Using time.Sleep() instead of proper synchronization
  • Not running with -race flag