Yapay Zeka Kodlama Ajanlarının Promptlardan Daha Çok Testlere İhtiyacı Var
25 yıldır yazılım geliştiriyorum. İş akışım son sekiz ayda, tüm kariyerim boyunca olduğundan daha fazla değişti.
Yapay zeka kodlama araçları eskiden refactoring veya hataları açıklama gibi küçük görevler içindi. Yapay zeka ile büyük özellikler inşa etmek sancılı geliyordu.
Şimdi durum farklı. Modern ajanlar belirli bir döngüyü takip ediyor:
- Kodu oku.
- Kodu değiştir.
- Bir komut çalıştır.
- Neyin başarısız olduğunu gör.
- Onar.
- Tekrarla.
Bu döngü güçlüdür ancak ajanlar görsel arayüzlerde zorlanıyor. Bir butonun çalışıp çalışmadığını görmek için bir kullanıcı arayüzünde (UI) güvenilir bir şekilde tıklama yapamıyorlar.
Yaklaşımımı değiştirdim. Yeni özellikleri, önce komut satırından çalışacak şekilde inşa ediyorum.
Bir ajandan "bu ekrana bak"masını istemek yerine, ona bir komut veriyorum:
npm run test:feature-xnode scripts/run-new-feature-client.js
Ajanlar komutlara bayılır. Bu onlara yürütülebilir bir geri bildirim döngüsü sağlar.
Mevcut iş akışım şu şekilde görünüyor:
- Özelliği bir Markdown dosyasında planla.
- Bir test istemcisi veya birim testi (unit test) oluştur.
- Net test senaryoları tanımla.
- Özelliği uygulaması için ajana izin ver.
- Testleri defalarca çalıştırması için ajana izin ver.
- Sonuçları incele.
Bir uyarı: Eğer bir ajana "tüm testleri geçirt" derseniz, bunu yapacaktır. Başarmak için yazılım mühendisliği suçları işleyebilir. Sadece hata mesajını durdurmak için zayıf testler yazabilir veya hataları gizlemek için try/catch blokları kullanabilir.
Bu yüzden test tanımlama, benim en önemli manuel görevimdir. Şunları sormalısınız:
- Bu test gerçek bir kullanım durumunu temsil ediyor mu?
- Gerçek bir regresyonu yakalayabilir mi?
- Çok mu dar kapsamlı?
Yapay zeka çağında, Test Güdümlü Geliştirme (TDD) sadece bir güvenlik ağı değildir. O, direksiyon simididir. Testler olmadan bir ajan makul görünen kodlar üretir. İyi testlerle birlikte ise ajanın ölçülebilir bir hedefi olur.
Başka bir ipucu: Test çıktıları için yapılandırılmış dosyalar kullanın. Devasa logları sohbete dökmek yerine, betiklerinizin bir klasördeki JSON veya Markdown dosyalarına yazmasını sağlayın.
Bu şu nedenlerle yardımcı olur:
- Ajan doğrudan ilgili veriye atlar.
- Bağlam (context) küçük kalır.
- Token kullanımı düşer.
- Para tasarrufu sağlar.
Yapay zeka ajanları geliştiricilerin yerini almaz. Odak noktamızı değiştirirler. Kod yazmaya daha az, şunlara daha fazla zaman harcarız:
- Problemleri net bir şekilde tanımlamaya.
- Geri bildirim döngüleri oluşturmaya.
- Kaliteli testler tanımlamaya.
- Mimarinin incelenmesine.
Yapay zeka geliştirmenin geleceği en iyi promptları yazan kişiye değil, en iyi geri bildirim döngülerini kuran kişiye aittir.
Source: https://dev.to/stoefln6/ai-coding-agents-need-tests-more-than-prompts-11pm
Optional learning community: https://t.me/GyaanSetuAi
