거킨이란? BDD 및 API 테스트를 위한 거킨 사용법

Ashley Goolam

Ashley Goolam

17 December 2025

거킨이란? BDD 및 API 테스트를 위한 거킨 사용법

제품 관리자도 이해할 수 있을 만큼 명확하고 간단한 테스트 케이스를 작성하고 싶으신가요? 이것이 바로 Gherkin의 마법입니다! 아직 시도해보지 않았다면, 비즈니스 요구사항과 자동화된 테스트 간의 격차를 해소하는 가장 효과적인 방법 중 하나를 놓치고 있는 것입니다. Gherkin을 테스트에 사용하는 방법을 배우는 것은 단순히 구문을 배우는 것을 넘어, 팀 전체가 소통할 수 있는 언어를 배우는 것입니다.

이 가이드는 Gherkin을 테스트에 사용하는 방법에 대해 알아야 할 모든 것을 기본 구문부터 고급 기능까지, 특히 API 테스트와 Apidog와 같은 최신 도구가 어떻게 테스트 시나리오를 일반적인 어려움 없이 실행 가능한 테스트 케이스로 전환할 수 있는지에 중점을 두어 설명합니다.

button

Gherkin이란 무엇이며 왜 관심을 가져야 할까요?

Gherkin은 행동 설명을 위해 설계된 비즈니스 친화적이며 도메인 특화된 언어입니다. 기술 및 비기술 이해관계자 모두가 이해할 수 있는 방식으로 소프트웨어 동작을 정의하기 위해 간단한 키워드 구문을 사용합니다. Gherkin을 테스트에 사용하는 방법을 숙달하면, 요구사항 명세, 테스트 케이스 설계, 자동화된 테스트 실행이라는 세 가지 목적을 충족하는 살아있는 문서를 만들 수 있습니다.

gherkin

행동 주도 개발(BDD) 운동에서 탄생한 Gherkin은 근본적인 문제를 해결합니다. 즉, 기존 테스트 케이스는 비즈니스 이해관계자에게는 너무 기술적이거나 개발자에게는 너무 모호하다는 것입니다. Gherkin은 적절한 중간 지점을 찾습니다. 가장 큰 장점은 명확성을 강요한다는 것입니다. Given-When-Then 형식으로 기능을 설명할 수 없다면, 아마도 테스트하기에 충분할 만큼 이해하지 못하고 있는 것입니다.

이 언어는 구현에 구애받지 않습니다. 동일한 Gherkin 시나리오는 웹 UI용 Selenium 테스트, API용 RestAssured 테스트 또는 모바일 앱용 Appium 테스트를 구동할 수 있습니다. 이러한 유연성 덕분에 Gherkin을 테스트에 사용하는 방법을 배우는 것은 평생 투자가 됩니다.

Gherkin 구문: 가독성 높은 테스트의 기반

Gherkin을 테스트에 사용하는 방법을 이해하는 것은 구문 마스터링에서 시작됩니다. Gherkin 파일은 .feature 확장자를 사용하며 몇 가지 핵심 키워드로 구성됩니다.

주요 키워드

가장 간단한 예는 다음과 같습니다.

Feature: 사용자 로그인
  등록된 사용자로서
  내 계정에 로그인하고 싶습니다
  내 대시보드에 접근할 수 있도록

  Scenario: 유효한 자격 증명으로 성공적인 로그인
    Given 저는 로그인 페이지에 있습니다
    When 저는 "test@example.com"을 사용자 이름으로 입력합니다
    And 저는 "ValidPass123"을 비밀번호로 입력합니다
    And 저는 로그인 버튼을 클릭합니다
    Then 저는 대시보드로 리디렉션되어야 합니다
    And 저는 환영 메시지를 보아야 합니다

이것이 일반 영어처럼 읽히는 방식에 주목하십시오. 이것이 핵심입니다. Gherkin을 테스트에 사용하는 방법을 배울 때, 첫 번째 목표는 똑똑함이 아니라 명확성입니다.

Gherkin으로 첫 API 테스트 작성하기

