Birim testler bileşen sınırlarına mimari olarak kördür. Yalnız uçtan uca test sistem düzeyi kusurların yokluğunu kanıtlar — ve ajanın davranışını değiştirir.
Gerçek bir vaka. Electron tabanlı bir not uygulamasına “kullanıcı notlarını dışa aktar” özelliği eklendi. Birim testlerin tümü yeşildi. Üretimde beş ayrı kusur çıktı:
Renderer ile preload arasında dosya yolu formatı uyumsuz (Windows ile POSIX karışmış).
IPC üzerinden progress bar tetiklenmiyor — kullanıcı otuz saniye boyunca uygulamanın donduğunu sanıyor.
İstisnalar katmanlar arası yayılmıyor; sessiz başarısızlık.
Birim testler beş kusurun beşini de yakalamadı: 0/5. Uçtan uca test ekledikten sonra hepsi onbeş saniyede çıktı: 5/5.Sebep mimaridir: birim test izolasyon için tasarlanır. İzolasyon, kusurların yaşadığı bileşen sınırlarını mock’larla siler. Sınırı silen bir araç sınır hatalarını yakalayamaz.Ders 09’da kullandığımız koro metaforu burada da geçerli — solo provalar kusursuzdur; ama tempo, nefes ve akustik ancak topluluk söylerken duyulur.
Süreç sınırını: ana-renderer, IPC, child process; hepsi mock arkasında.
Paketleme sınırını: kod imzalama, sandbox, OS izinleri test koşumunda yok.
Anthropic’in eval kılavuzu bu farkı şöyle ifade eder: bir uçuş rezervasyon ajanı “uçuşunuz alındı” diyebilir, ama outcome veritabanında rezervasyon olup olmadığıdır (Anthropic, “Demystifying Evals”). Birim test transcript’i okur; e2e dünyanın gerçek durumunu sorgular.
Her seviye bir öncekini içerir. Düzenek Mühendisliği (Harness Engineering) seviyesinde sonuç: e2e en pahalısıdır, ama atlandığında görünmeyen kusurlar üretir. Görünmeyen kusurlar şikayet olarak değil, “neden yine bozuldu” telefonlarıyla geri döner.SWE-bench Verified bu fikrin endüstri ölçeğindeki halidir: beş yüz mühendis onaylı gerçek GitHub issue’su, her biri gerçek test paketiyle doğrulanır. Ajan yamasını uygular, repo’nun kendi test suite’i koşar, geçtiyse kusur giderilmiş sayılır (SWE-bench). Burada da doğrulama yöntemi mühendisin kendi kullandığı yöntemdir, yapay bir refleks değil.
AGENTS.md veya docs/testing-standards.md’nin tepesinde duran blok:
## Validation Hierarchy- Seviye 1: Lint + tip kontrolü (geçmek zorunda)- Seviye 2: Birim testler (geçmek zorunda)- Seviye 3: Entegrasyon testleri (geçmek zorunda)- Seviye 4: Uçtan uca testler (bileşenler-arası değişikliklerde geçmek zorunda)- Herhangi bir zorunlu seviyenin atlanması = NOT COMPLETE
Doğrulama scripti bu hiyerarşiyi sırayla koşar; bir seviye düşerse sonrakine geçilmez. Ajan “%80 testler geçti” diyemez — yazılı eşik geçmek veya geçmemektir.
E2E test başarısızlığı ajan tarafından okunabilir olmalı:
ERROR: e2e/test_export.spec.ts:42 başarısızWHY: renderer'da doğrudan fs.readFileSync çağrısı — IPC olmadan paketlenmiş ortamda izin reddediliyor.FIX: Dosya işlemini src/preload/file-ops.ts'e taşı ve window.api.readFile() üzerinden çağır. Referans: docs/architecture.md "İzole renderer".
OpenHands’in deterministik doğrulayıcı tanımı buraya tam oturur: iyi bir skill değerlendirmesi sınırlı görev, deterministik doğrulayıcı ve skill-yok temel çizgisi ister (OpenHands, “Evaluating Agent Skills”). ERROR/WHY/FIX bloku bu üçlünün hata tarafıdır.
Inspect AI üç primitif üzerinde durur: solver (üretici stratejisi), scorer (çıktıyı puanlayan), sandbox (Docker/Kubernetes ile izole koşum) (Inspect AI). Düzeneğin e2e katmanı, scorer + sandbox’ın yerel karşılığıdır: izole bir ortam, deterministik bir puanlayıcı, sürüm-arası karşılaştırılabilir bir skor.OpenAI’ın eval-skills yazısı bu süreci trace → check → skor olarak özetler: prompt, yakalanan koşum, küçük bir kontrol kümesi, zaman içinde karşılaştırılabilir bir puan; minimum on-yirmi prompt ve en az bir “tetiklenmemeli” negatif kontrol (OpenAI Developers, “Eval Skills”). Düzeneğin e2e suite’i bu tarifin proje-ölçeği halidir.
Birim testlere bakan ajan farklı kod yazar; e2e testlere bakan ajan daha bütünlüklü kod yazar. Çünkü doğrulama biçimi neyin “kabul edilebilir” olduğunu yeniden tanımlar.Anthropic’in trajectory vs outcome ayrımı burada bir kez daha çalışır: ajan transcript’i süslemekten vazgeçtiğinde, çünkü süslü transcript skor üretmiyor — outcome üretiyor. Düzenek Mühendisliği (Harness Engineering) içinde e2e suite varsa, ajan onu okuyup ona göre yazar. Suite yoksa ajan mock’larla yetinir ve “bitti” der.
On üç saniyelik fark, üretim hatalarının tamamını açıklar.Karşılaştırma için: SWE-bench Verified beş yüz görev üzerinde aynı prensibi koşar — her görevde repo’nun kendi test paketi doğrulayıcıdır. Doğrulama yöntemi mühendisin kullandığı yönteme ne kadar yakınsa, skor o kadar anlamlıdır.
Ders 09 doğrulamayı dışsallaştırmıştı; bu ders en üst katmanı somutlaştırdı. Birim testin mimari körlüğü, mimari sınırın lint kuralına çevrilmesi, doğrulama hiyerarşisinin atlanmazlığı ve doğrulayıcının ajan davranışını şekillendirmesi — hepsi e2e’yi bir yatırım değil, bir sözleşme yaptı. Ders 11 — Düzeneğin Gözleri bir adım geri çekilir: test geçtiğinde “neden geçti”, geçmediğinde “neden geçmedi” sorusunu runtime ve süreç katmanlarıyla cevaplar.Pratik karşılığı: Proje 05 — Yapan ve Denetleyen.