Claude에게 테스트 코드 작성을 맡기면 생기는 일
AI와 협업하는 테스트 자동화 워크플로우
AI와 협업하는 테스트 자동화 워크플로우
🤔 테스트 코드, 누가 작성하나요?
테스트 코드 작성은 중요하지만… 솔직히 귀찮습니다.
TC(Test Case)는 Qase에 잘 정리되어 있는데, 막상 코드로 옮기려면:
- TC 내용 확인하고
- 어떤 파일에 테스트를 작성할지 고민하고
- 패턴에 맞게 코드 작성하고
- TC ID 연결하고…
“이거 Claude한테 시키면 안 될까?”
그래서 만들었습니다. Qase MCP + Claude 워크플로우.
🎯 목표: Claude가 TC 보고 테스트 코드 작성하기
핵심 아이디어는 간단합니다:
- Qase에 TC가 있다 → Claude가 MCP로 직접 조회
- 로컬에 상태 추적 파일이 있다 → 어떤 TC가 자동화 안 됐는지 파악
- Claude에게 요청 → TC 기반으로 테스트 코드 생성
- jest-qase-reporter → 테스트 결과가 Qase에 자동 동기화
🔧 구성 요소
1. Qase MCP 설정
Claude Code가 Qase API를 직접 호출할 수 있게 해주는 MCP 서버입니다.
{
"servers": {
"mcp-qase": {
"command": "npx",
"args": ["-y", "mcp-qase"],
"env": {
"QASE_API_TOKEN": "<your-token>"
}
}
}
}
이제 Claude에게 이렇게 말할 수 있습니다:
“Qase에서 CROWN 프로젝트의 Suite 133에 있는 TC 목록을 조회해줘”
2. 로컬 상태 추적 파일
Qase의 TC를 로컬에서 추적하는 JSON 파일입니다.
{
"summary": { "total": 70, "automated": 48, "notStarted": 22 },
"testCases": [{
"id": 13255,
"title": "[Path] Path Default 값 확인",
"automationStatus": "not_started",
"recommendedApproach": "component",
"targetFile": "src/renderer/components/SoftwareItem.tsx"
}]
}
핵심 필드:
automationStatus: not_started → in_progress → automatedrecommendedApproach: unit, component, main-process, e2etargetFile: 테스트 대상 파일 경로
3. jest-qase-reporter
테스트 결과를 Qase에 자동으로 동기화합니다.
it(qase(13255, "exe 파일 검색 실패 시 에러 표시"), () => {
// 테스트 로직
});
💬 Claude에게 테스트 작성 요청하기
기본 요청
TC 13255 “[Path] Path Default 값 확인”에 대한 테스트 코드를 작성해줘. recommendedApproach: component targetFile: src/renderer/components/SoftwareItem.tsx
Claude는:
- Qase MCP로 TC 상세 내용 조회
- targetFile 컴포넌트 분석
- recommendedApproach에 맞는 테스트 패턴 적용
- qase(TC_ID) 데코레이터로 TC 연결
배치 요청
automationStatus가 “not_started”이고 category가 “Port”인 TC들의 테스트 코드를 작성해줘.
여러 TC를 한 번에 처리할 수 있습니다.
📝 테스트 코드 패턴
unit (상수, 유틸 함수)
describe("PORT_SOFTWARE_LIST", () => {
it(qase(13250, "MILLBOX 기본 포트는 8321"), () => {
const millbox = PORT_SOFTWARE_LIST.find(s => s.id === "MILLBOX");
expect(millbox?.defaultPort).toBe(8321);
});
});
component (React 컴포넌트)
describe("SoftwareItem", () => {
it(qase(13254, "exe 파일 검색 성공 시 경로 표시"), () => {
renderWithTheme(<SoftwareItem config={hyperDent} path="/path/to/file.exe" />);
expect(screen.getByDisplayValue("/path/to/file.exe")).toBeInTheDocument();
});
});
🎉 결과
이 워크플로우의 장점:
- TC → 테스트 코드 변환 자동화: Claude가 TC 보고 테스트 코드 생성
- 일관된 패턴: recommendedApproach별로 표준화된 패턴 적용
- 추적 가능: JSON 파일로 자동화 진행 상황 파악
- 양방향 동기화: 테스트 결과가 Qase에 자동 기록
즉, TC만 잘 작성해두면 테스트 코드 작성은 Claude와 함께 빠르게 처리할 수 있습니다.
📚 마무리
테스트 코드 작성이 귀찮다면, 구조화된 워크플로우로 해결하세요.
- TC를 Qase에 잘 정리한다
- 로컬 JSON으로 상태를 추적한다
- Claude에게 TC 기반 테스트 코드 생성을 요청한다
- jest-qase-reporter로 결과를 자동 동기화한다
AI는 반복적인 코드 작성을 대신해주고, 개발자는 TC 설계와 검증에 집중할 수 있습니다.
TL;DR:
- Qase MCP로 Claude가 TC 직접 조회
- JSON 파일로 자동화 상태 추적
- Claude에게 TC 기반 테스트 코드 생성 요청
- 개발자는 TC 설계에 집중, 코드 작성은 AI와 협업