İçeriğe geç

Gherkin Türkçe Dil Yapısı (Cucumber BDD)

Bu döküman, Cucumber/Gherkin söz diziminin anahtar kelimeleri ve kullanım örneklerini özetler.
(Proje kökünde *.feature dosyaları içinde kullanılır.)


İngilizceTürkçeAçıklama
FeatureÖzellikÜrünün/konunun üst seviye tanımı
RuleKuralÖzellik içindeki bir iş kuralı
BackgroundArka PlanHer senaryodan önce çalışan ortak adımlar
ScenarioSenaryoTekil akış
Scenario OutlineSenaryo TaslağıParametrik/çoklu örnekli senaryo şablonu
ExamplesÖrneklerTaslağın veri tablosu
GivenDiyelim kiBaşlangıç durumu/önkoşul
WhenEğer kiEylem/olay
ThenO zamanBeklenen sonuç/doğrulama
AndVeEk adım
ButAmaİstisna/negatif ek
## yorumSatır yorumları
"""Çok satırlı metinDocString bloğu
| ... |TabloVeri tabloları
@tag@etiketSenaryo/Özellik etiketleri

Not: Büyük/küçük harf farkı önemli değildir; ama tutarlılık için burada gösterildiği gibi kullanılması önerilir.


Feature: Kullanıcı girişi
Background:
Given giriş sayfasındayım
Scenario: Doğru bilgilerle giriş
Given kullanıcı adı "mehmet" ve parola "Secret123"
When giriş butonuna tıklarım
Then ana sayfayı görmeliyim
And sağ üstte "mehmet" olarak oturum açık olmalı

📐 Senaryo Taslağı (Scenario Outline) + Örnekler

Section titled “📐 Senaryo Taslağı (Scenario Outline) + Örnekler”
Feature: Şifre doğrulama
Scenario Outline: Zayıf şifrede uyarı gösterilir
Given kayıt ekranındayım
When parolayı "<parola>" olarak girerim
And kaydet butonuna basarım
Then "<mesaj>" uyarısını görmeliyim
Örnekler:
| parola | mesaj |
| 12345 | Parola çok kısa |
| abcdef | Rakam içermeli |
| ABCDEF12 | Küçük harf içermeli |

Feature: Sepet işlemleri
Rule: Stokta olmayan ürün eklenemez
Scenario: Tükenen ürün
Given "Kulaklık" ürünü stokta 0
When ürünü sepete eklerim
Then "Stokta yok" hatası görünmeli

  • Arka Plan, aynı dosyadaki her senaryodan önce çalışır.
  • Ortak login, navigasyon gibi adımlar için idealdir.
Background:
Given kullanıcı "admin" olarak giriş yaptım
And kontrol panelindeyim

DocString (çok satırlı metin):

Scenario: Metin alanına JSON girme
When aşağıdaki içeriği yapıştırırım:
"""
{
"ad": "Mehmet",
"rol": "Tester"
}
"""
Then alan geçerli JSON olarak kabul edilmeli

Tablo (DataTable):

Scenario: Ürünleri sepete ekleme
Given aşağıdaki ürünler var:
| ad | adet |
| Kalem | 3 |
| Defter | 2 |
When tüm ürünleri sepete eklerim
Then sepet toplam adedi 5 olmalı

  • Çalıştırma filtreleri, kategorileme ve hooks bağlamak için:
@kritik @smoke
Scenario: Minimum akış
...

CLI örneği (Cucumber-JVM):

mvn test -Dcucumber.filter.tags="@smoke and not @wip"

import io.cucumber.java.en.Given;
import io.cucumber.java.en.When;
import io.cucumber.java.en.Then;
import io.cucumber.java.en.And;
public class GirisAdimlari {
@Given("kullanıcı adı {string} ve parola {string}")
public void kimlik(String user, String pass) { /* ... */ }
@When("giriş butonuna tıklarım")
public void tiklarim() { /* ... */ }
@Then("ana sayfayı görmeliyim")
public void dogrulama() { /* ... */ }
@And("sağ üstte {string} olarak oturum açık olmalı")
public void oturum(String ad) { /* ... */ }
}

Paket adları sürüme göre io.cucumber.java.tr.*, io.cucumber.java.en.* veya io.cucumber.java.* altında değişebilir.


  • İş dili ile yazın; UI detaylarından kaçının (buton isimleri yerine davranış).
  • Her senaryo bağımsız çalışmalı (test izolasyonu).
  • Adımlarda tek eylem/tek beklenti kuralına yaklaşın.
  • Senaryo taslaklarını yalın ve anlamlı veri setleri ile besleyin.
  • Arka Plan’ı kısa tutun; kapsamı büyütmeyin.

  • Türkçe Gherkin anahtar kelimeleri: Feature, Rule, Background, Scenario, Scenario Outline, Examples, Given, When, Then, And, But
  • Ortak adımlar için Background, parametrik vakalar için Scenario Outline + Examples kullanın.