Bölüm 19 / 33
Test, Kalite ve Hata Yönetimi
Yazılımın doğruluğunu, güvenilirliğini ve değişikliklere dayanıklılığını ölçen test ve kalite kavramları.
3 canlı örnek — seçerek incele
İlgili kavramlar: Unit Test, Assertion, CI
Test sonuçları
- ✓ cart.total hesaplar
- ✓ auth reddeder geçersiz token
- ✗ checkout boş adreste hata verir
Yazılımın beklenen davranışı sağlayıp sağlamadığını sistematik olarak doğrulama.
Girdi, adım, beklenen sonuç ve ön koşullardan oluşan test senaryosu.
Kullanıcı veya sistem davranışını yüksek seviyede açıklayan test durumu.
İlişkili testlerin birlikte çalıştırılan grubu.
Kapsam, ortam, yöntem, risk ve sorumlulukları belirleyen test belgesi.
Testlerin çalışması için kullanılan kontrollü örnek veri.
Test başarılı olduğunda oluşması gereken sonuç.
Test çalıştığında gerçekten oluşan sonuç.
- PassT
Gerçek sonucun beklenen sonuçla uyumlu olması.
- FailT
Gerçek sonucun beklenen sonuçtan farklı olması.
Tek fonksiyon veya sınıf gibi küçük kod birimini izole test eder.
Birden fazla bileşen, veritabanı veya servis arasındaki iletişimi test eder.
Kullanıcı akışını arayüzden backend ve veritabanına kadar bütün olarak test eder.
Tam sistemin işlevsel ve işlev dışı gereksinimlerini test eder.
Ürünün iş veya kullanıcı kabul kriterlerini karşıladığını doğrular.
Yeni değişikliğin daha önce çalışan özellikleri bozmadığını kontrol eder.
Yayın sonrası temel işlevlerin genel olarak çalıştığını hızlı kontrol eder.
Belirli düzeltme veya küçük değişikliğin mantıklı biçimde çalıştığını kontrol eder.
Testçinin öğrenme, tasarlama ve uygulamayı aynı anda yaptığı serbest test.
Test adımlarının insan tarafından uygulanması.
Testlerin kod veya araçlarla otomatik çalıştırılması.
Tekrarlanan testlerin güvenilir, hızlı ve raporlanabilir şekilde otomatikleştirilmesi.
Çok unit, daha az integration ve az sayıda E2E test öneren dağılım modeli.
Statik analiz ve integration testlerine yüksek ağırlık veren test dağılım yaklaşımı.
Testi hazırlık, işlem ve doğrulama adımlarına ayıran yapı.
Davranış testini başlangıç, eylem ve sonuç biçiminde ifade eden yapı.
Gerçek değerin beklenen koşulu sağladığını doğrulayan test ifadesi.
- MockO
Bağımlılığın beklenen çağrı ve sonuçlarını taklit eden test nesnesi.
- StubO
Test için önceden belirlenmiş cevap döndüren basit bağımlılık.
- FakeO
Gerçek bileşenin daha basit ancak çalışan test uygulaması.
- SpyO
Fonksiyon çağrılarını ve argümanlarını kaydeden test aracı.
Test öncesinde hazırlanan sabit veri veya ortam.
Test için esnek ve anlamlı örnek nesneler üreten yardımcı.
Gerçek bağımlılık yerine kullanılan mock, stub, fake veya spy genel adı.
Testin başka test veya dış sistem durumundan etkilenmemesi.
Aynı koşullarda her zaman aynı sonucu veren test.
Kod değişmediği hâlde bazen geçen bazen kalan kararsız test.
Testlerin kod satırı, branch veya fonksiyonların ne kadarını çalıştırdığını gösteren ölçüm.
Çalıştırılan kod satırlarının oranı.
Koşulların farklı doğru/yanlış yollarının ne kadar test edildiği.
Test kalitesini ölçmek için koda küçük kasıtlı hatalar ekleyip testlerin yakalamasını kontrol eder.
İki servis arasındaki request/response sözleşmesinin uyumunu test eder.
API sağlayıcısının tüketici beklentilerini sözleşme testleriyle doğrulaması.
Endpoint status, body, header ve iş kurallarını test eder.
Arayüz bileşenleri ve kullanıcı etkileşimlerini doğrular.
Arayüz ekran görüntülerini önceki sürümle piksel veya yapısal karşılaştırır.
Klavye, semantik ve WCAG kriterlerine uyumu test eder.
Sistemin hız, kapasite ve kaynak tüketimini ölçer.
Beklenen kullanıcı veya istek yükü altındaki davranışı ölçer.
Sistemi normal kapasitesinin üzerine çıkarıp kırılma noktasını bulur.
Ani trafik artışına sistemin tepkisini ölçer.
Uzun süreli yük altında bellek sızıntısı ve performans bozulmasını araştırır.
Belirli işin performansını tekrarlanabilir biçimde ölçer.
p50, p95 veya p99 gibi isteklerin belirli yüzdesinin altında kaldığı süre.
Kimlik, yetki, girdi ve yapılandırma zafiyetlerini test eder.
Gerçek saldırı teknikleriyle güvenlik açığı arayan kontrollü test.
Kodu çalıştırmadan hata, kalite ve güvenlik kurallarına karşı analiz eder.
Kodun yazım, hata ve stil kurallarını otomatik kontrol eder.
Değer ve fonksiyon türlerinin uyumunu derleme veya analiz aşamasında kontrol eder.
Başka geliştiricinin değişikliği doğruluk, güvenlik ve sürdürülebilirlik açısından incelemesi.
Coverage, güvenlik veya hata sayısı gibi eşik sağlanmadan merge/deploy engeli.
- BugT
Yazılımın beklenen davranıştan sapmasına neden olan hata.
Gereksinim veya tasarımla uygulama arasındaki kusur.
Hatanın ortam, adım, beklenen ve gerçek sonuçlarla kaydı.
Hatanın tekrar oluşması için izlenecek kesin adımlar.
Hatanın kullanıcı ve sistem üzerindeki etki düzeyi.
Hatanın ne kadar hızlı ele alınması gerektiği.
Hatanın görünür belirtisinin arkasındaki asıl neden.
Sorunun temel nedenini sistematik yöntemlerle bulma.
Nedeni derinleştirmek için art arda neden sorusunu kullanan analiz.
Daha önce çalışan özelliğin yeni değişiklik nedeniyle bozulması.
Production'daki kritik hata için hızlı yayınlanan düzeltme.
Asıl hata düzelene kadar sorunu geçici aşma yöntemi.
Hataları doğrulama, önceliklendirme ve sorumluya atama süreci.
Varlığı bilinen ve çözümü henüz yayınlanmamış hata.
Son testlerden geçmek üzere yayın adayı olarak işaretlenen sürüm.
- UATT
Gerçek iş kullanıcılarının sistemi kabul kriterlerine göre test etmesi.
Testlerin production'dan ayrılmış olarak çalıştırıldığı ortam.
Test verisini production verisinden ayrı tutan veritabanı.
Test sonrası oluşturulan verilerin silinmesi veya başlangıç durumuna dönmesi.
Tekrarlanabilir testler için önceden hazırlanmış başlangıç verisi.
Çalışan, geçen, kalan ve atlanan testlerin sonucu.
Push veya pull request sırasında otomatik çalışan testler.
Bileşen veya veri çıktısını kaydedilmiş önceki çıktıyla karşılaştırır.
Belirli örnekler yerine çok sayıda otomatik girdi üzerinde değişmez özellikleri doğrular.
Dağıtık sistem dayanıklılığını ölçmek için kontrollü arızalar oluşturma disiplini.
Yedek, failover ve geri yükleme süreçlerinin gerçekten çalıştığını doğrular.
| Kavram | Seviye | Kısa açıklama |
|---|---|---|
| Software Testing | T | Yazılımın beklenen davranışı sağlayıp sağlamadığını sistematik olarak doğrulama. |
| Test Case | T | Girdi, adım, beklenen sonuç ve ön koşullardan oluşan test senaryosu. |
| Test Scenario | T | Kullanıcı veya sistem davranışını yüksek seviyede açıklayan test durumu. |
| Test Suite | T | İlişkili testlerin birlikte çalıştırılan grubu. |
| Test Plan | T | Kapsam, ortam, yöntem, risk ve sorumlulukları belirleyen test belgesi. |
| Test Data | T | Testlerin çalışması için kullanılan kontrollü örnek veri. |
| Expected Result | T | Test başarılı olduğunda oluşması gereken sonuç. |
| Actual Result | T | Test çalıştığında gerçekten oluşan sonuç. |
| Pass | T | Gerçek sonucun beklenen sonuçla uyumlu olması. |
| Fail | T | Gerçek sonucun beklenen sonuçtan farklı olması. |
| Unit Test | T | Tek fonksiyon veya sınıf gibi küçük kod birimini izole test eder. |
| Integration Test | O | Birden fazla bileşen, veritabanı veya servis arasındaki iletişimi test eder. |
| End-to-end Test | O | Kullanıcı akışını arayüzden backend ve veritabanına kadar bütün olarak test eder. |
| System Test | O | Tam sistemin işlevsel ve işlev dışı gereksinimlerini test eder. |
| Acceptance Test | T | Ürünün iş veya kullanıcı kabul kriterlerini karşıladığını doğrular. |
| Regression Test | T | Yeni değişikliğin daha önce çalışan özellikleri bozmadığını kontrol eder. |
| Smoke Test | T | Yayın sonrası temel işlevlerin genel olarak çalıştığını hızlı kontrol eder. |
| Sanity Test | T | Belirli düzeltme veya küçük değişikliğin mantıklı biçimde çalıştığını kontrol eder. |
| Exploratory Testing | O | Testçinin öğrenme, tasarlama ve uygulamayı aynı anda yaptığı serbest test. |
| Manual Testing | T | Test adımlarının insan tarafından uygulanması. |
| Automated Testing | T | Testlerin kod veya araçlarla otomatik çalıştırılması. |
| Test Automation | O | Tekrarlanan testlerin güvenilir, hızlı ve raporlanabilir şekilde otomatikleştirilmesi. |
| Test Pyramid | O | Çok unit, daha az integration ve az sayıda E2E test öneren dağılım modeli. |
| Test Trophy | O | Statik analiz ve integration testlerine yüksek ağırlık veren test dağılım yaklaşımı. |
| Arrange Act Assert | T | Testi hazırlık, işlem ve doğrulama adımlarına ayıran yapı. |
| Given When Then | T | Davranış testini başlangıç, eylem ve sonuç biçiminde ifade eden yapı. |
| Assertion | T | Gerçek değerin beklenen koşulu sağladığını doğrulayan test ifadesi. |
| Mock | O | Bağımlılığın beklenen çağrı ve sonuçlarını taklit eden test nesnesi. |
| Stub | O | Test için önceden belirlenmiş cevap döndüren basit bağımlılık. |
| Fake | O | Gerçek bileşenin daha basit ancak çalışan test uygulaması. |
| Spy | O | Fonksiyon çağrılarını ve argümanlarını kaydeden test aracı. |
| Fixture | T | Test öncesinde hazırlanan sabit veri veya ortam. |
| Factory | O | Test için esnek ve anlamlı örnek nesneler üreten yardımcı. |
| Test Double | O | Gerçek bağımlılık yerine kullanılan mock, stub, fake veya spy genel adı. |
| Isolation | O | Testin başka test veya dış sistem durumundan etkilenmemesi. |
| Deterministic Test | O | Aynı koşullarda her zaman aynı sonucu veren test. |
| Flaky Test | O | Kod değişmediği hâlde bazen geçen bazen kalan kararsız test. |
| Test Coverage | T | Testlerin kod satırı, branch veya fonksiyonların ne kadarını çalıştırdığını gösteren ölçüm. |
| Line Coverage | T | Çalıştırılan kod satırlarının oranı. |
| Branch Coverage | O | Koşulların farklı doğru/yanlış yollarının ne kadar test edildiği. |
| Mutation Testing | İ | Test kalitesini ölçmek için koda küçük kasıtlı hatalar ekleyip testlerin yakalamasını kontrol eder. |
| Contract Test | O | İki servis arasındaki request/response sözleşmesinin uyumunu test eder. |
| Consumer-driven Contract | İ | API sağlayıcısının tüketici beklentilerini sözleşme testleriyle doğrulaması. |
| API Test | T | Endpoint status, body, header ve iş kurallarını test eder. |
| UI Test | T | Arayüz bileşenleri ve kullanıcı etkileşimlerini doğrular. |
| Visual Regression | O | Arayüz ekran görüntülerini önceki sürümle piksel veya yapısal karşılaştırır. |
| Accessibility Test | T | Klavye, semantik ve WCAG kriterlerine uyumu test eder. |
| Performance Test | O | Sistemin hız, kapasite ve kaynak tüketimini ölçer. |
| Load Test | O | Beklenen kullanıcı veya istek yükü altındaki davranışı ölçer. |
| Stress Test | O | Sistemi normal kapasitesinin üzerine çıkarıp kırılma noktasını bulur. |
| Spike Test | O | Ani trafik artışına sistemin tepkisini ölçer. |
| Soak Test | O | Uzun süreli yük altında bellek sızıntısı ve performans bozulmasını araştırır. |
| Benchmark | O | Belirli işin performansını tekrarlanabilir biçimde ölçer. |
| Latency Percentile | İ | p50, p95 veya p99 gibi isteklerin belirli yüzdesinin altında kaldığı süre. |
| Security Test | O | Kimlik, yetki, girdi ve yapılandırma zafiyetlerini test eder. |
| Penetration Test | İ | Gerçek saldırı teknikleriyle güvenlik açığı arayan kontrollü test. |
| Static Analysis | T | Kodu çalıştırmadan hata, kalite ve güvenlik kurallarına karşı analiz eder. |
| Linting | T | Kodun yazım, hata ve stil kurallarını otomatik kontrol eder. |
| Type Checking | T | Değer ve fonksiyon türlerinin uyumunu derleme veya analiz aşamasında kontrol eder. |
| Code Review | T | Başka geliştiricinin değişikliği doğruluk, güvenlik ve sürdürülebilirlik açısından incelemesi. |
| Quality Gate | O | Coverage, güvenlik veya hata sayısı gibi eşik sağlanmadan merge/deploy engeli. |
| Bug | T | Yazılımın beklenen davranıştan sapmasına neden olan hata. |
| Defect | T | Gereksinim veya tasarımla uygulama arasındaki kusur. |
| Bug Report | T | Hatanın ortam, adım, beklenen ve gerçek sonuçlarla kaydı. |
| Reproduction Steps | T | Hatanın tekrar oluşması için izlenecek kesin adımlar. |
| Severity | T | Hatanın kullanıcı ve sistem üzerindeki etki düzeyi. |
| Priority | T | Hatanın ne kadar hızlı ele alınması gerektiği. |
| Root Cause | O | Hatanın görünür belirtisinin arkasındaki asıl neden. |
| Root Cause Analysis | O | Sorunun temel nedenini sistematik yöntemlerle bulma. |
| Five Whys | O | Nedeni derinleştirmek için art arda neden sorusunu kullanan analiz. |
| Regression | T | Daha önce çalışan özelliğin yeni değişiklik nedeniyle bozulması. |
| Hotfix | T | Production'daki kritik hata için hızlı yayınlanan düzeltme. |
| Workaround | T | Asıl hata düzelene kadar sorunu geçici aşma yöntemi. |
| Bug Triage | O | Hataları doğrulama, önceliklendirme ve sorumluya atama süreci. |
| Known Issue | T | Varlığı bilinen ve çözümü henüz yayınlanmamış hata. |
| Release Candidate | O | Son testlerden geçmek üzere yayın adayı olarak işaretlenen sürüm. |
| UAT | T | Gerçek iş kullanıcılarının sistemi kabul kriterlerine göre test etmesi. |
| Test Environment | T | Testlerin production'dan ayrılmış olarak çalıştırıldığı ortam. |
| Test Database | T | Test verisini production verisinden ayrı tutan veritabanı. |
| Data Cleanup | T | Test sonrası oluşturulan verilerin silinmesi veya başlangıç durumuna dönmesi. |
| Seeded Test Data | T | Tekrarlanabilir testler için önceden hazırlanmış başlangıç verisi. |
| Test Report | T | Çalışan, geçen, kalan ve atlanan testlerin sonucu. |
| CI Test | T | Push veya pull request sırasında otomatik çalışan testler. |
| Snapshot Test | O | Bileşen veya veri çıktısını kaydedilmiş önceki çıktıyla karşılaştırır. |
| Property-based Testing | İ | Belirli örnekler yerine çok sayıda otomatik girdi üzerinde değişmez özellikleri doğrular. |
| Chaos Engineering | İ | Dağıtık sistem dayanıklılığını ölçmek için kontrollü arızalar oluşturma disiplini. |
| Disaster Recovery Test | İ | Yedek, failover ve geri yükleme süreçlerinin gerçekten çalıştığını doğrular. |
Bölüm uygulamaları
Bu bölümü bitirmeden önce şunları deneyin veya açıklayın.
- Login, ürün oluşturma, checkout ve ödeme webhook'u için unit, integration ve E2E test ayrımını yapın.
- Bir hata raporunu tekrar adımları, ortam, severity, priority ve ekran görüntüsüyle standartlaştırın.
- Staging ortamında smoke test ve production sonrası health/smoke kontrol listesi hazırlayın.