Piramit doğru şekildir ama oranlar müzakere edilebilir
"Test piramidi" — çok unit test, daha az integration test, çok az end-to-end test — varsayılan olarak doğrudur. Aynı zamanda sıkça yanlış uygulanan bir varsayılandır.Unit testler — gerçekten neyi doğrular
İyi bir unit test küçük bir mantık parçasının davranışını izolasyonda doğrular.Karşılığını verdikleri yer:
- Saf mantık — hesaplamalar, parser'lar, dönüşümler.
- Algoritma doğruluğu.
- Sınır koşulları.
Sıkça boşa olan yerler:
- Mocking ağırlıklı orkestrasyon kod testleri.
- Trivial getter ve setter testleri.
- Sadece coverage hedefini vurmak için yazılmış testler.
Önemli metrik "% coverage" değil. "İddia ettiği davranışı kırsam bu test başarısız olur mu".
Integration testler — yetersiz değer verilen katman
Integration testler bileşenlerin tasarlandığı gibi birlikte çalıştığını doğrular.Modern ekiplerin en çok kaldıraç yatırdığı yer:
- Servis düzeyi integration testler.
- İş akışı testleri.
- Servisler arası contract testler.
Modern test container'lar (Testcontainers, dockertest) CI'da Postgres, Redis, Kafka spin up etmeyi ucuz yapar.
End-to-end / UI testler — önemli olan birkaçı
E2E testler yavaş, flaky ve pahalı. Ama birkaç kritik kullanıcı yolculuğu E2E test edilmeli:- "Kullanıcı kayıt olabilir, login olabilir, ana eylemi yapabilir".
- "Kullanıcı satın almayı tamamlayabilir".
- "Admin operasyonu yapabilir".
İyi-bakımlı 5-10 E2E test değerin çoğunu kapsar.
Flakiness tüm ekibe vergidir
Flaky test gürültü problemi değil — kültür problemidir.- Flakiness'i karantinaya al — flaky testler izole edilir, sprint içinde düzeltilir veya silinir.
- CI metriği olarak flake oranını takip et.
- "Bunun flaky olduğunu biliyoruz" yorumları test kodunda olmaz.
- Default async testler — açık waits, sleep değil.
Test verisi
- Test edilen birim için minimum geçerli nesneler üreten factory fonksiyonlar.
- Karmaşık test verisi şekilleri için builder'lar.
- Database fixtures.
- Time-mocking altyapısı.
- Uygun domain'lerde property-based testing.
2026'da QA fonksiyonu
- Ürün veya ürün hattı genelinde test stratejisi.
- Pre-release sırasında exploratory testing.
- Production doğrulama.
- Customer-issue triage.
Uyaracağımız bir desen
Coverage-hedef avı.Her zaman karşılığını veren bir desen
Her kritik özellik için "golden path" test.Test katman dengeniz nedir?
The pyramid is the right shape, but the proportions are negotiable
The "test pyramid" is correct as a default. It's also a default that gets misapplied.Unit tests — what they actually validate
A good unit test verifies the behaviour of a small piece of logic in isolation.Where they're worth investing:
- Pure logic.
- Algorithm correctness.
- Boundary conditions.
Where they're often a waste:
- Mocking-heavy tests of orchestration code.
- Tests of trivial getters and setters.
- Tests written purely to hit coverage targets.
The metric that matters: "would this test fail if I broke the behaviour it claims to verify".
Integration tests — the underrated layer
Where modern teams invest:- Service-level integration tests.
- Workflow tests.
- Contract tests.
Modern test containers make it cheap to spin up real Postgres, Redis, Kafka in CI.
End-to-end / UI tests — the few that matter
- "User can sign up, log in, perform the core action".
- "User can complete a purchase".
- "Admin can perform the critical operation".
Five to ten E2E tests, well-maintained, cover most of the value.
Flakiness is a tax on the whole team
- Quarantine flakiness.
- Track flake rate as a CI metric.
- No "we know this one's flaky" comments.
- Async-by-default tests.
Test data
- Factory functions.
- Builders for complex test data shapes.
- Database fixtures.
- Time-mocking infrastructure.
- Property-based testing.
The QA function in 2026
- Test strategy across a product line.
- Exploratory testing during pre-release.
- Production validation.
- Customer-issue triage.
One pattern we'd warn about
Coverage-target hunting.One pattern that always pays off
A "golden path" test for every critical feature.What's your test layer balance?