API 테스트를 직접 작성하지 않고 얻는 방법을 찾아보셨다면 Keploy를 접해 보셨을 겁니다. Keploy는 거의 너무나 편리하게 들리는 것을 약속합니다: 실행 중인 애플리케이션을 가리키고, 실제 트래픽을 관찰하게 한 다음, 테스트 스위트를 얻는다는 것이죠. 그렇다면 Keploy는 실제로 내부적으로 무엇을 하고 있으며, 테스트 스택에서 어떤 역할을 할까요?
이 가이드에서는 Keploy가 무엇인지, eBPF 네트워크 계층에서 기록 및 재생 엔진이 어떻게 작동하는지, Keploy가 제공하는 두 가지 워크플로우, 설치 및 실행 방법, 그리고 Keploy를 도입하기 전에 알아야 할 솔직한 한계에 대해 설명합니다.
Keploy란 무엇인가요?
Keploy는 API, 통합 및 엔드투엔드 테스트를 위한 안전하고 격리된 프로덕션 샌드박스를 생성하기 위한 오픈 소스 플랫폼(Apache-2.0 라이선스)입니다. 핵심 아이디어는 실제 애플리케이션이 이미 테스트하려는 동작을 수행하고 있다는 것입니다. Keploy는 테스트 코드에 해당 동작을 설명하도록 요청하는 대신, 이를 관찰하고 재현 가능한 테스트로 변환합니다.

