-----------------------------
Analistlerin en büyük problemlerinden biri de aynı dil üzerinde henüz bilimsel bir uzlaşının tam olarak yerleşmemiş olmasıdır. Bu anlamda yazılım ilke ve prensiplerine yetişmemiz ve ortak dil konusunda aynı şeyleri konuşuyor olmamız gereklidir.
-----------------------------
Bu bağlamda en sık karıştırılan, karışıtılmadıında da doğru tanımlanmayan iki kavram vardır. Acceptance Criteria ve Scenario (Senaryo).
-----------------------------
Burada ortak dil adına uluslararası kabul görmüş isimleri kullanmakta da fayda vardır. Böylece literatür tarama ve karşılıklı iletişimde de aynı dil üzerinden gidilir. Bu yüzden Acceptance Criteria kavramını türkçeleştirmedim. Yoksa bugün ingilizce bir kavramı çeviremeyecek kadar ingilizce bilmeyen analist olduğunu pek sanmıyorum. Bir kavramı çevirmek için ingilizcenin akıcı olması gerekmez.
-----------------------------
Önce kavramları kısaca tanımlayalım. Özetle formülize edecek olursak şöyle tanımlarız.
Acceptance Criteria "should be" der. Emreder. Requirement'in bir parçasıdır. Bir ihtiyacı karşılamak için en küçük kural parçasıdır. Adından da anlaşılacağı üzere bir ihtiyacı karşılamak için kabul kriterimizdir. AC tam olursa kabul edilir. AC tam olmazsa kabul edilmez ve testten kalır.
Senaryo Acceptance criteria'yı dinler ve emrin yerine gelip gelmediğini test eder. Test için birkaç farklı yol kullanabilir. Senaryo genellikle aşağıdaki şekilde tanımlanır.
Given: Senaryonun ön şartı
When: Senaryonun aksiyonu
Then: Senrayonun sonucu
Örnek verelim. Acceptance Criteria'yı AC olarak yazalım bundan sonra.
AC = Log out butonuna basıldığında kullanıcı sistemden çıkmalıdır.
AC gayet açık. buna 2 senaryo yazalım.
Senaryo1 = Müşteri login et. (given) Log out butonuna bas. (when) Müşteri hesaplarım menüsünü görmemelidir. (then)
Senaryo2 = Ekrandaki linki kopyala (given), müşteriyi logout et (given). Linki browser adress bara yapıştır (when). Müşteri login ekranı çıkmalıdır. (Then)
Bu örneği incelediğimizde bir AC için birden fazla senaryo ihtiyacı olabileceğini görüyoruz. Bu da şöyle bir basit kural karşımıza çıkarır. Senaryolar AC'den türer ve her zaman senaryo sayısı AC'den büyük ya da eşittir.
Örnekteki diğer bir özellik ise bir senaryo içerisinde given, when ve then kalıbı her zaman kullanılabilir. Ve her biri birden fazla sayıda olabilir. Senaryo2'de 1 given 2 when ve 1 then vardır. Bu sayılar da ihtiyaca göre farklılık gösterir.
Rol ve Sorumluluk açısından da iki işin sahibi farklıdır. AC'ler Story'nin parçalarıdır. AC'ler Analist veya Product Owner tarafından belirlenir. Senaryo ise Test Uzmanı (QA) tarafından belirlenir ve her test adımında kullanılabilir. (Fonksiyonel Test, UAT veya Sign-off gibi testler kastediliyor)
Ve önemli bir NOT: Test uzmanının olmadığı yerde Analist Test uzmanı görevini yapar. Yapmalı mı? Elbette ki hayır. Senaryo çıkarmak ve test için gerekli sabır ve çok yönlülük apayrı bir yetkinlik gerektirir ki 1 analist ve 3 yazılımcının olduğu her yerde 1 Test uzmanına ihtiyaç vardır.