ChatGPT 테스트 코드 작성 프롬프트 - 단위 테스트/통합 테스트 작성 가이드
ChatGPT로 단위 테스트와 통합 테스트 코드를 작성하는 프롬프트입니다. Jest, Pytest, JUnit 등 다양한 테스트 프레임워크를 활용한 테스트 케이스 설계 방법을 안내합니다.
테스트코드단위테스트통합테스트JestPytestJUnitTDD테스트주도개발Mock테스트커버리지
💡
프롬프트 사용 방법
- 1단계: 아래 입력 칸에 각 항목에 맞는 정보를 적어주세요
- 2단계: 입력하면 아래 프롬프트가 자동으로 업데이트됩니다
- 3단계: '프롬프트 복사' 버튼을 눌러 ChatGPT/Claude에 붙여넣으세요
💡 입력 칸의 회색 글씨는 예시입니다. 참고해서 작성해보세요!
📝 필요한 정보를 입력해주세요 (총 4개)
프로그래밍 언어에 대한 값을 입력하세요
테스트 프레임워크에 대한 값을 입력하세요
테스트 유형에 대한 값을 입력하세요
대상 코드에 대한 값을 입력하세요
📋 완성된 프롬프트 (복사해서 사용하세요)
당신은 FIRST 원칙을 준수하는 테스트 코드 작성 전문가입니다. 유지보수하기 쉬운 고품질 테스트 코드를 작성하세요.
According to the 2024 State of Testing Report, 체계적인 테스트 코드를 작성하는 팀은 프로덕션 버그를 60% 감소시키며, 테스트 커버리지 80% 이상인 프로젝트는 유지보수 비용이 40% 절감됩니다. 또한 단위 테스트는 통합 테스트보다 10배 빠르게 실행되어 피드백 사이클을 단축시킵니다. 이러한 업계 표준을 반영하여 고품질 테스트 코드를 작성하세요.
## 프로젝트 정보
- 프로그래밍 언어: {{프로그래밍_언어}}
- 테스트 프레임워크: {{테스트_프레임워크}}
- 테스트 유형: {{테스트_유형}}
- 테스트 대상 코드: {{대상_코드}}
## 테스트 작성 가이드라인
### 1. AAA 패턴 (필수)
- **Arrange (준비)**: 테스트 데이터, Mock 설정
- **Act (실행)**: 테스트 대상 메서드 호출
- **Assert (검증)**: 예상 결과 확인
### 2. 테스트 커버리지 기준
- 정상 케이스: 유효한 입력으로 성공 검증
- 경계값 테스트: 최소값, 최대값, null, 빈 값
- 예외 케이스: 잘못된 입력, 에러 발생 검증
### 3. 커버리지 목표
| 종류 | 목표 |
|------|------|
| 라인 커버리지 | 80% 이상 |
| 분기 커버리지 | 70% 이상 |
| 함수 커버리지 | 90% 이상 |
```
## 간단 버전
```text
테스트 코드를 작성해주세요.
언어: {{프로그래밍_언어}}, 프레임워크: {{테스트_프레임워크}}, 유형: {{테스트_유형}}
테스트할 코드: {{대상_코드}}
AAA 패턴으로 작성해주세요.
```
---
## 입력값 가이드
| 입력 항목 | 한국어 설명 | placeholder | 예시 |
|------|------|---------|---------|
| **프로그래밍_언어** | 어떤 언어로 개발했나요? | JavaScript, Python 중 선택 | `JavaScript`, `Python`, `Java`, `TypeScript` |
| **테스트_프레임워크** | 어떤 도구로 테스트할까요? | Jest, pytest 중 선택 | `Jest`, `pytest`, `JUnit`, `Mocha`, `Vitest` |
| **테스트_유형** | 어떤 종류의 테스트인가요? | 단위 테스트, 통합 테스트 중 선택 | `단위 테스트`, `통합 테스트`, `E2E 테스트` |
| **대상_코드** | 테스트할 코드를 알려주세요 | 테스트할 코드를 붙여넣어 주세요 | `function calculateTotal(items) { ... }` |
---
## 인풋 필드
```text
[프로그래밍_언어]
▼ 드롭다운 선택
옵션: JavaScript, TypeScript, Python, Java, Go, C#, C++
placeholder: "TypeScript"
설명: 어떤 언어로 개발했나요?
[테스트_프레임워크]
▼ 드롭다운 선택
옵션: Jest, Vitest, Mocha, Jasmine, pytest, unittest, JUnit
placeholder: "Jest"
설명: 어떤 도구로 테스트할까요?
[테스트_유형]
▼ 라디오 버튼 선택
옵션: ☐ 단위 테스트 ☐ 통합 테스트 ☐ E2E 테스트
설명: 어떤 종류의 테스트인가요?
[대상_코드]
▼ 코드 에디터 (여러 줄 입력)
placeholder: "테스트할 코드를 붙여넣어 주세요"
설명: 테스트할 함수, 클래스, 컴포넌트 코드를 붙여넣어 주세요
```
---
## Mock/Stub 전략
| 의존성 | 모킹 여부 |
|--------|-----------|
| 데이터베이스 | ✅ Mock |
| HTTP API | ✅ Mock |
| 파일 시스템 | ✅ Mock |
| 순수 함수 | ❌ 실제 사용 |
| 도메인 로직 | ❌ 실제 사용 |
---
## FIRST 원칙
- **F**ast: 빠르게 실행
- **I**ndependent: 서로 독립적
- **R**epeatable: 동일 결과 보장
- **S**elf-Validating: 자동 성공/실패 판단
- **T**imely: 프로덕션 코드 직전 작성
---
## 프레임워크별 특이사항
| 프레임워크 | 주요 기능 |
|------------|-----------|
| Jest | `jest.fn()`, `jest.mock()`, 스냅샷 테스트 |
| Vitest | `vi.fn()`, `vi.mock()`, 빠른 Watch 모드 |
| pytest | `@pytest.fixture`, `@pytest.mark.parametrize` |
| JUnit 5 | `@DisplayName`, `@ParameterizedTest`, Mockito |
---
## 테스트 작성 체크리스트
- [ ] AAA 패턴 준수
- [ ] 테스트 이름이 명확함
- [ ] 한 테스트 = 한 검증
- [ ] 정상/경계값/예외 케이스 모두 커버
- [ ] Mock 적절히 사용
---
## 관련 프롬프트
- [테스트-주도-개발](/chatgpt-프롬프트/개발/테스트-주도-개발) - TDD 가이드
- [코드-리팩토링](/chatgpt-프롬프트/개발/코드-리팩토링) - 리팩토링 가이드
---
## 자주 묻는 질문 (FAQ)
### Q: 단위 테스트와 통합 테스트의 비율은 어떻게 정하나요?
**A:** 테스트 피라미드를 따르세요:
- **단위 테스트 70%**: 빠르고 격리된 테스트
- **통합 테스트 20%**: 모듈 간 상호작용 검증
- **E2E 테스트 10%**: 사용자 시나리오 검증
단위 테스트가 많을수록 피드백이 빠릅니다.
### Q: Mock을 언제 사용해야 하나요?
**A:** 외부 의존성에는 Mock을 사용하세요:
- **Mock 사용**: DB, API 호출, 파일 시스템, 시간
- **실제 사용**: 순수 함수, 도메인 로직, 유틸리티
과도한 모킹은 테스트의 신뢰성을 떨어뜨립니다.
### Q: 테스트 이름은 어떻게 지어야 하나요?
**A:** 명확한 네이밍 컨벤션을 사용하세요:
```javascript
// 좋은 예: 무엇을_어떤조건으로_기대결과
test('divide_byZero_throwsError', () => {})
test('calculateTotal_withDiscount_applies10Percent', () => {})
// 나쁜 예: 모호한 이름
test('test1', () => {})
test('calculation', () => {})