두 가지 방법으로 이를 수행할 수 있습니다:
- 기록 및 재생(Record and replay)은 실제 API 상호 작용 및 해당 종속성을 캡처한 다음 결정적으로 재생합니다.
- AI 테스트 생성(AI test generation)은 사양, 컬렉션, cURL 명령 또는 라이브 엔드포인트에서 검증된 API 테스트 스위트를 구축합니다.
두 방법 모두 실행 가능한 테스트와 라이브 종속성을 건드리지 않고 테스트를 실행하는 데 필요한 모의(mock)를 생성합니다. 이 프로젝트는 오픈 소스이므로 코드를 읽고 직접 호스팅할 수 있습니다. 저장소는 github.com/keploy/keploy에 있으며, 공식 문서는 keploy.io/docs에 있습니다.
Keploy 기록이 eBPF 계층에서 작동하는 방식
이것이 Keploy를 독특하게 만드는 부분입니다. `keploy record`를 실행할 때, SDK를 추가하거나 애플리케이션 코드 한 줄을 변경하도록 요청하지 않습니다. Keploy는 프로그램이 시스템 이벤트를 안전하게 관찰하고 작동할 수 있도록 하는 Linux 커널 기술인 eBPF를 사용하여 네트워크 계층에서 트래픽을 캡처합니다.
실제로 다음과 같은 이점을 얻을 수 있습니다:
- 코드 없는 캡처. 계측, 테스트 하네스, 핸들러에 데코레이터가 필요 없습니다. Keploy는 애플리케이션 아래에 위치하여 들어오고 나가는 바이트를 관찰합니다.
- 언어 불가지론적 캡처. 캡처가 런타임 내부가 아닌 커널 네트워크 계층에서 발생하기 때문에 서비스가 Go, Python 또는 Rust로 작성되었는지 여부에 관계없이 동일하게 작동합니다.
- 종속성 캡처. Keploy는 인바운드 API 호출 및 응답만 기록하는 것이 아닙니다. 또한 서비스가 데이터베이스 쿼리, 네트워크 또는 스트리밍 이벤트와 같은 종속성에 대해 수행하는 아웃바운드 호출도 기록합니다.
마지막 요점이 중요합니다. Keploy가 요청을 기록할 때, 전체 그림을 캡처합니다: API 요청, API 응답, 그리고 그 사이에서 발생한 모든 종속성 호출. 그런 다음 단일 관찰된 상호 작용에서 두 가지 아티팩트를 작성합니다:
- 예상되는 요청과 응답을 설명하는 테스트 케이스.
- 각 종속성 호출에 대한 모의(mocks) 및 스텁(stubs)으로, 라이브 데이터베이스나 다운스트림 서비스 없이 테스트를 재생할 수 있습니다.
재생(Replay)은 이 루프를 완료합니다. `keploy test`를 실행하면, 기록된 요청을 애플리케이션으로 다시 보내고, 생성된 모의(mocks)에서 캡처된 종속성 응답을 제공하며, 새 응답을 기록된 응답과 비교합니다. 불일치는 무언가 변경되었음을 의미합니다. 이것이 바로 이 접근 방식이 기록 및 재생(record and replay)이라고 불리는 이유입니다: 실제 런타임 동작을 한 번 기록한 다음, 모든 변경 사항에 대해 회귀 테스트로 결정적으로 재생합니다.
두 가지 Keploy 워크플로우
기록 및 재생(Record and replay)
이미 작동하는 애플리케이션이 있고 빠른 회귀 테스트 범위가 필요할 때 이 기능을 사용하세요. Keploy 아래에서 앱을 실행하고, 실제 사용자나 클라이언트가 하는 방식(수동 호출, 기존 통합 테스트 또는 라이브 트래픽)으로 앱을 사용하면 Keploy는 각 상호 작용을 테스트 및 해당 모의(mocks)로 저장합니다. 이후 실행에서는 해당 상호 작용을 재생하고 동작 편차를 표시합니다.
AI 테스트 생성
수동 테스트로 생성된 것보다 더 넓은 범위를 원하거나, 실행 중인 흐름이 아닌 계약(contract)에서 시작할 때 이 기능을 사용하세요. Keploy는 OpenAPI 사양, Postman 컬렉션, cURL 명령 또는 라이브 엔드포인트에서 검증된 API 테스트 스위트를 생성할 수 있습니다. 종속성을 자동으로 모의(mock)하고, 중복 사례가 남지 않도록 자동 정리 과정을 실행합니다.
두 워크플로우는 상호 보완적입니다. 기록 및 재생은 실제 관찰된 동작에 테스트를 고정하고, AI 테스트 생성은 사양의 공백을 채웁니다. 스키마에서 테스트를 생성하는 도구를 평가 중이라면, 저희의 AI 테스트 케이스 생성기 목록과 OpenAPI에서 테스트 스크립트 생성 가이드가 좋은 참고 자료가 될 것입니다.
Keploy 설치
Keploy는 설치 스크립트를 제공합니다. 지원되는 시스템에서는 다음을 실행합니다:
curl --silent -O -L https://keploy.io/install.sh && source install.sh
이 명령은 바이너리를 가져와 `keploy` 명령을 설정합니다. 그 다음부터는 두 가지 명령으로 모든 것을 제어할 수 있습니다.
핵심 Keploy 명령
가장 많이 사용할 두 가지 명령이 있습니다. 첫 번째는 기록입니다:
keploy record -c "CMD_TO_RUN_APP"
애플리케이션을 시작하는 정확한 명령을 `-c`를 통해 전달합니다. Keploy는 앱을 실행하고, 앱을 사용하는 동안 트래픽을 관찰하며, 캡처된 테스트 케이스와 모의(mocks)를 저장합니다.
두 번째는 재생입니다:
keploy test -c "CMD_TO_RUN_APP" --delay 10
--delay 10 플래그는 Keploy에게 기록된 요청을 보내기 전에 10초를 기다리라고 지시하여, 느린 서비스가 재생 시작 전에 부팅을 완료할 충분한 시간을 제공합니다. 앱이 시작하는 데 더 오래 걸리면 숫자를 높이고, 빠르게 부팅되면 낮출 수 있습니다.
일반적인 첫 번째 세션은 다음과 같습니다:
# 1. API를 호출하는 동안 기록
keploy record -c "node server.js"
# 2. 캡처된 사례를 재생하고 편차를 확인
keploy test -c "node server.js" --delay 10
이것이 전체 루프입니다. 알려진 정상 빌드에 대해 한 번 기록한 다음, 모든 변경 사항에 대해 CI에서 `keploy test`를 실행합니다.
지원되는 언어, 프로토콜 및 데이터 저장소
캡처가 네트워크 계층에서 발생하므로 Keploy는 광범위한 영역을 다룹니다:
| 범주 | 지원 |
|---|---|
| 언어 | Go, Java, Node.js, Python, Rust, C#, C/C++, TypeScript 등 |
| 프로토콜 | HTTP/REST, gRPC, GraphQL, Kafka, RabbitMQ |
| 데이터 저장소 | PostgreSQL, MySQL, MongoDB, Redis |
이러한 광범위함은 eBPF 설계의 직접적인 결과입니다. Keploy는 네트워크 통신을 읽으므로, 새로운 언어나 프레임워크는 이러한 프로토콜 중 하나를 사용하는 한 새로운 플러그인이 필요하지 않습니다.
CI에서 Keploy 실행
두 명령 모두 자동화를 위해 만들어졌습니다. 파이프라인에서 기록된 테스트 케이스와 모의(mocks)를 코드와 함께 커밋한 다음, `keploy test -c "..."`를 단계로 실행합니다. 모의(mocks)가 실제 종속성을 대신하기 때문에, CI 러너에서 라이브 데이터베이스나 다운스트림 서비스가 필요 없이 재생이 빠르고 결정적입니다. 재생 실패는 단위 테스트와 마찬가지로 빌드를 실패시킵니다.
고려해야 할 솔직한 한계
Keploy는 강점이 있지만, 모든 상황에 적합한 것은 아닙니다. 공정한 평가는 다음과 같은 장단점을 포함합니다:
- Linux 및 높은 권한에 의존합니다. eBPF는 Linux 커널 기능이며, 해당 계층에서 캡처하려면 일반적으로 높은 권한이 필요합니다. 이는 실행할 수 있는 위치와 방법을 결정합니다.
- 생성된 테스트는 큐레이션이 필요합니다. 실제 트래픽 또는 AI 생성으로 구축된 테스트는 시작점일 뿐, 완성된 스위트가 아닙니다. 여전히 이를 검토하고, 노이즈를 제거하며, 캡처된 동작 중 어떤 것이 실제로 강제할 가치가 있는 계약인지 결정해야 합니다.
- 전체 API 라이프사이클 플랫폼이 아닌 테스트 및 테스트 생성 도구입니다. Keploy는 테스트 캡처, 생성 및 재생에 중점을 둡니다. API 설계, 문서화, 소비자를 위한 모의 서버 게시 또는 API 사양을 중심으로 한 팀 협업을 처리하도록 설계되지 않았습니다.
이 중 어떤 것도 Keploy에 대한 비판은 아닙니다. 이는 해당 범주의 자연스러운 경계입니다. 이를 알면 문제가 해결되는지 또는 문제의 일부만 해결되는지 결정하는 데 도움이 됩니다.
설계된 테스트 대안으로서 Apidog의 역할
"관찰된 트래픽을 회귀 테스트로 전환"하는 것보다 더 넓은 요구 사항이 있다면, 전체 라이프사이클 플랫폼을 살펴보는 것이 좋습니다. Apidog는 설계, 디버깅, 모의(mocking), 문서화 및 테스트를 한 곳에서 처리하는 올인원 API 플랫폼입니다. Apidog와 Keploy는 서로 다른 범주에 속하므로, 철학의 차이를 이해하는 것이 중요합니다.

