Test Odaklı Geliştirme Nedir: Yeni Başlayanlar Kılavuzu

Yayınlanan: 2018-03-12

Programcılar ve böcekler, bilinmeyen zamandan beri bitmeyen bir üstünlük mücadelesi içindeler. Bu kaçınılmazdır – en iyi programcılar bile böceklerin tuzağına düşer. Hiçbir kod hatalardan gerçekten güvenli değildir, bu yüzden test yapıyoruz. Programcılar, en azından aklı başında olanlar, kodlarını, yapılması gerekeni yaptığından emin olmak için geliştirme makinelerinde çalıştırarak test ederler. Geleneksel olarak, test senaryoları kod yazıldıktan sonra yazılırdı, ancak Test Odaklı Geliştirme'de, yürütme ve testin aynı anda kontrol edilebilmesi için herhangi bir kod parçası yazılmadan önce otomatik bir test senaryosu yazılır.
Bu yazıda, Test Odaklı Geliştirme hakkında derinlemesine konuşacağız ve neden geleneksel yöntemlerden daha iyidir!

İçindekiler

Test Odaklı Geliştirme Nedir?

TDD yaşam döngüsü
Test Odaklı Geliştirme, Extreme Programming (XP) metodolojisinin bir parçası olarak oluşturuldu ve 'Önce Test' konsepti olarak adlandırıldı . Test odaklı geliştirme, kodunuzu kapsamlı bir şekilde test etmenize ve otomatik olduğu için kodunuzu hızlı ve kolay bir şekilde yeniden test etmenize olanak tanır. Temelde, herhangi bir kod parçası yazmadan önce programcı önce bir birim testi oluşturur. Ardından programcı, birim testini karşılamaya yetecek kadar kod oluşturur. Test geçildikten ve kod yeniden düzenlendikten sonra programcı daha fazla iyileştirme yapmaya devam edebilir. Test odaklı geliştirme, kodun kapsamlı bir şekilde test edilmesini sağlayarak modülerleştirilmiş, genişletilebilir ve esnek bir koda yol açar.
Her yeni özellik eklendiğinde, TDD'nin "yaşam döngüsü" olarak adlandırılan süreçten geçmesi gerekir. Bu yaşam döngüsü hakkında daha fazla konuşalım.
Tam Yığın Geliştirici Nasıl Olunur?

Test Odaklı Geliştirme Yaşam Döngüsü

Test odaklı geliştirme yaşam döngüsü, ilk birim testinin yazılmasından kodun yeniden işlenmesine kadar her şeyi kapsar.
Test Odaklı Geliştirme

    • Bir test ekleyin: Her yeni özelliğin uygulanmadan önce bir testten geçmesi gerekir. Bir test yazmak için temel gereksinim, tüm gereksinimlerin net bir şekilde anlaşılmasıdır. Bu, kullanım durumları ve kullanıcı hikayeleri kullanılarak gerçekleştirilir.

    • Tüm testleri çalıştırın ve net testi kontrol edin: Bu, testimizin doğru çalışmasını sağlamak için yapılır. Temel olarak, bu aşama, testin gereksinimleri karşılamayan herhangi bir kod tarafından geçilmediğini kontrol etmeyi amaçlar. Bunu yaparak, bu adım, hatalı bir test olma olasılığını ortadan kaldırır.

    • Kod yazın: Artık testiniz hazır olduğuna göre, bir sonraki belirgin adım testi temizleyen bir kod yazmaktır. Bu kodun her açıdan mükemmel olması gerekmez, ancak testi temizlemesi gerekir. Bu kodun testi temizlediğinden emin olduktan sonra, gereksinimlere göre değiştirilebilir.

    • Testleri çalıştırın: Kodu yazdıktan sonra, şimdi kodun testi geçip geçmediğini görme zamanı. Kodunuz testleri geçerse, kodunuzun şu ana kadar gereksinimleri karşıladığı anlamına gelir.

    • Kodu yeniden düzenleyin: Bu, esasen kodu temizlemek için yapılır. Yeniden düzenleme, işlevlerden hiçbirine zarar vermez; sadece test kodu ile üretim kodu arasındaki tekrarları kaldırarak kodu temizlemek içindir.

  • Tekrarla: Bu döngü şimdi daha fazla işlevsellik eklemek için yeni bir testle tekrarlanıyor. Her işlevsellik aynı döngüden geçer. Esasen, adımların boyutu, her test çalıştırması arasında 1-10 düzenlemeden fazla olmamalıdır. Bir kod testi hızlı bir şekilde geçemezse, geliştirici geri dönmeli ve aşırı hata ayıklamamalıdır.
