Gherkin Nedir? BDD ve API Testlerinde Gherkin Kullanımı

Ashley Goolam

Ashley Goolam

17 December 2025

Gherkin Nedir? BDD ve API Testlerinde Gherkin Kullanımı

Ürün yöneticinizin bile anlayabileceği kadar açık ve basit bir test durumu yazmak ister misiniz? İşte Gherkin'in büyüsü bu! Eğer denemediyseniz, iş gereksinimleri ile otomatik test arasındaki boşluğu doldurmanın en etkili yollarından birini kaçırıyorsunuz demektir. Test için Gherkin'i kullanmayı öğrenmek sadece bir sözdizimi öğrenmekten ibaret değildir, aksine tüm ekibinizin konuşabileceği bir dil öğrenmektir.

Bu kılavuz, Gherkin'i test için nasıl kullanacağınız hakkında bilmeniz gereken her şeyi, temel sözdiziminden gelişmiş özelliklerine kadar, özellikle API testi ve Apidog gibi modern araçların test senaryolarınızı olağan sorunlar olmadan yürütülebilir test durumlarına nasıl dönüştürebileceğine odaklanarak size gösterecek.

düğme

Gherkin Nedir ve Neden Önemsemelisiniz?

Gherkin, davranış tanımlaması için tasarlanmış, iş tarafından okunabilir, alana özgü bir dildir. Hem teknik hem de teknik olmayan paydaşlar tarafından anlaşılabilecek bir şekilde yazılım davranışlarını tanımlamak için basit bir anahtar kelime sözdizimi kullanır. Test için Gherkin'i nasıl kullanacağınızda ustalaştığınızda, üç amaca hizmet eden yaşayan bir dokümantasyon oluşturmuş olursunuz: gereksinim spesifikasyonu, test durumu tasarımı ve otomatik test yürütme.

gherkin

Davranış Odaklı Geliştirme (BDD) hareketinden doğan Gherkin, temel bir sorunu çözer: geleneksel test durumları, iş paydaşları için ya çok teknik ya da geliştiriciler için çok belirsizdir. Gherkin bu tatlı noktayı bulur. En büyük gücü, netliği zorlamasıdır. Eğer bir özelliği Given-When-Then formatında açıklayamıyorsanız, muhtemelen onu test edecek kadar iyi anlamıyorsunuz demektir.

Bu dil, uygulamadan bağımsızdır. Aynı Gherkin senaryosu, bir web kullanıcı arayüzü için Selenium testlerini, bir API için RestAssured testlerini veya bir mobil uygulama için Appium testlerini yönlendirebilir. Bu esneklik, test için Gherkin'i nasıl kullanacağınızı öğrenmeyi kariyer boyu sürecek bir yatırım haline getirir.

Gherkin Sözdizimi: Okunabilir Testlerin Temeli

Test için Gherkin'i nasıl kullanacağınızı anlamak, sözdizimine hakim olmakla başlar. Gherkin dosyaları .feature uzantısını kullanır ve birkaç temel anahtar kelimeden oluşur:

Birincil Anahtar Kelimeler

İşte mümkün olan en basit örnek:

Feature: User login
  As a registered user
  I want to log in to my account
  So that I can access my dashboard

  Scenario: Successful login with valid credentials
    Given I am on the login page
    When I enter "test@example.com" as username
    And I enter "ValidPass123" as password
    And I click the login button
    Then I should be redirected to the dashboard
    And I should see a welcome message

Bunun nasıl sade İngilizce gibi okunduğuna dikkat edin. Mesele bu. Test için Gherkin'i nasıl kullanacağınızı öğrenirken, ilk hedefiniz netliktir, zekilik değil.

Gherkin ile İlk API Testinizi Yazma

Gherkin, kullanıcı arayüzü testleri için ortaya çıkmış olsa da, API testleri için son derece güçlüdür. Yapısı, HTTP istekleri ve yanıtlarıyla mükemmel bir şekilde eşleşir. Bir API uç noktasını test için Gherkin'i nasıl kullanacağınızın pratik bir örneğine bakalım:

