Apidog 테스트 단계 간 데이터 전달 방법

Oliver Kingsley

Oliver Kingsley

6 August 2025

Apidog 테스트 단계 간 데이터 전달 방법

Apidog 엔터프라이즈

온프레미스 배포

SSO & RBAC

SOC 2 준수

Apidog Enterprise 살펴보기

Apidog에서 자동화된 테스트 워크플로우를 설계할 때, API 요청, 데이터베이스 쿼리, For 루프, ForEach 루프, 스크립트 등 다양한 유형의 테스트 단계를 사용하게 됩니다.

테스트 단계 유형

종종 한 단계에서 생성된 데이터는 다음 단계에서 사용되어야 합니다. 이는 데이터가 프로세스를 주도하고 단계들이 서로 연결되는 논리적인 흐름을 만듭니다.

예를 들어 다음과 같이 할 수 있습니다.

이는 중요한 질문을 제기합니다.

이전(업스트림) 단계의 데이터를 다음(다운스트림) 단계에서 어떻게 올바르게 참조할 수 있을까요?

Apidog에서 데이터 전달을 위한 두 가지 메커니즘

Apidog의 자동화된 테스트에는 여러 테스트 단계 간에 데이터를 전달하는 두 가지 주요 방법이 있습니다.

1. "동적 값"을 통한 이전 단계 데이터 검색

"동적 값(Dynamic Value)" 기능을 사용하여 이전(업스트림) 단계의 출력을 다음(다운스트림) 단계에서 직접 참조할 수 있습니다. 이를 통해 데이터를 저장하지 않고도 즉석에서 데이터를 가져올 수 있습니다.

Apidog 자동화 테스트에서 "동적 값"을 통한 이전 단계 데이터 검색

2. 변수 저장 및 재사용

업스트림 단계에서 중요한 데이터를 추출하여 변수로 저장할 수 있습니다. 이 변수들은 이후의 모든 단계에서 재사용될 수 있습니다.

이 두 가지 데이터 전달 방법을 숙달하는 것은 Apidog에서 효율적이고 데이터 중심적인 자동화된 워크플로우를 구축하는 데 중요합니다.

이 글은 다양한 유형의 테스트 단계에서 데이터를 처리하는 방법을 두 가지 관점에서 설명합니다: 데이터를 추출하는 방법데이터를 사용하는 방법. 이 둘을 이해함으로써 더 유연하고 잘 연결된 테스트 워크플로우를 구축할 수 있을 것입니다.

엔드포인트 응답 데이터 추출 및 사용

엔드포인트 응답 데이터 이해

자동화된 테스트에서 API 요청은 일반적으로 구조화된 JSON 응답을 반환하며, 이는 종종 이후 테스트 단계의 입력으로 사용됩니다.

다른 단계 유형과 달리 엔드포인트 응답은 중첩된 객체와 배열을 자주 포함하여 더 복잡한 경향이 있습니다.

엔드포인트 응답에서 데이터 추출 방법

테스트 단계 간에 엔드포인트 응답 데이터를 추출하고 전달하는 두 가지 주요 방법이 있습니다.

방법 1: 동적 값 참조

"동적 값"을 사용하여 이전 단계의 데이터를 직접 참조합니다.

방법 2: 데이터를 변수로 추출

엔드포인트 후처리기의 "변수 추출" 기능을 사용하여 응답에서 특정 필드를 변수로 추출할 수도 있습니다.

예를 들어, 응답에서 제품의 id를 추출하려면:

이후 단계에서는 {{products_id}}를 사용하여 간단히 참조합니다.

엔드포인트 응답에서 추출된 데이터 사용 방법

API 응답에서 "동적 값" 또는 "추출된 변수"를 사용하여 데이터를 추출한 후, 해당 데이터를 다운스트림 단계에서 여러 가지 방법으로 사용할 수 있습니다.

1. 엔드포인트 요청에서 데이터 사용