Gherkin은 UI 테스트를 위해 시작되었지만, API 테스트에도 매우 강력합니다. 그 구조는 HTTP 요청 및 응답에 완벽하게 매핑됩니다. API 엔드포인트를 테스트하기 위해 Gherkin을 사용하는 방법의 실제 예를 살펴보겠습니다.

Feature: 사용자 관리 API
  API 클라이언트로서
  사용자 계정을 관리하고 싶습니다
  사용자 시스템과 통합할 수 있도록

  Scenario: 새 사용자 성공적으로 생성
    Given API 엔드포인트는 "/api/users"입니다
    And 저는 유효한 인증 자격 증명을 가지고 있습니다
    When 저는 다음을 포함하는 POST 요청을 보냅니다:
      | field    | value            |
      | email    | test@example.com |
      | password | ValidPass123     |
      | role     | customer         |
    Then 응답 상태는 201이어야 합니다
    And 응답은 "userId"를 포함해야 합니다
    And 새 사용자가 데이터베이스에 존재해야 합니다

  Scenario: 유효하지 않은 이메일로 사용자 생성 시도
    Given API 엔드포인트는 "/api/users"입니다
    And 저는 유효한 인증 자격 증명을 가지고 있습니다
    When 저는 다음을 포함하는 POST 요청을 보냅니다:
      | field    | value         |
      | email    | invalid-email |
      | password | ValidPass123  |
    Then 응답 상태는 400이어야 합니다
    And 응답은 "Invalid email format"을 포함해야 합니다

이 예는 요청 페이로드에 대한 데이터 테이블과 함께 API를 테스트하기 위해 Gherkin을 사용하는 방법을 보여줍니다. Given-When-Then 구조는 API 테스트 개념인 설정, 동작, 단언에 직접 매핑됩니다.

복잡한 시나리오를 위한 Gherkin 고급 기능

기본 사항을 마스터하면 이러한 고급 기능을 통해 Gherkin 기능을 더욱 유지보수하기 쉽고 강력하게 만들 수 있습니다.

Background: 반복 피하기

Background 키워드는 기능 파일의 각 시나리오 전에 실행되어 중복된 설정 단계를 제거합니다.

Feature: 쇼핑 카트 API

  Background:
    Given 저는 유효한 인증 토큰을 가지고 있습니다
    And API 엔드포인트는 "/api/cart"입니다

  Scenario: 비어 있는 카트에 항목 추가
    When 저는 항목 "123"과 수량 "1"을 포함하는 POST 요청을 보냅니다
    Then 카트에는 1개의 항목이 있어야 합니다

  Scenario: 카트에 중복 항목 추가
    Given 카트에는 이미 항목 "123"이 수량 "2"로 포함되어 있습니다
    When 저는 항목 "123"과 수량 "1"을 포함하는 POST 요청을 보냅니다
    Then 카트에는 항목 "123"이 수량 "3"으로 포함되어야 합니다