Feature: User management API
  As an API client
  I want to manage user accounts
  So that I can integrate with the user system

  Scenario: Create a new user successfully
    Given the API endpoint "/api/users"
    And I have valid authentication credentials
    When I send a POST request with:
      | field    | value            |
      | email    | test@example.com |
      | password | ValidPass123     |
      | role     | customer         |
    Then the response status should be 201
    And the response should contain "userId"
    And a new user should exist in the database

  Scenario: Attempt to create user with invalid email
    Given the API endpoint "/api/users"
    And I have valid authentication credentials
    When I send a POST request with:
      | field    | value         |
      | email    | invalid-email |
      | password | ValidPass123  |
    Then the response status should be 400
    And the response should contain "Invalid email format"

Bu örnek, istek yükleri için veri tablolarıyla API'leri test için Gherkin'i nasıl kullanacağınızı gösterir. Given-When-Then yapısı, API test kavramlarına doğrudan eşleşir: kurulum, eylem ve doğrulama.

Karmaşık Senaryolar için Gelişmiş Gherkin Özellikleri

Temel bilgilere hakim olduktan sonra, bu gelişmiş özellikler Gherkin özelliklerinizi daha sürdürülebilir ve güçlü hale getirecektir.

Background: Tekrardan Kaçınma

Background anahtar kelimesi, bir özellik dosyasındaki her senaryodan önce çalışarak yinelenen kurulum adımlarını ortadan kaldırır.

Feature: Shopping cart API

  Background:
    Given I have a valid authentication token
    And the API endpoint "/api/cart"

  Scenario: Add item to empty cart
    When I send a POST request with item "123" and quantity "1"
    Then the cart should contain 1 item

  Scenario: Add duplicate item to cart
    Given the cart already contains item "123" with quantity "2"
    When I send a POST request with item "123" and quantity "1"
    Then the cart should contain item "123" with quantity "3"

Büyük ölçekte test için Gherkin'i nasıl kullanacağınızı araştırırken, DRY (Kendini Tekrar Etme) prensipleri için Background anahtar kelimesi çok önemlidir.

Senaryo Taslakları (Scenario Outlines): Veri Odaklı Test

Senaryo Taslakları, aynı senaryoyu birden çok veri kümesiyle çalıştırmanıza olanak tanıyarak test için Gherkin'i kullanma sürecini çok daha verimli hale getirir:

Scenario Outline: Login with various credentials
  Given I am on the login page
  When I enter "<username>" as username
  And I enter "<password>" as password
  And I click the login button
  Then I should see "<expected_result>"

  Examples:
    | username          | password     | expected_result         |
    | test@example.com  | ValidPass123 | Welcome to dashboard    |
    | invalid@email.com | ValidPass123 | Invalid credentials     |
    | test@example.com  | wrongpass    | Invalid credentials     |
    |                   | ValidPass123 | Username is required    |
    | test@example.com  |              | Password is required    |

Bu tek senaryo taslağı, beş farklı testi yürütür. Test için Gherkin'i nasıl kullanacağınızı öğrenirken, bakım kabusları olmadan kapsamlı kapsama için gizli silahınız budur.

Etiketler (Tags): Test Suitelerinizi Düzenleme

Etiketler, senaryoları kategorize etmenize ve filtrelemenize yardımcı olur:

@regression @login
Scenario: Successful login
  Given I am on the login page
  When I enter valid credentials
  Then I should be logged in

@smoke @api @critical
Scenario: API health check
  Given the API endpoint "/health"
  When I send a GET request
  Then the response status should be 200

Etiketler seçici yürütmeyi sağlar: hızlı doğrulama için yalnızca @smoke testlerini çalıştırın veya tam kapsam için @regression testlerini çalıştırın.

Davranış Odaklı Geliştirme (BDD) ve Gherkin

