Agile ile Alışılagelmişi Bırakmak
Günümüz dünyasını tanımlayan en önemli kavramlar değişim hızı, karmaşıklık ve geleceğe dair belirsizlik olarak öne çıkmaktadır. Dolayısıyla kuruluşların başarısını belirleyen temel faktörler; değişime sürekli uyum sağlamak, karmaşıklığı yalın bir şekilde çözümlemek ve belirsizliği en aza indirgemeye çalışmaktır [1].
Ekip halinde geliştirilen yazılımlardaki iletişim kopuklukları belirli bir standart sağlayamama gibi durumları ortaya çıkarmaktadır. Bir yazılım metodolojisi hızlı olmayı ve hızlı olurken dikkat edilmesi gerekenleri belirler. Proje süresinin kısaltılmasına, iletişimin daha hızlı ve kolay bir şekilde sağlanmasına, dokümantasyonun yapılmasına ve bunlar sağlanırken testlerin de etkili ve planlı bir şekilde yapılmasına olanak sağlar.
Birçok yaklaşım belirlenmiş ve yazılım geliştirme faaliyetlerinin organizasyonu amacıyla kullanılmıştır. Aşırı kuralcı klasik yazılım süreç modellerine tepki olarak Agile Manifestosu, yazılım geliştirme sürecini hızlandırmak, daha etkin kullanmak ve gerektiğinde dokümante etmek amacıyla ortaya çıkmıştır. Agile Manifestosu aşağıdaki gibi yayınlamış olup sağ taraftaki maddelerin değeri kabul edilmekle birlikte, sol taraftaki maddeler daha değerli bulunmaktadır.
1. Bireyler ve etkileşimi, süreç ve araca tercih etmek.
2. Çalışan bir yazılımı, detaylı belgelendirmeye tercih etmek.
3. Müşteri ile iş birliğini, sözleşmedeki kesin kurallara tercih etmek.
4. Değişikliklere uyum sağlayabilmeyi, belirli bir plana tercih etmek.
14.sü Mayıs 2020’de yayınlanan, dünyanın en uzun süreli aglie(çeviklik) raporu olan “State of Agile Report” bugüne kadar tüm dünyadan binlerce profesyonelin yanıtladığı ankete göre agile yaklaşımın kuruluşlarda yarattığı en önemli kazanımlar aşağıdaki gibi sıralanmıştır [2].
Tekrarlanan yazılım geliştirme metotlarının bünyesinde, test odaklı yazılım geliştirme mantığı
bulunmaktadır. Proje başından başlayarak tüm test süreçlerinin yazılım geliştirme süreci içerisinde beraber yürütülmesi sayesinde, hatalar büyümeden fark edilerek hızlı bir şekilde düzeltilebilmektedir.
Gereksinimlerdeki değişiklikler ve proje hacimleri büyüdükçe hata oranları da artmaktadır. Ancak çevik metodolojiler, projeleri parçalara bölerek ve her bir parçayı kendi gelişimi içerisinde de test ederek hata oranlarının düşürülmesini sağlamaktadır [3].
Agile metodolojisi, projenin yazılım geliştirme yaşam döngüsü boyunca sürekli bir tekrar geliştirme ve test yinelemesine yardımcı olan bir uygulamadır. Agile bir modelde, her sürüm için test planı yazılır ve güncellenir. Agile test planı, test verisi gereksinimleri, altyapı, test ortamları ve test sonuçları gibi yinelemede yapılan test türlerini içerir. Bu metodolojide testler geliştirme kadar önemlidir ve ürün sürekli testlere tabi tutulur [4]. Yazılım Test Yaşam Döngüsü genel olarak aşağıdaki aşamalardan oluşur;
Agile Test ile birlikte yazılım testi sadece test edicilerin sorumluluğu olmaktan çıkmaktadır ve kalite artık tüm takımın sorumluluğu olmaktadır. Genel amaç hata bulmaktan çok hatayı önlemeye çalışmaktır. Böylece test süreçleri daha proaktif ve sistematik hale gelmektedir. Agile Test, Agile Prensiplerini referans almaktadır. Müşteri ihtiyaçları ve önceliklerine odaklanmıştır.
Test, projenin başlangıcında başlar ve test ile geliştirme arasında sürekli bir entegrasyon vardır [5]. Agile Testin diğer test yaklaşımlarından farkları aşağıdaki gibidir;
· Test, proje başlangıcında başlar, projenin ortasında ya da proje devam ederken hatalar düzeltilebilir.
· Agile testler için çok daha az belge gereklidir.
· Her yinelemenin kendi test aşaması vardır. Regresyon testleri her yeni fonksiyon veya mantık bırakıldığında çalıştırılabilir.
· Ürünün müşteriye verilebilir özellikleri, bir yinelemenin sonunda müşteriye teslim edilir.
· Test ediciler ve geliştiriciler Agile Testte yakından çalışırlar.
· Kullanıcı kabulü her sprint sonunda yapılır.
· Test edicilerin gereksinimleri ve planlamayı analiz etmek için geliştiricilerle iletişim kurmaları gerekir.
Test ediciler, diğer birçok metodolojide de olması gerektiği gibi; Agile projelerde projenin başından sonuna kadar süreç içinde bulunarak, analiz sürecinden itibaren işleyişi takip etme imkanına sahiptir. Böylece bazı hataları daha erken tespit edebilir, hatta bir kısmının oluşumunu dahi engelleyebilecektir. Bu işleyişte ürünün genel konsepti hakkında bilgi sahibi olacak test ediciler; ürünün tamam olması için müşteri gözü ile değerlendirme yapabilecek ve kullanıcı hikayelerinde bile bulunmayan koşulları göz önünde bulundurabilecektir [6].
Agile Test’in belki en değerli özelliği ise test sürecinde ürün sahibi ile birebir ilişki kurma imkanının olmasıdır. Analizden itibaren süreçte yer alan test ediciler, eksiklik ya da muğlaklıklar ile ilgili durumları yüzyüze iletme imkanına sahiptir. Agile proje yönetimi geri besleme özelliği taşıdığından doğru sonuca ulaşmada önemli bir yöntemdir [7].
“Süreçleri geliştirmek ve kaliteden sorumlu olmak hepimizin görevi.”
Kaynakça
[1] https://www.acmagile.com/agile-nedir/
[2] https://stateofagile.com/#
[3] http://www.aspmvcnet.com/tr/m/yazilim-muhendisligi/cevik-yazilim-muhendisligiagile.html
[4] https://www.linkedin.com/pulse/agile-testing
[5] https://medium.com/@burcusahin2322/agile-testing-nedir-4f3f035ee320
[6] https://keytorc.com/blog/agile-cevik-metod-ve-agile-test-yontemi/
[7] https://www.udemy.com/course/agile-yazilim-gelistirme/
Gizem AKDAĞ