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*.featuredosyaları içinde kullanılır.)
🔑 Anahtar Kelimeler (Keywords)
Section titled “🔑 Anahtar Kelimeler (Keywords)”| İngilizce | Türkçe | Açıklama |
|---|---|---|
Feature | Özellik | Ürünün/konunun üst seviye tanımı |
Rule | Kural | Özellik içindeki bir iş kuralı |
Background | Arka Plan | Her senaryodan önce çalışan ortak adımlar |
Scenario | Senaryo | Tekil akış |
Scenario Outline | Senaryo Taslağı | Parametrik/çoklu örnekli senaryo şablonu |
Examples | Örnekler | Taslağın veri tablosu |
Given | Diyelim ki | Başlangıç durumu/önkoşul |
When | Eğer ki | Eylem/olay |
Then | O zaman | Beklenen sonuç/doğrulama |
And | Ve | Ek adım |
But | Ama | İstisna/negatif ek |
# | # yorum | Satır yorumları |
""" | Çok satırlı metin | DocString bloğu |
| ... | | Tablo | Veri tabloları |
@tag | @etiket | Senaryo/Ö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.
🧩 Basit Örnek (.feature)
Section titled “🧩 Basit Örnek (.feature)”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 |🧱 Kural (Rule) ile Gruplama
Section titled “🧱 Kural (Rule) ile Gruplama”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 (Background)
Section titled “🧰 Arka Plan (Background)”- 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 ve Veri Tabloları
Section titled “🧾 DocString ve Veri Tabloları”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 edilmeliTablo (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ı🏷️ Etiketler (Tags)
Section titled “🏷️ Etiketler (Tags)”- Çalıştırma filtreleri, kategorileme ve hooks bağlamak için:
@kritik @smokeScenario: Minimum akış ...CLI örneği (Cucumber-JVM):
mvn test -Dcucumber.filter.tags="@smoke and not @wip"🧪 Step Definition İpuçları (Java)
Section titled “🧪 Step Definition İpuçları (Java)”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.*veyaio.cucumber.java.*altında değişebilir.
✅ En İyi Uygulamalar
Section titled “✅ En İyi Uygulamalar”- İş 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.
🏁 Özet
Section titled “🏁 Özet”- 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.