Agile Test

Agile Test Misyonu
- Hataları veya açıkları bulmak, gereksinimlerin sağlandığına emin olmak gibi amaçların yerine;
- Ekibimizin başarıya ulaşmasına nasıl katkı sağlayabileceğimizi ya da ortaya çıkabilecek hataları ilk aşamada nasıl ortadan kaldırabileceğimizi düşünmeliyiz.
- Amacımızın sadece kodlamak ve hataları bulup düzeltmek olmadığını;
- Test edilebilir kod yazmanın veya oluşturulan yazılımın başarılı bir sonuca ulaşmasını sağlamanın sürece daha çok faydalı olacağının farkında olmamız gerekir.
Agile Test Mekanizması Nasıl İşler?
Test Piramidi
Agile Test’in işleyişini anlamak için yazılım testlerini farklı ayrıntı düzeyine sahip birimler halinde gruplandırmamızı sağlayan bir metafor olan “Test Piramidi” ile başlamak en doğru seçenek olacaktır. Bu piramidin altına indikçe daha çok test karşımıza çıktığı gibi, pirmidin üstüne çıktıkça da test sayıları azalmaktadır. Aynı zamanda testlerin kapsamı arttıkça maliyeti de doğru orantılı artmaktadır.
1. Birim(Unit) Testleri
- Birim veya bileşen testi en temel test türüdür. Birim testi, yazılımın her bir bileşenini(modüller, programlar, sınıflar, nesneler vb.) izole ederek işleyişini kontrol eder. Ayrıca her bir bileşenin gereksinimleri yerine getirme ve işlevsellik açısından doğru olduğunu kanıtlamak için yapılır.
- Birim test, genellikle yazılım geliştiriciler tarafından bir similatör veya geliştirme ortamı yardımıyla yapılır. Ortaya çıkan hatalar kayıt altına alınmadan anında düzeltilir. Bu tür testler yazılım geliştirme sürecinin en erken aşamalarında yapılmalı ve yazılım, test ekibine bu şekilde teslim edilmelidir.
2. Entegrasyon(Integration) Testleri
- Entegrasyon birleştirme demektir. Entegrasyon testi bir yazılımın bileşenlerinin birbirine entegre edilmesi sırasında yapılabileceği gibi iki farklı yazılımın birbirine entegre edilmesi sırasında da yapılabilir. Bu yüzden entegrasyon testi, birim entegrasyon testi ve sistem entegrasyon testi olarak farklı test seviyelerinde yapılabilir.
- Yazılım geliştirme uzmanlarının birim test sırasında ayrı ayrı test ettikleri bileşenler birbirine entegre edildikleri zaman hataya sebep olabilirler. Entegrasyon testi, sistemin bu farklı bileşenlerinin(birimlerinin) birlikte doğru çalışıp çalışmadıklarını test etmeyi amaçlar.
3. Sistem(System) Testleri
- Sistem testi, eksiksiz ve entegre bir sistemde gerçekleştirilir. Gereksinimlere göre sistemin uygunluğunun kontrol edilmesini sağlar. Bileşenlerin genel etkileşimini test eder. Yük, performans, güvenilirlik ve güvenlik testlerini içerir.
- Sistem testi, sistemin şartnameye uygun olduğunu doğrulamak için yapılan son testtir. Bu yüzden test için hem fonksiyonel hem de fonksiyonel olmayan gereksinimler değerlendirir. Fonksiyonel gereksinimlerle ilgili sistem testi, test edilecek sistem için en uygun kara kutu (black box) teknikleri kullanılarak başlar. Ardından, beyaz kutu (white box) tekniklerine geçilerek kara kutu testlerinin yakalayamadığı hatalar yakalanabilir.
4. Kabul(Acceptance) Testleri
- Kabul testinin amacı, sisteme, sistemin parçalarına veya sistemin fonksiyonel olmayan gereksinimlerine karşı güven oluşturmaktır. Kabul testinde ana odak hataları bulmak değildir, sistemin canlıya hazır olduğunu göstermektir. Ancak ana odak hata bulmak olmasa bile yazım hatalarından uygulamada büyük bir soruna neden olabilecek hatalara kadar bir çok hata açığa çıkabilir.
- Kabul testleri genel olarak kullanıcı veya müşteri tarafından yapılır. Ancak, diğer hissedarlar da bu sürece dahil olabilir.
Test Süreçleri
1. TDD(Test-Driven Development)
- Yazılım gereksinimlerinin tam olarak geliştirilmeden önce test senaryolarına dönüşmesine dayanan ve yazılımı tüm test senaryolarına karşı tekrar tekrar test ederek eklenen tüm geliştirmeleri takip eden geliştirme sürecidir.
- Birim testleri yazarak yapılır, kod odaklıdır.
- Önce test yazmak olası hatalar yapmamızı engeller.
- Zaman ve maliyet azalır.
- “Tasarla”, “Testi Yaz”, “Geliştir” ve “Test et” adımları ile devam eder.
2. BDD(Behaviour-Driven Development)
- TDD’nin türevi sayılabilir.
- Burada testler, sistem davranışına dayanır.
- TDD’den farklı olarak sistemin davranışları “Ver”, “Olduğu zaman”, “Sonra” gibi günlük konuşma dili şeklinde yazılır.
3. ATDD(Acceptance Test Driven Development)
- Kullanıcı hikayelerinin oluşturulması sırasında kabul kriterlerini ve testleri tanımlar.
- Tüm ekibin iş birliği yapması gerektiği bir tekniktir.
Test Çeyrekleri(Testing Quandrant)
1. Çeyrek(Q1)
- Kod kalitesi, bu çeyrekteki ana odak noktasıdır ve teknoloji odaklı ve ekibi desteklemek için uygulanan test durumlarından oluşur.
- Birim Testleri – Unit Tests
- Bileşen Testleri – Component Tests
2. Çeyrek(Q2)
- İş odaklı olan ve ekibi desteklemek için uygulanan test senaryolarını içerir. Bu çeyrek gereksinimlere odaklanır.
- Olası senaryoların ve iş akışlarının örneklerini test etme
- Prototipler gibi Kullanıcı deneyiminin test edilmesi
- Çift testi
3. Çeyrek(Q3)
- Bu çeyrek, birinci ve ikinci çeyreklere geri bildirim sağlar. Test senaryoları, otomasyon testi yapmak için temel olarak kullanılabilir. Bu çeyrekte, ürüne güven oluşturan birçok yineleme incelemesi yapılır. Bu çeyrekte yapılan test türü
- Kullanılabilirlik Testi
- Keşif Testi
- Testi müşterilerle eşleştirin
- İşbirliğine dayalı test
- Kullanıcı kabul testi
4. Çeyrek(Q4)
- Bu çeyrek, performans, güvenlik, kararlılık vb. gibi işlevsel olmayan gereksinimlere odaklanır. Bu çeyreğin yardımıyla, uygulama işlevsel olmayan nitelikleri ve beklenen değeri sağlamak için yapılır.
- Stres ve performans testi gibi işlevsel olmayan testler
- Kimlik doğrulama ve bilgisayar korsanlığı ile ilgili güvenlik testi
- Altyapı testi
- Veri taşıma testi
- Ölçeklenebilirlik testi
- Yük testi
Peki Neden Agile Test?
Waterfall yöntemi ile,
- Ürün geliştirmenin sonunda teslim edilir. Herhangi bir değişiklik için projeye baştan başlanır.
- Uygulanan testlerin karmaşıklığından dolayı Agile’a oranla daha fazla dökümantasyon gerektirir.
- Test sadece geliştirme aşaması tamamlandıktan sonra başlar.
- Uygulamayı geliştiren ekip ve geliştirilen uygulamayı test eden ekip farklıdır ve ayrı ayrı çalışırlar.
- Developerlar gereksinimleri analiz etme, planlama gibi süreçlere dahil değildirler.
Agile testing ile birlikte;
- Kalite, tüm takımın sorumluluğu haline gelir.
- Hata bulmaktan çok hatayı önlemeye çalışılır.
- Agile prensipleri referans alınır.
- Müşteri ihtiyaçları ve önceliklerine odaklanılır.
- Test süreci projenin geliştirilme anı ile aynı anda başlar.
- Geliştirilen yazılımın tamamlanan parçaları erken ve kısa aralıklarla teslim edilir.
Bu aşamada Agile Test’in süreçteki konumunu ve Waterfall-Agile farkını net bir şekilde görebiliyoruz.
Dolayısıyla;
Agile Tester değişikliklere adapte olabilen, hem teknik hem de iş birimleri ile son derece başarılı iletişim kurabilen, yazılım testinin temellerini ve özünü oldukça iyi bilen, süreçleri ve yaptığı işleri sadeleştirebilen, kompleks ya da karışık sistemleri analiz edebilen, riskleri koklama ve önleme becerilerine sahip, hataları en erken safada bulabilen, tüm süreçler boyunca sorduğu sorular ve vermiş olduğu geri bildirimlerle kalitenin yükselmesine katkıda bululan, müşterinin bir nevi temsilcisi olup, müşteri bakış açısı ile ürüne değer katan, teknik yetkinlikleri ile de süreçlerdeki üretkenliği maksimum seviyeye taşıyan bir test profesyonelidir.
Kaynaklar