|
Yazar Hayrettin MAVİŞ
|
|
Cumartesi, 24 Kasım 2007 |
 Test Güdümlü Geliştirme (Test Driven Development - TGG), bağımlılıkların azaltılmasını zorlamaya ve yazılımın tasarımının gerçekleştirilmesine yarayan otomatikleştirilmiş birim testlerinin kullanıldığı gelişmiş bir tekniktir. Teknik üzerinde, “çevik (agile) geliştirme” yöntemleri kullanan geliştiriciler yoğun bir şekilde durmaktadır. Genel olarak test yöntemleri başta ve sonda olmak üzere iki türlüdür. Testin sonda yapılması klasik yöntemdir. Kod yazılır ve sonunda testler (unit test) yapılır. TGG’nin temelini ise testi başa almak oluşturur. Kod yazılmadan testler yazılır, test geçilirse kodlamaya girilir. Burada önemli olan “Testi Geçebilecek Kadar Kod Yazma” durumudur ve eşli programlamada belirtilen esaslarla uyum içinde çalışılır. Genel olarak bir TGG döngüsü şu şekilde verilebilir: • Çalışılan özellik, hikâye vs. için gereksinimler anlaşılır (Use Case diyagramları ve Kullanıcı Hikâyeleri/Kartları -User Stories- ). • Test yazılmaya başlanır, tüm testler çalıştırılır ve varsa hatalar görülür. Bu yeni test, “öngörülen” bir sebepten ötürü de başarısız olabilir. Burada testin kendisini test edilir ve negatif test olarak adlandırılır. Bir özelliğin başarılı olması beklenen kısmı olabileceği gibi başarısız olması beklenen kısımları da bulunur ve bu başarısız olması beklenen kısımlar da negatif test ile test edilir. “Çalıştığından emin ol, kırılması (break) için bir değişiklik yap ve kırılsın” şeklinde güzel de bir özeti vardır. :) Bu aşama çalıştırılan test programında (Junit, Nunit, VSTS Test Project vs) kırmızı renkle sonuçlanır. (Yani test hataları vardır dolayısıyla bu renkle gösterilir) • Testi geçebilecek kadar kod yazılır. Tabii burada yazılan kod mükemmel veya iyi tasarlanmış olmak zorunda değildir. Önemli olan testi geçebilmesidir. Daha ileri ve test edilmemiş değişikliklere bakılmaması gerekir. (YAGNI: You Ain’t Gonna Need It) terimi gerekli olmayan işleri veto etmede kullanılır. Eğer yeni bir işlevsellik gerekiyorsa o zaman bir başka teste gereksinim var demektir. Bu aşama çalıştırılan test programında (Junit, Nunit, VSTS Test Project vs) yeşil renkle sonuçlanır • Test geçilmişse, her şeyin çalıştığından emin olmak için bu noktaya kadar geçen tüm testler çalıştırılabilir. • Kod yeniden düzenlenir (Refactoring). Tüm testlerden hala geçildiğinden emin olmak kaydıyla; tasarımı geliştirmek için bu zamana kadar geçen tüm testlerdeki kodlarda bulunan tekrarlar kaldırılır, tüm projeyi geliştirecek tasarım değişiklikleri yapılır. Her yeniden düzenleme sonrasında hala geçtiklerinden emin olmak için tüm testle yeniden çalıştırılır. • Döngü bu şekilde devam ettirilir.
TGG’nin Sağladığı Yararlar • Yüksek Kalitede Kod (Yazılım Ürünü) Oluşur. • Yazılımın Doğru Çalıştığının Kanıtıdır. • Öğrenmek için çok iyi bir yöntemdir. • Refactoring yardımıyla tasarımı parçalanmadan geliştirme imkânı sunar. • Birim testleri, örnek kod gibidir. (Örneğin kullanımını bilmediğiniz bir sınıf var ve kodun yazarı işten ayrılmış. Kendisine nasıl çalıştığını soramayacağımızdan birim testleri örnek kod gibi kullanılabilir.) • Kodlamadan önce plan yapmayı sağlar. İlk soracağınız soru “Hangi kodu yazacağım?” olmamalı, “Bu problemi çözdüğümü nasıl bileceğim?” olmalıdır. • Büyük Problemleri Küçük Parçalara Böler. • Her Test Döngü Sonucu Geribildirimlere İmkân Tanır.
TGG’nin Engelleri • Girişilen işte zamanla isteklerin değişmesi testlerin gözden geçirilmesi veya yeniden yazılmasını gerektirebilir. • Proje zamanının tutturulamaması riski nispeten fazladır.
Görüldüğü gibi XP pratiklerinden biri olan Test Güdümlü Programlama hakkında bilgi vermeye çalıştım. Önümüzdeki yazılarda bu pratikler hakkında yazmaya devam edeceğim. Saygılar...
Referanslar Extreme Programming Explained, Erich Gamma. Addison Wesley Teach Yourself Extreme Programming In 24 Hours, Stewart Baird. SAMS http://en.wikipedia.org/wiki/Extreme_Programming http://www.extremeprogramming.org/rules/unittests.html  İletişim :
Bu mail adresi spam botlara karşı korumalıdır, görebilmek için Javascript açık olmalıdır
1. test case
Yazan:
Bu mail adresi spam botlara karşı korumalıdır, görebilmek için Javascript açık olmalıdır
, 01-07-2008 07:46 merhabalar; oncelıkle hıcbır yazılımcıya testı gecebılecek kadar kod yazdırılımaz cunku yazılımcı ben yazıyım sen test et der buda uygunlugu bozar bunu engellemke ıcın yapılıcak sey standartlaştırılmıs durumda yapılmıyor bunun ıcın bısey arıyorum lutfenn kolay gelsın
|
2. standart-sektör
Yazan:
Bu mail adresi spam botlara karşı korumalıdır, görebilmek için Javascript açık olmalıdır
, 08-09-2008 00:07 Bu yazıda değil ama Eşli Programlama ile alakalı yazıda sektörel anlamda bu pratiklerin biraz göz korkuttuğunu belirtmiştim. Ancak burada şöyle bir işleyiş var. Yazdığınız kodu teste gönderip oradan hataların dönmesini beklemiyorsunuz. Bizzat testi geçmeye çalışıyorsunuz. Daha sonra refactoring ile bütünü oluşturuyorsunuz. Eğer uygulmanızın standardını bu yaklaşıma yönelik yaparsanız, yani yazılanın test odaklı olmasını uygularsanız yukarıda anlatılanlar ışığında bir gelişme kaydedebilirsiniz. Not: Geç yanıt için kusura bakmayın...
| . : : Sadece Kayıtlı Kullanıcılar Yorum Yazabilirler : : . . : : Yorum yazabilmek için Lütfen Sisteme Giriş Yapın veya Kayıt Olun : : . |