docs: flesh out README with project overview

This commit is contained in:
minsung
2026-04-07 20:28:46 +09:00
parent caaacacd8c
commit 3738a0df5c

View File

@@ -1 +1,61 @@
WPF Application User Input Regression Test # 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` 참조