Test için Gherkin'i nasıl kullanacağınızı anlamak, onun doğduğu yeri anlamak demektir: BDD. BDD, geliştiricilerin, test uzmanlarının ve iş paydaşlarının Gherkin senaryolarını kullanarak gereksinimleri birlikte tanımladığı işbirliğine dayalı bir yaklaşımdır.

İş akışı şu şekildedir:

  1. Keşif: Ekip, yeni bir özelliği tartışmak, sorular sormak ve örnekler yakalamak için bir araya gelir
  2. Formülasyon: Gerçek dünya örnekleri Gherkin senaryoları olarak yazılır
  3. Otomasyon: Geliştiriciler, senaryoları yürütülebilir kılan adım tanımlarını uygular
  4. Doğrulama: Otomatik senaryolar regresyon testleri olarak çalışır

Büyü, keşif aşamasında gerçekleşir. Bir ürün sahibi, "Kullanıcılar şifrelerini sıfırlayabilmeli" dediğinde, ekip şunu sorar: "Sıfırlama belirteci süresi dolarsa ne olur?" Bu konuşma, herhangi bir kod yazılmadan önce bir Gherkin senaryosu haline gelir.

BDD, test için Gherkin'i nasıl kullanacağınızın yalnızca teknik doğrulama ile değil, iş değeri sunmakla uyumlu olmasını sağlar.

bdd
Davranış Odaklı Geliştirme

Gherkin Test Betikleri: Senaryolardan Yürütmeye

Bir Gherkin senaryosu, onu koda bağlayana kadar sadece metindir. Adım tanımları bu boşluğu kapatır. İşte test için Gherkin'i nasıl kullanacağınızın yürütülebilir hale gelmesi:

// Cucumber.js step definition for the login scenario
const { Given, When, Then } = require('@cucumber/cucumber');
const { expect } = require('chai');
const apiClient = require('./api-client');

Given('I have valid authentication credentials', async function() {
  this.authToken = await apiClient.getAuthToken('test@example.com', 'ValidPass123');
});

When('I send a POST request with:', async function(dataTable) {
  const requestData = dataTable.rowsHash();
  this.response = await apiClient.post('/api/users', requestData, this.authToken);
});

Then('the response status should be {int}', function(statusCode) {
  expect(this.response.status).to.equal(statusCode);
});

Her Gherkin adımı bir fonksiyona eşlenir. Fonksiyon, seçtiğiniz otomasyon çerçevesini kullanarak gerçek test mantığını yürütür. Bu sorumluluk ayrımı, test için Gherkin'i nasıl kullanacağınızın neden sürdürülebilir kaldığının sebebidir; Gherkin'deki iş mantığı nadiren değişirken, uygulama kodu serbestçe yeniden düzenlenebilir.

Apidog API Testlerini Nasıl Otomatikleştirir?

Manuel API testi zaman kaybıdır; her uç nokta için istekler oluşturmak, kimlik doğrulamayı yönetmek, yanıtları doğrulamak ve sonuçları belgelemek hızla sürdürülemez hale gelir. Apidog, API spesifikasyonunuzu dakikalar içinde eksiksiz bir test paketine dönüştüren yapay zeka destekli otomasyonuyla bu yükü ortadan kaldırır.

OpenAPI spesifikasyonunuzu içe aktarmanız yeterlidir ve Apidog'un yapay zekası (kendi Claude, OpenAI veya Gemini anahtarınıza bağlı), pozitif, negatif, sınır ve güvenlik senaryolarını kapsayan kapsamlı test durumlarını otomatik olarak oluşturur. Her test, önceden yapılandırılmış yükleri, beklenen durum kodlarını ve yanıt doğrulama ifadelerini içerir. Sıfırdan yazmak yerine gözden geçirir ve iyileştirir, böylece test yazarı olmaktan test küratörü olmaya geçiş yaparsınız.

Yapay zekanızı Apidog'a bağlayın
düğme
apidog'da api uç noktalarını test etme