Şirketler Neden Tam Yığın Geliştiricileri İşe Almak İstiyor?

Test Odaklı Geliştirmenin Artıları ve Eksileri

Test odaklı geliştirme, çoğunlukla manuel olan geleneksel test yöntemlerine göre bazı kesin avantajlara sahiptir. Ancak, yanılmaz değil. Diğer tüm teknolojiler gibi, test odaklı geliştirmenin de bir takım dezavantajları vardır.

TDD'nin faydalarının neler olduğuna ayrıntılı olarak bir göz atalım:

    • Küçük testler yazmak, kodunuzun modülerliğini sağlar. TDD'yi uygulamak, iyi modüler tasarımın altında yatan ilkeleri anlamanıza yardımcı olur.

    • TDD, yeniden düzenleme aşamasında bir güvenlik ağı sağlayan kodunuzun uygulanması sırasında netlik sağlar.

    • TDD ile işbirliği yapmak çok daha kolay, çünkü artık insanlar kodu güvenle düzenleyebiliyor çünkü test, değişiklikleri testin işaretine uygun değilse onları bilgilendirecek.

    • TDD'nin temeli birim testleridir. Bu nedenle, yeniden düzenleme çok daha kolay ve hızlıdır. Eski bir kodu yeniden düzenlemek bir acıdır, ancak kod birim testleri tarafından desteklenirse, çok daha kolay hale gelir.

    • Kodlama kısmına başlamadan önce tüm gereksinimlerin netleştirilmesine yardımcı olur. Bu sayede daha sonra ortaya çıkabilecek birçok belirsizliğin önüne geçilmiş olur.

    • Test odaklı geliştirme, yazarken test etmeye odaklanır. Bu, programcıyı, arayüzlerini testi geçecek kadar temiz hale getirmeye zorlar. TDD'den geçmemiş bir kod parçası üzerinde çalışana kadar bu avantajı anlamak zor.

  • Aptalca hatalar neredeyse anında yakalanır. QA'da bulunursa çok zaman kaybettirecek hataların giderilmesine yardımcı olur.

Şimdi, test odaklı geliştirmenin sınırlamalarının neler olduğuna bir göz atalım:

    • Test için kullanılan test takımının korunması gerekir, aksi takdirde testler tam olarak belirleyici olmayabilir.

    • Testleri yazmak zordur - özellikle birim test aşamasının ötesinde.

    • TDD, en azından başlangıçta geliştirme hızını yavaşlatır.

    • Herhangi bir geliştirme biçiminde olduğu gibi, onu sadece yapmakla iyi yapmak arasında büyük bir fark vardır. İyi birim testleri yazmak, bir uzmanlık düzeyi gerektirir.

    • Bu yaklaşımı eski (mevcut) kodunuza uygulamak zordur.

    • TDD, rutin temizlik yapmanızı gerektirir. Testleri daha hızlı çalıştırmak için hassaslaştırmak gerekir.

    • Herhangi bir birim test çerçevesindeki süslü özellikler tarafından dikkatin dağılması kolaydır, ancak basit testlerin en iyi sonuçları verme eğiliminde olduğu akılda tutulmalıdır.

  • Ekipteki herkes testlerini doğru bir şekilde sürdürmedikçe, tüm sistem hızla bozulabilir.
İlk Yazılım Geliştirme İşinizde Nasıl Başarılı Olabilirsiniz?

Sonuç olarak…
Test odaklı geliştirme, uygulama geliştirmenin geleceği açısından ileriye giden yoldur. PHPUnit, Serenity, Robot, RedWoodHQ ve daha pek çok otomatik test çerçevesi vardır. İhtiyacınıza uygun olanı seçin ve kısa sürede daha iyi bakımı yapılabilir uygulamalar oluşturmaya başlayın!

Dünyanın En İyi Üniversitelerinden Yazılım Mühendisliği Kurslarına Kaydolun. Kariyerinizi hızlandırmak için Yönetici PG Programları, Gelişmiş Sertifika Programları veya Yüksek Lisans Programları kazanın.

Tam Yığın Geliştirici Olun

UpGrad ve IIIT-Bangalore'un Yazılım Geliştirmede PG Diploması
IITB'den Yazılım Geliştirmede Yönetici PG Programı