Gherkin Dili: Sözdizimi, Biçim ve Örnekler

⚡ Akıllı Özet

Gherkin, yazılım davranışını uygulama ayrıntılarına girmeden tanımlayan, iş dünyası tarafından okunabilir bir dildir. Tanımlama için Given, When ve Then anahtar kelimelerini kullanır. Cucumber Test senaryolarını sade bir dille ifade etmek, canlı dokümantasyon görevi görmekte ve otomatikleştirilmiş BDD testlerinin iskeletini oluşturmaktadır.

  • 📝 Sade dil: Gherkin, programlama bilmeyenlerin de testleri okuyup yazabileceği şekilde davranışları tanımlar.
  • 🥒 Cucumber: Cucumber .feature dosyalarını okur ve Gherkin adımlarını test olarak yürütür.
  • 🔑 Verilen-O zaman-Sonra: Verilen, bağlamı belirler; Ne zaman bir eylemi tetikler; O zaman sonucu doğrular.
  • 🧱 Anahtar Kelimeler: Her senaryo, Özellik, Arka Plan, Senaryo, Ve ve Ama yapısı ile yapılandırılır.
  • En iyi pratik: Her senaryoyu birbirinden bağımsız olarak ele alın ve nasıl yapılacağını değil, ne yapılacağını açıklayın.
  • 🤖 Yapay Zeka Yardımı: Yapay zeka araçları, basit gereksinimlerden "Verildiğinde-O zaman" senaryoları oluşturur.

Salatalık Dili Cucumber

Kornişon Dili Nedir?

salatalık İş süreçlerinde okunabilir bir dil olup, uygulama detaylarına girmeden iş davranışlarını tanımlamanıza yardımcı olur. Testleri tanımlamak için kullanılan, alana özgü bir dildir. Cucumber Bu format, kullanım durumlarını açıklamak için sade bir dil kullanır ve kullanıcıların davranış testlerinden mantık ayrıntılarını kaldırmasına olanak tanır.

Gherkin'deki metin, dokümantasyon görevi görür ve otomatik testlerinizin iskeletini oluşturur. Gherkin formatı, 37'den fazla dilde mevcut olan TreeTop Gramerine dayanmaktadır, bu nedenle Gherkin'i 37'den fazla konuşulan dilde yazabilirsiniz. Bu betik iki temel amaca hizmet eder: kullanıcı senaryolarını belgeler ve otomatik BDD testleri yazmak için temel oluşturur.

Neden Kornişon?

Ortak, sade bir dil formatı olmadan, iş ve teknik ekipler gereksinimleri farklı şekillerde tanımlar ve bu da yanlış anlaşılmalara yol açar. Gherkin, herkese sıradan İngilizce gibi okunan ancak doğrudan yürütülebilir testlere karşılık gelen tek, yapılandırılmış bir kelime dağarcığı sunar.

Kornişon Sözdizimi

Gherkin, YAML gibi satır odaklı bir dildir. PythonHer satır bir adım olarak adlandırılır ve bir anahtar kelimeyle başlar. Girinti için sekmeler veya boşluklar kullanılır. Herhangi bir yere yorum eklenebilir, ancak # işaretiyle başlamalıdır. Yorumlayıcı, Given, When ve Then gibi Gherkin anahtar kelimelerini çıkardıktan sonra her satırı okur.

Feature: Title of the Scenario
  Given [Preconditions or Initial Context]
  When [Event or Trigger]
  Then [Expected output]

Gherkin belgeleri .feature uzantısına sahiptir ve açıklayıcı bir uzantıya sahip basit bir test dosyasıdır. Cucumber Gherkin belgesini okur ve yazılımın Gherkin sözdiziminde tanımlandığı gibi davrandığını doğrulamak için bir test yürütür.

Gherkin'de Kullanılan Önemli Terimler

Anahtar kelimeler şunlardır: Özellik, Arka Plan, Senaryo, Verilen, Ne Zaman, O Zaman, Ve, Ancak ve Senaryo Taslağı. Cucumber Kesin bir adlandırma kuralı yok, ancak net bir adlandırma yöntemi faydalı olur.

Özellik

Dosyanın uzantısı .feature olmalı ve her özellik dosyası yalnızca bir özelliği tanımlamalıdır. Feature anahtar kelimesi ile başlar. Özelliği: Ardından bir boşluk ve özellik adı gelir.

senaryo

Her özellik dosyasında birden fazla senaryo olabilir ve her senaryo şu şekilde başlar: Senaryo: Ardından senaryo adı gelir.

Olayın Arka Planı

Background anahtar kelimesi senaryoya bağlam ekler. Her senaryo tarafından paylaşılan adımları içerebilir; fark, bu adımların her senaryodan önce çalıştırılmasıdır.

Verilmiş

`Given` anahtar kelimesi, kullanıcının sistemle etkileşime girmeye başlamasından önce sistemi bilinen bir duruma getirir. Ön koşulu veya bağlamı tanımlar:

Given I am on "/."

Ne zaman

"When" anahtar kelimesi, kullanıcının gerçekleştirdiği eylemi tanımlar:

When I perform "Sign In."

Sonra

