Developersland

Teknoloji ve Yazılım Blogu

  • Yazıtipi boyutunu arttır
  • Varsayılan yazıtipi boyutu
  • Yazıtipi boyutunu azaltır

Test Driven Development (Test Güdümlü Geliştirme)


test güdümlü geliştirmeSon birkaç gün içerisinde Test güdümlü geliştirme ile tanıştım. Daha önce bu kavramı duymuş olmama rağmen bir türlü araştırma fırsatım olmamıştı. Nihayet araştırma fırsatım oldu ve bu metodolojiyi gerçekten çok sevdim. Test Güdümlü Geliştirme dendiğinde bir yazılımcı olarak bana ilk başta garip gelen "Önce test sonra kod yazma" kavramıyla tanıştım. İlk duyduğunuzda size zaman kaybı gibi gelebilir nitekim bana da öyle gelmişti ve bu konuyla ilgili internette çok değerli yazılımcılar tarafından yazılmış çeşitli makaleler okudum. Bütün yazılan yazılardaki ana fikir test güdümlü geliştirmenin kesinlikle zaman kaybı olmadığı ve uzun vadede kodumuzda herhangi bir değişiklik yapacağımız zaman size inanılmaz derecede zaman kazandıracağı yönündeydi. Test güdümlü geliştirme yaparken her bir sınıfımız için ayrı ayrı public metodları test eden unit testler yazarız ve kodlarımız düzgün çalışıyorsa bütün unit testlerden başarıyla geçecektir. Uzun bir zaman sonra kodumuz üzerinde değişiklikler yapmamız gerektiğinde, yazılımcılar olarak kendi yazdığımız koda karşı bile yabancılık çekeriz. Durum böyle olunca yapacağımız değişiklikler sistemde daha sonra nedenini saatlerce araştıracağımız hatalara yol açabilir. Unit testlerimiz sayesinde böyle bir durumun önüne geçmemiz mümkündür. Kodumuzda herhangi bir değişiklik yaptığımızda unit testlerimizi çalıştırırız ve eğer herhangi bir şeyi bozmuşsak anında bunu tespit etme ve düzeltme şansımız olur. Böylece saatlerimizi kodumuzu debug etmekle geçirmez ve daha mutlu bir yazılımcı oluruz. Yazılım alanındaki en büyük ustalardan birisi olan Martin Fowler'in bu konuyla ilgili söylediği bir söz çok önemlidir.

"Herhangi bir şeyi debug etmeye kalktığınızda bunun yerine test yazınız"

Türkiye'deki önemli yazılımcılardan biri olan Özcan Acar'ın yazdığı "Veresiye Satan Yazılımcı" isimli yazısında test yazan yazılımcı ile test yazmayan yazılımcı arasındaki farkların çok güzel bir şekilde anlatıldığını düşünüyorum. Yazıyı okumanızı kesinlikle tavsiye ediyorum.

Test yazmanın önemini az çok anladık peki neden testlerimi kodumdan önce yazmalıyım?

Testlerinizi kodunuzdan önce yazmanız aslında kodunuzu daha iyi kurgulamanız açısından önemlidir. Siz daha ortada bir kod yokken onun testini yazabiliyorsanız yapacağınız şeyi kafanızda gerçek anlamda kurgulayabilmişsinizdir demektir. Hangi metodun hangi değeri alacağını buna karşılık hangi değeri döndüreceğini veya hangi işi yapacağına karar vermeden testlerinizi yazamazsınız. Bu nedenle kod yazmaya başlamadan önce kodunuzu en ince ayrıntısına kadar planlayıp, daha sonra trestlerinizi ona göre hazırlayıp nihayetinde kod yazmaya başlarsınız. Böylece kodlarınızı çok daha sağlam bir şekilde yazmış olursunuz.

İşvereni test yazmanın gereksiz olmadığı konusunda ikna etmek için iyi bir örnek

Bazı yazılımcılar yazdıkları kodun her yerini çok iyi bildiğini düşünmesi sebebiyle test yazmanın gereksiz olduğunu düşünürler. Doğru bu yazılımcı yapısı gereği yazdığı koda çok iyi hakim olabilir. Herhangi bir şeyi değiştirirken diğer kodları bozmadan rahat bir şekilde değiştirebilir, ancak yazılımcı işten ayrıldığında ve yerini yeni bir yazılımcıya bıraktığında yeni başlayan yazılımcı kodu değiştirmesi gerektiğinde aynı şekilde kodlara hakim olamayacaktır ve muhtemelen bir şey eklemek isterken birkaç şeyi bozacaktır. Bu durumda eğer testler yazılmış olsaydı yeni yazılımcı yaptığı eklemelerden sonra testleri çalıştırabilir ve nerelerde sorunlar olduğunu anında farkeder ve ona göre zamandan kazanırdı. Yazılım sektöründeki uzmanların iş değiştirme sıklığının yüksek olması sebebiyle işverenler her yeni gelen yazılımcının kendinden sonraki yazılımcılara düzgün bir kod bırakmasını sağlamak amacıyla test yazmayı bir zaman kaybı olarak algılamamalı ve test güdümlü geliştirmeyi bir standart olarak belirlemelidir.

 

Yorum ekle


Güvenlik kodu
Yenile