테스트를 작성하려면 데이터가 필요합니다. 실제 데이터는 문제가 있습니다. 프로덕션 이메일 주소를 테스트 스위트에 넣을 수는 없고, user1@test.com·user2@test.com을 수백 번 손으로 입력하는 건 시간 낭비입니다. 가짜 데이터 생성기는 이 두 가지 문제를 해결합니다. 설치 없이 즉시 실제처럼 보이는 테스트 데이터를 생성할 수 있습니다.
테스트 데이터 품질이 중요한 이유
잘못된 테스트 데이터는 오해의 소지가 있는 테스트 결과를 낳습니다. 대표적인 실패 패턴:
너무 단순한 데이터: 이름에 "test", 이메일에 "a@b.c"를 사용하면 "O'Brien"이나 "user+tag@subdomain.example.co.uk"에서 실패하는 유효성 검사 로직을 통과시킵니다.
다양성 없는 데이터: 테스트 사용자가 모두 짧은 ASCII 이름이라면, 악센트 문자의 정렬 순서 오류나 레이블 오버플로 같은 국제화 버그를 놓칩니다.
하드코딩된 데이터: 픽스처에 고정된 테스트 데이터는 시간이 지나면서 실제 데이터 형태와 멀어집니다. 생성된 데이터는 임의의 유효한 입력을 처리하도록 테스트에 강제합니다.
생성기가 만드는 데이터
다음 카테고리에 걸쳐 현실적인 데이터를 생성할 수 있습니다.
개인 정보
- 성명(이름·성·전체 이름, 다국어 로케일)
- 이메일 주소
- 전화번호
- 생년월일
- 사용자명
주소·위치
- 도로명 주소
- 시·도·국가
- 우편번호
- 좌표(위도·경도)
인터넷·기술
- URL과 도메인 이름
- IPv4·IPv6 주소
- UUID(v4)
- 사용자 에이전트
- 16진수 색상 코드
금융
- 신용카드 번호(유효한 Luhn 체크섬, 주요 네트워크)
- IBAN 번호
- 통화 금액
텍스트
- Lorem ipsum 단락
- 문장과 단어
- 비밀번호(복잡도 설정 가능)
개별 값을 생성하거나, 클릭 한 번에 수십 개의 레코드를 일괄 생성할 수 있습니다.
주요 사용 사례
개발 데이터베이스 시딩
빈 로컬 DB만큼 개발 흐름을 방해하는 건 없습니다. 50개의 현실적인 사용자 레코드를 생성하여 임포트하세요:
[
{
"id": "550e8400-e29b-41d4-a716-446655440000",
"name": "Marcus Holt",
"email": "marcus.holt@example.net",
"phone": "+1-555-204-8831",
"created_at": "2025-11-14T08:22:00Z"
},
...
]
단위 테스트·통합 테스트
테스트 픽스처 하드코딩을 멈추세요. 데이터를 동적으로 생성하고 엣지 케이스를 테스트합니다:
// 이렇게 하는 대신
const user = { name: "John", email: "john@test.com" };
// 다양한 현실적인 입력을 생성하고
// 유효성 검사가 모든 케이스를 올바르게 처리하는지 검증
API 모크 서버
백엔드 전에 프런트엔드를 만들 때, 모크 API 응답에 생성된 데이터를 채우면 이름 잘림·긴 이메일 주소·결과 없음 상태 같은 UI 버그를 조기에 발견할 수 있습니다.
UI 개발·데모
현실적인 데이터는 디자인 리뷰를 더 의미 있게 만듭니다. "Jane Cooper"와 "aleksandr.korolenko@corporate-mail.example.com"은 "Test User"와 "test@test.com"으로는 숨겨진 레이아웃 버그를 드러냅니다.
부하 테스트
k6·Locust·JMeter 같은 부하 테스트 스크립트는 가상 사용자마다 고유한 사용자가 필요한 경우가 많습니다. 10,000개의 고유한 이메일과 이름이 담긴 CSV를 생성하여 스크립트에 사용하세요.
Faker.js 설치 불필요
Node.js 프로젝트의 표준 방식은 Faker.js 설치입니다:
npm install @faker-js/faker
import { faker } from '@faker-js/faker';
const user = {
name: faker.person.fullName(),
email: faker.internet.email(),
};
코드에서 데이터를 생성할 때는 이 방법이 최적입니다. 하지만 데모 직전이나 일회성 DB 시딩, 디자인 리뷰 중에 테스트 데이터가 필요할 때는 브라우저 도구를 여는 게 훨씬 빠릅니다.
ZeroTool 가짜 데이터 생성기는 가벼운 브라우저 네이티브 구현을 사용합니다. CDN도, npm도, 빌드 단계도 필요 없습니다.
데이터 품질: 현실적이지만 실제는 아님
생성된 데이터는 일반적인 유효성 검사 규칙을 통과하도록 설계되어 있습니다:
- 이메일 주소는 RFC 5321 형식 준수
- 전화번호는 유효한 국가 코드와 형식 사용
- 신용카드 번호는 Luhn 알고리즘 통과(결제 폼 유효성 검사 테스트에 안전)
- 날짜는 현실적인 범위 내
단, 생성된 데이터는 실제 데이터가 아닙니다. 생성된 신용카드 번호는 실제 결제 프로세서에서 거부됩니다. 형식 유효성 검사 테스트용입니다. 마찬가지로, 생성된 이메일 주소는 실제 사용자의 것이 아니므로 프로덕션 시스템이나 실제 통신에 사용하지 마세요.
프라이버시: 데이터는 로컬에 유지
생성기는 완전히 브라우저 내에서 동작합니다. 생성된 데이터는 어떤 서버에도 전송되지 않습니다. 데이터 프라이버시가 중요한 환경에서도 안심하고 사용할 수 있습니다.
일괄 내보내기 형식
생성된 데이터의 내보내기 형식:
- JSON — API 모크, 시드 스크립트용
- CSV — 스프레드시트 도구, DB 임포트용
- SQL — DB 직접 시딩용 INSERT 문
대안 비교
| 도구 | 설치 | 브라우저 | 커스텀 스키마 |
|---|---|---|---|
| @faker-js/faker | 필요(npm) | 불가 | 가능(코드) |
| Mockaroo | 불필요 | 가능 | 가능(UI) |
| generatedata.com | 불필요 | 가능 | 가능(UI) |
| ZeroTool | 불필요 | 가능 | 기본적인 것 |
엔터티 간 관계가 있는 고급 스키마 기반 생성에는 Mockaroo나 로컬 Faker.js가 더 유연합니다. 설치 없이 빠른 단순 생성에는 브라우저 도구가 가장 빠릅니다.
정리
좋은 테스트 데이터는 테스트를 의미 있게 만들고 실제 버그를 잡아냅니다. 가짜 데이터 생성기는 설치 없이 개인 정보·주소·UUID·비밀번호 같은 가장 일반적인 카테고리를 커버합니다.
생성된 데이터를 fast-check 같은 프로퍼티 기반 테스트 라이브러리와 결합하면 커버리지를 더욱 확장할 수 있습니다. 수천 개의 값을 자동으로 생성하여 코드가 모두 올바르게 처리하는지 검증합니다.