Nedir? Cucumber Özellik Dosyası ve Adım Tanımı? (Örnek)

⚡ Akıllı Özet

Cucumber Özellik dosyaları, Gherkin'de davranışları sade bir dille tanımlarken, adım tanımları her satırı çalıştıran kodu içerir. Cucumber Proje, özellikler dizininin altında sabit bir klasör düzeninde saklanan her ikisine de ihtiyaç duyar.

  • 🔘 İki dosya: Bir özellik dosyası ne olması gerektiğini belirtir; bir adım tanımlama dosyası ise otomasyonun bunu nasıl gerçekleştireceğini belirtir.
  • ☑️ Gherkin anahtar kelimeleri: Özellik, Senaryo, Verilen, Ne Zaman ve O zaman kelimeleri bir senaryoya yapısını ve okunabilir şeklini verir.
  • Adımlarda iki nokta üst üste işareti kullanılmaz: Feature ve Scenario ifadelerinde iki nokta üst üste kullanılır, ancak Given, When ve Then ifadelerinde kullanılmamalıdır, aksi takdirde adım yok sayılır.
  • 🧪 Veri kümeleri: Senaryo Özeti ve Örnekler tablosu, bir senaryoyu birçok girdi satırına karşı yeniden oynatır.
  • Paylaşımlı kurulum: Arka plan işlemleri, bir özellikteki her senaryodan belirli adımları tekrarlayarak gerçekleştirilir.
  • 📊 Eşleştirme: Cucumber Eşleştirme sırasında anahtar kelimeyi dikkate almaz, bu nedenle iki adım asla aynı metni paylaşmayabilir.

Cucumber Özellik dosyası ve adım tanımı bir örnekle açıklanmıştır.

Her Cucumber projesi için, projenin kök dizininde "features" adında tek bir klasör bulunur. Tüm Cucumber özellikleriniz burada yer alır. Bu klasörde ayrıca step_definition ve support klasörleri de bulunur.

Bu düzen önemlidir, çünkü Cucumber Dosyalarınızı yapılandırma yerine kurala göre keşfeder. Özellikler dizininin dışında bulunan bir özellik dosyası asla okunmaz.

“Özellik Dosyası” Nedir?

Özellikler dosyası, üst düzey açıklamayı içerir. Test Senaryosu Basit bir dille ifade etmek gerekirse, şu şekilde bilinir: salatalıkGherkin, sade İngilizce bir metin dilidir.

Cucumber Özellik dosyası aşağıdaki bileşenlerden oluşur:

  • Özellik: Bir özellik, yürütülmesi gereken mevcut test komut dosyasını tanımlar.
  • senaryo: Senaryo, belirli bir test senaryosu için adımları ve beklenen sonucu açıklar.
  • Senaryo Taslağı: Senaryo taslağı kullanılarak birden fazla veri kümesi için aynı senaryo yürütülebilir. Veriler (II) ile ayrılmış bir tablo yapısıyla sağlanır.
  • Verilmiş: Yürütülecek metnin içeriğini belirtir. “Given” veri tabloları kullanılarak adım da parametrelendirilebilir.
  • Ne zaman“Ne zaman” ifadesi, gerçekleştirilmesi gereken test eylemini belirtir.
  • SonraTestin beklenen sonucu "O zaman" ile gösterilebilir.

Bir dosya bir Özellik içerir. Altındaki senaryolar, özelliği gösteren somut örneklerdir ve her senaryo aynı ritmi izler: başlangıç ​​bağlamını tanımlayın, bir olayı tanımlayın, beklenen sonucu tanımlayın.

Daha sonra, Özellik Dosyasının nasıl yazılacağını öğreneceğiz. Cucumber örnekle.

Örnek Özellik Dosyası Örneği:

Bu eğitimde yayınlanan orijinal örnek, aşağıda aynen yazıldığı gibi yeniden verilmiştir.

Feature: Visit career guide page in career.guru99.com
Scenario: Visit career.guru99.com
Given: I am on career.guru99.com
When: I click on career guide menu
Then: I should see career guide page

