Örnek sorular
TestingZorluk 1
Frontend testler genelde unit, integration ve end-to-end diye ayrılır. Bu ayrım neyi anlatır?
- aTestleri kimin yazdığını — unit testleri developer'lar, end-to-end testleri ise QA ve tasarım ekipleri yazar
- bHer test türünün hangi programlama diliyle yazılmak zorunda olduğunu
- cTestin gerçek bir tarayıcıda mı yoksa yalnızca terminalden mi çalıştığını
- dBir testin sistemin ne kadarını çalıştırdığını: tek bir birim, birkaç parça birlikte ya da tüm uygulama UI üzerinden✓
Açıklama:Üç seviye kapsamı (scope) anlatır: unit test tek küçük bir parçayı (örneğin tek bir component) doğrular, integration test birkaç parçanın birlikte çalışmasını, e2e test ise tüm uygulamayı UI üzerinden sürer. Mesele kimin yazdığı (a) değildir — üç seviyeyi de çoğunlukla developer'lar yazar.
TestingZorluk 1
Bir component test öncelikle neyi doğrulamayı amaçlar?
- aComponent'in kaynak dosyasının, projenin linter'ından da geçerek syntax hatası olmadan derlendiğini
- bÇok sayfalı checkout akışının baştan sona çalıştığını
- cTek bir UI component'inin kendi başına doğru render olduğunu ve girdiye beklendiği gibi tepki verdiğini✓
- dCSS bundle'ının JavaScript bundle'ından önce yüklenmeyi bitirdiğini
Açıklama:Component test, tek bir component'i izole biçimde mount eder ve render çıktısını + girdiye (prop, click, yazma) tepkisini doğrular. Çok sayfalı bir akışı doğrulamak (b) component testin değil end-to-end testin işidir.
TestingZorluk 1
Bir UI test arrange–act–assert (AAA) yapısıyla kurgulanır. act fazına ne düşer?
- aTest edilen kullanıcı etkileşimini — örneğin bir click ya da yazma işlemini — tetiklemek✓
- bComponent'i render edip başlangıç prop, state ve fake'lerini hazırlamak
- cBeklenen metnin veya elemanın artık ekranda göründüğünü kontrol etmek
- dComponent'i DOM'dan kaldırmak ve paylaşılan state'i sıfırlamak
Açıklama:act, test edilen tek davranışı — click ya da tuş basımını — gerçekleştirir. Render edip state kurmak arrange fazıdır (b); görünen sonucu kontrol etmek ise assert fazıdır (c).
TestingZorluk 1
Happy-path test ile edge-case test arasındaki fark nedir?
- aHappy-path testleri developer'lar coding sırasında local'de koşar; edge-case testleri yalnızca QA ekibi release öncesi koşar
- bHappy path geçerli girdiyi kullanır; edge case ise boş, sıfır ya da çok uzun gibi sıra dışı veya sınır girdileri yoklar✓
- cHappy-path testleri UI katmanını kapsar; edge-case testleri yalnızca backend mantığı ve veritabanıyla sınırlıdır
- dHappy-path testlerin assertion'a ihtiyacı yoktur; sonucu assert eden tek tür edge-case testleridir
Açıklama:Happy path normal, geçerli girdiyi çalıştırır; edge case ise bug'ların saklandığı sınırları ve sıra dışı girdileri yoklar — boş string, sıfır, negatif ya da çok uzun değerler. Mesele testi kimin koşturduğu (a) değildir; ikisi de sıradan developer testleridir.
TestingZorluk 1
Ekipler neden genellikle çok sayıda component/unit test ama yalnızca birkaç end-to-end test yazar?
- aÇünkü end-to-end testler continuous integration pipeline'ında çalışamaz
- bÇünkü UI kodundaki gerçek bug'ları bulabilen tek tür unit testtir
- cÇünkü component-level coverage yeterince yükseldiğinde, o component'ler arasındaki integration'ı artık hiç test etmeye gerek kalmaz
- dÇünkü end-to-end testler daha yavaş ve kırılgandır; çok sayıda tutmak koşması ve bakımı açısından pahalıdır✓
Açıklama:Mesele maliyet ve stabilitedir: unit/component testler hızlıdır ve hatayı noktasal gösterir; e2e testler yavaş ve kırılgandır, bu yüzden çoğunu tutmak pahalıdır. Yine de az sayıda e2e test şarttır — sorun onların CI'da çalışamaması (a) değildir.
TestingZorluk 1
Aşağıdakilerden hangisi bir frontend end-to-end (e2e) testini en iyi tanımlar?
- aTek bir component'i izole halde, bağımlılıklarının her birini fake'ler ve elle yazılmış stub'larla değiştirerek render eder
- bKodu çalıştırmadan kaynağı type hataları için statik olarak analiz eder
- cÇalışan gerçek uygulamayı, bir kullanıcı gibi tarayıcı üzerinden gerçek sayfalar ve isteklerle sürer✓
- dKod tabanının kaç satırının en az bir kez çalıştırıldığını sayar
Açıklama:E2e test gerçek bir kullanıcı gibi davranır: kurulmuş uygulamayı tarayıcıda açar, gerçek sayfalar ve network çağrılarıyla tıklayarak ilerler. Bağımlılıkları fake'lenmiş tek bir component render etmek (a) ise component/unit testi tarif eder.