Tüm Testler Yeşil, Özellik Bozuk: AI Ajanları İçin E2E Testler ve Mimari Kurallar
AI ajanıyla çalışırken birim testlerinin kör noktaları: testler geçer, özellik uçtan uca çalışmaz. E2E testler, mimari kuralların çalıştırılabilir kontrole dönüştürülmesi (arch-check) ve linterden E2E'ye doğrulama hiyerarşisi.
- Birim testlerin özelliğin hazır olduğunu yanlış bildirdiği kör noktayı kendi test kapsamınızda tespit edeceksiniz.
- En az bir mimari kuralı dokümandaki paragraf yerine çalıştırılabilir bir betik olarak yazacaksınız.
- En ucuz kontrolden en maliyetliye kadar uzanan bir doğrulama hiyerarşisi oluşturacaksınız.
课程开头
Her şey yeşil. Hiçbir şey çalışmıyor.
- Üç katman birim testi — hepsi geçti
- “Dışa Aktar” düğmesi: yol bozuk, ilerleme donmuş, bellek sızıntısı var
- Beş kusur — ve birim testler hiçbirini yakalamadı
Beş hata, hiçbir testin bakmadığı yerlere saklandı — tam olarak oraya. Sahne şu: bir masaüstü uygulaması ve dosya dışa aktarma işlevi. Üç katmanın tamamında — yol ayrıştırmadan yazma modülüne kadar — birim testler yeşil; ajan “hazır” bildiriyor. Uygulamayı kendiniz açıp düğmeye basıyorsunuz. Yol biçimi yanlış: bileşen mutlak yol bekliyordu, göreli yol geldi. İlerleme çubuğu kımıldamıyor. Büyük dosyalarda uygulama bellek yemeye başlıyor ve sonunda çöküyor. Toplam beş kusur — ve hepsi bileşenler arası sınır noktalarında. Hiçbir birim test bunları fark etmedi; çünkü her test, kendi modülünü komşularından tamamen izole hâlde test etti.
Mit: %100 birim test kapsamı ≠ özelliğin çalışması
- 🤔 Mit / Sık karıştırılan:
- “Birim testler yeşil — demek ki özellik hazır”
- ✅ Aslında:
- Birim test, modülü izole hâlde test eder; modüller arası birleşim noktasını değil
- 📌 Unutmayın: yeşil birim testler yalnızca her parçanın tek başına çalıştığını kanıtlar
Yüzde yüz birim test kapsamı, özelliğin çalıştığı anlamına gelmez — en sık karıştırılan nokta tam da budur. Birim test, tanımı gereği modülü izole hâlde test eder: bağımlılıklar mock'lanmıştır, ortam değiştirilmiştir. İki gerçek bileşenin birleşim noktasında olup bitenler hakkında hiçbir şey söylemez: veri biçimleri uyuşuyor mu, kaynaklar serbest bırakılıyor mu, mantık gerçek ortamda ayakta kalıyor mu. Tam da bu yüzden dosya dışa aktarma örneğinde ajan her şeyin bittiğinden emindi — ve beş ayrı yerde yanıldı; bunların hiçbiri tek bir modülün içinde değil.
Birim testler tesadüfen kör değildir — bilerek böyle tasarlandılar
- Bağımlılıkları mock'la, modülü tek başına test et
- Hızlı ve isabetli — ama sistematik olarak kör
- Körlük, testlerin hatası değil; tasarımı
Bir fabrika montaj hattını düşünün: fren kaliperi kendi test istasyonunda, direksiyon kendi istasyonunda kontrol edilir; her sensör araçtan sökülüp ayrı ayrı test edilir. Her kontrol hızlı ve isabetlidir — hangi parçanın hatalı olduğu hemen anlaşılır. Ama hiçbir istasyon, tüm parçalar tek bir araca takılıp araç yola çıktığında ne olacağını kontrol etmez. Birim test de aynı şekilde çalışır: çevresindeki her şeyi mock'lar ve tek bir modülü saf hâliyle test eder. Bu, hız ve isabetli teşhis sağlar; ama aynı izolasyon, testleri dört kusur sınıfına karşı sistematik olarak körleştirir — o kusurlar modülün içinde değil, modüllerin birleşim noktalarında yaşar; parçaların tek bir sisteme dönüştüğü tam o noktada. Körlük, testlerin hatası değil; tasarımının doğrudan sonucudur.
课程内容
- Her şey yeşil. Hiçbir şey çalışmıyor.
- Mit: %100 birim test kapsamı ≠ özelliğin çalışması
- Birim testler tesadüfen kör değildir — bilerek böyle tasarlandılar
- Birim testin asla göremeyeceği dört hata türü
- Birim testler, E2E'den kesinlikle daha az hata görür — bu bir metafor değil
- E2E yalnızca çıkıştaki bir filtre değildir
- E2E'nin ilk çalıştırmadan önce ajanın kodunu değiştirdiği üç yol
- Önce mimari sınırlar, sonra E2E
- 📖 OpenAI gözlemi: ajanlar örüntüleri kopyalar
- Bağımlılık okları yalnızca yukarı akar — ve bunu makine denetler
- Değişmezleri sağlayın, uygulamayı mikro yönetmeyin
- ❓ Dur-kontrol: sıra sizde
- Mimari kuralı otomatikleştirmenin üç seviyesi
- 💡 İnceleme: seviye 2 — linter kuralları
- 💡 İnceleme: seviye 2 — linter kuralları
- Seviye 3: CI'da mimari testler
- Review'da aynı yorumu ikinci kez mi yazıyorsunuz? Bu, harness'ınızın bug'ıdır
- Reviewer şikâyeti otomatik kontrole nasıl dönüşür: 1-3. adımlar
- 4-6. adımlar: kontrolü sağlamca sabitleyin — ve asıl olanı unutmayın
- E2E ne zaman zorunlu, ne zaman onsuz da olur
- Ters çevrilmiş doğrulama piramidi
- Tuzaklar: alttan üçüncü seviyede verilen 'hazır' kararı
- Proje: checkout için E2E ve ödemeler için arch-check.sh
- Unit testler detayları kanıtlar; feature'ın bütünüyle hazır olduğunu değil
本课时相关文章
- 智能体报告“完成”,功能却不工作:为什么会这样,以及如何验证智能体的工作
- 什么是 harness engineering:让 AI 智能体成为可靠的工作工具
- 如何让 AI 智能体变得可靠:从度量到自主工作的分步计划
- CLAUDE.md 与 AGENTS.md:是什么、该写什么,以及为什么智能体会无视规则
- Harness 与上下文工程:Harness 工程和提示词、上下文工程有什么区别
本课程全部课程
- Harness Engineering Nedir? AI Kodlama Ajanı Modelden Değil, Ortamdan Neden Çöker
- AI Ajanında Hata Birikimi: Adım Başına %95 Doğruluk Neden 10. Adımda Başarısız Olur
- AI Ajan Güvenilirlik Metrikleri: MTBF, MTTR, Patlama Yarıçapı ve Little Yasası
- AI Ajanı Üretimde Neden Çöker: Beş Hata Katmanı ve Teşhis Döngüsü
- AI Ajan Harness'ı Neyden Oluşur: Talimatlar, Araçlar, Ortam, Durum, Geri Bildirim
- AI Kodlama Ajanları İçin Depo Haritası: Oturumlar Arası Hafızasız Proje Yapısı
- AGENTS.md En İyi Uygulamaları: Dev Talimat Dosyası Neden Çalışmaz, Yönlendirici Nasıl Kurulur
- AI Ajanı Oturumlar Arası Hafıza: Oturum Devri, PROGRESS.md ve Başlangıç Sözleşmesi
- AI Ajanları İçin feature_list.json: WIP=1, Özellik Durumları ve verify.sh Doğrulaması
- Ajan 'Hazır' Dedi, Özellik Çalışmıyor: Doğrulama Boşluğu ve Definition of Done
- Tüm Testler Yeşil, Özellik Bozuk: AI Ajanları İçin E2E Testler ve Mimari Kurallar
- AI Ajanı Gözlemlenebilirliği: Sprint Sözleşmesi, Değerlendirici Rubriği ve Temiz Oturum Çıkışı
- AI Ajanını Saatlerce Denetimsiz Çalıştırmak: Loop Engineering ve Durdurma Koşulları
- AI Ajanları İçin Graph Engineering: Tek Döngü Yetmediğinde Görev Grafiği
- AI Ajan Harness'ını Sıfırdan Kurmak: AGENTS.md, feature_list.json, verify.sh ve Otonom Döngü