Cucumber ile Behaviour Driven Development (BDD)

Merhaba arkadaşlar, Mobilhanem.com üzerinde Selenium ile Test Otomasyonu Geliştirme serimizin on birinci dersinde Cucumber ile Behaviour Driven Development (BDD) konusuna değineceğim. Bir önceki dersimizde Test Otomasyon Süreçlerinde Loglama konusunu ele almıştık. Bu dersimizde Cucumber , Behaviour Driven Development (BDD) ve Test Driven Development (TDD)  ile ilgili konuları ele alacağız.

Cucumber ile Behaviour Driven Development (BDD)

BEHAVIOUR DRIVEN DEVELOPMENT (BDD) NEDİR ?

Behaviour Driven Development (BDD), 2009 yılında Dan North tarafından ortaya çıkmıştır. Behaviour Driven Development’ın (BDD) asıl çıkış amacı Test Driven Development’da (TDD) yer alan karmaşıklığı azalmaktır. Behaviour Driven Development’ın (BDD)  Test Driver Development’dan (TDD) farkı, bir sistemin davranışlarını günlük konuşma dili şeklinde yazılmasıdır. Buradaki yaklaşım yazılım geliştirme süreçlerinin test odaklı yürütülmesini sağlayan bir yaklaşımdır. Behaviour Driven Development (BDD), Test Driven Development (TDD) gibi geliştirme yapılmadan önce test kodlarının önceden yazılması sonrasında ise buna bağlı olarak proje geliştirme kodlarının yazılma prensibidir.

 

CUCUMBER NEDİR ?

Cucumber ile Behaviour Driven Development (BDD) - İşleyiş
Cucumber ile Behaviour Driven Development (BDD) – İşleyiş

 

Cucumber, Behaviour Driven Development (BDD) yaklaşımı için kullanılabilen açık kaynak kodlu bir araçtır. Cucumber, Behaviour Driven Development (BDD) süreçlerini temel alır. Test yazımı oldukça basittir hatta Cucumber’in en basit tanımı da düz metin olarak yazılan test senaryolarını otomatize testlere dönüştüren bir araç olarak geçmektedir. Cucumber bu basit söz dizimini kullanabilmemiz için Gherkin dilini kullanmaktadır. Bu dilin en büyük avantajı herkes tarafından yazılan senaryoların anlaşılabilir olmasıdır.

Uygulama kullanımı yukarıda ki resimde de anlaşılacağı üzerine iki kısımdan oluşmaktadır. Bunlar; Features ve Glue Code’dır. Farklı bir programlama diline de kolayca dönüştürülebilmektedir. Ayrıca Cucumber Terminolojisinde aşağıda yer alan başlıklara da yer verilmektedir.

Feature ,Scenario ,Given-When-Then ,And . Burada yer alan başlıkları daha iyi anlamak için şöyle düşünebiliriz. Feature kısmında  bir davranış tanımlıyoruz (örn : uygulama için ana sayfayı görüntüle, sayfanın yüklendiğine kullanıcı olarak emin ol,  ana sayfayı görmek istiyorum vb.) . Scenario kısmında, feature kısmında yer alan isterimiz için uygun olan senaryomuzu oluşturuyoruz. Aşağıda yer alan görseli bu durum için inceleyebilirsiniz.

Cucumber ile Behaviour Driven Development (BDD) - Örnek Senaryo
Cucumber ile Behaviour Driven Development (BDD) – Örnek Senaryo

Gherkin Nedir ?

Yukarıda yer alan görselde aslında bir proje için yazılmış olan davranışları görüyoruz. Proje de bu davranışların yer aldığı .feature uzantılı bir Gherkin dosyası yer almaktadır. Bu dosyada ilgili özelliğin nasıl davranacağı ile ilgili tanımlamalar mevcuttur. Given, ön koşul durumunu tanımlar, When olayı Then ise when anahtar kelimesinde yer alan olayı  sonuçlandırır.

Buradaki konuları anladıktan sonra pekiştirmek için bir örnek yapalım. Öncellikle Intellij Ide IDE’sini kullanarak bir maven projesi oluşturalım. Oluşturmuş olduğumuz projenin pom.xml sayfasına aşağıda yer alan kodları ekleyelim.

Ardından test klasörüne sağ tıklayıp 3 tane package oluşturacağız. Bunlar ; Features, Runner ve TestCases’dir.

Cucumber ile Behaviour Driven Development (BDD) - Proje Package Oluşturulması
Cucumber ile Behaviour Driven Development (BDD) – Proje Package Oluşturulması

 

Features package’ne sağ tıklayarak New->File diyoruz ve isim olarak Register.feature yazıyoruz. Sonrasında ise bizim ortamımızda cucumber ve gherkin pluginleri olmadığı için sayfada bir uyarı verecektir ve bu uyarıda yer alan install plugins seçeneğine tıklayarak ilgili pluginleri indirebiliriz.

Cucumber ile Behaviour Driven Development (BDD) - Eklenti kurulumları
Cucumber ile Behaviour Driven Development (BDD) – Eklenti kurulumları

 

İndirme tamamlandıktan sonra Login.feature dosyamıza ilgili test senaryomuzu yazıyoruz. Burada ki örnekte register işlemi için örnek bir test senaryosu oluşturulmuştur.

TestCases package’mıza sağ tıklayarak LoginTest sınıfı oluşturuyoruz. Oluşturduğumuz bu sınıfta eski örneklerimizde yapmış olduğumuz Selenium WebDriver ile ilgili tanımlamalarımızı yapıyoruz. Bu tanımlamaları yaptıktan sonra Register.feature’da yer alan  Given-When-And-Then tanımlarımızı senaryomuza bağlı olarak oluşturmamız gerekmektedir. Burada dikkat edilmesi gereken durum, tanımlamış olduğumuz senaryoları aynı şekilde burada da tanımlamamız gerekmektedir aksi taktirde senaryolar uyuşmadığı için hata alırız.

Bu sınıfta yapmamız gereken işlemler bittikten sonra testimizi çalıştırma aşamasına geçmemiz gerekmektedir. Bunun için Runner package’nı oluşturmuştuk. Bu package içerisine TestRunner isimli bir sınıf oluşturalım.

Yukarıda gördüğünüz gibi çalıştırılacak olan feature’n pathini ve glue yani test ile ilgili kodlamamızın bulunduğu package ismini veriyoruz. Çalıştırmak için TestRunner.java ‘da sağ tıklayıp Run diyebiliriz. Sonuç ekranında test senaryomuzda pass ve fail ile ilgili sonuçları görebiliriz.

Cucumber ile Behaviour Driven Development (BDD) - Test Sonucu
Cucumber ile Behaviour Driven Development (BDD) – Test Sonucu

 

Mobilhanem.com da Selenium ile Test Otomasyonu Geliştirme serisinin bu dersinde  dersimizin sonuna geldik. Eksik ya da yanlış gördüğünüz veya anlamadığınız yerler için çekinmeden ulaşabilirsiniz.

Tüm Selenium derslerimiz için tıklayınız.

10

Sevde Aybüke Kaleli

Fırat Üniversitesi-Yazılım Mühendisliği (2015-2019)

Yorum Yaz

Haftalık Bülten

Mobilhanem'de yayınlanan dersleri haftalık mail almak ister misiniz?