Yürütme, birleşik bir görsel arayüz aracılığıyla gerçekleşir; kod gerektirmez. Testleri tek tek veya toplu olarak tek bir tıklamayla çalıştırın; Apidog, kimlik doğrulamayı, veri yönetimini, ortam geçişini ve gerçek zamanlı doğrulamayı otomatik olarak halleder. CI/CD işlem hatlarıyla entegrasyon, tüm test paketinizin her yapıda çalıştırılması ve regresyonları anında yakalaması anlamına gelir. Bir zamanlar günlerce süren manuel çaba şimdi dakikalar içinde tamamlanarak ekibinizin tekrarlayan görevler yerine stratejik kalite kararlarına odaklanmasını sağlar.

Etkili Gherkin Testleri Yazmak için En İyi Uygulamalar

Test için Gherkin'i nasıl kullanacağınızda ustalaşmak, kanıtlanmış şu uygulamaları takip etmek demektir:

  1. Önce İnsanlar İçin Yazın: Teknik olmayan bir paydaş senaryonuzu anlayamıyorsa, yeniden yazın. Gherkin adımlarında teknik jargon kullanmaktan kaçının.
  2. Senaryoları Bağımsız Tutun: Her senaryo kendi verilerini ayarlamalı ve kendinden sonra temizlemelidir. Bağımlılıklar, kırılgan test paketleri oluşturur.
  3. Bildirimseli Emirsel Olana Tercih Edin: Nasıl değil, neyi test ettiğinizi yazın. "Bir kullanıcı oluşturduğumda" ifadesi, "Yeni kullanıcı düğmesine tıkladığımda ve formu doldurup gönder'e tıkladığımda" ifadesinden daha iyidir.
  4. Senaryo Uzunluğunu Sınırlandırın: Bir senaryo 7-8 adımdan fazlaysa, muhtemelen çok fazla şeyi test ediyordur. Onu birden çok odaklanmış senaryoya bölün.
  5. Stratejik Olarak Etiketleyin: Etiketleri düzenleme için kullanın (@smoke, @regression, @api), senaryo açıklamasına ait meta veriler için değil.
  6. Adım Yeniden Kullanılabilirliğini Sürdürün: "I send a POST request to /api/users" yerine "I send a POST request to {string}" gibi genel adımlar yazın. Yeniden kullanılabilir adımlar bakımı önemli ölçüde azaltır.

Sıkça Sorulan Sorular

S1: Gherkin testleri yazmak için programlama bilmem gerekiyor mu?

Cevap: Artık değil. Geleneksel Gherkin, geliştiricilerin adım tanımlarını kodlamasını gerektirirken, Apidog gibi modern araçlar oyunu değiştirdi. Apidog'un yapay zekası, API spesifikasyonlarınızdan Gherkin tarzı senaryoları otomatik olarak oluşturabilir ve görsel arayüzü, tek bir kod satırı yazmadan bunları yürütmenize olanak tanır. Senaryoları incelemek ve iyileştirmek için yine de alan bilgisine ihtiyacınız var, ancak API testi için teknik engel ortadan kalkmış durumda.

S2: Apidog gerçekten Gherkin senaryolarını otomatik olarak oluşturabilir mi?

Cevap: Evet, ancak küçük bir açıklamayla. Apidog, OpenAPI spesifikasyonunuzu analiz etmek ve yapılandırılmış test durumları oluşturmak için yapay zekayı (kendi Claude, OpenAI veya Gemini anahtarınıza bağlı) kullanır. Tek tıklamayla "Gherkin'e Aktar" düğmesi olmasa da, yapay zekayı bu test durumlarını Given/When/Then sözdizimine göre biçimlendirmesi için yönlendirebilirsiniz. Oluşturulan çıktı, Gherkin yapısına mükemmel bir şekilde eşleşir çünkü yapay zeka, spesifikasyonunuzdan uç noktalarınızı, yöntemlerinizi, istek şemalarınızı ve beklenen yanıtlarınızı zaten bilmektedir.

