Yapay Zeka Tarafından Üretilen Testler Kodlama Ajanlarını Nasıl Kötüleştirebilir?

İçindekiler
Bir hata düzeltmesi, yazılan tüm yeni testlerden başarıyla geçse bile sistemde yeni bir regresyona (bozulmaya) yol açabilir. Bu durum, özellikle otonom kodlama ajanlarının döngü içinde kendi testlerini ürettiği senaryolarda çok daha kritik hale gelir.
Hatalı Bir Python Filtresi Örneği
Bir sipariş filtresinin üç temel gereksinimi olduğunu varsayalım:
- Filtreyi atlamak veya
Noneiletmek: Tüm siparişleri döndür. - Boş bir liste (
[]) iletmek: Hiçbir sipariş döndürme. - Durum listesi iletmek: Yalnızca eşleşen siparişleri döndür.
Bildirilen hata, filtrenin atlandığı durumlarda hiçbir sonucun dönmemesidir. Önerilen ilk düzeltme oldukça mantıklı görünür:
def filter_orders(orders, statuses=None):
if not statuses:
return list(orders)
return [order for order in orders if order["status"] in statuses]
Bu yama hem varsayılan çağrıyı hem de ["paid"] durumunu başarıyla doğrular. Ancak ikinci gereksinim için assert filter_orders(ORDERS, []) == [] kontrolü eklendiğinde test başarısız olur. Python hem None hem de [] değerlerini "falsy" kabul eder; önerilen yama bu hayati ayrımı silerek beklenmeyen bir regresyona neden olur.
Kodlama Ajanlarına Etkisi ve ExecCritic Bulguları
Test kontrolleri ajanın bir sonraki eylemini belirlediğinde durum daha kritik bir boyut kazanır. Leitian Tao ve meslektaşlarının yayımladığı ExecCritic araştırmasında (Qwen-3.5-35B-A3B onarım ajanı ve SWE-bench Verified üzerinde) şu sonuçlar bildirilmiştir:
- Oluşturulan test geri bildiriminden önceki ilk onarım: %61,2 başarı
- Temel Qwen Test ajanından gelen testlerle: %57,3 başarı (3,9 puanlık düşüş)
- GPT-5.6-sol kaynaklı testlerle: %65,3 başarı
Daha zayıf testler başarı oranını düşürürken, kaliteli testler performansı artırmıştır. Çalışmanın metodolojik detayları şunlardır:
- Oranlar, üretilen testlerin yeniden kullanıldığı üç onarım çalıştırmasının ortalamasıdır.
- Başarısız test yeterliliği, ilk yamayı tüm görevler skorunda korur.
- Temel model depo içi testleri yasaklamaz.
- Çözümü bağımsız ve resmi bir değerlendirici belirler.
- Geri bildirim ek test üretimi ve revizyon iş yükü getirir; işlem bütçeleri eşitlenmemiştir.
Yanlış Testlerin Onarım Döngüsünü Bozması
Hatalı bir test yalnızca bir kusuru gözden kaçırmakla kalmaz, ajana tamamen yanlış bir hedef gösterir. Örneğin gereksinimle çelişen şu kontrol eklenirse:
# Bu beklenti boş liste gereksinimiyle çelişir
assert filter_orders(ORDERS, []) == ORDERS
Bozuk yama bu kontrolden geçerken, doğru çalışan bir kod başarısız olur. Bu sahte başarısızlık otomatik onarım döngüsüne beslendiğinde, ajan doğru davranışı bozmak için meşru bir nedene sahip olur.
Alışılagelmiş "düzeltmeden önce başarısız, sonra başarılı" yaklaşımı da yanıltıcıdır. Orijinal kod (statuses = statuses or []) varsayılan filtre testinde başarısız olup yeni yamada geçer; ancak yeni regresyonu tespit edemez. Eksiksiz çözüm, None durumunu açıkça ele almaktır:
def filter_orders(orders, statuses=None):
if statuses is None:
return list(orders)
return [order for order in orders if order["status"] in statuses]
Yazılım Geliştirme ve Öğrenme Çıkarımı: Testler birer teknik şartnamedir. Otonom kod onarım döngülerinde test üreten mekanizmanın kalitesi, en az kodu yazan ajan kadar kritiktir. Zayıf testler ajan sistemlerinin yanlış mantığı pekiştirmesine yol açtığı için test üretiminde daha üstün modeller veya katı insan doğrulaması tercih edilmelidir.
[Orijinal kaynağa buradan ulaşabilirsiniz.](https://dev.to/p0rt/ai-generated-tests-can-make-coding-agents-worse-heres-how-to-check-yours-3jc9)
Bu konuyu derinlemesine öğrenmek isterseniz: Production'da Agent Güvenilirliği modülüne göz atın.
Bu konuyu daha derinlemesine öğrenmek ister misin?
Edumints'teki ücretsiz kursları incele ve bugün başla.
Kurslara Göz At →