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

Yapay zeka hızlı test yazar. Ayrıca gerçekçi görünen ancak yanlış şeyleri doğrulayan testler de yazar.

Bir fonksiyonu yapay zekaya yapıştırırsınız. Otuz saniye sonra, geçen on iki testiniz olur. Kod kapsamı (coverage) skorunuz yükselir. Üretken hissedersiniz.

Sonra üretim ortamında (production) bir hata çıkar. O on iki teste bakarsınız ve hiçbirinin bu hatayı yakalayamayacağını fark edersiniz.

Yapay zeka kodunuzun ne yaptığını test etti, kodunuzun ne yapması gerektiğini değil.

Yapay zeka kullanışlıdır, ancak onu nasıl kullanacağınızı bilmelisiniz.

Yapay zekanın kazandığı yerler:

  • Setup ve teardown blokları gibi boilerplate (basmakalıp) kodlar üretmek.
  • Tekrarlayan factory yardımcıları ve veri nesneleri yazmak.
  • Tek bir iyi test deseninin birçok varyasyonunu oluşturmak.
  • null, boş dizeler veya sıfır gibi bariz uç durumları (edge cases) ele almak.

Yapay zekanın başarısız olduğu yerler:

  • Uygulama tabanlı testler: İş mantığı yerine kod yapısını takip eden testler yazar. Kodu refactor ederseniz, sonuç hala doğru olsa bile testler bozulur.
  • Yüzeysel uç durumlar: Bariz hataları bulur ancak alana özgü (domain-specific) hataları kaçırır. Saat dilimi tuhaflıklarınızı, veritabanı kısıtlamalarınızı veya özel iş kurallarınızı bilmez.
  • Kırılgan mock'lar: Gerçek kalması gereken dahili servisleri mock'lar. Bu, testlerin bakımını yavaşlatır ve refactor sırasında kolayca bozulmalarına neden olur.

"Test tiyatrosu" yaratmadan yapay zeka nasıl kullanılır:

  1. Önce kontratı tanımlayın. Testin neyi kanıtlaması gerektiğine dair düz bir dille bir cümle yazın. Örnek: "Süresi dolmuş bir kod, orijinal tutarı döndürmelidir."
  2. O cümleyi yapay zekaya verin. Kodu yapay zekanın yazmasına izin verin, ancak niyetin (intent) sahibi siz olmalısınız.
  3. Sadece sınırda (boundary) mock kullanın. Dahili modülleriniz için gerçek örnekler (instances) kullanın. Sadece harici API'leri veya veritabanlarını mock'layın.
  4. Bir tane alan (domain) uç durumunu elle yazın. Yapay zeka "bariz" uç durumları halleder. Siz ise asıl üretim ortamı vakalarına yol açan "gece saat 3" uç durumlarını halletmelisiniz.

Testin neyi doğrulayacağına yapay zekanın karar vermesine izin vermeyin. Kodu yazması için onu kullanın, ancak mantığı siz sağlayın.

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