Dynamic Variables 소개: 실제와 같은 테스트 데이터를 즉시 생성
Source: Dev.to
동적 변수란 무엇인가요?
동적 변수는 런타임에 자동으로 생성된 값으로 해석되는 특수한 자리표시자입니다. $ 접두사를 사용하며 다음 템플릿 구문으로 접근합니다:
{{$variableName}}
요청이 실행될 때마다 변수는 새로운 값을 생성합니다.
예시
{{$randomUUID}}→ 새로운 UUID 생성{{$timestamp}}→ 현재 UNIX 타임스탬프{{$randomInt}}→ 무작위 정수{{$guid}}→ GUID‑형식 식별자
핵심 차이점: 이 변수들은 직접 정의하지 않아도 되며, 내장되어 바로 사용할 수 있다는 점입니다.
테스트 데이터 생성이 왜 어려운가요
개발자와 QA 팀은 반복적으로 다음과 같은 문제에 직면합니다:
- 재사용된 이메일이나 사용자 ID 때문에 회원가입 및 고유성 검증이 실패함.
- 매 실행마다 페이로드를 수동으로 수정해야 하며, 이는 느리고 오류가 발생하기 쉬움.
- 데이터가 이미 데이터베이스에 존재하면 테스트가 깨짐.
동적 변수는 매 실행마다 새롭고 현실적인 입력을 제공함으로써 이러한 문제를 해소합니다.
템플릿에서 동적 변수 사용하기
동적 변수는 요청의 어디에든 삽입할 수 있습니다: URL, 쿼리 파라미터, 헤더, 혹은 요청 본문.
예시 요청 본문
{
"id": "{{$randomUUID}}",
"email": "{{$randomEmail}}",
"createdAt": "{{$timestamp}}"
}
각 실행마다 고유한 사용자 프로필이 생성됩니다.
스크립트에서 동적 변수 사용하기
동적 변수는 rq 객체를 통해 스크립트 내부에서도 사용할 수 있습니다.
const userId = rq.$randomUUID();
const timestamp = rq.$timestamp();
const email = rq.$randomEmail();
스크립트에서는 함수처럼 호출된다는 점에 주목하세요.
변수 인자
일부 동적 변수는 출력 형식을 맞춤화하기 위해 선택적 인자를 지원합니다.
템플릿 구문
{{$variableName arg1 arg2 …}}
인자를 활용한 예시
{
"id": "{{$randomAlphaNumeric 10}}",
"email": "{{$randomEmail 'John' 'Doe'}}",
"age": "{{$randomInt 18 65}}",
"price": "{{$randomPrice 10 100 2 '$'}}"
}
이를 통해 다음을 제어할 수 있습니다:
- 무작위 문자열 길이
- 이름 기반 이메일 생성
- 정수 범위
- 가격 범위 및 포맷팅
추가 로직을 작성하지 않아도 유연성을 확보할 수 있습니다.
실제 활용 사례
동적 변수는 다양한 워크플로우에서 빛을 발합니다:
- 회원가입 흐름: 데이터베이스 정리 없이 매 테스트 실행마다 고유한 사용자를 생성.
- OTP/타임스탬프 테스트: 인증 흐름에 필요한 유효한 시간 기반 페이로드 생성.
- 부하 테스트: 무작위 입력을 제공해 엣지 케이스 버그를 발견.
- CI/CD 파이프라인: 사전 시드 데이터에 의존하지 않는 신뢰성 높고 재현 가능한 테스트 실행.
- 목킹 서버: 프론트엔드 개발을 위해 현실적이고 가변적인 응답 반환.
이러한 기능은 부ritt한 테스트를 견고한 검증으로 바꾸고, 개발 피드백 루프를 가속화합니다.