Gherkin ve Cucumber

Huseyin Berber
4 min readSep 18, 2021

--

Nedir bu Gherkin ve Cucumber?

Cucumber, Behavior-driven development (BDD) odaklı bir test aracıdır. Gherkin dilini kullanır. Hikaye anlatır gibi test yazabilirsiniz, bu sayede yazılım bilgisi olmayan kişiler bile kolaylıkla test oluşturabilir.

Cucumber Hakkında

Default olarak İngilizce olsa da bir çok dil ile yazılabiliyor. “Türkçe” dil desteği bile mevcut, harika bir olay. Çoğu yazılım dilinde test yazmayı destekliyor. Elinizde güzel bir analiz olduğunu ve bu analizin olay örgüsünü çıkardığınızı düşünün. Gherkin dilini kullanarak bu olay örgüsünü teste çevirebilirsiniz.

Gherkin Language Hakkında

Gherkin bir plain-text language’dir. Yazılımcı olmayan kişiler tarafından öğrenilebilecek şekilde tasarlanmıştır. İçerisinde bazı anahtar kelimeleri kullanarak kısa ve düzgün bir hikaye anlatımı sağlanmaya çalışılmıştır.

Gherkin Syntax

Feature: Testini yapacağımız konunun başlığıdır.

Rule (Gherkin 6 ve sonrası için): Feature için iş kuralı tanımlamamıza yarar. Bir veya daha fazla senaryoyu kapsayabilir.

Background: Tüm senaryolar için ortak adım olarak kullanılır. Eğer senaryolarınızda uymayan anlamlar varsa yeni bir “Background” yazıp diğer senaryoları onun altına yazabilirsiniz.

Example / Scenario: İki anahtar kelime de aynı anlama gelmektedir. Farklı senaryolar yazarken çok fazla adım yazabilirsiniz ama senaryo başı önerilen adım sayısı 3 – 5 arasındadır.

Given: Senaryo sahnesini tanımlamak için kullanılır. Zorunludur.

When: Bir olayı veya eylemi tanımlamak için kullanılır.

Then: Beklenen sonucu tanımlamak için kullanılır. Zorunludur.

And: Verilenleri yazarken alt alta “Given” anahtar kelimesi kullanabilirsiniz veya onun yerine “And” anahtar kelimesini kullanarak ilk “Given” tanımından sonra ekleme yapabilirsiniz. (*) ifadesini “And” yerine yazarak da kullanabilirsiniz.

But: Negatif durumlarla kullanılır.

Scenario Outline: Bu anahtar kelime Aynı senaryoyu farklı değerlerle kullanmaya yarar.

Scenario Outline Example
Scenario Outline

Bu anahtar kelimeleri anlamak için çok basit bir örnek yapalım. BDD yazımda daha kapsamlı örneklere değineceğim. Örnek için SpecFlow’u kullanıyorum. Visual Studio 2019'da yazacağım.

Extensions sekmesinden SpecFlow’u indirdikten sonra Visual Studio’yu tekrardan başlatmamız gerekiyor. Açıldıktan sonra test amaçlı bir proje açılacağını düşünürsek Arama çubuğuna SpecFlow yazıp seçiyoruz. İstediğiniz .net framework’ü seçebilirsiniz, ben .net 5.0'ı kullanacağım. Test Framework’ü olarak da SpecFlow’un verdiği “SpecFlow+ Runner” tercih ettim. Dilerseniz diğer Test Frameworklerinden birini kullanabilirsiniz.

İlk olarak Feature oluşturmaktan başlayacağız. Standart bir örnek olan Alışveriş sitesini kullanacağım.

İçerisinde bir adet “Background” ve iki adet “Scenario” mevcut. Altta görünen mor alanı özellikle yaptım. Step’i bulunmayan keyword’ler için içerik mor gözükmekte. Eğer Step eklediyseniz içerik beyaz renge dönüyor. Feature’u isterseniz birden fazla Step’e de ayırabilirsiniz. Hepsi aynı dosyanın içerisinde olacak diye bir kanun yok.

Feature

Background kısmında standart kullanıcı girişi yapma işlemleri var. İki senaryo içinde olması gereken bir işlem olarak düşünebiliriz.

İlk senaryoda iki farklı laptop markası için arama yapıyorum.

Given: User search for Lenovo Laptop

Given: User search for HP Laptop

şeklinde de yazabilirdim fakat ikisini birden istediğim için “And” kullandım. “And” yerine (*) karakteri de yazabilirim.

İki farklı senaryo sonucu isterler var ve bunları test edeceğiz.

Step oluşturma

Feature dosyasına sağ tıklayarak “Generate Step Definitions” butonuna bastıktan sonra dosya gezgininiz açılacaktır. Oradan steps dosyasını seçerek “Generate” butonuna tıklayınız. Step dosyası oluştuktan sonra methodların içlerini dolduracağız.

Step Dosyası

Step dosyasındaki methodlar içerisine çok basit bir çıktı yazdım.

Hooks

Bir adet testlerde kullanılacak hook tanımladım.

Sonra testimizi gerçekleştirmek için “Test” sekmesinden “Run All Test” butonuna tıklıyoruz ve Test penceresi açılıyor.

İlk Senaryomuzun Sonucu
İkinci Senaryo Sonucu

İki farklı Senaryo sonucumuz yukarıdaki görsellerde görülmektedir.

Hook ikisi içinde de yer almaktadır.

İki Senaryo da “Background” anahtar kelimesi ile tanımlanan adımlarla başlamaktadır ve kendi adımlarıyla devam etmektedir.

--

--