Test Driven Development (TDD) Eğitimi
Agile (çevik) yazılım geliştirme yaklaşımı ve onun kalbinde bulunan TDD tekniği, hızlı, verimli, değişime açık, müşteri odaklı yüksek kalitede yazılım geliştirmeyi teşvik etmekte, bu özellikleriyle de son yıllarda tüm dünyada kullanımları hızlı bir şekilde artmaktadır. Başarıları kanıtlanmış bu yaklaşımlar, şu anda tüm dünyada birçok şirket tarafından yaygın bir şekilde kullanılmaktadır.
NEDEN TDD?
TDD, kod yazılmadan önce test senaryolarının yazılması, bu senaryolara bağlı olarak kodun yazılması ve refactor edilmesi tekniğidir. TDD yaklaşımıyla, yazılması planlanan kodun test senaryoları, sürekli olarak koşturulabilir ve bu sayede programın daha az hata ile geliştirilmesi sağlanabilir. Ayrıca, waterfall yöntemlerdeki yazılım tasarımı problemi de, isteği karşılayacak sınıfların yazılması zorunluluğu ile büyük ölçüde aşılmaktadır. Bu da geliştirilen yazılımın kalitesini arttırmakla kalmaz, değişim yönetimini ve tutarlılığını maksimize ederek yazılım maliyetlerini düşünüldüğünden çok daha aşağıya çeker.
Bilindiği gibi birim testleri, tam olarak yazılan metotların işlevlerini düzgün bir şekilde yerine getirip getirmediğini test etmektedir. Ancak birim testleri düzgün bir şekilde yapabilmek göründüğü kadar kolay değildir. Öncelikle kullanılacak olan araçların belirlenmesi gerekmektedir. Önceleri kalite kontrol ekipleri tarafından kullanılan, çeşitli script dilleri ile konfigüre edilen büyük test motorlarının birim testleri için yeterince güçlü ve kolay kullanılabilir olmamaları TDD’nin oluşmasına ön ayak olmuştur. TDD bu noktada sadece birim testlerin yapılmasını kolaylaştırmakla kalmaz, kalite kontrol testleri, kullanıcı kabul testleri, yazılım tasarımı ve değişiklik yönetiminin en az maliyetle gerçekleştirilmesine olanak sağlar. Günümüzde geleneksel yöntemlerle geliştirilen çoğu proje, yukarıdaki problemlerden dolayı başarısız olmakta ya da kalitesiz ve demode olduklarından iş ihtiyaçlarını karşılayamamaktadırlar. Ancak, doğru ve bilinçli uygulanan TDD sayesinde, projelerin başarı oranlarının ciddi artışlar gösterdiği ispat edilmiştir. TDD’nin getirdiği iş yükü, sağladığı kazancın yanında önemsenmeyecek kadar küçüktür.
Kısaca TDD’nin getirileri şöyle sıralanabilir;
- Sadece ilgili birim testlerin yapılarak kodun güvenli hale getirilmesi.
- Kod tasarımından kaynaklanabilecek problemlerin ortadan kaldırılması.
- Testlerin bir bütün haline getirilerek, geriye dönük testlerin sürecin önemli bir parçası haline getirilmesi.
- Yeni eklenen kodlar, ya da değiştirilen kodlarda mevcut kodların işlevlerinin bozulmaması.
- Kodların güvenli ortamda nesneye yönelik tasarı mimarisine uygun üretilmesini azami ölçüde kolaylaştırması.
- Kodların dokümantasyon yerine, test senaryolarından daha kolay anlaşılabilir olması.
- Sağlanan güvenli ortam sayesinde, refactoring işlemlerinin güvenli hale getirilmesi.
- Bug oluşması ihtimalinin azaltılması.
- Her an live ortama geçilebilecek kodların çıkarılması.
- Gereksiz kod kalabalığının ortadan kaldırılması.
- Test ekibinin gerçek test işlemlerine odaklanmasının sağlanması.
- Proaktif çalışma sayesinde, sıkıcı bir geliştirme ortamı yerine, eğlenceli ve güvenli bir ortamda motivasyonu yüksek ekiplerin oluşturulabilmesi.
EĞİTİMİN İÇERİĞİ
1. Gün
- Agile Nedir?
- Uygulama: Yeni ürün geliştirme
- Birim Testleri
xUnit Kullanımı
- Demo: Birim testinin anatomisi
- Uygulama: Varolan kod için birim testlerinin yazılması
- TDD’ye genel bakış: TDD nedir, TDD’nin getirileri nelerdir, TDD nasıl uygulanır?
- Demo:.TDD ile ilk geliştirme
- Uygulama: TDD ile ürüne yeni özellikler
2. Gün
- Yazılım Tasarımı: Temel Prensipler
- Sürekli Gelişen Tasarım: Refactoring
- Uygulama: Bad Smells
- Uygulama: Verilen kodu düzenleme
- Birim Entegrasyonu
- Uygulama: Mock objelerin kullanımı
3. Gün
- Sürekli Gelişen Mimari
- Uygulama: Online Booking Sistemi Tasarımı
- Test Tasarımı
- Uygulama: Yazılmış Testlerin Düzenlenmesi
- Otomasyon ve Dokümantasyon
- Demo: Otomatik Gereksinim Dokümanı
KİMLER KATILMALI
Eğitim, TDD’yi uygulamayı düşünen, yazılım proje deneyimi olan, herhangi bir Object Oriented programlama dili ile yazılım geliştirebilen uzmanlara, yazılım mimarlarına, test uzmanlarına, proje yöneticilerine, bilgi işlem yöneticilerine ve akademisyenlere yöneliktir.
Katılımcıların eğitime gelmeden önce aşağıdaki kaynakları incelemeleri önerilmektedir:
Katılımcı Görüşleri
Herkeste Agile konusunda bir farkındalık oluştu. Yaptığımız işler başka türlü de yapılabiliyormuş anladık. Bu iş yapış şeklimizi, daha iyi, daha yalın nasıl yaparız diye sorgulamamıza yol açtı. Bir diğer kazanım projeleri gerçekleştirirken değer odaklı bakış açısının yerleşmeye başlaması oldu. ACM bize dönüşümün nasıl yapılabileceği konusunda yol gösterici oldu. Yazının devamını oku...
Teknoloji Genel Müdürü, Yapı Kredi
Katıldığım Agile Proje Yönetimi ve Scrum Eğitiminde Scrum hakkında daha önce sahip olduğum ön yargılarım vardı, bu eğitimle birlikte ön yargılarımdan kurtuldum. Takım olmanın önemini en iyi vurgulayan felsefe olduğunu düşünüyorum.
Yazılım Uzmanı, OBASE
Katıldığım Product Backlog Management Eğitiminde hatalı uygulanan bir çok süreci görmüş oldum. Backlog yönetiminde ve Scrum ekiplerinin yönetimindeki kritik noktalar hakkında fikir sahibi oldum.
Vice President, Fraud Management at BKM
"Bu eğitimle Scrum'ı küçük bir projede uygulayarak nasıl faydalar sağladığını birebir görme şansım oldu. Şimdi öğrendiklerimizi gerçek hayatta uygulama zamanı. Eğitmenimize etkili anlatımı, desteği ve sabrı için teşekkür ediyorum."
Proje Yöneticisi, Türk Telekom
"Daha önce farklı bir eğitim kurumu tarafından verilen Scrum eğitimine katılmıştım. Eğitimde anlatılanlar bana çok mantıklı gelmekle birlikte Scrum’ın gerçek hayatta nasıl uygulanabileceğine dair bilgi verilmemiş olması nedeniyle öğrendiklerimi uygulamaya geçirmekte çok zorlanmıştım. Bir süre sonra katıldığım ACM eğitimi sayesinde Scrum’ın bir projede nasıl uygulanması gerektiğini ve uygulamada sıklıkla yapılan hataları uçtan uca öğrendim. Şimdi tüm projelerimizde Scrum uygulamayı gönül rahatlığı ile yönetime önerebiliyorum."
Temel Bankacılık İş Geliştirme, Denizbank
"Eğitimi 1.5 yıl önce tüm IT ekibi ile birlikte aldık. Eğitim beklentilerimizi karşıladı, süreç değişimine başlamak için gerekli bilgiyi ve düşünce yapısını bize aktardı."
Proje Yöneticisi, Yemeksepeti