대규모로 Gherkin을 테스트에 사용하는 방법을 탐색할 때, Background는 DRY(Don't Repeat Yourself) 원칙에 필수적입니다.

Scenario Outlines: 데이터 기반 테스트

Scenario Outlines는 동일한 시나리오를 여러 데이터 세트로 실행할 수 있게 하여 Gherkin을 테스트에 사용하는 방법을 훨씬 더 효율적으로 만듭니다.

Scenario Outline: 다양한 자격 증명으로 로그인
  Given 저는 로그인 페이지에 있습니다
  When 저는 "<username>"을 사용자 이름으로 입력합니다
  And 저는 "<password>"를 비밀번호로 입력합니다
  And 저는 로그인 버튼을 클릭합니다
  Then 저는 "<expected_result>"를 보아야 합니다

  Examples:
    | username          | password     | expected_result         |
    | test@example.com  | ValidPass123 | 대시보드에 오신 것을 환영합니다    |
    | invalid@email.com | ValidPass123 | 유효하지 않은 자격 증명     |
    | test@example.com  | wrongpass    | 유효하지 않은 자격 증명     |
    |                   | ValidPass123 | 사용자 이름은 필수입니다    |
    | test@example.com  |              | 비밀번호는 필수입니다    |

이 단일 시나리오 아웃라인은 다섯 가지 개별 테스트를 실행합니다. Gherkin을 테스트에 사용하는 방법을 배울 때, 이것은 유지보수 악몽 없이 포괄적인 커버리지를 위한 비밀 무기입니다.

태그: 테스트 스위트 구성

태그는 시나리오를 분류하고 필터링하는 데 도움이 됩니다.

@regression @login
Scenario: 성공적인 로그인
  Given 저는 로그인 페이지에 있습니다
  When 저는 유효한 자격 증명을 입력합니다
  Then 저는 로그인되어야 합니다

@smoke @api @critical
Scenario: API 상태 점검
  Given API 엔드포인트는 "/health"입니다
  When 저는 GET 요청을 보냅니다
  Then 응답 상태는 200이어야 합니다

태그는 선택적 실행을 가능하게 합니다: 빠른 유효성 검사를 위해 @smoke 테스트만 실행하거나, 전체 커버리지를 위해 @regression을 실행합니다.

행동 주도 개발(BDD)과 Gherkin

Gherkin을 테스트에 사용하는 방법을 이해하는 것은 그 탄생지인 BDD를 이해하는 것을 의미합니다. BDD는 개발자, 테스터 및 비즈니스 이해관계자가 Gherkin 시나리오를 사용하여 요구사항을 함께 정의하는 협업 접근 방식입니다.

작업 흐름은 다음과 같습니다.

  1. 발견: 팀이 모여 새로운 기능에 대해 논의하고 질문을 하고 예제를 캡처합니다.
  2. 구성: 실제 예제가 Gherkin 시나리오로 작성됩니다.
  3. 자동화: 개발자가 시나리오를 실행 가능하게 만드는 단계 정의를 구현합니다.
  4. 유효성 검사: 자동화된 시나리오가 회귀 테스트로 실행됩니다.

마법은 발견 과정에서 일어납니다. 제품 소유자가 "사용자는 비밀번호를 재설정할 수 있어야 합니다"라고 말하면, 팀은 "재설정 토큰이 만료되면 어떻게 됩니까?"라고 묻습니다. 이 대화는 코드를 작성하기 전에 Gherkin 시나리오가 됩니다.

BDD는 Gherkin을 테스트에 사용하는 방법이 기술적 검증뿐만 아니라 비즈니스 가치 제공과 일치하도록 보장합니다.

bdd
행동 주도 개발

Gherkin 테스트 스크립트: 시나리오에서 실행까지

Gherkin 시나리오는 코드에 연결될 때까지는 그저 텍스트일 뿐입니다. 단계 정의는 이 간극을 메웁니다. 다음은 Gherkin을 테스트에 사용하는 방법이 실행 가능하게 되는 방식입니다.

// 로그인 시나리오를 위한 Cucumber.js 단계 정의
const { Given, When, Then } = require('@cucumber/cucumber');
const { expect } = require('chai');
const apiClient = require('./api-client');

Given('저는 유효한 인증 자격 증명을 가지고 있습니다', async function() {
  this.authToken = await apiClient.getAuthToken('test@example.com', 'ValidPass123');
});

When('저는 다음을 포함하는 POST 요청을 보냅니다:', async function(dataTable) {
  const requestData = dataTable.rowsHash();
  this.response = await apiClient.post('/api/users', requestData, this.authToken);
});

Then('응답 상태는 {int}이어야 합니다', function(statusCode) {
  expect(this.response.status).to.equal(statusCode);
});

각 Gherkin 단계는 함수에 매핑됩니다. 이 함수는 선택한 자동화 프레임워크를 사용하여 실제 테스트 로직을 실행합니다. 이러한 관심사 분리는 Gherkin을 테스트에 사용하는 방법이 유지보수 가능한 이유입니다. 즉, Gherkin의 비즈니스 로직은 거의 변경되지 않는 반면, 구현 코드는 자유롭게 리팩터링할 수 있습니다.

Apidog가 API 테스트를 자동화하는 방법

수동 API 테스트는 시간 낭비입니다. 모든 엔드포인트에 대해 요청을 작성하고, 인증을 관리하고, 응답을 검증하고, 결과를 문서화하는 것은 빠르게 지속 불가능해집니다. Apidog는 AI 기반 자동화를 통해 API 사양을 몇 분 안에 완벽한 테스트 스위트로 전환하여 이러한 부담을 없애줍니다.

OpenAPI 사양을 가져오기만 하면 Apidog의 AI(자체 Claude, OpenAI 또는 Gemini 키에 연결됨)가 긍정, 부정, 경계 및 보안 시나리오에 걸쳐 포괄적인 테스트 케이스를 자동으로 생성합니다. 각 테스트에는 미리 구성된 페이로드, 예상 상태 코드 및 응답 어설션이 포함됩니다. 처음부터 작성하는 대신 검토하고 개선하여 테스트 작성자에서 테스트 큐레이터로 전환합니다.

connect your AI to Apidog

실행은 통합된 시각적 인터페이스를 통해 이루어지며 코드가 필요하지 않습니다. 한 번의 클릭으로 개별적으로 또는 대량으로 테스트를 실행하면 Apidog는 인증, 데이터 관리, 환경 전환 및 실시간 유효성 검사를 자동으로 처리합니다. CI/CD 파이프라인과의 통합은 모든 빌드에서 전체 스위트가 실행되어 회귀를 즉시 감지한다는 것을 의미합니다. 한때 며칠이 걸렸던 수동 작업이 이제 몇 분으로 단축되어 팀이 반복적인 작업 대신 전략적 품질 결정에 집중할 수 있도록 합니다.

button

testing api endpoints in apidog

효과적인 Gherkin 테스트 작성을 위한 모범 사례

Gherkin을 테스트에 사용하는 방법을 마스터하는 것은 다음 입증된 사례를 따르는 것을 의미합니다.

  1. 사람을 먼저 고려하여 작성하십시오: 비기술적 이해관계자가 시나리오를 이해할 수 없다면 다시 작성하십시오. Gherkin 단계에서는 기술 용어를 피하십시오.
  2. 시나리오를 독립적으로 유지하십시오: 각 시나리오는 자체 데이터를 설정하고 자체적으로 정리해야 합니다. 종속성은 깨지기 쉬운 테스트 스위트를 만듭니다.
  3. 명령형보다는 선언형을 사용하십시오: 무엇을 테스트하는지 작성하고, 어떻게 테스트하는지는 작성하지 마십시오. "사용자를 생성할 때"가 "새 사용자 버튼을 클릭하고 양식을 채우고 제출을 클릭할 때"보다 낫습니다.
  4. 시나리오 길이를 제한하십시오: 시나리오가 7-8단계 이상이라면 너무 많은 것을 테스트하고 있을 수 있습니다. 여러 개의 집중된 시나리오로 분할하십시오.
  5. 전략적으로 태그를 지정하십시오: 조직화(예: @smoke, @regression, @api)를 위해 태그를 사용하고, 시나리오 설명에 속해야 하는 메타데이터에는 사용하지 마십시오.
  6. 단계 재사용성을 유지하십시오: "/api/users"에 POST 요청을 보냅니다" 대신 "문자열에 POST 요청을 보냅니다"와 같은 일반적인 단계를 작성하십시오. 재사용 가능한 단계는 유지보수를 극적으로 줄입니다.

자주 묻는 질문

Q1: Gherkin 테스트를 작성하려면 프로그래밍을 알아야 하나요?

답: 더 이상은 아닙니다. 전통적인 Gherkin은 개발자가 단계 정의를 코딩해야 했지만, Apidog와 같은 최신 도구는 게임을 바꿨습니다. Apidog의 AI는 API 사양에서 Gherkin 스타일 시나리오를 자동으로 생성할 수 있으며, 시각적 인터페이스를 통해 한 줄의 코드도 작성하지 않고 실행할 수 있습니다. 시나리오를 검토하고 개선하려면 여전히 도메인 지식이 필요하지만, API 테스트의 기술적 장벽은 사실상 사라졌습니다.

Q2: Apidog가 Gherkin 시나리오를 정말 자동으로 생성할 수 있나요?

답: 네, 하지만 약간의 설명이 필요합니다. Apidog는 AI(자체 Claude, OpenAI 또는 Gemini 키에 연결됨)를 사용하여 OpenAPI 사양을 분석하고 구조화된 테스트 케이스를 생성합니다. 한 번의 클릭으로 "Gherkin으로 내보내기" 버튼은 없지만, AI에 해당 테스트 케이스를 Given/When/Then 구문으로 포맷하도록 지시할 수 있습니다. 생성된 출력은 AI가 이미 사양에서 엔드포인트, 메서드, 요청 스키마 및 예상 응답을 알고 있기 때문에 Gherkin 구조에 완벽하게 매핑됩니다.

Q3: Gherkin 시나리오 생성을 위한 좋은 OpenAPI 사양은 무엇인가요?

답: 사양이 풍부할수록 Gherkin이 더 좋습니다. 명확한 작업 설명, 자세한 필드 제약 조건(최소/최대 길이, 패턴, 열거형), 예제 값 및 설명적인 오류 응답을 포함하십시오. Apidog의 AI는 이러한 세부 정보를 사용하여 더 정확한 시나리오를 생성합니다. 즉, 간단한 "email: string"을 유효한 형식, 누락된 이메일, 유효하지 않은 형식 및 최대 길이 위반에 대한 특정 테스트 케이스로 변환합니다.

Q4: Gherkin은 Postman과 같은 도구의 전통적인 API 테스트 케이스와 어떻게 다른가요?

답: 전통적인 API 테스트 케이스는 종종 명령형입니다("헤더 X를 설정하고, Y에 POST를 보내고, 상태 Z를 단언합니다"). Gherkin은 선언형입니다. 즉, 비즈니스 언어로 동작을 설명합니다("유효한 사용자가 주어졌을 때, 등록하면 확인을 받아야 합니다"). Apidog는 비즈니스 친화적인 Gherkin을 생성하면서 그 아래에 기술적 실행 엔진을 제공함으로써 두 세계를 연결합니다. 자동화를 희생하지 않고 명확성을 얻을 수 있습니다.

Q5: AI가 생성한 Gherkin 시나리오가 우리 팀의 스타일에 맞지 않으면 어떻게 해야 하나요?

답: 그럴 때 프롬프팅이 강력해집니다. Apidog의 AI에 "엄격한 Gherkin 구문을 사용하십시오", "일반적인 Given 단계를 Background 섹션으로 결합하십시오", 또는 "Examples 테이블이 있는 Scenario Outlines를 생성하십시오"와 같은 특정 지침을 지시할 수 있습니다. AI는 지침에 따라 출력을 조정하며, 최종 결정 전에 항상 결과를 편집할 수 있습니다. 마치 선임 테스터가 검토하고 다듬을 시나리오 초안을 작성하는 것으로 생각하십시오.

결론

Gherkin을 테스트에 사용하는 방법을 마스터하는 것은 품질을 팀 스포츠로 만드는 공유 언어를 만듭니다. 테스트가 일반 영어처럼 읽힐 때, 개발자부터 제품 소유자까지 모든 사람이 참여합니다. 그러나 진정한 돌파구는 그 명확성을 지능적인 자동화와 결합할 때 일어납니다.

Apidog는 API 테스트를 병목 현상으로 만들어왔던 지루한 수동 작업을 제거합니다. API 사양에서 포괄적인 테스트 케이스를 생성하고 자동으로 실행함으로써, 테스트를 힘든 일에서 전략적 이점으로 전환합니다. 단계 정의나 유지보수 코드를 작성하지 않고도 Gherkin의 가독성과 완전 자동화의 힘을 얻을 수 있습니다.

OpenAPI 사양을 가져오고 첫 번째 AI 기반 테스트 스위트를 생성하는 것부터 시작하십시오. 몇 분 안에 모든 개발 단계에서 신뢰를 제공하는 실행 가능한 테스트를 갖게 될 것입니다. 이는 품질이 버그를 찾는 것뿐만 아니라 품질이 불가피해지는 프로세스를 구축하는 것임을 증명합니다.

button

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

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