62 lines
3.1 KiB
Markdown
62 lines
3.1 KiB
Markdown
# recordingtest
|
|
|
|
사내 WPF 3D 편집 응용(자체 엔진 **HmEG**, MEF plugin 아키텍처)에 대한 **사용자 입력 회귀 테스트 자동화 도구**.
|
|
도구 자체이지 SUT가 아니다. 자세한 운영 지침은 [CLAUDE.md](CLAUDE.md), 현재 진행 상태는 [PROGRESS.md](PROGRESS.md), 다음 할 일은 [PLAN.md](PLAN.md)를 참고.
|
|
|
|
## 핵심 전략 — Golden-file 회귀
|
|
|
|
수동 테스트 입력을 레코딩 → 리플레이 → 결과 저장 파일을 정규화 후 baseline과 diff. ApprovalTests 패턴과 동형이며 SUT 코드 변경 협조를 최소화하기 위한 의도적 선택이다.
|
|
|
|
```
|
|
[수동 테스트] → 입력 레코드 + 결과 파일 A (approved baseline)
|
|
[회귀 시점] → 입력 리플레이 → 결과 파일 B → normalize → diff(A, B)
|
|
```
|
|
|
|
## 모듈 구성
|
|
|
|
| 모듈 | 책임 | 상태 |
|
|
|------|------|------|
|
|
| [Recordingtest.SutProber](src/Recordingtest.SutProber/) | SUT 정적 probe (plugin/Json/assembly 카탈로그) | PoC pass |
|
|
| [Recordingtest.Recorder](src/Recordingtest.Recorder/) | 입력 캡처 (UIA element path + offset + 키/마우스/포커스) | PoC pass |
|
|
| [Recordingtest.Player](src/Recordingtest.Player/) | 시나리오 재생, 비동기 동기화 | PoC pass |
|
|
| [Recordingtest.Normalizer](src/Recordingtest.Normalizer/) | 결과 파일 정규화 (timestamp/GUID/path/float/order) | PoC pass |
|
|
| [Recordingtest.DiffReporter](src/Recordingtest.DiffReporter/) | approved vs received diff 리포트 | PoC pass |
|
|
| [Recordingtest.EngineBridge.Client](src/Recordingtest.EngineBridge.Client/) + [Recordingtest.EgPlugin](src/Recordingtest.EgPlugin/) | HmEG 내부 상태 sidecar (MEF plugin masquerade + HttpListener) | v2 pass |
|
|
| [Recordingtest.Runner](src/Recordingtest.Runner/) | 5-모듈 E2E 파이프라인 + 실패 triage | PoC pass |
|
|
|
|
## 작업 사이클 — Planner / Generator / Evaluator
|
|
|
|
Anthropic harness design 원칙을 채택. 같은 에이전트가 생성과 평가를 겸하지 않는다.
|
|
|
|
1. `/contract <name>` — Sprint Contract 작성 (`docs/contracts/<name>.md`, 검증 가능한 DoD)
|
|
2. Generator — 계약 기준으로 구현
|
|
3. `/evaluate <name>` — 독립 evaluator가 채점, pass 시에만 PROGRESS.md 갱신
|
|
|
|
## 기술 스택
|
|
|
|
- **언어**: C# / .NET (SUT와 동일 생태계)
|
|
- **UI 자동화**: [FlaUI](https://github.com/FlaUI/FlaUI) 1순위, Win32 low-level hook hybrid
|
|
- **시나리오 포맷**: YAML/JSON (git diff 친화적)
|
|
- **베이스라인**: `*.approved.{ext}` / `*.received.{ext}`
|
|
|
|
## 디렉터리
|
|
|
|
```
|
|
recordingtest/
|
|
├── src/ # 모듈별 C# 프로젝트
|
|
├── scenarios/ # 시나리오 YAML
|
|
├── docs/
|
|
│ ├── contracts/ # Sprint Contracts + evaluations
|
|
│ ├── history/ # 작업 히스토리
|
|
│ ├── sut-catalog/ # sut-prober 산출물
|
|
│ └── guides/ # smoke test, deploy 가이드
|
|
├── CLAUDE.md # 에이전트 운영 지침
|
|
├── PROGRESS.md # 완료 상태
|
|
└── PLAN.md # 우선순위 큐
|
|
```
|
|
|
|
## 저장소
|
|
|
|
- Origin: https://gitea.hmac.kr/kimminsung/recordingtest
|
|
- 이슈/PR은 동일 Gitea, 커밋 메시지에 `#N` 참조
|