Testing distributed systems with AI agents
개요
AI 코딩 에이전트가 분산 및 상태 기반 시스템을 위한 클레임 기반 테스트를 설계하고 실행하는 두 가지 스킬을 제공합니다. 이 스킬은 구조화된 Markdown 테스트 계획과 9가지 상태 판정 및 명시적인 SUT/하니스/체커/환경 비난 분류를 포함하는 결과 보고서를 생성합니다.
주요 내용
- 두 가지 AI 코딩 스킬:
- 테스트 계획 설계: 시스템의 클레임에서 시작하여 해당 클레임과 관련된 가설을 생성하고, 각 가설을 반증하려는 시나리오를 작성합니다. 일관성이 중요한 시나리오의 경우, 추상 모델, 작업 기록 스키마, 체커, 그리고 관찰 가능한 증거를 바인딩합니다. 계획에는 커버리지 적정성 논증과 신뢰도 진술이 포함됩니다.
- 테스트 계획 실행: 기존 테스트, 런북, 장애 주입 스캐폴딩을 발견하고, 시나리오를 실행하며, 장애의 실제 발생 여부와 결과에 대한 증거를 기록합니다. 모든 테스트 결과는 9가지 상태의 판정을 받으며, 실패 시 SUT, 하니스, 체커, 환경 중 어느 부분의 문제인지 분류합니다.
- 기존 테스트 방식의 한계 극복: 통합 테스트만으로는 실제 운영 환경에서 발생하는 파티션, 동시성, 크래시 복구, 업그레이드, 재시도, 순서 민감성 등의 복잡한 버그를 대부분 놓칩니다.
- 업무 흐름:
- 클레임 중심: 제품의 약속에서 시작하여 각 시나리오가 하나의 클레임을 반증하도록 설계합니다.
- 커버리지 적정성: 테스트 계획의 필수적인 산출물로, 선택된 시나리오가 배포하기에 충분한지 논증하고 검증되지 않은 부분을 명시합니다.
- SUT의 자체 도구 활용: 새로운 것을 발명하기 전에 기존 테스트, 런북, 장애 주입 스캐폴딩을 우선적으로 활용합니다.
- 모델 + 히스토리 + 체커: 혼돈(Chaos) 테스트만으로는 부족하며, 추상 모델, 작업 기록 스키마, 명명된 체커를 결합하여 안전성, 내구성, 멱등성, 격리, 순서, 멤버십 등의 클레임을 검증합니다.
- 명시적인 판정: 모든 PASS는 오라클 실행 증거와 장애 발생 증명을 인용하고, 9가지 상태의 판정을 통해 "단순히 스크립트가 깨끗하게 실행되었다"는 것을 "클레임이 장애를 견뎠다"고 잘못 해석하는 것을 방지합니다. 모든 FAIL은 SUT/하니스/체커/환경 비난 태그를 포함하여 재현자를 올바른 팀으로 안내합니다.
- 출력물:
- 테스트 계획 (testing-plans/<slug>.md)
- 세션 로그 (session-log.md)
- 시나리오별 결과 (findings/<scenario>.md)
- 종합 결과 보고서 (findings/report.md)
- 설치 및 사용: Markdown을 읽고 쉘을 실행할 수 있는 Claude Code, Codex, Copilot CLI, Cursor, Gemini 등 모든 AI 코딩 에이전트에서 단일 명령어로 설치 및 구성할 수 있습니다. "이 시스템에 대한 테스트 계획을 설계하라" 또는 "X에서 계획을 실행하라"와 같은 자연스러운 프롬프트로 작동합니다.
- 기술 카탈로그: 선형성/직렬성, 재현 가능한 버그, 실제 클러스터 장애, 입력/동시성 퍼징, 프로토콜 정확성, 속성/변환 관계, 성능, 크래시 복구 및 업그레이드 등 8가지 주요 테스트 기법에 대한 참조 문서가 포함되어 있습니다.
- 구조: 스킬은
skills/designing-distributed-system-tests와skills/executing-distributed-system-tests디렉토리 내의SKILL.md파일에 정의되어 있으며, 관련 자산 및 참조 문서가 포함되어 있습니다. - 현재 상태: 초기 단계이나 실제 AgentDB 시스템에 대한 엔드투엔드 실행을 통해 여러 버그를 발견한 바 있으며, 향후 스킬 및 템플릿 업데이트가 예정되어 있습니다.
시사점
이 AI 스킬은 분산 및 상태 기반 시스템의 복잡한 테스트 요구사항을 자동화하고 표준화하는 새로운 접근 방식을 제시하며, 테스트 계획의 명확성, 실행의 엄격성, 결과 보고의 정보성을 크게 향상시켜 시스템 안정성 및 신뢰성 확보에 기여할 수 있습니다.
원문을 불러오는 중...
댓글
GitHub Discussions