"Then" anahtar kelimesi, "When" adımındaki eylemden sonra gözlemlenen sonucu tanımlar. Yalnızca fark edilebilir değişiklikleri doğrulamalısınız:

Then I should see "Welcome Tom."

Ve ama

Birden fazla "Verilen", "Ne Zaman" veya "O Zaman" adımı olabilir. "Ve" ve "Ama" anahtar kelimeleri, okunabilirliği artırmak için ek adımlar ekler:

And I enter "EmailAddress" with "tomjohn@gmail.com."
But I should see "Welcome Tom."

Given, When, Then, And ve But kelimelerinin hepsi test adımlarıdır. Bunları yer değiştirirseniz yorumlayıcı hata vermez, ancak senaryo mantıklı okunmaz, bu nedenle her anahtar kelimeyi amacına uygun olarak kullanın.

Kornişon Örnekleri

Örnek 1: Bir sosyal ağ sitesi için giriş yapma özelliği.

Feature: Login functionality of a social networking site
  Given I am a registered user
  When I enter my username
  And I enter my password
  Then I should be redirected to the home page

Gherkin, özellik dosyasında yazılı olan her adımı analiz eder ve özellik dosyasındaki adımların, adım tanımlama dosyasındaki adımlarla eşleşmesi gerekir.

Örnek 2: Arka plan bilgisi içeren bir kullanıcı kimlik doğrulama senaryosu.

Feature: User Authentication

Background:
  Given the user is already registered on the website

Scenario: Successful login
  Given the user is on the login page
  When the user inputs the correct email address
  And the user inputs the correct password
  And the user clicks the Login button
  Then the user should be authenticated
  And the user should be redirected to their dashboard

Gherkin Kullanımında En İyi Uygulamalar

  • Her senaryo ayrı ve bağımsız olarak yürütülmelidir.
  • Her özellik kendi başına çalıştırılabilir olmalıdır.
  • Adım bilgileri ayrı olarak gösterilmelidir.
  • Senaryolarınızı gereksinimlerinizle ilişkilendirin ve track, hangi senaryoların hangi gereksinime ait olduğunu gösterir.
  • Modüler, anlaşılması kolay adımlar oluşturun ve yaygın senaryoları birleştirin.
  • Sistemin nasıl çalıştığını değil, ne yaptığını açıklayın.

Kornişonun Avantajları

  • Gherkin, programlama bilmeyenlerin bile anlayabileceği kadar basittir.
  • Programcılar bunu testlerine başlamak için sağlam bir temel olarak kullanabilirler.
  • Kullanıcı hikayelerinin anlaşılmasını kolaylaştırır ve iş gereksinimlerini hedefler.
  • İş yöneticileri ve geliştiriciler aynı metni okuyabilirler.
  • Gherkin test senaryoları, kabul testlerini doğrudan otomatik testlere bağlar.
  • Yazım stili, testler arasında kodun yeniden kullanılmasını kolaylaştırıyor.

Kornişonun dezavantajları

  • Bu, yüksek düzeyde iş katılımı ve iş birliği gerektirir.
  • Her senaryoda iyi sonuç vermeyebilir.
  • Kötü yazılmış testler, test bakım maliyetlerini artırabilir.

SSS

BDD, ekiplerin kodlamaya başlamadan önce beklenen davranışı sade bir dille tanımladığı çevik bir uygulamadır. Gherkin senaryoları bu davranışı yakalar, böylece iş ve teknik ekip üyeleri tek bir anlayışa sahip olur.

Gherkin, senaryo yazmak için kullanılan sade dil sözdizimidir. Cucumber Gherkin .feature dosyalarını okuyan ve uygulamanıza karşı adımları yürüten çeşitli araçlardan biridir.

Senaryo taslağı, Örnekler tablosu altında listelenen birden fazla veri kümesiyle aynı adımları uygular. Bu sayede her bir girdi değeri kümesi için senaryonun tekrarlanması önlenir.

Bir adım tanımı, her Gherkin adımını onu çalıştıran koda eşler. Cucumber Bir adımı okur, eşleşen tanımı bulur ve bu yöntemi uygulamaya karşı yürütür.

Bu üçlü, bir ürün sahibi, bir geliştirici ve bir test uzmanından oluşur ve birlikte bir özelliği incelerler. Onların birleşik bakış açısı, tek bir rolün sağlayabileceğinden daha net ve eksiksiz Gherkin senaryoları üretir.

Dışında CucumberGherkin'e destek verenler şunlardır: SpecFlow .NET ve Behave için PythonDiğer BDD çerçeveleri arasında.

Evet. Yapay zekâ asistanları, kullanıcı hikayesini "Verilen-Ne Zaman-O Zaman" senaryolarının taslaklarına dönüştürür, uç durumları önerir ve kelime seçimini tutarlı tutar; ancak bir test uzmanının bunların doğruluğunu gözden geçirmesi gerekir.

Yapay zeka araçları, basit gereksinimleri okur ve yapılandırılmış "Verilen-Ne Zaman-O Zaman" adımlarının ilk taslağını otomatikleştirir. Bu, yazım sürecini hızlandırır, ancak ekipler yine de gerçek kabul kriterlerine uyacak şekilde ifadeleri iyileştirir.

Bu yazıyı şu şekilde özetleyin: