Blog
Mert Özen'in yazılım geliştirme, backend, frontend ve DevOps üzerine blog yazıları.
Neden Test Yazarız? Unit, Integration, Contract, E2E, Smoke ve Diğer Test Türleri
Test yazmanın asıl getirisi regression'a karşı güven, değişiklik hızı ve çalışan dokümantasyondur; bedeli yazma, bakım, süre ve flaky testtir. Test türlerini scope (unit, component, integration, contract, E2E) ve amaç (smoke, regression, acceptance, exploratory) eksenlerinde ayırıyor, Google'ın small/medium/large sınıflandırmasının scope'tan bağımsız olduğunu Bookstore'daki altı gerçek test ve ölçülen sürelerle gösteriyoruz.
Neyi Hangi Seviyede Test Etmeli? Davranış, Sınırlar ve Mock'lanacak Bağımlılıklar
Domain mantığı yoğun unit test, orchestration kodu az sayıda integration test alır; trivial kod test edilmez, aşırı karmaşık kod önce refactor edilir. Testte kendi veritabanın (managed) gerçek, ödeme ve e-posta gibi unmanaged bağımlılıklar mock olur. Davranışı değişmeyen bir refactoring'de kırılan mock'lu testin gerçek çıktısı, risk tabanlı önceliklendirme ve tek sayfalık test stratejisi dokümanı.
Code Coverage Ne Söyler, Ne Söylemez: Line, Branch Coverage ve Mutation Testing
Code coverage yalnız hangi kodun çalıştığını söyler, testlerin bir şey doğrulayıp doğrulamadığını söylemez: hiç assertion içermeyen bir test yüzde 87,5 line ve yüzde 100 branch coverage verdi, Stryker.NET ile mutation score'u yüzde 6,67 çıktı. MTP coverage extension'ı, ReportGenerator ve Angular'da coverage, sınır değerlerini bulan survived mutant'lar, --since ile yalnız değişen koda mutation testing ve coverage eşiği tuzakları.