API 요청에서 추출된 데이터 사용

2. 데이터베이스 작업에서 데이터 사용

API 응답을 데이터베이스 쿼리의 입력으로 사용할 수 있습니다. 두 가지 방법 모두 작동합니다.

SELECT * FROM products WHERE id = '{{$.1.response.body.products[0].id}}'

SQL 쿼리에서 API 응답 데이터를 직접 참조하려면 동적 값을 사용합니다.

SELECT * FROM products WHERE id = '{{products_id}}'

3. For 루프에서 데이터 사용

API 응답에서 배열의 길이를 기반으로 단계를 반복하려면:

{{$.1.response.body.products.length}}

이렇게 하면 루프 반복 횟수가 설정됩니다.

For 루프에서 데이터 사용

4. ForEach 루프에서 데이터 사용

엔드포인트에서 반환된 배열의 각 항목을 반복하려면:

동적 값 방법을 통해 ForEach 루프에서 데이터 사용

5. 스크립트에서 데이터 사용

스크립트 내에서 이전 단계의 데이터를 사용하려면 pm.variables.get() 메서드를 사용합니다. 방법은 다음과 같습니다.

const products = pm.variables.get("$.1.response.body.products")
동적 값 방법을 통해 스크립트에서 데이터 사용

임시 변수의 값을 가져옵니다.

const products = pm.variables.get("products") 

환경 변수의 값을 가져옵니다.

const products = pm.environment.get("products") 

전역 변수의 값을 가져옵니다.

const products = pm.globals.get("products")
💡
스크립트에서는 {{products}}와 같은 보간 구문을 직접 사용할 수 없습니다. 대신, 위에서 언급된 적절한 메서드를 사용하여 변수 값을 검색해야 합니다.

데이터베이스 쿼리 결과 추출 및 사용

데이터베이스 데이터 이해

데이터베이스 쿼리 단계가 실행되면, 객체 배열 형태의 구조화된 데이터를 반환합니다. 단 하나의 레코드만 반환되더라도 배열로 래핑됩니다. 예를 들어:

Apidog의 데이터베이스 쿼리 결과

엔드포인트 응답과 달리, 데이터베이스 단계의 데이터는 동적 변수를 사용하여 직접 접근할 수 없습니다. 먼저 값을 변수로 추출해야 합니다.

데이터베이스에서 데이터 추출 방법

데이터베이스 단계에서 SQL 쿼리를 실행하면 Apidog는 응답을 다음과 같이 구조화된 데이터로 자동 구문 분석합니다.

[
  {
    "id": "1000",
    "title": "Title 1",
    "description": "Description for Title 1"
  }
]

그런 다음 JSONPath를 사용하여 특정 필드를 추출하고 변수로 저장할 수 있습니다.

예를 들어:

JSONPath를 사용하여 특정 필드를 추출하고 변수로 저장

데이터베이스에서 추출된 데이터 사용 방법

1. 엔드포인트 요청에서 데이터 사용

데이터베이스 쿼리가 ID를 반환하고 이를 변수(products_id)로 저장했다면, 다운스트림 엔드포인트 요청에서 직접 사용할 수 있습니다.

데이터베이스에서 추출된 데이터를 엔드포인트 요청에 사용

2. ForEach 루프에서 데이터 사용

쿼리가 레코드 목록을 반환하고 각 레코드를 개별적으로 처리하려면 전체 배열을 ForEach 루프의 소스로 사용할 수 있습니다.

전제는 데이터베이스 작업에서 변수를 추출할 때 전체 배열을 저장하는 것입니다. 예를 들어:

3. 스크립트에서 데이터 사용

스크립트에서 추출된 데이터베이스 변수를 사용하려면 다른 변수와 동일한 방법을 사용합니다.

임시 변수의 값을 가져옵니다.

const products = pm.variables.get("products")

환경 변수의 값을 가져옵니다.

const products = pm.environment.get("products")

