Kazanimlar:
- Fonksiyonel, regresyon, uç durum ve çökme testi katmanlarını kavrayıp yapay zeka ile test senaryosu ve uç durum listesi üretebilme
- Yapay zeka ile otomatik test kodu yazıp log ve çökme analizinde örüntü çıkararak hata ayıklamayı hızlandırabilme
- Yapay zekanın hata teşhisinin kanıt değil hipotez olduğunu, nedenin logla ve tekrar üretimle kanıtlanması gerektiğini ve hata raporunun tekrar üretilebilir olmasının önemini kavrayabilme
Bir oyun yayınlandığında, oyuncular onu geliştiricinin hayal etmediği yollarla oynar: duvara sıkışır, envanteri sömürür, imkânsız yerlere ulaşır, çökme (crash) tetikler. Kalite güvence (QA — quality assurance); oyunu yayından önce sistematik olarak test edip hataları (bug), çökmeleri, dengesizlikleri ve kötü deneyimleri bulup düzeltme sürecidir. Bu, oyun üretiminin en emek yoğun ama en kritik halkalarından biridir. YZ, QA'yı birçok noktada hızlandırır: test senaryosu üretimi, hata raporu analizi, log (kayıt dosyası) inceleme, otomatik test kodu yazımı, hata ayıklama (debugging) ve tekrar üretim adımlarını netleştirme. Ama YZ bir insan test uzmanının sezgisini ve oyun hissini değerlendirmesini değiştirmez.
Bu ünitede YZ'yi QA ve hata ayıklamada nasıl kullanacağınızı; test senaryosu tasarımını, log analizini, otomatik test yazımını ve hata raporu disiplinini öğreneceksiniz.
QA'nın katmanları ve YZ'nin yeri
QA çok katmanlıdır. Fonksiyonel test: özellik çalışıyor mu (kapı açılıyor mu, kayıt yükleniyor mu). Regresyon testi: yeni değişiklik eski çalışan şeyi bozdu mu. Uç durum (edge case) testi: sıra dışı girdiler (envanteri sıfırla, aynı anda iki tuş, sınırdaki değerler). Performans/çökme testi: oyun kararlı mı. Oynanış/deneyim testi: eğlenceli mi, sezgisel mi. YZ ilk dördünde güçlüdür: senaryo üretir, uç durumları listeler, test kodu yazar, logları analiz eder. Sonuncusu — deneyim — insana aittir.
Adım adım QA akışı:
- Test senaryoları üret (YZ ile fonksiyonel ve uç durum listesi).
- Otomatik test yaz (tekrarlayan kontroller için kod).
- Çalıştır ve topla (hataları, logları, çökmeleri kaydet).
- Analiz et (YZ ile log ve hata örüntüsü incele).
- Raporla ve doğrula (net, tekrar üretilebilir hata raporu; düzeltmeyi test et).
İpucu: Uç durumları bulmak zordur çünkü tasarımcı kendi oyununu "doğru" oynar. YZ'ye "bir oyuncu bu sistemi kırmak isterse ne dener" diye sorun; sömürüleri (exploit) ve uç durumları listeletin.
Otomatik test: tekrarı makineye bırakmak
Her sürümde aynı şeyleri elle test etmek yorucu ve hataya açıktır. Otomatik test bu kontrolleri koda döker: bir fonksiyon her çağrıldığında doğru sonucu veriyor mu, bir sistem beklenen durumda mı. Unity ve Unreal test çerçeveleri sunar; YZ bu testleri yazmada hızlıdır. Özellikle regresyon için değerlidir: bir değişiklik eski çalışan bir şeyi bozarsa test kırmızıya döner. YZ'nin ürettiği testleri, gerçekten anlamlı şeyi kontrol ettiğinden emin olarak gözden geçirin — boş geçen test, testsizlikten kötüdür.
Dikkat: YZ hata ayıklamada bazen "olası neden" olarak uydurma bir açıklama üretir (halüsinasyon). Bir hatanın nedenini YZ söyledi diye kabul etmeyin; nedeni logla, tekrar üretimle ve testle kanıtlayın. Yanlış teşhis, doğru olanı bulmayı geciktirir.
Tekrar üretim: hata ayıklamanın kalbi
Bir hatayı düzeltmenin ilk şartı onu güvenilir biçimde tekrar üretebilmektir (reproduce). "Bazen oluyor" diye tarif edilen bir hata, düzeltilemez çünkü düzeltmenin işe yarayıp yaramadığını doğrulayamazsınız. Bu yüzden hata ayıklamanın en değerli işi, hatanın hangi tam koşullarda (hangi adımlar, hangi durum, hangi zamanlama) ortaya çıktığını daraltmaktır. YZ bu daraltmada yardımcı olur: belirtileri ve kısmi tekrar üretim adımlarını verip "bu davranışı tetikleyebilecek koşulları ve daraltma stratejisini öner" diyebilirsiniz. Ama daraltmayı gerçekte oyunu çalıştırarak siz yaparsınız; YZ hipotez üretir, siz elerdiniz.
Özellikle zamanlamaya bağlı (race condition) ve bellek durumuna bağlı hatalar sinsidir; bunlar yalnızca belirli bir sıra veya yükte ortaya çıkar. Bu tür hatalarda log'a zaman damgası ve durum bilgisi eklemek kritiktir; YZ bu zengin log'u analiz edip örüntüyü ("hata hep şu iki olay yakın zamanda gerçekleşince oluyor") görebilir. Hata ayıklamanın altın kuralını unutmayın: önce anla, sonra düzelt. Anlamadan yapılan düzeltme, hatayı gizler ama çözmez ve çoğu zaman başka bir yerde yeni bir hata doğurur.
Üç mini vaka
Vaka 1 — Uç durum avı. Bir RPG'de ekip, envanter sistemini "normal" oynayışta test edip sağlam sanıyordu. YZ'ye "bu envanteri kırmaya çalış" dedirtip 30 uç durum senaryosu ürettiler; bunlardan 4'ü gerçek hataydı (0 ağırlıkta eşya bölme, aynı anda kullan-at). Yayından önce düzeltildi.
Vaka 2 — Log analizi çökmeyi çözdü. Bir oyun rastgele çöküyordu; çökme loglari yüzlerce satırdı. YZ'ye loglar verilip örüntü sorulunca, çökmenin hep belirli bir sahne geçişinde ve düşük bellekte olduğu ortaya çıktı. Bu ipucuyla programcı bellek sızıntısını buldu; çökme oranı sıfıra indi.
Vaka 3 — Yanlış teşhisten dönüş. Bir programcı, YZ'nin "bu hata şu fonksiyondan kaynaklanıyor" açıklamasına güvenip yarım gün orayı kurcaladı; sonuç çıkmadı. Tekrar üretim adımlarını netleştirip logladığında hata bambaşka bir yerdeydi. Ders: YZ'nin teşhisi hipotezdir, kanıt değildir.
Dört kopyalanabilir şablon
1) Uç durum/sömürü senaryosu üretimi:
Rolün: kötü niyetli QA test uzmanı.Şu sistemi tarif ediyorum: [sistem, kuralları].Görev: bu sistemi kırmaya, sömürmeye veya beklenmedikduruma sokmaya çalışacak 20 uç durum senaryosu listele.Her biri için: ne denenir, beklenen sonuç, olası hata.
2) Otomatik test yazımı:
Motor: [Unity 2022.3 / Unreal 5.3]. Test çerçevesi: [belirt].Şu fonksiyon/sistem için otomatik testler yaz: [tanım/kod].Normal durum, sınır durum ve hatalı girdiyi kapsasın.Her testin gerçekten anlamlı bir şeyi doğruladığından eminol; boş/anlamsız test yazma.
3) Log/çökme analizi:
Aşağıda oyunun çökme/hata logları var: [log].Görev: tekrar eden örüntüleri, ortak koşulları (sahne,bellek, zamanlama) ve olası kök nedenleri işaretle.Her nedeni "kanıtlanmalı hipotez" olarak sun; kesin dillekonuşma. Nasıl doğrulayacağımı da söyle.
4) Hata raporu netleştirme:
Şu belirsiz hata raporunu net ve tekrar üretilebilir halegetir: [ham rapor]. Çıktı: başlık, adım adım tekrar üretim,beklenen sonuç, gerçek sonuç, sıklık, ortam. Eksik bilgivarsa hangi bilginin gerektiğini listele.
Zayıf prompt / Güçlü prompt
Zayıf prompt:
Oyunumda hata var, çöz.
Bağlam, log, tekrar üretim yok; YZ tahmin yürütür ve halüsinasyon riski yüksektir.
Güçlü prompt:
Unity 2022.3 oyunumda bir hata var: oyuncu hızlı kayıt-yüklemeyapınca envanter bazen ikiye katlanıyor. Tekrar üretim: [adımlar].İlgili kod: [yapıştır]. Log: [yapıştır].Görev: olası kök nedenleri kanıtlanmalı hipotez olarak sırala,her biri için nasıl doğrulayacağımı ve olası düzeltmeyi ver.Var olmayan neden uydurma; emin değilsen belirt.
Tekrar üretim, kod, log ve "hipotez olarak sun" talebi teşhisi güvenilir kılar.
QA katmanı tablosu
Katman
Neyi test eder
YZ katkısı
İnsan payı
Fonksiyonel
Özellik çalışıyor mu
Senaryo, test kodu
Kabul kararı
Regresyon
Eski şey bozuldu mu
Otomatik test
Kapsam kararı
Uç durum
Sıra dışı girdi
Senaryo üretimi
Öncelik
Çökme/performans
Kararlılık
Log analizi
Kök neden onayı
Deneyim
Eğlence, sezgi
Sınırlı
Tamamen insan
Sık yapılan hatalar
- Sadece "normal" oynayışı test etmek. Uç durumlar yayından sonra patlar.
- YZ teşhisini kanıt sanmak. Neden logla ve testle kanıtlanır.
- Boş otomatik test yazmak. Anlamsız test güven yanılsaması verir.
- Belirsiz hata raporu. Tekrar üretilemeyen hata düzeltilemez.
- Regresyon testini atlamak. Her düzeltme yeni hata doğurabilir.
Özetle
QA, oyunu oyuncuya hazır hale getiren disiplindir. YZ; uç durum senaryoları üretir, otomatik test yazar, log analiz eder ve hata raporlarını netleştirir. Ama teşhisleri hipotezdir, deneyim değerlendirmesi insana aittir ve her düzeltme tekrar test ister. "Bunu kim, nasıl kırar" refleksini YZ ile çoğaltın; kanıtı siz toplayın.
Uygulama görevi
Oyununuzdan bir sistem seçin. "Uç durum/sömürü senaryosu üretimi" şablonuyla 20 senaryo ürettirin ve en riskli 5'ini gerçekten test edin. Bulduğunuz bir hata için "Hata raporu netleştirme" şablonuyla tekrar üretilebilir bir rapor oluşturun.
Kontrol listesi
- [ ] "Bunu kim nasıl kırar" ile uç durum ürettim.
- [ ] Tekrarlayan kontroller için otomatik test yazdım ve gözden geçirdim.
- [ ] YZ teşhisini hipotez sayıp logla/testle kanıtladım.
- [ ] Hataları tekrar üretilebilir biçimde raporladım.
- [ ] Her düzeltmeyi regresyon açısından tekrar test ettim.