OpenClaw를 활용한 AI 주도 개발을 위한 계약 테스트

계약 테스트는 OpenClaw와 같은 AI 코딩 에이전트를 사용할 때 통합 및 종단 간 테스트에 대한 대안을 제공합니다. 전체 시스템을 테스트하는 대신, 컴포넌트 간의 인터페이스와 불변성을 테스트한 다음 에이전트가 해당 계약을 충족하는 코드를 생성하도록 합니다.
핵심 아이디어
에이전트를 사용하여 코드를 작성할 때, 워크플로우는 전통적인 테스트에서 계약 주도 개발로 전환됩니다:
- 구현 대신 계약/사양을 먼저 작성
- 통합 테스트가 동작을 확인하는 대신 계약이 인터페이스 + 불변성을 검증
- 포괄적인 E2E 테스트 대신 최소한의 E2E 스모크 테스트
- 사람이 대부분의 코드를 작성하는 대신 에이전트가 구현 작성
AI의 역할은 "코드가 계약을 충족하도록 만들기"가 됩니다.
계약의 모습
계약은 입력 스키마, 출력 스키마, 불변성 및 오류 조건을 정의합니다. Zod를 사용한 TypeScript 예시:
export const CreateUserRequest = z.object({
email: z.string().email(),
password: z.string().min(8)
})
export const CreateUserResponse = z.object({
id: z.string().uuid(),
email: z.string().email(),
createdAt: z.string()
})
계약 테스트 예시:
test("createUser contract", async () => {
const req = CreateUserRequest.parse({
email: "[email protected]",
password: "password123"
})
const res = await createUser(req)
expect(CreateUserResponse.parse(res)).toBeDefined()
})
이 테스트가 통과하는 한 AI는 전체 서비스를 재생성할 수 있습니다.
AI 에이전트를 위한 계약 테스트 패턴
일반적인 프로젝트 구조:
contracts/
user.contract.ts
order.contract.ts
tests/
contract/
user.test.ts
src/
services/
userService.ts
워크플로우: 계약 정의 → 에이전트가 구현 생성 → 계약 테스트 실행 → 에이전트가 실패 수정. 이는 AI 에이전트가 자가 수정에 의존하는 타이트한 피드백 루프를 만듭니다.
에이전트 프롬프트 예시
OpenClaw 에이전트 워크플로우 내부:
tests/contract의 모든 테스트가 통과하도록 서비스를 구현하세요.
계약 정의는 수정하지 마세요. 구현 파일만 수정하세요.
에이전트는 npm test PASS contract tests가 될 때까지 반복합니다.
소비자 주도 계약
소비자 주도 계약은 AI 개발에 특히 잘 작동합니다. 예시: 프론트엔드가 POST /users에 { id: uuid, email: string }을 기대하도록 정의하면, 백엔드 에이전트는 해당 계약을 충족해야 합니다. 일반적으로 사용되는 도구로는 Pact, 스키마 검증 및 OpenAPI 계약이 있습니다.
AI 코딩을 위한 최소 테스트 스택
대부분의 통합 테스트를 대체하려면:
contracts/
openapi.yaml
tests/
contract/
invariants/
src/
implementation
테스트 분포: 계약 테스트 (80%), 불변성/속성 테스트 (15%), 최소 E2E 스모크 테스트 (5%). 스모크 테스트 예시: 사용자 가입 작동, 사용자 로그인 작동.
추가 요령: 속성 테스트
에이전트는 속성 테스트로 크게 향상됩니다. 예시:
fc.assert(
fc.property(fc.string(), async (email) => {
const user = await createUser({email})
expect(user.email).toEqual(email)
})
)
이것은 에이전트에게 학습할 탐색 공간을 제공합니다.
이것이 AI에 더 잘 작동하는 이유
에이전트는 다중 서비스 조정, 불안정한 E2E 테스트 및 복잡한 환경 설정에 어려움을 겪습니다. 결정론적 피드백, 작은 분리된 작업, 스키마 + 제약 조건이 주어지면 탁월한 성능을 발휘합니다. 계약 테스트는 AI 친화적 아키텍처에서 "근본 진실"이 됩니다: 계약 (진실) → 테스트 (검증) → 에이전트 생성 → 구현.
📖 Read the full source: r/clawdbot
👀 See Also

블랙웰 GB10에서 CUDA 13.0으로 vLLM을 실행할 때 발생하는 aarch64 특정 장애 모드 네 가지
개발자가 aarch64 아키텍처와 CUDA 13.0을 실행하는 Blackwell GB10 시스템에서 vLLM v0.7.1과 DeepSeek-R1-32B를 설정하는 동안 ABI 불일치 및 누락된 종속성을 포함한 네 가지 특정 실패 모드를 발견했습니다.

Ollama로 OpenClaw를 완전히 로컬에서 실행하는 방법
Reddit 게시물에서 Ollama와 LLMFit을 사용하여 로컬 모델을 벤치마킹하고, 클라우드 API나 토큰당 과금 없이 OpenClaw를 완전히 로컬에서 실행하는 방법을 설명합니다.

Dev 채널을 통해 OpenClaw에서 GPT-5.4를 조기에 이용하는 방법
OpenClaw 개발 채널은 현재 안정 버전 출시 전에 GPT-5.4에 접근할 수 있는 방법을 제공합니다. 사용자는 특정 명령어를 사용하여 게이트웨이를 개발 채널로 전환한 후 재시작해야 모델 목록에서 확인할 수 있습니다.

OpenClaw 하위 에이전트: 답장을 완료 영수증으로 취급하지 마세요
OpenClaw의 sessions_spawn은 비차단형입니다. 작업이 수락되었을 때 runId를 반환하지, 완료되었을 때 반환하지 않습니다. 따라서 상위 오케스트레이션 세션이 부분 출력을 받아 요약하고 하위 세션이 아직 실행 중이거나 실패했거나 유실되었음에도 성공을 보고할 수 있습니다.