전역 변수의 값을 가져옵니다.

const products = pm.globals.get("products")

For 루프에서 데이터 추출 및 사용

For 루프 작동 방식

For 루프는 특정 일련의 작업을 여러 번 반복하는 데 사용됩니다. 이는 정의된 반복 횟수를 기반으로 실행됩니다.

고정된 루프 횟수를 설정하거나, 이전 단계에서 반환된 배열의 길이(.length)와 같은 동적 값을 사용할 수 있습니다. 예를 들어: {{$.1.response.body.products.length}}:

참고: 데이터를 출력하는 다른 단계와 달리, For 루프 자체는 데이터를 직접 반환하지 않습니다. 루프가 몇 번 실행되었는지 보여주는 인덱스 값(0부터 시작)만 제공합니다.

For 루프에서 데이터 추출 방법

실행 과정에서 동적 변수 구문인 {{$.9.index}}를 사용하여 현재 루프 인덱스에 접근할 수 있습니다.

For 루프에서 추출된 데이터 사용 방법

1. 스크립트에서 데이터 사용

테스트 스크립트에서 루프 관련 정보를 사용하려면 pm.variables.get()을 사용하여 현재 인덱스를 가져올 수 있습니다.

// 현재 루프 인덱스 가져오기
const index = pm.variables.get("$.7.index");
스크립트에서 추출된 For 루프 데이터 사용

2. 다른 데이터 소스와 함께 데이터 사용

For 루프의 일반적인 사용 사례는 배열을 반복하고 각 항목을 처리하는 것처럼 이전 단계의 데이터를 처리하는 것입니다.

// 이전 단계에서 배열 가져오기
const products = pm.variables.get("$.1.response.body.products");

// 현재 루프 인덱스 가져오기
const index = pm.variables.get("$.7.index");

// 인덱스를 사용하여 배열의 현재 항목에 접근
console.log(products[index]);

이를 통해 각 루프 반복 동안 배열의 각 항목에 대해 일괄 작업을 수행할 수 있습니다.

ForEach 루프에서 데이터 추출 및 사용

ForEach 루프 작동 방식

ForEach 루프는 배열 데이터를 위해 특별히 설계되었습니다. 배열의 각 요소를 자동으로 반복하고 동일한 일련의 작업을 수행합니다.

ForEach 루프For 루프의 주요 차이점은 ForEach 루프가 각 반복에서 현재 배열 요소의 전체 데이터를 자동으로 추출하여 자식 단계에서 직접 접근할 수 있도록 한다는 것입니다.

ForEach 루프에서 데이터 접근

ForEach 루프 내에서 시스템은 자동으로 두 가지 특수 변수를 생성합니다.

참고: 숫자 4ForEach 루프 단계의 ID를 나타냅니다. 실제 워크플로우에서는 이를 프로세스에서 올바른 단계 ID로 대체하십시오.

ForEach 루프 데이터의 일반적인 사용 사례

1. 엔드포인트 요청에서 데이터 사용

ForEach 루프는 배치 데이터 작업을 처리하는 데 완벽합니다. 예를 들어, 항목 배열이 있는 경우 배열의 각 항목에 대해 엔드포인트 요청을 자동으로 보낼 수 있습니다. 각 루프 동안 동일한 요청 템플릿이 재사용되지만, {{$.4.element.id}}와 같은 다른 데이터로 채워집니다.

2. 데이터베이스 작업에서 데이터 사용

현재 루프 항목의 데이터를 사용하여 데이터베이스 쿼리를 실행하거나 여러 행을 삽입할 수 있습니다.

예시: 현재 항목의 필드를 사용하여 데이터베이스 쿼리

SELECT * FROM products WHERE id = '{{$.4.element.id}}' 

{{$.4.element.id}} 표현식은 동적 값 기능을 사용하여 접근할 수 있습니다.

현재 항목의 여러 필드를 테이블에 삽입:

