Birim Test Yazımı

Merhabalar, stajımı yaptığım şirket bana büyük bir proje verip birim testlerini yazmamı söyledi. Proje hakkında maalesef herhangi doküman yok. Ben de ilk test serüvenime bu karmaşık projeyle başlamış oldum. Sorum biraz rehberlik biraz da teknik içerikli. Bu tip durumlarda projeyi anlamak için ne yapmalıyım? Veya 10bin+ satır bir projeyi anlamadan method method yüzeysel işlevlerine bakarak mı test yazmalıyım? Methodlar içinde onlarca başka methodlar mevcut. Tek bir service methodunun test methodunu yazması bir tam günümü alabilir. Nelerin test edilip nelerin edilmeyeceğine ve hangi katmanlara kadar test yazılması gerektiğine nasıl karar verebilirim? son sorum ise şu; bazı methodların direkt bir test methodu olmasa da içeriği başka yerlerde parça parça test edilmiş, line coverage bunu gösteriyor. Birim test manttığı ile bu büyük methodu biraz parçalayıp 0dan mı test yazmalıyım sadece eksik yerleri mi tamamlamalıyım (düzensiz bir test yapısı olur gibi geliyor).
Yardımlarınız için teşekkürler

1 Beğeni

Yeni bir stajyerden tüm olası senaryoları tespit edip bunların unit testlerini yazması beklenemez bence. Ufaktan başla, yavaş yavaş büyüyecek zaten merak etme.

1 Beğeni

Evet, unit test’lerin tanimi bu.

Service methodunun testi functional test oluyor.

Tabi buyuk ithimalle istedikleri bu. Veya her seviyede test istiyorlar muhtemelen, aradaki integration testleri de dahil.

Deneyimini kullanarak.
O yuzden deneyim degerli.

Ha peki ne yapilabilir? Her seyin her katmanda test edildigi idealden yola cikilabilir. Bu ideale ulasamiyorsak neden ulasamiyoruz? Peki bu konuda ne yapabiliriz?

Metodolojiye bagli.
Sirkette “coverage >= 90% olsun, gerisi onemli degil” kurali varsa eksikleri tamamlamak yeter.

Coverage’a buyuk bir anlam yuklenmiyor, hizli bir metrik olarak kullaniliyorsa o sekilde kullanmak lazim: %4’luk eksiklik parametre validasyonundan mi geliyor? null parametre yollayan testi eklemek hakkaten onemli mi, yoksa asagidaki %36’lik sinifin test edilebilirliginden emin olup %70’lere cikartmak daha mi onemli.

Bu arada degisik test katmanlarinin kapladiklari alanlarda buyuk kesisimler olacaktir.
Mesela bir end-to-end test bir grup sinifin %80’ini cover ederse sasirmam. Ama bu demek degil ki unit test’leri yazmamiza gerek yok, veya sadece kalan %20’ye yazsak olur.

Methoda bakar.

Tanidigim en hevesli test yazan arkadas bir gun hizini alamayip bir sinifin addListener methodunu test edebilmek icin sinifa getListeners eklemisti. Bunun neden yanlis oldugu acik degilse mevcut koda (henuz) dokunmamakta fayda var.

Oteki taraftan, gereksiz bir sekilde birbirine bel baglamis kod parcalari varsa da baltayla bile girmek okey.

3 Beğeni