⚠️ Düzeltme: Yukarıdaki örnekte, iki noktadan sonra iki nokta üst üste işareti yer almaktadır. Verilmiş, Ne zaman hem de SonraGherkin, sonuna iki nokta üst üste koyuyor. Özellik hem de senaryo yalnızca. İki nokta üst üste ile takip edilen bir adım anahtar kelimesi adım olarak ayrıştırılmaz, bu nedenle Cucumber Bu satırı sessizce görmezden gelir. Düzeltilmiş dosya şu şekildedir.

Feature: Visit career guide page in career.guru99.com

  Scenario: Visit career.guru99.com
    Given I am on career.guru99.com
    When I click on career guide menu
    Then I should see career guide page

Ayrıştırıcı tarafından girinti zorunlu değildir, ancak her seviye için iki boşluk geleneksel stildir ve uzun bir özelliği taramayı çok daha kolaylaştırır. Aşağıdaki animasyon, bir özellik dosyasının çalıştırılmasını ve her adımın geçtikçe yeşil renge dönüşmesini göstermektedir.

Bir animasyonun Cucumber Gherkin adımlarının her birinde çalışan özellik dosyası sırayla raporlanmaktadır.

“Adım Tanımı” nedir?

Adım tanımı, özellik dosyalarındaki (Given/When/Then tarafından sunulan) Test Senaryosu Adımlarını kodla eşler. Test Edilen Uygulamadaki adımları yürüten ve sonuçları beklenen sonuçlara göre kontrol eden birimdir. Bir adım tanımının yürütülmesi için, bir özellikteki verilen bileşenle eşleşmesi gerekir. Adım tanımı ruby ​​dosyalarında “features/step_definitions/*_steps.rb” altında tanımlanır.

Eşleştirme yalnızca adımın metnine göre yapılır. Cucumber Tanım ararken anahtar kelimeyi dikkate almaz; bu nedenle aynı işlem grubundaki iki adım, biri "Verilen" diğeri "O zaman" olsa bile asla aynı metni içermeyebilir.

Adım Tanımı Örneği: Burada yukarıda kullanacağız Cucumber career.guru99.com adresini taramaya ilişkin özellik dosyası örneği. Aşağıda gösterildiği gibi "Ne zaman, O zaman, Verilen" gibi özellikleri kullanacağız. Cucumber Özellik Dosyası örnekleri.

Step 1:

Given (/^ I am on career.guru99.com$/) do

Browser.goto "http://career.guru99.com" -This will visit career.guru99 on browser

end

Step 2:
When (/^ click on career guide menu$/) do

Browser.text (:name, " career guide" ).click – This will click "career guide menu"

end

Step 3:

Then (/^ I should see career guide page$/) do

Browser.goto "http://career.guru99.com/category/career-guide/" - It will visit "career guide page"

end

⚠️ Dillerle ilgili bir not: Yukarıdaki tanımlar Ruby'ye aittir ve Ruby'nin kökeni de buradan gelmektedir. Cucumber başladı ve bu yüzden klasörün adı böyle. step_definitions ve dosyalar şu şekilde bitiyor: _steps.rbAynı özellik dosyası, yazılan adım tanımlarını da yönlendirir. Java, JavaSenaryo, Python veya Gherkin'de tek bir değişiklik yapmadan C# ile. Cucumber-JVM'de normal ifade bir metodun ek açıklamasına taşınır:

@Given("I am on career.guru99.com")
public void i_am_on_the_career_page() {
    driver.get("http://career.guru99.com");
}

Hangi dili seçerseniz seçin, uygulama detaylarının yer alması gereken tek yer adım tanımıdır. Keeping Özellik dosyasındaki seçiciler ve HTTP çağrıları, programlama bilmeyen birinin senaryoyu okumasını sağlayan şeydir. ilk Cucumber senaryo Bu kılavuz, bu eşleştirmeyi baştan sona kurar.

Özellik Dosyasında Senaryo Taslağı ve Örnekleri

Bir değeri değiştirmek için bir senaryoyu üç kez kopyalamak, özellik dosyasının okunamaz hale gelmesinin en yaygın yoludur. Senaryo Taslağı Kopyaları bir şablonla değiştirir ve bir Örnekler Tablo değerleri sağlar.

Parametreler açılı parantezler içine yazılır ve altlarındaki tabloda yer alan sütun başlıklarından biriyle eşleşmelidir. Cucumber Değerleri, eşleşen bir adım tanımı aramadan önce değiştirir, bu nedenle tanımların kendileri özel bir işlem gerektirmez.

Scenario Outline: Search the career guide
  Given I am on career.guru99.com
  When I search for "<keyword>"
  Then I should see the <section> section

  Examples:
    | keyword   | section       |
    | interview | Interview Tips|
    | resume    | Resume Guide  |

Anahatları kullanırken akılda tutulması gereken birkaç nokta vardır:

  • Anahat, her veri satırı için bir kez çalıştırılır. İlk satır başlık satırıdır ve asla yürütülmez.
  • Senaryo taslağının ardından en az bir Örnekler bölümü gelmelidir, aksi takdirde hiçbir şey çalışmaz.
  • Tablodaki boruların hizalanması zorunlu değildir, ancak hizalanmaları dosyanın okunabilirliğini korur.
  • Tabloyu küçük tutun. Otuz satırlık bir tablo genellikle verilerin daha büyük bir tabloya ait olduğunun işaretidir. veri odaklı test yerine.

Arka Plan, Ve, Ama ve Diğer Gherkin Anahtar Kelimeleri

Daha önce listelenen altı bileşenin ötesinde, Gherkin'in daha uzun özellik dosyalarının okunabilirliğini sağlayan birkaç anahtar kelimesi daha vardır.

  • Olayın Arka Planı — Özellikteki her senaryodan önce çalışan bir dizi "Verilen Adım" bloğu. Her senaryonun başında aynı ön koşulu yazma tekrarını ortadan kaldırır.
  • Ve hem de Fakat — Tekrarlanan Given, When veya Then ifadelerinin yerine kullanılan alternatifler. Daha iyi okunurlar ve aynı şekilde davranırlar; Cucumber Adım metnine göre her iki şekilde de eşleşir.
  • Kural — isteğe bağlı bir gruppingGherkin 6'da eklenen ve bir iş kuralını gösteren senaryoları toplayan bir özellik.
  • Belge Dizeleri — Üç çift tırnak işaretiyle sınırlandırılmış bir metin bloğu; tek satır yeterli olmadığında adım tanımına tek bir argüman olarak iletilir.
  • Veri Tabloları — Tek bir adıma bağlı, boru işaretiyle ayrılmış satırlar; bu satırlar, bir değer listesini o adıma iletmek için kullanılır.
  • Etiketler — Bir Özelliğin veya Senaryonun üstüne yerleştirilen ve "@" işaretiyle başlayan etiketler; böylece çalışma zamanında bir alt küme seçilebilir.
  • Yorumlar — bir satırın başına "#" işareti eklenir. Yorumlara yalnızca satırın başında izin verilir ve Gherkin'de blok yorum özelliği yoktur.

Özetle, paylaşılan kurulum içeren bir özellik dosyası şöyle görünür:

Feature: Career guide navigation

  Background:
    Given I am on career.guru99.com

  Scenario: Open the career guide menu
    Given I am signed in
    And my profile is complete
    When I click on career guide menu
    Then I should see career guide page
    But I should not see the admin panel

Sık Yapılan Özellik Dosyası Hataları ve Bunları Düzeltme Yöntemleri

köprü Cucumber Yeni başlayanlar tarafından bildirilen sorunlar, çerçeve hataları değildir. Bunlar, Gherkin kurallarının sessizce başarısız olan küçük ihlalleridir.

Hata Ne oluyor sabit
Given, When veya Then kelimelerinden sonra iki nokta üst üste. Bu satır bir adım olarak algılanmıyor ve atlanıyor. Sadece Feature ve Scenario kelimelerinden sonra iki nokta üst üste kullanın.
Aynı metne sahip iki adım Cucumber Anahtar kelime göz ardı edildiği için bunları kopya olarak değerlendirir. İki ifadenin farklı okunması için bir adımı yeniden yazın.
Özellik dosyası, özellikler dizininin dışında yer almaktadır. Dosya hiçbir zaman bulunamıyor ve hiçbir test çalıştırılmıyor. Her şeyi saklayın. .feature Özellikler klasörünün altındaki dosya
Tek bir senaryoda on beş adım Senaryo, dokümantasyon açısından işlevini yitiriyor. Üç ila beş adım hedefleyin ve ayrıntıları adım tanımlarına dahil edin.
Ardından veritabanındaki bir satır üzerinde doğrulama işlemi gerçekleştirir. Test başarılı olurken, kullanıcıya görünen davranış bozuluyor. Sayfa veya yanıt gibi gözlemlenebilir çıktılar üzerinde doğrulama yapın.
Örnek içermeyen Senaryo Taslağı tablosu Şablon hiçbir zaman çalıştırılmıyor. Taslağın hemen altına bir Örnekler bölümü ekleyin.

Bu sorunları proje paketi büyümeden önce düzeltmek, sonrasında düzeltmekten çok daha ucuzdur, çünkü bu arada yazılan her senaryo aynı yapıyı kopyalar. Özellik dosyaları düzgün çalışmaya başladıktan sonraki adım, projeyi birbirine bağlamaktır — bkz. Cucumber Kurulum adım adım rehber ve daha geniş kapsamlı otomasyon testi serisi.

SSS

Hayır. Bir .feature dosyası yalnızca bir Özellik tanımlayabilir, ancak istediğiniz kadar senaryo içerebilir. İkinci bir özelliğe ihtiyacınız varsa, ikinci bir dosya oluşturun; bu kısıtlama, bir paket büyüdükçe klasörün gezilebilir kalmasını sağlar.

Hayır, öyle değil. Gherkin yetmişten fazla konuşulan dile yerelleştirilmiştir. Dosyanın ilk satırına bir dil başlığı eklemek, anahtar kelimeleri değiştirir, böylece bir ekip, alan uzmanlarının gerçekten konuştuğu dilde senaryolar yazabilir.

Bu, adım tanımı olmayan her şeyi içerir: ortam kurulumu, tarayıcı yapılandırması, bir senaryodan önce veya sonra çalışan kancalar ve paylaşılan yardımcı kod. Keeping Bu, durdurma adımlarının tanım dosyalarının bir hata dosyasına dönüşmesini engeller.ping zemin.

Cucumber Bu komut, adımı başarısız olarak değil, tanımsız olarak rapor eder ve adım tanımlama dosyasına yapıştırabileceğiniz önerilen bir kod parçası yazdırır. Senaryo başarısız olarak işaretlenir, bu nedenle tanımsız bir adım asla sessizce başarı olarak sayılmaz.

Bir Özellik veya Senaryonun üzerine yerleştirilen bir etiket, çalıştırıcının klasör yapısından bağımsız olarak yürütme zamanında bir alt küme seçmesine olanak tanır. Ekipler genellikle bir "hızlı test" kümesi, bir "yavaş test" kümesi ve bir "devam eden iş" kümesi etiketler ve ardından yalnızca belirli bir işlem hattı aşamasının ihtiyaç duyduğu şeyleri çalıştırır.

Büyük dil modelleri, kabul kriteri kuyusundan Gherkin'i taslak haline getirir ve eşleşen tanım iskeletlerini daha da hızlı bir şekilde oluşturur. RevYinelenen adım metinleri ve uygulama ayrıntılarını sızdıran senaryolar için çıktıyı inceleyin; Gherkin tarafından oluşturulan kod genellikle bu noktalarda yanlış sonuç verir.

Çok doğru. Açık bir özellik dosyası verildiğinde, Copilot tanımlanmamış bir adım için normal ifadeyi ve yöntem imzasını çıkarır ve gövdeyi çevreleyen koddan doldurur. Bunu ilk taslak olarak değerlendirin; önerdiği iddiaların yine de insan kontrolüne ihtiyacı vardır.

Evet, tasarımın amacı da bu zaten. Tanımlar paylaşılan bir klasörde bulunur ve dosyaya göre değil, metne göre eşleştirilir; bu nedenle bir kez yazılan bir giriş adımı, ona ihtiyaç duyan her özellik tarafından yeniden kullanılır. Yeniden kullanım, yinelenen adım metninin yasaklanmasının nedenidir.

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