S3: Gherkin senaryoları oluşturmak için iyi bir OpenAPI spesifikasyonu ne olmalıdır?

Cevap: Spesifikasyonunuz ne kadar zenginse, Gherkin'iniz de o kadar iyi olur. Açık operasyon açıklamaları, ayrıntılı alan kısıtlamaları (min/maks uzunluk, desenler, enum'lar), örnek değerler ve açıklayıcı hata yanıtları ekleyin. Apidog'un yapay zekası, bu ayrıntıları daha hassas senaryolar oluşturmak için kullanır; basit bir "email: string" ifadesini geçerli format, eksik e-posta, geçersiz format ve maksimum uzunluk ihlalleri için özel test durumlarına dönüştürür.

S4: Gherkin, Postman gibi araçlardaki geleneksel API test durumlarından nasıl farklılaşır?

Cevap: Geleneksel API test durumları genellikle emirsellik (imperative) içerir ("X başlığını ayarla, Y'ye POST gönder, Z durumunu doğrula"). Gherkin ise bildirimseldir (declarative) – davranışı iş dilinde tanımlar ("Geçerli bir kullanıcı verildiğinde, kaydolduğumda, bir onay almalıyım"). Apidog, iş açısından okunabilir Gherkin'i oluşturmanıza olanak tanırken, altında teknik yürütme motorunu sağlayarak her iki dünyayı birleştirir. Otomasyondan ödün vermeden netlik elde edersiniz.

S5: Yapay zeka tarafından oluşturulan Gherkin senaryoları ekibimin tarzına uymuyorsa ne olur?

Cevap: İşte tam bu noktada yönlendirme (prompting) güçlü hale gelir. Apidog'un yapay zekasına belirli yönergeler verebilirsiniz: "Kesin Gherkin sözdizimi kullan," "Ortak Given adımlarını bir Background bölümünde birleştir," veya "Örnek tablolarıyla Senaryo Taslakları oluştur." Yapay zeka, çıktılarını talimatlarınıza göre uyarlar ve sonuçları sonlandırmadan önce her zaman düzenleyebilirsiniz. Bunu, sizin için senaryoları taslağını hazırlayan ve sizin gözden geçirip cilalamanız için sunan kıdemli bir test uzmanı olarak düşünebilirsiniz.

Sonuç

Test için Gherkin'i nasıl kullanacağınızda ustalaşmak, kaliteyi bir takım oyunu haline getiren ortak bir dil oluşturur. Testler sade İngilizce gibi okunduğunda, geliştiricilerden ürün sahiplerine kadar herkes katılır. Ancak gerçek çığır açıcı gelişme, bu netliği akıllı otomasyonla birleştirdiğinizde gerçekleşir.

Apidog, geleneksel olarak API testini bir darboğaz haline getiren sıkıcı manuel çalışmayı ortadan kaldırır. API spesifikasyonlarınızdan kapsamlı test durumları oluşturarak ve bunları otomatik olarak yürüterek, testi bir angaryadan stratejik bir avantaja dönüştürür. Adım tanımları veya bakım kodu yazmadan Gherkin'in okunabilirliğini ve tam otomasyonun gücünü elde edersiniz.

OpenAPI spesifikasyonunuzu içe aktararak ve ilk yapay zeka destekli test paketinizi oluşturarak başlayın. Dakikalar içinde, her geliştirme aşamasında güven sağlayan yürütülebilir testlere sahip olacaksınız; bu da kalitenin sadece hata bulmaktan ibaret olmadığını, aynı zamanda kalitenin kaçınılmaz hale geldiği bir süreç inşa etmekle ilgili olduğunu kanıtlar.

düğme

API Tasarım-Öncelikli Yaklaşımı Apidog'da Uygulayın

API'leri oluşturmanın ve kullanmanın daha kolay yolunu keşfedin