Davranış Odaklı Geliştirme Nedir?

Davranış Odaklı Geliştirme (DOG), Test Odaklı Geliştirme(TOG)’den evirilen bir yazılım geliştirme yaklaşımıdır. Ortak bir dilde yazılmış olmasıyla farklılık gösterir ki bu da teknik ve teknik olmayan ekipler ile paydaşlar arasındaki iletişimi geliştirir. Her iki geliştirme yaklaşımında da testler koddan önce yazılır; fakat Davranış Odaklı Geliştirme’de testler daha kullanıcı odaklı ve sistemin davranışına dayanmaktadır.

DOG ’yi Neden Seçmeliyiz?

TOG, iş sahibi, kullanılan Birim Test çerçevesine aşina olduğu ve teknik yetenekleri güçlü olduğu(her zaman böyle değildir) müddetçe tatmin edici bir şekilde çalışır. Bu şartlar altında DOG avantaja sahiptir çünkü testler paydaşların da bildiği, örneğin İngilizce gibi ortak bir dilde yazılır. Daha açık olması, minimum miktarda mesleki argo kullanarak etkili iletişime erişim sağlaması, DOG kullanmanın muhtemelen en büyük avantajıdır. Teknik ve teknik olmayan ekipler arasında yüksek verimlilikle çalışılabilmesi için iş birliğini mümkün kılar.

DOG ’nin Özellikleri

Yukarıda bahsedildiği gibi DOG testlerinin ortak bir dilde yazılıyor olması avantajı, uygulamanın nasıl davranacağına ilişkin ayrıntıların herkes tarafından kolayca anlaşılabilir olmasıdır. Örneğin, sistemin davranışını açıklamak için testler, ihtiyaçların gerçek zamanlı örnekleri kullanılarak yazılabilir.

DOG Uygulamaya Başlamadan Önce Gerekli Olanlar 

  • Gereksinimler somut örneklerle tanımlanabilen kullanıcı hikâyelerine dönüştürülmelidir.
  • Her örneğin yalnızca bir tane testinden ziyade uygun bir kullanıcı senaryosu olmalıdır.
  • rol-feature-reason’ matrisi ve ‘given-when-then’ formülü anlaşılmalıdır.
  • Bir sınıfın Birim Testi’ni yazmaktan ziyade bir sınıfın davranışının tanımlamalarını (specification) yazmanın gerekli olduğunun farkındalığı.

‘Given-When-Then’ Formülü DOG Örneği

Bir kullanıcı hikâyesi için DOG testleri örnek şablonu aşağıdaki gibidir:

Given → Verilen kesin bir senaryo

When → Ne zaman eylemin gerçekleşeceği

Then → O zaman sonuç bu olmalı

Pratik bir örnek şöyle olabilir:

Verilen kullanıcı forma henüz hiç veri girmedi

Ne zaman ‘gönder’ butonuna basıldığında

O zaman uygun doğrulama mesajı gösterilmeli

‘Role-Feature-Reason’ Matrisi

Bu şablon DOG’ de de kullanıcı hikâyesi yaratmada yardımcı olması için kullanılır. Şöyle tanımlanır:

  • Olarak
  • İstiyorum
  • Böylece

Böyle bir kullanıcı hikâyesine örnek şu verilebilir:Bir perakende müşteri olarak, elektronik olarak satın aldığım bir ürünü 14 gün içerisinde iade etmek istiyorum, böylece geri ödeme alabilirim.

DOG Araçları

Cucumber

DOG’yi destekleyen bir test çerçevesidir. Cucumber’da DOG tanımlamaları (specifications) Gherkin dili kullanılarak sade, basit bir İngilizce ile yazılır. Diğer bir deyişle Gherkin Cucumber’ın anladığı bir dildir. Gherkin, kullanılan uygulamanın davranışını yansıtır ve Cucumber bu davranışların testlerini oluşturur. Cucumber, Ruby ile geliştirilen, farklı teknolojiler üzerinde çalışabilen bir çerçevedir.

Specflow

Specflow, Ruby on Rails kullanılarak Cucumber’den evirilmiştir ve ağırlıklı olarak .Net projelerinde kullanılmaktadır. Specflow da Gherkin dilini kullanır.

DOG Kullanmanın Bazı Faydaları

Eğer DOG’yi uygulamayı planlıyorsanız, işte yazılım ekibinize birkaç faydası:

  1. Artık ‘test’ i değil; ‘davranış’ ı tanımlıyorsunuz.
  2. Geliştiriciler, testçiler ve ürün sahipleri arasında daha iyi bir iletişim.
  3. DOG basit bir dil kullandığından öğrenme eğrisi daha kısa olacaktır.
  4. Doğası gereği teknik olmadığı için daha geniş bir izleyici kitlesine erişebilir.
  5. Davranışsal yaklaşım ile daha geliştirme başlamadan önce kabul kriterleri tanımlanır.

DOG’nin Bazı Dezavantajları

En iyi geliştirme yaklaşımlarının bile görünmez tehlikeleri olabilir ve DOG de bir istisna değil. İşte o tehlikelerden bazıları:

  1. DOG’de çalışmak için önceden TOG deneyimi gereklidir.
  2. DOG, Waterfall yaklaşımı ile uyumlu değildir.
  3. Gereksinimler doğru belirtilmemişse DOG etkili olmayabilir.
  4. DOG kullanan testçilerin yeterli teknik beceriye sahip olmaları gerekir.

Özet

DOG, iş sahibinin gözünden bakarak kodu geliştirmemize, test etmemize ve düşünmemize olanak sağlar. Sadece ‘işlevsellikleri’ geliştirmekten ziyade ‘gerçek zamanlı örnekleri’ geliştiren bir anlayışa sahip olmamızı gerekir. Siz de deneyin!


Kaynak: https://blog.testlodge.com/what-is-bdd/

Çeviren: Ayşenur Yılmaz

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir