muno-claude-plugin 1.5.0 → 1.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/templates/WORKFLOW.md +21 -20
- package/templates/agents/acceptance-test-generator.md +14 -15
- package/templates/agents/task-tracker.md +34 -20
- package/templates/agents/unit-test-generator.md +4 -4
- package/templates/agents/workflow-navigator.md +12 -14
- package/templates/skills/architecture-design/SKILL.md +2 -2
- package/templates/skills/epic-story-generator/SKILL.md +16 -10
- package/templates/skills/hld-generator/SKILL.md +8 -6
- package/templates/skills/lld-generator/SKILL.md +7 -5
- package/templates/skills/prd-generator/SKILL.md +4 -5
- package/templates/skills/task-generator/SKILL.md +10 -10
- package/templates/skills/tc-generator/SKILL.md +67 -26
package/package.json
CHANGED
package/templates/WORKFLOW.md
CHANGED
|
@@ -73,29 +73,30 @@ AI 기반 개발 워크플로우 스킬 체계입니다.
|
|
|
73
73
|
## 문서 저장 구조
|
|
74
74
|
|
|
75
75
|
```
|
|
76
|
-
|
|
77
|
-
├──
|
|
78
|
-
│ ├── architecture
|
|
79
|
-
│
|
|
80
|
-
│
|
|
81
|
-
│
|
|
82
|
-
│
|
|
83
|
-
│ │ └── feature-hld.md ← Feature HLD (피처별)
|
|
84
|
-
│ └── lld/
|
|
85
|
-
│ └── feature-lld.md
|
|
76
|
+
documents/
|
|
77
|
+
├── system-design/
|
|
78
|
+
│ ├── architecture.md ← 전체 시스템 아키텍처 (SAD, 1개)
|
|
79
|
+
│ └── features/
|
|
80
|
+
│ └── {feature-name}/
|
|
81
|
+
│ ├── hld.md ← Feature HLD
|
|
82
|
+
│ └── lld.md ← Feature LLD
|
|
86
83
|
│
|
|
87
|
-
├──
|
|
88
|
-
│ └── feature-name
|
|
89
|
-
│ ├── index.md
|
|
90
|
-
│ └── STORY-xxx.md
|
|
84
|
+
├── request/
|
|
85
|
+
│ └── {feature-name}-prd.md ← PRD
|
|
91
86
|
│
|
|
92
|
-
├──
|
|
93
|
-
│
|
|
94
|
-
│
|
|
87
|
+
├── issues/
|
|
88
|
+
│ ├── epics/
|
|
89
|
+
│ │ └── EPIC-xxx.md ← Epic
|
|
90
|
+
│ ├── stories/
|
|
91
|
+
│ │ └── STORY-xxx.md ← Story (Epic 없이 독립 가능)
|
|
92
|
+
│ └── tasks/
|
|
93
|
+
│ └── TASK-xxx.md ← Task (Story 없이 독립 가능)
|
|
95
94
|
│
|
|
96
|
-
└── test
|
|
97
|
-
|
|
98
|
-
|
|
95
|
+
└── test/
|
|
96
|
+
├── unit/
|
|
97
|
+
│ └── UT-xxx.md ← Unit Test Case
|
|
98
|
+
└── acceptance/
|
|
99
|
+
└── AT-xxx.md ← Acceptance Test Case
|
|
99
100
|
```
|
|
100
101
|
|
|
101
102
|
---
|
|
@@ -106,8 +106,8 @@ TC 생성 및 리뷰 흐름:
|
|
|
106
106
|
|
|
107
107
|
1. tc-generator 실행
|
|
108
108
|
└─ Story AC 분석
|
|
109
|
-
└─
|
|
110
|
-
└─
|
|
109
|
+
└─ AT 문서 생성 (documents/test/acceptance/AT-XXX.md)
|
|
110
|
+
└─ UT 문서 생성 (documents/test/unit/UT-XXX.md)
|
|
111
111
|
│
|
|
112
112
|
▼
|
|
113
113
|
2. tc-reviewer 자동 호출
|
|
@@ -125,12 +125,12 @@ TC 생성 및 리뷰 흐름:
|
|
|
125
125
|
|
|
126
126
|
---
|
|
127
127
|
|
|
128
|
-
## 입력:
|
|
128
|
+
## 입력: AT 문서 구조
|
|
129
129
|
|
|
130
130
|
```yaml
|
|
131
|
-
# test
|
|
131
|
+
# documents/test/acceptance/AT-001-create-chatroom.md
|
|
132
132
|
---
|
|
133
|
-
id:
|
|
133
|
+
id: AT-001
|
|
134
134
|
title: 채팅방 생성 - Happy Path
|
|
135
135
|
story_id: STORY-001
|
|
136
136
|
type: integration
|
|
@@ -345,12 +345,12 @@ func TestChatRoomAcceptance(t *testing.T) {
|
|
|
345
345
|
|
|
346
346
|
## 생성 워크플로우
|
|
347
347
|
|
|
348
|
-
### Step 1:
|
|
348
|
+
### Step 1: AT 분석
|
|
349
349
|
|
|
350
350
|
```
|
|
351
|
-
1.
|
|
352
|
-
2.
|
|
353
|
-
3. 각
|
|
351
|
+
1. AT 문서 읽기 (documents/test/acceptance/AT-XXX.md)
|
|
352
|
+
2. 전체 AT 목록 확인
|
|
353
|
+
3. 각 AT의 유형 파악 (integration, e2e, etc.)
|
|
354
354
|
4. 우선순위 확인 (high, medium, low)
|
|
355
355
|
```
|
|
356
356
|
|
|
@@ -465,19 +465,18 @@ src/test/kotlin/com/example/
|
|
|
465
465
|
## 체크리스트
|
|
466
466
|
|
|
467
467
|
### 테스트 생성 전
|
|
468
|
-
- [ ]
|
|
469
|
-
- [ ]
|
|
470
|
-
- [ ] 각 TC의 사전 조건/기대 결과가 명확한가?
|
|
468
|
+
- [ ] AT 문서가 생성되었는가? (documents/test/acceptance/)
|
|
469
|
+
- [ ] 각 AT의 사전 조건/기대 결과가 명확한가?
|
|
471
470
|
|
|
472
471
|
### 테스트 생성 후
|
|
473
|
-
- [ ] 모든
|
|
474
|
-
- [ ] @DisplayName에
|
|
472
|
+
- [ ] 모든 AT가 테스트 메서드로 변환되었는가?
|
|
473
|
+
- [ ] @DisplayName에 AT ID가 포함되어 있는가?
|
|
475
474
|
- [ ] 사전 조건이 Arrange로 변환되었는가?
|
|
476
475
|
- [ ] 기대 결과가 Assert로 변환되었는가?
|
|
477
476
|
- [ ] 테스트가 컴파일되는가?
|
|
478
477
|
|
|
479
478
|
### Story-Level TDD 확인
|
|
480
|
-
- [ ]
|
|
479
|
+
- [ ] AT 생성 직후 테스트가 작성되었는가?
|
|
481
480
|
- [ ] 테스트 실행 시 실패하는가? (Red)
|
|
482
481
|
- [ ] Task 구현 후 테스트가 통과하는가? (Green)
|
|
483
482
|
|
|
@@ -200,23 +200,24 @@ Epic (EPIC-001)
|
|
|
200
200
|
### 파일 저장 위치
|
|
201
201
|
|
|
202
202
|
```
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
.
|
|
210
|
-
└──
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
203
|
+
documents/
|
|
204
|
+
├── issues/
|
|
205
|
+
│ ├── epics/
|
|
206
|
+
│ │ └── EPIC-001-xxx.md # Epic 정의
|
|
207
|
+
│ ├── stories/
|
|
208
|
+
│ │ ├── STORY-001-xxx.md # Story 정의 (AC 포함)
|
|
209
|
+
│ │ └── STORY-002-xxx.md
|
|
210
|
+
│ └── tasks/
|
|
211
|
+
│ ├── TASK-001-xxx.md
|
|
212
|
+
│ └── TASK-002-xxx.md
|
|
213
|
+
│
|
|
214
|
+
└── test/
|
|
215
|
+
├── unit/
|
|
216
|
+
│ ├── UT-001-xxx.md # Unit Test
|
|
217
|
+
│ └── UT-002-xxx.md
|
|
218
|
+
└── acceptance/
|
|
219
|
+
├── AT-001-xxx.md # Acceptance Test
|
|
220
|
+
└── AT-002-xxx.md
|
|
220
221
|
```
|
|
221
222
|
|
|
222
223
|
### 상위 참조 규칙
|
|
@@ -360,12 +361,12 @@ updated_at: 2024-01-10
|
|
|
360
361
|
---
|
|
361
362
|
```
|
|
362
363
|
|
|
363
|
-
###
|
|
364
|
+
### Acceptance Test (상위: Story)
|
|
364
365
|
|
|
365
366
|
```yaml
|
|
366
367
|
---
|
|
367
|
-
id:
|
|
368
|
-
title: [
|
|
368
|
+
id: AT-XXX
|
|
369
|
+
title: [AT 제목]
|
|
369
370
|
story_id: STORY-XXX # 상위 Story 참조
|
|
370
371
|
ac_ids: [AC-1, AC-2] # 연결된 AC
|
|
371
372
|
status: ready # ready | passed | failed | blocked
|
|
@@ -374,6 +375,19 @@ updated_at: 2024-01-10
|
|
|
374
375
|
---
|
|
375
376
|
```
|
|
376
377
|
|
|
378
|
+
### Unit Test (상위: Task)
|
|
379
|
+
|
|
380
|
+
```yaml
|
|
381
|
+
---
|
|
382
|
+
id: UT-XXX
|
|
383
|
+
title: [UT 제목]
|
|
384
|
+
task_id: TASK-XXX # 상위 Task 참조
|
|
385
|
+
status: ready # ready | passed | failed | blocked
|
|
386
|
+
created_at: 2024-01-10
|
|
387
|
+
updated_at: 2024-01-10
|
|
388
|
+
---
|
|
389
|
+
```
|
|
390
|
+
|
|
377
391
|
---
|
|
378
392
|
|
|
379
393
|
## 출력 형식
|
|
@@ -92,9 +92,9 @@ color: green
|
|
|
92
92
|
```
|
|
93
93
|
코딩 Agent가 Task 구현 시작하려고 할 때:
|
|
94
94
|
|
|
95
|
-
1. Task 문서 확인 (
|
|
95
|
+
1. Task 문서 확인 (documents/issues/tasks/TASK-XXX.md)
|
|
96
96
|
2. unit-test-generator 호출 (이 subagent)
|
|
97
|
-
3. Unit Test 생성 완료
|
|
97
|
+
3. Unit Test 생성 완료 (documents/test/unit/UT-XXX.md)
|
|
98
98
|
4. 테스트 실행 → 실패 확인 (Red)
|
|
99
99
|
5. 구현 시작
|
|
100
100
|
```
|
|
@@ -104,7 +104,7 @@ color: green
|
|
|
104
104
|
## 입력: Task 문서 구조
|
|
105
105
|
|
|
106
106
|
```yaml
|
|
107
|
-
#
|
|
107
|
+
# documents/issues/tasks/TASK-001-entity.md
|
|
108
108
|
---
|
|
109
109
|
id: TASK-001
|
|
110
110
|
title: ChatRoom Entity 생성
|
|
@@ -346,7 +346,7 @@ func TestChatRoom(t *testing.T) {
|
|
|
346
346
|
### Step 1: Task 분석
|
|
347
347
|
|
|
348
348
|
```
|
|
349
|
-
1. Task 문서 읽기 (
|
|
349
|
+
1. Task 문서 읽기 (documents/issues/tasks/TASK-XXX.md)
|
|
350
350
|
2. Acceptance Criteria 섹션 추출
|
|
351
351
|
3. Test Scenarios 섹션 추출
|
|
352
352
|
4. 테스트 대상 파악 (Entity, Service, Repository 등)
|
|
@@ -190,20 +190,18 @@ color: cyan
|
|
|
190
190
|
|
|
191
191
|
```
|
|
192
192
|
1. documents/ 폴더 확인
|
|
193
|
-
- documents/
|
|
194
|
-
- documents/
|
|
195
|
-
- documents/
|
|
196
|
-
|
|
197
|
-
2.
|
|
198
|
-
-
|
|
199
|
-
- Story 상태
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
-
|
|
204
|
-
|
|
205
|
-
4. test-cases/ 폴더 확인
|
|
206
|
-
- TC 존재 여부
|
|
193
|
+
- documents/request/ → PRD 존재 여부
|
|
194
|
+
- documents/system-design/architecture.md → SAD 존재 여부
|
|
195
|
+
- documents/system-design/features/{feature}/ → HLD/LLD 존재 여부
|
|
196
|
+
|
|
197
|
+
2. documents/issues/ 폴더 확인
|
|
198
|
+
- documents/issues/epics/ → Epic 존재 여부
|
|
199
|
+
- documents/issues/stories/ → Story 존재 여부 및 상태
|
|
200
|
+
- documents/issues/tasks/ → Task 존재 여부 및 상태
|
|
201
|
+
|
|
202
|
+
3. documents/test/ 폴더 확인
|
|
203
|
+
- documents/test/unit/ → Unit Test 존재 여부
|
|
204
|
+
- documents/test/acceptance/ → Acceptance Test 존재 여부
|
|
207
205
|
```
|
|
208
206
|
|
|
209
207
|
### Step 2: 복잡도 판단
|
|
@@ -93,7 +93,7 @@ flowchart TD
|
|
|
93
93
|
## Step 0: 기존 SAD 확인
|
|
94
94
|
|
|
95
95
|
```
|
|
96
|
-
documents/
|
|
96
|
+
documents/system-design/architecture.md 파일이 존재하는지 확인합니다.
|
|
97
97
|
|
|
98
98
|
있으면 → 업데이트 모드
|
|
99
99
|
없으면 → 신규 생성 모드
|
|
@@ -387,7 +387,7 @@ graph TB
|
|
|
387
387
|
|
|
388
388
|
## 산출물
|
|
389
389
|
|
|
390
|
-
**저장 위치**: `documents/
|
|
390
|
+
**저장 위치**: `documents/system-design/architecture.md`
|
|
391
391
|
|
|
392
392
|
---
|
|
393
393
|
|
|
@@ -278,19 +278,25 @@ Story 분해안을 검토해주세요.
|
|
|
278
278
|
### 출력 구조
|
|
279
279
|
|
|
280
280
|
```
|
|
281
|
-
|
|
282
|
-
└──
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
281
|
+
documents/
|
|
282
|
+
└── issues/
|
|
283
|
+
├── epics/
|
|
284
|
+
│ └── EPIC-xxx.md # Epic 개별 문서
|
|
285
|
+
├── stories/
|
|
286
|
+
│ └── STORY-xxx.md # Story 개별 문서
|
|
287
|
+
└── tasks/
|
|
288
|
+
└── TASK-xxx.md # Task 개별 문서 (task-generator)
|
|
288
289
|
```
|
|
289
290
|
|
|
290
291
|
**파일명 규칙**:
|
|
291
|
-
- Epic: `
|
|
292
|
-
- Story: `
|
|
293
|
-
- Task: `
|
|
292
|
+
- Epic: `EPIC-{number}-{kebab-case-name}.md` (예: `EPIC-001-user-authentication.md`)
|
|
293
|
+
- Story: `STORY-{number}-{kebab-case-name}.md` (예: `STORY-001-email-login.md`)
|
|
294
|
+
- Task: `TASK-{number}-{kebab-case-name}.md` (예: `TASK-001-login-entity.md`)
|
|
295
|
+
|
|
296
|
+
**특징**:
|
|
297
|
+
- Epic 없이 Story만 독립적으로 존재 가능
|
|
298
|
+
- Story 없이 Task만 독립적으로 존재 가능
|
|
299
|
+
- 각각 별도 폴더에서 독립적으로 관리
|
|
294
300
|
|
|
295
301
|
### index.md 구조
|
|
296
302
|
|
|
@@ -111,7 +111,7 @@ Feature HLD 작성 전 SAD와 PRD 존재 여부를 확인합니다.
|
|
|
111
111
|
|
|
112
112
|
### SAD 확인
|
|
113
113
|
```
|
|
114
|
-
documents/
|
|
114
|
+
documents/system-design/architecture.md 파일 확인
|
|
115
115
|
|
|
116
116
|
있으면 → SAD 참조하여 HLD 작성
|
|
117
117
|
없으면 → SAD 없이 진행 가능 (권장: /architecture-design으로 먼저 작성)
|
|
@@ -385,14 +385,16 @@ erDiagram
|
|
|
385
385
|
|
|
386
386
|
## 산출물
|
|
387
387
|
|
|
388
|
-
**저장 위치**: `
|
|
388
|
+
**저장 위치**: `documents/system-design/features/{feature-name}/hld.md`
|
|
389
389
|
|
|
390
390
|
```
|
|
391
|
-
|
|
391
|
+
documents/
|
|
392
392
|
└── system-design/
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
└──
|
|
393
|
+
├── architecture.md ← 전체 시스템 아키텍처 (SAD)
|
|
394
|
+
└── features/
|
|
395
|
+
└── {feature-name}/
|
|
396
|
+
├── hld.md ← 이 스킬로 생성
|
|
397
|
+
└── lld.md ← lld-generator로 생성
|
|
396
398
|
```
|
|
397
399
|
|
|
398
400
|
---
|
|
@@ -310,14 +310,16 @@ HLD에서 추출할 정보:
|
|
|
310
310
|
|
|
311
311
|
## 산출물
|
|
312
312
|
|
|
313
|
-
**저장 위치**: `
|
|
313
|
+
**저장 위치**: `documents/system-design/features/{feature-name}/lld.md`
|
|
314
314
|
|
|
315
315
|
```
|
|
316
|
-
|
|
316
|
+
documents/
|
|
317
317
|
└── system-design/
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
└──
|
|
318
|
+
├── architecture.md ← 전체 시스템 아키텍처 (SAD)
|
|
319
|
+
└── features/
|
|
320
|
+
└── {feature-name}/
|
|
321
|
+
├── hld.md ← hld-generator로 생성
|
|
322
|
+
└── lld.md ← 이 스킬로 생성
|
|
321
323
|
```
|
|
322
324
|
|
|
323
325
|
---
|
|
@@ -389,13 +389,12 @@ owner: [작성자]
|
|
|
389
389
|
|
|
390
390
|
## 산출물
|
|
391
391
|
|
|
392
|
-
**저장 위치**: `
|
|
392
|
+
**저장 위치**: `documents/request/{feature-name}-prd.md`
|
|
393
393
|
|
|
394
394
|
```
|
|
395
|
-
|
|
396
|
-
└──
|
|
397
|
-
└── {feature-name}
|
|
398
|
-
└── prd.md
|
|
395
|
+
documents/
|
|
396
|
+
└── request/
|
|
397
|
+
└── {feature-name}-prd.md
|
|
399
398
|
```
|
|
400
399
|
|
|
401
400
|
---
|
|
@@ -715,19 +715,19 @@ class UserEntity(
|
|
|
715
715
|
## 출력 구조
|
|
716
716
|
|
|
717
717
|
```
|
|
718
|
-
|
|
719
|
-
└──
|
|
720
|
-
└──
|
|
721
|
-
|
|
722
|
-
├── epic-{epic-name}.md # Epic 문서
|
|
723
|
-
├── story-{story-name}.md # Story 문서
|
|
724
|
-
├── task-{task-name}.md # Task 개별 문서 (이 스킬)
|
|
725
|
-
└── ...
|
|
718
|
+
documents/
|
|
719
|
+
└── issues/
|
|
720
|
+
└── tasks/
|
|
721
|
+
└── TASK-{number}-{kebab-case-name}.md
|
|
726
722
|
```
|
|
727
723
|
|
|
728
724
|
**파일명 규칙**:
|
|
729
|
-
- `
|
|
730
|
-
- Task ID는
|
|
725
|
+
- `TASK-{number}-{kebab-case-name}.md` (예: `TASK-001-chatroom-entity.md`)
|
|
726
|
+
- Task ID는 파일명에 포함
|
|
727
|
+
|
|
728
|
+
**특징**:
|
|
729
|
+
- Task는 Story 없이 독립적으로 존재 가능
|
|
730
|
+
- 상위 Epic/Story 링크는 문서 내부 frontmatter에서 관리
|
|
731
731
|
|
|
732
732
|
---
|
|
733
733
|
|
|
@@ -425,26 +425,37 @@ VALUES
|
|
|
425
425
|
### 출력 구조
|
|
426
426
|
|
|
427
427
|
```
|
|
428
|
-
|
|
429
|
-
└──
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
└── mock-responses.json # Mock 응답 데이터
|
|
428
|
+
documents/
|
|
429
|
+
└── test/
|
|
430
|
+
├── unit/
|
|
431
|
+
│ └── UT-{number}-{kebab-case-name}.md # Unit Test Case
|
|
432
|
+
└── acceptance/
|
|
433
|
+
└── AT-{number}-{kebab-case-name}.md # Acceptance Test Case
|
|
435
434
|
```
|
|
436
435
|
|
|
437
436
|
**파일명 규칙**:
|
|
438
|
-
- `
|
|
439
|
-
-
|
|
437
|
+
- Unit Test: `UT-{number}-{kebab-case-name}.md` (예: `UT-001-user-repository.md`)
|
|
438
|
+
- Acceptance Test: `AT-{number}-{kebab-case-name}.md` (예: `AT-001-email-login.md`)
|
|
439
|
+
- 1 Story = 1 AT 문서 (여러 시나리오 포함)
|
|
440
|
+
- Task 레벨 검증 = UT 문서
|
|
440
441
|
|
|
441
|
-
###
|
|
442
|
+
### Unit Test vs Acceptance Test
|
|
443
|
+
|
|
444
|
+
| 항목 | Unit Test (UT) | Acceptance Test (AT) |
|
|
445
|
+
|------|---------------|---------------------|
|
|
446
|
+
| 레벨 | Task 레벨 | Story 레벨 |
|
|
447
|
+
| 관점 | 기술/구현 | 사용자/비즈니스 |
|
|
448
|
+
| 목적 | Task 완료 검증 | Story "close" 검증 |
|
|
449
|
+
| 예시 | "userId로 Entity 조회 성공" | "로그인 후 홈 이동" |
|
|
450
|
+
| 저장 경로 | `documents/test/unit/` | `documents/test/acceptance/` |
|
|
451
|
+
|
|
452
|
+
### Acceptance Test 문서 구조 (AT-{number}-{name}.md)
|
|
442
453
|
|
|
443
454
|
```markdown
|
|
444
455
|
---
|
|
445
|
-
id:
|
|
446
|
-
title: [Story 제목] Test
|
|
447
|
-
story:
|
|
456
|
+
id: AT-{number}
|
|
457
|
+
title: [Story 제목] Acceptance Test
|
|
458
|
+
story: STORY-xxx
|
|
448
459
|
feature: {feature-name}
|
|
449
460
|
status: ready # draft | ready | passed | failed
|
|
450
461
|
total_scenarios: N
|
|
@@ -452,14 +463,14 @@ automation_rate: X%
|
|
|
452
463
|
created_at: YYYY-MM-DD
|
|
453
464
|
---
|
|
454
465
|
|
|
455
|
-
# [
|
|
466
|
+
# [AT-XXX] Acceptance Test for Story
|
|
456
467
|
|
|
457
468
|
## Story 정보
|
|
458
469
|
|
|
459
470
|
| 항목 | 내용 |
|
|
460
471
|
|------|------|
|
|
461
|
-
| Story | `
|
|
462
|
-
| Epic | `
|
|
472
|
+
| Story | `documents/issues/stories/STORY-xxx.md` |
|
|
473
|
+
| Epic | `documents/issues/epics/EPIC-xxx.md` |
|
|
463
474
|
| 총 시나리오 수 | N개 |
|
|
464
475
|
| 자동화율 | X% |
|
|
465
476
|
|
|
@@ -467,27 +478,57 @@ created_at: YYYY-MM-DD
|
|
|
467
478
|
|
|
468
479
|
| Story AC | AC 내용 | TC 시나리오 |
|
|
469
480
|
|----------|---------|-------------|
|
|
470
|
-
| AC-1 | 정상 로그인 |
|
|
471
|
-
| AC-2 | 로그인 실패 처리 |
|
|
472
|
-
| AC-3 | 계정 잠금 정책 |
|
|
481
|
+
| AC-1 | 정상 로그인 | AT-01 |
|
|
482
|
+
| AC-2 | 로그인 실패 처리 | AT-02 |
|
|
483
|
+
| AC-3 | 계정 잠금 정책 | AT-03 |
|
|
473
484
|
|
|
474
485
|
## 시나리오 목록
|
|
475
486
|
|
|
476
487
|
| ID | 제목 | 유형 | 우선순위 | 자동화 |
|
|
477
488
|
|----|------|------|----------|--------|
|
|
478
|
-
|
|
|
479
|
-
|
|
|
480
|
-
|
|
|
489
|
+
| AT-01 | 정상 로그인 | E2E | P0 | Yes |
|
|
490
|
+
| AT-02 | 잘못된 비밀번호 | E2E | P1 | Yes |
|
|
491
|
+
| AT-03 | 계정 잠금 | E2E | P1 | Yes |
|
|
481
492
|
|
|
482
493
|
## 실행 순서
|
|
483
494
|
|
|
484
|
-
1. 데이터
|
|
485
|
-
2.
|
|
486
|
-
3.
|
|
487
|
-
4.
|
|
495
|
+
1. 데이터 초기화
|
|
496
|
+
2. AT-01 실행 (정상 케이스 먼저)
|
|
497
|
+
3. AT-02 실행
|
|
498
|
+
4. AT-03 실행
|
|
488
499
|
5. 데이터 정리
|
|
489
500
|
```
|
|
490
501
|
|
|
502
|
+
### Unit Test 문서 구조 (UT-{number}-{name}.md)
|
|
503
|
+
|
|
504
|
+
```markdown
|
|
505
|
+
---
|
|
506
|
+
id: UT-{number}
|
|
507
|
+
title: [Task 제목] Unit Test
|
|
508
|
+
task: TASK-xxx
|
|
509
|
+
feature: {feature-name}
|
|
510
|
+
status: ready # draft | ready | passed | failed
|
|
511
|
+
total_scenarios: N
|
|
512
|
+
created_at: YYYY-MM-DD
|
|
513
|
+
---
|
|
514
|
+
|
|
515
|
+
# [UT-XXX] Unit Test for Task
|
|
516
|
+
|
|
517
|
+
## Task 정보
|
|
518
|
+
|
|
519
|
+
| 항목 | 내용 |
|
|
520
|
+
|------|------|
|
|
521
|
+
| Task | `documents/issues/tasks/TASK-xxx.md` |
|
|
522
|
+
| Story | `documents/issues/stories/STORY-xxx.md` |
|
|
523
|
+
|
|
524
|
+
## 테스트 시나리오
|
|
525
|
+
|
|
526
|
+
| ID | 제목 | 유형 | 우선순위 |
|
|
527
|
+
|----|------|------|----------|
|
|
528
|
+
| UT-01 | findById 성공 | Unit | P0 |
|
|
529
|
+
| UT-02 | findById 실패 - 존재하지 않음 | Unit | P1 |
|
|
530
|
+
```
|
|
531
|
+
|
|
491
532
|
---
|
|
492
533
|
|
|
493
534
|
## Test Agent 연동
|