INSERT INTO products (id, title) VALUES ('{{$.4.element.id}}', '{{$.4.element.title}}') 

3. 스크립트에서 데이터 사용

사용자 정의 스크립트에서 루프의 데이터를 추가로 처리해야 하는 경우, pm.variables.get() 메서드를 사용하여 값을 검색할 수 있습니다.

// 현재 요소 가져오기
const item = pm.variables.get("$.4.element");

// 현재 인덱스 가져오기
const index = pm.variables.get("$.4.index");

스크립트에서 데이터 추출 및 사용

스크립트 데이터 작동 방식

워크플로우의 다른 단계와 달리, 스크립트는 다음 단계에서 직접 사용할 수 있는 출력을 자동으로 생성하지 않습니다. 스크립트에서 데이터를 이후 단계로 전달하려면 수동으로 변수에 저장해야 합니다.

스크립트에서 데이터 추출 방법

다음과 같이 다양한 유형의 변수에 값을 저장할 수 있습니다.

// JSON 응답 데이터 가져오기
// 1. 현재 엔드포인트 응답에서
// const currentData = pm.response.json();

// 2. 또는 동적 값을 사용하여 이전 단계에서 가져오기
const preData = pm.variables.get("$.1.response.body");

// 환경 변수에 저장
pm.environment.set('products', preData.products);
pm.environment.set('products_id', preData.products[0].id);

// 전역 변수에 저장
pm.globals.set('products', preData.products);

// 임시 변수에 저장 (현재 실행 중에만 유효)
pm.variables.set('products', preData.products);

변수가 추출되고 설정되면 {{variableName}} 구문을 사용하여 이후 단계에서 참조할 수 있습니다.

스크립트에서 추출된 데이터 사용 방법

1. 엔드포인트 요청에서 데이터 사용

스크립트에서 설정된 변수는 다운스트림 엔드포인트 요청의 매개변수로 직접 사용될 수 있습니다. 예를 들어, 스크립트에 products_id를 저장했다면, 이후 요청에서 {{products_id}}와 같이 참조할 수 있습니다.

API 요청에서 추출된 데이터 사용

2. 데이터베이스 작업에서 데이터 사용

스크립트 변수는 동적 SQL 문을 구축하는 데도 사용될 수 있습니다. 예를 들어:

SELECT * FROM products WHERE id = '{{products_id}}'

3. For 루프에서 데이터 사용

스크립트를 사용하여 루프 횟수 또는 기타 중간 값을 생성하고, 이를 "임시 변수"로 저장한 다음 For 루프 단계로 전달할 수 있습니다.

pm.variables.set("loopCount", 5); 

그런 다음 루프 설정에서 {{loopCount}}를 반복 횟수로 사용합니다.

4. ForEach 루프에서 데이터 사용

전체 배열을 변수에 저장하고 ForEach 루프의 데이터 소스로 사용할 수 있습니다.

예시:

// 선택적으로 동적 값을 사용하여 이전 단계에서 배열 검색
// const preData = pm.variables.get("$.1.response.body.products")

const preData = [{id: 1}, {id: 2}, {id: 3}];

// 환경 변수에 저장
pm.environment.set('products', preData);

그런 다음 ForEach 루프에서 데이터 소스를 {{products}}로 설정합니다.

결론

효율적인 자동화된 테스트 워크플로우를 구축하려면 다양한 유형의 단계에서 데이터를 추출하고 사용하는 방법을 이해하는 것이 필수적입니다.

동적 값 참조변수 추출을 결합하여 유연하고 강력한 데이터 중심 테스트 프로세스를 설계할 수 있습니다.

데이터 전달을 위한 모범 사례:

데이터 복잡성과 사용 빈도에 따라 올바른 방법을 선택하면 워크플로우를 더 유지보수하기 쉽고 효율적으로 만들 수 있습니다.

Apidog에서 API 설계-첫 번째 연습

API를 더 쉽게 구축하고 사용하는 방법을 발견하세요