Mert Özen Her Satırda Daha İleri

Blog

Mert Özen'in yazılım geliştirme, backend, frontend ve DevOps üzerine blog yazıları.

Seriler
33 yazı bulundu
xUnit Test Yaşam Döngüsü: Constructor, IAsyncLifetime, Fixture'lar ve 4.0'da Tam Paralellik
Test ve Kalite SERİ 05

xUnit Test Yaşam Döngüsü: Constructor, IAsyncLifetime, Fixture'lar ve 4.0'da Tam Paralellik

xUnit her test için test class'ının yeni bir instance'ını oluşturur; pahalı ve salt okunur hazırlık class, collection ya da assembly fixture'ında bir kez yapılır. 4.0'ın ParallelMode.All'u 8 testlik örnekte süreyi 1,06 saniyeden 0,55'e indirdi, ama static bir fake paylaşan iki test 20 koşunun 16'sında kaldı. IAsyncLifetime, opt-out seviyeleri, ITestOutputHelper ve TestContext ekleri.

8 Kas 2026 10 dk 38
xUnit v3'te Veri Odaklı Testler: Theory, MemberData, TheoryData, TheoryDataRow ve MatrixTheoryData
Test ve Kalite SERİ 04

xUnit v3'te Veri Odaklı Testler: Theory, MemberData, TheoryData, TheoryDataRow ve MatrixTheoryData

Veri odaklı testte satır sayısından çok satır seçimi önemlidir: sınır değerleri ve equivalence partitioning, Math.Round'un banker's rounding hatasını iki satırla yakaladı. xUnit v3'te InlineData, MemberData ve tip güvenli TheoryData, satır bazında display name, label, trait ve skip taşıyan TheoryDataRow, MatrixTheoryData, dinamik skip, Explicit testler ve serileştirilemeyen verinin Test Explorer'a etkisi.

8 Kas 2026 9 dk 31
İyi Bir Unit Test'in Anatomisi: AAA, İsimlendirme, Tek Davranış ve Okunabilir Assertion'lar
Test ve Kalite SERİ 03

İyi Bir Unit Test'in Anatomisi: AAA, İsimlendirme, Tek Davranış ve Okunabilir Assertion'lar

İyi bir unit test tek bir davranışı tek bir Act ile çalıştırır, dallanma içermez ve kırmızıya döndüğünde adı ve hata mesajıyla sorunu kodu açmadan anlatır. AAA'nın sınırları, Method_Scenario_Expected ile düz cümle isimlendirme, Assert.Multiple, Shouldly, AwesomeAssertions ve FluentAssertions 8'in Xceed lisansı gerçek hata mesajlarıyla.

8 Kas 2026 10 dk 32
xUnit v3 ile Test Projesi: Microsoft Testing Platform, dotnet test ve İlk Testler
Test ve Kalite SERİ 02

xUnit v3 ile Test Projesi: Microsoft Testing Platform, dotnet test ve İlk Testler

xUnit.net v3 test projesi bir executable'dır ve 4.0 ile varsayılan olarak Microsoft Testing Platform v2 üzerinde çalışır; .NET 10 SDK'da global.json'a test runner ayarı eklenince dotnet test VSTest projelerini reddeder. xunit3 template'i, paket zinciri, dotnet test ve dotnet run, Assert.Throws/ThrowsAsync, TestContext.Current.CancellationToken ile xUnit1051, filtreler, TRX raporu ve exit code 8.

8 Kas 2026 11 dk 39
Unit Test'te "Unit" Ne Demek? Classical ve London School, İyi Testin Dört Özelliği
Test ve Kalite SERİ 01

Unit Test'te "Unit" Ne Demek? Classical ve London School, İyi Testin Dört Özelliği

Unit, bir method ya da class değil bir davranıştır; test double'ı yalnız sistem sınırında kullanan classical school, her collaborator'ı mock'layan London school'dan daha refactoring'e dayanıklı testler üretir. Solitary ve sociable test ayrımı, Khorikov'un iyi testin dört özelliği ve davranışı aynı bırakan bir değişikliğin mock'lu testi nasıl kırdığı gerçek çıktıyla.

8 Kas 2026 11 dk 25
Code Coverage Ne Söyler, Ne Söylemez: Line, Branch Coverage ve Mutation Testing
Test ve Kalite SERİ 04

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ı.

8 Kas 2026 11 dk 29
Neyi Hangi Seviyede Test Etmeli? Davranış, Sınırlar ve Mock'lanacak Bağımlılıklar
Test ve Kalite SERİ 03

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ı.

8 Kas 2026 10 dk 35
Test Pyramid, Testing Trophy ve Honeycomb: Hangi Şekil Hangi Sisteme Uyar?
Test ve Kalite SERİ 02

Test Pyramid, Testing Trophy ve Honeycomb: Hangi Şekil Hangi Sisteme Uyar?

Doğru şekil, sistemde güveni en ucuza hangi test seviyesinin verdiğine bağlıdır: domain mantığı yoğun bir API pyramid'e, ince bir CRUD API ile Angular SPA trophy'ye, microservice'ler contract testlerle honeycomb'a yakışır. InMemory provider'la yeşil yanıp gerçek SQLite'ta 500 dönen bir arama sorgusu, static katmanın 0,8 saniyede yakaladığı bir tip hatası ve ice-cream cone ile hourglass tuzakları.

8 Kas 2026 10 dk 33
Neden Test Yazarız? Unit, Integration, Contract, E2E, Smoke ve Diğer Test Türleri
Test ve Kalite SERİ 01

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.

8 Kas 2026 12 dk 28
Blog Haritası