24 Aralık 2018

BDD (Behaviour Driven Development) Yaklaşımı

Test süreçlerinin daha efektif sürdürülmesi ve test kapsamının arttırılmasında test otomasyon kavramı ayrı bir önem taşımaktadır. Test otomasyonu için geliştirilmiş birçok yaklaşım bulunmaktadır.

Test süreçlerinin daha efektif sürdürülmesi ve test kapsamının arttırılmasında test otomasyon kavramı ayrı bir önem taşımaktadır. Test otomasyonu için geliştirilmiş birçok yaklaşım bulunmaktadır. Bu yaklaşımlardan biri olan BDD (Behaviour Driven Development) yenilikçi yönleriyle dikkat çekmektedir.

Geliştirilecek bir yazılım projesi için farklı iş gruplarından birçok paydaş bulunabilir. Yazılım geliştirme sürecinde bu paydaşların ortak bir dil kullanarak iş birliklerini geliştirmeleri, yazılım geliştirme sürecinin ve sürece dahil olan ekibin verimliliğini arttıracak, süreç sonunda ortaya çıkacak yazılım ürününün paydaşların beklentilerini büyük oranda karşılamasını sağlayacaktır.

Günümüzde geliştirilen çoğu yazılım projesinde test safhası geliştirme sürecinin son aşamasında gerçekleşmektedir. Hataların geç fark edilmesi maliyet ve müşteri memnuniyeti açısından olumsuz sonuç oluşturmaktadır.  Bu nedenle test, yazılım geliştirme sürecinin her aşamasında bulundurulduğu takdirde daha kaliteli, güvenilir ve tutarlı yazılım ürünlerini beraberinde getirecektir. Bu noktada BDD yaklaşımı bahsedilen bu sorunlara çözüm niteliğindedir. BDD yaklaşımı yazılım geliştirme süreçlerinde daha test odaklı ilerlenilmesini ve programlama dilinden bağımsız olarak projeye dahil olan herkes tarafından anlaşılabilecek ortak bir dil kullanılmasını sağlamaktadır.

BDD yaklaşımında gereksinimler bir müşteri davranışı olarak ele alınmaktadır. Gereksinimlerin düz bir metin biçiminde yazılabilmesi için Gherkin dili kullanılmaktadır. Gherkin dili bazı kilit kelimeler içermektedir. Bu dilde yazılan her davranış tanımı ‘Feature’ kelimesi ile başlamakta ve oluşturulacak testin tanımını içermektedir. Ardından ‘Scenario’ kelimesi kullanılarak ilgili teste ait test senaryo adı tanımlanır. ‘Given’, ‘when’, ‘then’, ‘but’, ‘and’ kelimeleri ile test senaryosu içeriği oluşturulur. ‘Given’ kelimesinin ardından senaryoya ait önkoşullar ve ‘When’ kelimesinin ardından senaryo sırasında yapılacak işlemler tanımlanır. ‘Then’ kelimesinin sonrasında ise senaryo işletildiğinde beklenen sonuç belirtilir. Ek olarak BDD yaklaşımında oluşturulacak senaryo için farklı dil seçeneği bulunmaktadır.

Geliştirilecek bir banka yazılımı için müşterinin talepleri doğrultusunda gereksinimlerin belirlendiğini farz edelim. Bu gereksinimlerden bir tanesi ise kullanıcının kendi banka hesabından para çekebilmesi durumudur. Bu örnekten yola çıkarak yukarıda bahsedilen BDD yapısına uygun olarak gereksinim Şekil.1’ de gösterildiği biçimde tanımlanır. BDD yaklaşımında oluşturulan senaryo *.feature uzantılı dosyada tutulur.

Screenshot_1.png

Şekil 1 Feature Dosyası

Oluşturulan senaryo koşulduğunda ‘Step Definition’ sınıfının içerisinde testi koşulacak olan metotlar Şekil.2’ de gösterildiği gibi otomatik olarak tanımlanır.

ss_2.png

Şekil 2 .cs Dosyası

Bu aşamadan sonra testi koşulacak olan metotların içeriği yazılım ekibi tarafından oluşturulur. Bu noktada BDD yaklaşımı işlevlerini eksiksiz yerine getirebilen metotların ortaya çıkmasını hedeflemektedir.

Son aşamada, içeriği tamamlanan metotlar için oluşturulan test senaryoları tekrar koşturulur ve metotların belirlenen yazılım gereksinimlerini sağlayıp sağlamadığı kontrol edilir. Bu durum beraberinde birim testlerdeki sonuçların başarı oranını arttıracak ve birim test sürecini kolaylaştıracaktır.

BDD yaklaşımı, proje geliştirme süreçlerinde yaşanan çeşitli problemlere çözüm niteliğinde bir yaklaşımdır. Alışılagelmiş yazılım geliştirme süreçlerinin aksine test odaklı yazılım geliştirmeyi olanaklı kılmaktadır. Test süreci projenin başlangıcından itibaren her safhada yer almaktadır. Aynı zamanda müşteri tarafından belirlenen gereksinimler ve talepler üzerinden test odaklı geliştirme yapılmasını sağlar. Ek olarak, projeye dahil olan farklı iş gruplarından paydaşlar için ortak bir dil oluşturarak, iletişim eksikliğinden kaynaklanan sorunlara çözüm getirir. Tüm bu durumlar değerlendirildiğinde BDD yaklaşımı müşteri memnuniyetini, güvenilir ve kaliteli yazılımı beraberinde getirmektedir.

Proven Test Hizmetleri ekipleri , Entegre Test Yönetimi Yaklaşımı, Bağımsız Test ve Dışkaynak Hizmetleri ile müşterilerinin yazılım ve bilişim alanındaki ürün ve hizmetlerinin kalitesini arttırmak için alternatif çözümler sağlamaktadır. BDD yaklaşımı ve test süreci konusunda detaylı bilgiye Proven Bilişim Teknolojileri ile iletişime geçerek ulaşabilirsiniz.

Ayça Özdemir