Yeni yılda geliştiricilere iyi düşünülmüş bir hediye verin: (öz)güven

Kodu neden test etmekle uğraşasın ki ?

Bir kullanıcı bugla karşılaştığında aşağı yukarı şöyle görünür:

Buglar işleri aksatır, stresi artırır.

Buglar maddi zararlara yol açar.

Buglar marka itibarını zedeler.

Peki genellikle bu durumda kim suçlanır?

Sen! Evet, evet sen! Geliştirici kardeşim, sana söylüyorum sağa sola bakmana gerek yok.

Kodu canlıya salmadan önce hataları gidermen gerektiğini biliyorsun.

Ve ne tarzda kod yollaman gerektiğini de biliyorsun:

  • Kullanıcıları hatalarla uğraştırmayan.

  • Sürdürülebilir(maintain edilebilir).

  • Çalışma arkadaşların tarafından anlaşılabilir.

  • Bir yeri düzelttiğinde, başka bir yeri bozmadığından emin olduğun bir kod.

  • Bu liste uzayıp gider…

Esasen iyi test edilmiş kodlardan bahsettiğimi anlamışsındır. Sadece test etmek yoluyla kendinden emin ve profesyonel kodlar yazabilirsin. Tabii “Average Engineer” ile aynı mantaliteye sahip değilsen :)

O vakit neden kodları test etmiyorsun? Dur tahmin edeyim:

  • Test yazmak çok zaman ve emek istiyor.

  • Testçi test etsin. Her şeyi sen mi düşüneceksin? Sen de test edersen, o zaman testçiye ne gerek var?

  • Zaman yok. Zaten çok meşgulsün.

  • Teşvik yok. Test için destek, bütçe, eğitim yok.

Özetle imkanımız yok. Fakat bu kodu birlikte test edemezsek, kullanıcılar harikulade biçimde test edecek. Ve o zaman göreceğiz, görmemiz gerekeni :)

Sen geliştiricisin, büyük düşün

Dedim ya, sen geliştiricisin. Zeki birisin. İnsanların kompleks ve tekrar eden işlerde kötü olduğunu bilirsin. Ve aynı zamanda bilgisayarların kompleks ve tekrar eden işlerde aliyyu-l-âlâ olduğunu da bilirsin :)

Testler kompleksdir, çoğu zaman ürün kodundan çok test kodun olur, ve bu testleri her seferinde manuel yapmak mümkün değildir. O halde test işini bilgisayarlara yaptırmak gerekir.

Geliştiriciler, otomatik(birim, entegrasyon) testler yazar.

Otomatik testler geliştiricinin kasıdır, gizli silahıdır, güvende hissettirir. Aynı zamanda kodun nasıl çalıştığını açıklayan dokümantasyonudur.

Fakat otomatik testleri yazabilmek için bazı şeyleri bilmen gerekiyor:

  • Neyi test etmeliyim?

  • Ne zaman test etmeliyim?

  • Kaç tane test yeterli?

Doğru test araç ve tekniklerini internetten bulabilirsin. Fakat benim birkaç önerim olacak. Esasen bu öneriler evrensel deneyimlerle edindiğimiz şeyler. Özetle testleri 4 katmanda ele almalısın:

  • Statik kod analizi: kod yazıyorken sana oluşabilecek hatalar, güvenlik açıkları, kokan kodlar konusunda anlık bildirim veren linter aracı kullan, mesela sonarlint. Ve lütfen uyarılarını görmezden gelme.

  • Birim testi: uygulamanın davranışını ve işlevselliğini test eden birim testleri yaz.

  • Entegrasyon testi: uygulamayı bütünsel olarak test etmek, her şeyin uyumlu bir şekilde çalıştığını anlamak için entegrasyon testleri yaz.

  • UI/E2E Testleri: uygulamanın arayüzünde tıpkı bir kullanıcıymış gibi gezinen UI veya E2E test senaryoları yaz. Bunu testçiden de rica edebilirsin :)

Elbette yukarıda bahsettiğim 4 katman islamın şartı değil, dolayısıyla bu katmanlara eklemeler ve çıkarmalar yapılabilir.

Özünde bu 4 katman uygulamaları hızlı, (öz)güvenli, para ve itibar kaybını en aza indirerek canlı ortama göndermen konusunda sana yardım eder. Hem de her seferinde.

Vakit ayırdığın için teşekkür ederim,

Bir sonraki yazıda görüşmek dileğiyle.