Örnek sorular
Sd Code Quality Test CodeZorluk 1
Test kodunda DRY vs DAMP tartışmasında DAMP neyin kısaltmasıdır?
- aDon't Assert More than Planned
- bData And Mock Pattern
- cDescriptive And Meaningful Phrases✓
- dDuplicate All Mocked Paths
Açıklama:DAMP, Descriptive And Meaningful Phrases anlamına gelir. Test kodunun, katı bir tekrar-önleme yerine anlaşılırlığı ve kendi içinde bütünlüğü önceliklendirmesi gerektiğini savunur; bu bazı tekrarları kabul etmek anlamına gelse bile.
Sd Code Quality Test CodeZorluk 1
Birçok test uzmanı, katı DRY (Don't Repeat Yourself) ilkesinin test kodunda production koduna göre daha zararlı olabileceğini neden savunur?
- aÇünkü DRY sadece derlenen dillerde geçerlidir ve çoğu test framework'ü yorumlanır dillerdedir
- bOrtak kurulumun çıkarılması, başarısız bir testin tam koşullarını gizleyebilir.✓
- cÇünkü test runner'lar tekrarlanan kodu, tekrarsız koda göre daha yavaş çalıştırır
- dÇünkü DRY, bir projedeki tüm test dosyalarının tek dosyada birleştirilmesini gerektirir
Açıklama:Ortak kurulum veya mantık paylaşılan yardımcı fonksiyonlara çıkarıldığında, başarısız bir testi debug eden bir okuyucu testin gerçekte ne yaptığını anlamak için birden fazla dosyaya bakmak zorunda kalır; bu da testin açık ve bağımsız bir dokümantasyon olma rolüne zarar verir.
Sd Code Quality Test CodeZorluk 1
"Mystery Guest" test kokusu (test smell) nedir?
- aTestin kendisinde görünmeyen harici bir veriye bağımlı olan bir test.✓
- bCI'da rastgele başarısız olan ama lokal'de hiçbir kod değişikliği olmadan geçen bir test
- cArtık takımda çalışmayan bir geliştirici tarafından yazılmış, dokümantasyonu olmayan bir test
- dAslında kullanmadığı bir bağımlılığı mock'layan bir test
Açıklama:Mystery Guest, bir testin test gövdesinin dışında tanımlanmış veri veya duruma (örneğin harici bir fixture dosyası veya veritabanı seed'i) bağımlı olması durumunda ortaya çıkar; bu yüzden okuyucu sadece testi okuyarak neyin test edildiğini anlayamaz.
Sd Code Quality Test CodeZorluk 1
"Eager Test" kokusu nedir?
- aBağımlılıkları hazır olmadan çalışan ve aralıklı başarısızlıklara yol açan bir test
- bCI pipeline'ında çok sık çalıştırılan ve build'leri yavaşlatan bir test
- cHiç assertion içermeyen bir test
- dBirden fazla ilgisiz davranışı tek bir test metodunda birden doğrulayan bir test.✓
Açıklama:Eager Test, birbiriyle gevşek ilişkili birden çok kontrolü tek bir test metoduna sıkıştırır. Test başarısız olduğunda okuyucu, tam olarak hangi davranışın bozulduğunu anlamak için birçok assertion'ı incelemek zorunda kalır.
Sd Code Quality Test CodeZorluk 2
"Assertion Roulette" nedir?
- aSıraya bağlı bug'ları yakalamak için assertion'ların çalışma sırasını rastgeleleştirmek
- bBirçok assertion içeren ama bunları birbirinden ayıran mesaj veya bağlam bulunmayan bir test.✓
- cFarklı takım üyelerine assertion'ların rastgele atandığı bir test stratejisi
- dBaşarısız assertion'ları rastgele sayıda otomatik olarak yeniden deneyen bir framework özelliği
Açıklama:Assertion Roulette, açıklayıcı başarısızlık mesajı olmayan birden fazla assertion içeren bir testi tanımlar. Başarısızlık raporu sadece "X satırında assertion başarısız" der, bağlam vermez; bu da okuyucuyu gerçek nedeni bulmak için tahmin yürütmeye ya da debug yapmaya zorlar.
Sd Code Quality Test CodeZorluk 1
"Line coverage" (satır kapsamı) neyi ölçer?
- aTest suite tarafından en az bir kez çalıştırılan satırların yüzdesini.✓
- bBaşarıyla geçen test case'lerin yüzdesini
- cÇalıştırılan tüm olası dal (branch) kombinasyonlarının yüzdesini
- dProduction kod satır sayısına kıyasla test kod satır sayısını
Açıklama:Line coverage, test çalışması sırasında en az bir kez çalıştırılan çalıştırılabilir production kodu satırlarının sayısını, tüm çalıştırılabilir satırların yüzdesi olarak ifade eder.