Ü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.
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.

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
- Feature: Test edilen üst düzey yeteneği açıklar
- Scenario: Özelliğin belirli bir örneğini açıklar
- Given: Başlangıç durumunu ayarlar (ön koşullar)
- When: Yapılan eylemi açıklar
- Then: Beklenen sonucu tanımlar
- And/But: Yukarıdaki anahtar kelimelerden herhangi birini genişletmek için kullanılır
İş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:
- Keşif: Ekip, yeni bir özelliği tartışmak, sorular sormak ve örnekler yakalamak için bir araya gelir
- Formülasyon: Gerçek dünya örnekleri Gherkin senaryoları olarak yazılır
- Otomasyon: Geliştiriciler, senaryoları yürütülebilir kılan adım tanımlarını uygular
- 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.

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.


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:
- Ö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.
- 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.
- 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.
- 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.
- Stratejik Olarak Etiketleyin: Etiketleri düzenleme için kullanın (@smoke, @regression, @api), senaryo açıklamasına ait meta veriler için değil.
- 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.
