AI Test Üretimi İçin: Nerede Yardımcı Olur, Nerede Yanıltır

Yapay zeka hızlı test yazar. Ancak gerçekçi görünen ama yanlış şeyleri doğrulayan testler de yazar. Test kapsamınızın (coverage) arttığını görebilirsiniz, ancak kodunuz bozuk kalmaya devam eder.

Yapay zeka belirli görevler için harikadır. Şu amaçlarla kullanın:

  • İyi bir örnekten yola çıkarak genişletin. Eğer mükemmel bir test yazarsanız, yapay zeka tam olarak sizin tarzınızda on tane daha yazabilir.
  • Tekrarlayan yazımları halledin. Kurulum (setup) blokları, temizlik (teardown) ve fabrika yardımcıları (factory helpers) için kullanın.
  • İlk iskeleti (scaffolding) oluşturun. Boş bir dosyadan çok daha hızlı bir şekilde editöre ulaşmanızı sağlar.

Tehlike, yapay zekanın "sözleşmeye" (contract) karar vermesine izin verdiğinizde başlar.

Yapay zekaya bir fonksiyon verip test isterseniz, kodu okur ve kodun o an ne yaptığını test eder. Kodun ne yapması gerektiğini test etmez. Bu, kapalı bir döngü yaratır. Yapay zeka bir varsayımda bulunur, kodu yazar ve ardından aynı varsayımla örtüşen testler yazar.

Hatalar canlı ortama (production) ulaştığında, bunun sebebi test paketinin hatanın tarafını tutmuş olmasıdır.

Şu üç tuzağa dikkat edin:

  1. Uygulama odaklı (Implementation-shaped) testler Yapay zeka genellikle iş kuralları yerine mantık yollarını test eder. Küçük bir dahili detayı değiştirirseniz, sonuç hala doğru olsa bile testler bozulur. Bu, refactoring işlemini bir kabusa dönüştürür.

  2. Yüzeysel uç durumlar (edge cases) Yapay zeka; null değerleri, boş dizeleri ve sıfırları test etmede iyidir. Bunlar barizdir. "Alan sınırlarını" (domain edges) bulamaz. Sizin özel zaman dilimi hatalarınızı, veritabanı tuhaflıklarınızı veya benzersiz iş kurallarınızı bilmez.

  3. Kırılgan mock'lar Yapay zeka her şeyi mock'lamayı sever. Bu iki soruna yol açar:

  • Mock yanlıştır. Gerçeklikle uyuşmayan, bir API'nin sahte bir versiyonunu taklit eder.
  • Mock uygulamayı dondurur. Nihai sonucu test etmek yerine, kodunuzun diğer fonksiyonları nasıl çağırdığını test eder.

Yapay zekayı doğru kullanma yolu:

"Niyeti" (intent) yapay zekanın erişemeyeceği bir yerde tutun.

  • Önce sözleşmeyi yazın. Her test için sade bir dille bir cümle yazın. Örnek: "Süresi dolmuş kodlar orijinal tutarı döndürmelidir."
  • Bu cümleleri yapay zekaya verin. Assertion'ları (doğrulamaları) yazmasına izin verin, ancak anlamı siz sağlayın.
  • Sınır noktalarında mock kullanın. Sadece harici API'leri veya veritabanlarını mock'layın. Kendi dahili modüllerinizin gerçek versiyonlarını kullanın.
  • Bir alan uç durumunu (domain edge case) elle yazın. Bir fonksiyonu her bitirdiğinizde, sizi korkutan o tek şeyi not edin. Bunu yapay zeka için bir istem (prompt) olarak kullanın.

Yapay zeka bir verimlilik aracıdır, düşünmenin yerini almaz. Testin gövdesini yazmak için kullanın, ancak testin ne için olduğunu asla ona bırakmayın.

Kaynak: https://dev.to/nazar_boyko/ai-for-test-generation-where-it-helps-and-where-it-lies-jhm

İsteğe bağlı öğrenme topluluğu: https://t.me/GyaanSetuAi