Keploy는 종속성 모의(mocks)를 포함한 실제 런타임 동작을 코드 없이 캡처하고 재생합니다. Apidog는 정반대의 길을 걷습니다: 유지보수 가능한 테스트 시나리오를 설계하고 작성한 다음, Apidog CLI를 사용하여 터미널 및 CI에서 실행합니다. CLI는 CSV 또는 JSON을 통한 데이터 기반 테스트, 환경 전환, 그리고 CLI, HTML 및 JSON 보고서와 함께 작성된 컬렉션을 실행합니다. Apidog는 또한 앱 내에서 작성된 API 스키마 및 엔드포인트로부터 AI 테스트 케이스 생성을 제공하는데, 이 부분이 두 도구가 겹치는 지점입니다.
경계를 명확히 하자면: Apidog는 eBPF를 통해 라이브 트래픽을 캡처하지 않으며, 프로덕션 호출 및 종속성 모의(mocks)를 기록하여 테스트를 자동으로 생성하지도 않습니다. 실제 트래픽에서 기록하는 기능은 전적으로 Keploy의 것입니다. 솔직히 말하면 작업에 따라 선택해야 합니다. 코드 없이 런타임 캡처 및 재생을 원한다면 Keploy를 선택하세요. 나머지 API 라이프사이클도 처리하는 플랫폼 내에서 설계되고 유지보수 가능한 테스트 스위트를 원한다면 Apidog를 선택하세요. 더 깊이 있는 비교를 원하시면 Apidog vs Keploy를 참조하고, 전환하기로 결정했다면 마이그레이션 가이드에서 테스트를 이전하는 방법을 다룹니다.
유지보수 가능하고 작성된 API 테스트를 원하신다면, Apidog를 다운로드하고 Apidog로 API 테스트하는 방법 가이드부터 시작할 수 있습니다.
자주 묻는 질문
- Keploy는 무료이며 오픈 소스인가요? 네. Keploy는 Apache-2.0 라이선스 하에 오픈 소스이며, 코드는 GitHub에 있습니다. 직접 호스팅할 수 있습니다.
- Keploy를 사용하려면 애플리케이션 코드를 변경해야 하나요? 아니요. 기록 및 재생 워크플로우는 eBPF 네트워크 계층에서 트래픽을 캡처하므로, 추가할 SDK나 코드 변경이 필요 없습니다. 이것이 많은 언어에서 작동하는 이유이기도 합니다.
keploy test의--delay플래그는 무엇을 하나요? Keploy가 기록된 요청을 보내기 전에 몇 초를 기다릴지 설정하여, 앱이 부팅할 시간을 줍니다.--delay 10은 10초를 기다리며, 시작이 느린 서비스의 경우 숫자를 높이세요.- Keploy가 테스트 중 제 데이터베이스를 모의(mock)할 수 있나요? 네. 상호 작용을 기록할 때, 종속성 호출(예: 데이터베이스 쿼리)도 캡처하여 이에 대한 모의(mocks)를 작성하므로, 라이브 데이터베이스 없이 재생이 실행됩니다.
- Keploy가 API 설계 및 문서화 도구를 대체할 수 있나요? 아니요. Keploy는 테스트 및 테스트 생성 도구입니다. API 설계, 문서화, 소비자를 위한 모의(mocking) 및 테스트와 함께 협업을 위해서는 Apidog와 같은 전체 라이프사이클 플랫폼이 더 적합합니다.
요약
Keploy는 실제 API 동작을 테스트로 전환하는 오픈 소스 도구입니다. Keploy의 기록 및 재생 엔진은 eBPF를 사용하여 코드 변경 없이 네트워크 계층에서 요청, 응답 및 종속성 호출을 캡처한 다음, 이를 결정론적 회귀 테스트로 재생합니다. AI 테스트 생성은 사양 또는 엔드포인트에서 스위트를 구축합니다. Linux 중심의 캡처 모델, 검토가 필요한 테스트, 그리고 테스트에 국한된 범위라는 단점에도 불구하고, 빠르고 언어에 구애받지 않습니다. 완전한 API 플랫폼 내에서 작성되고 유지보수 가능한 테스트 스위트를 원한다면, Apidog가 비교해 볼 수 있는 대안입니다.
