Unit 9 / 11

Jaminan Kualiti (QA), Penyahpepijatan dan Ujian Automatik

Keuntungan:

  • Keupayaan untuk memahami fungsi, regresi, kes tepi dan lapisan ujian ranap dan menghasilkan senario ujian dan senarai kes tepi dengan kecerdasan buatan
  • Keupayaan untuk mempercepatkan penyahpepijatan dengan menulis kod ujian automatik dengan kecerdasan buatan dan mengekstrak corak dalam analisis log dan ranap
  • Mampu memahami bahawa diagnosis ralat kecerdasan buatan bukanlah bukti tetapi hipotesis, puncanya mesti dibuktikan dengan log dan pembiakan, dan kepentingan laporan ralat boleh diterbitkan semula.

Apabila permainan dikeluarkan, pemain memainkannya dengan cara yang tidak dibayangkan oleh pembangun: tersepit di dinding, mengeksploitasi inventori, mencapai tempat yang mustahil, mencetuskan ranap. Jaminan kualiti (QA — jaminan kualiti); Ia adalah proses menguji permainan secara sistematik sebelum dikeluarkan dan mencari serta membetulkan ralat (pepijat), ranap, ketidakstabilan dan pengalaman buruk. Ini adalah salah satu pautan yang paling intensif buruh tetapi kritikal dalam pengeluaran permainan. AI mempercepatkan QA pada banyak perkara: penjanaan kes ujian, analisis laporan pepijat, semakan log, penulisan kod ujian automatik, penyahpepijatan dan menapis langkah pengeluaran. Tetapi AI tidak menggantikan gerak hati penguji manusia dan penilaian perasaan permainan.

Dalam unit ini anda akan belajar cara menggunakan AI dalam QA dan penyahpepijatan; Anda akan mempelajari reka bentuk senario ujian, analisis log, penulisan ujian automatik dan disiplin pelaporan ralat.

Lapisan QA dan tempat AI

QA adalah berbilang lapisan. Ujian fungsional: adakah ciri berfungsi (adakah pintu terbuka, lakukan beban rakaman). Ujian regresi: adakah perubahan baharu itu memecahkan perkara yang berfungsi sebelum ini? Ujian kes tepi: input luar biasa (set semula inventori, dua kekunci serentak, nilai sempadan). Ujian prestasi/ranap: adalah permainan yang stabil. Ujian permainan/pengalaman: menyeronokkan, intuitif. AI kukuh dalam empat yang pertama: menjana senario, menyenaraikan kes tepi, menulis kod ujian, menganalisis log. Yang terakhir-pengalaman-milik manusia.

Aliran QA langkah demi langkah:

  1. Hasilkan kes ujian (senarai kes fungsi dan tepi dengan AI).
  2. Tulis ujian automatik (kod untuk semakan berulang).
  3. Jalankan dan kumpulkan (ralat log, log, ranap).
  4. Analisis (periksa log dan corak ralat dengan AI).
  5. Laporkan dan sahkan (laporan pepijat yang jelas, boleh dihasilkan semula; pembetulan ujian).
Petunjuk: Sukar untuk mencari sarung tepi kerana pereka bentuk memainkan permainannya "betul." Tanya AI "apa yang pemain akan cuba jika mereka mahu memecahkan sistem ini?" Senaraikan eksploitasi dan kes kelebihan.

Ujian automatik: biarkan pengulangan kepada mesin

Menguji perkara yang sama secara manual dalam setiap keluaran adalah memenatkan dan terdedah kepada ralat. Ujian automatik meletakkan semakan ini ke dalam kod: adakah fungsi mengembalikan hasil yang betul setiap kali ia dipanggil, adalah sistem dalam keadaan yang dijangkakan. Rangka kerja ujian tawaran Unity dan Unreal; AI pantas menulis ujian ini. Ia amat berharga untuk regresi: jika perubahan memecahkan sesuatu yang berfungsi sebelum ini, ujian menjadi merah. Semak ujian yang dihasilkan oleh AI, pastikan mereka menyemak perkara yang benar-benar bermakna — ujian kosong lebih teruk daripada tiada ujian.

Awas: Dalam penyahpepijatan, AI kadangkala menghasilkan penjelasan yang dibuat-buat sebagai "kemungkinan punca" (halusinasi). Jangan terima punca pepijat hanya kerana AI memberitahu anda demikian; Buktikan puncanya dengan mengecat, menghasilkan semula dan menguji. Diagnosis salah melambatkan mencari yang betul.

Pengeluaran semula: jantung penyahpepijatan

Keperluan pertama untuk membetulkan pepijat adalah untuk menghasilkan semula dengan pasti. Pepijat yang diterangkan sebagai "kadangkala berlaku" tidak boleh dibetulkan kerana anda tidak boleh mengesahkan sama ada pembetulan itu berjaya. Oleh itu, kerja penyahpepijatan yang paling berharga adalah mengecilkan keadaan tepat di mana pepijat berlaku (langkah mana, situasi mana, masa apa). AI membantu mengecilkan perkara ini: anda boleh memberikan simptom dan langkah pembiakan separa dan berkata "cadangkan keadaan dan strategi penyempitan yang mungkin mencetuskan gelagat ini." Tetapi anda sebenarnya melakukan penyempitan dengan menjalankan permainan; AI menjana hipotesis, anda menghapuskannya.

Terutamanya ralat berkaitan masa (keadaan perlumbaan) dan keadaan ingatan adalah berbahaya; ini hanya berlaku dalam urutan atau beban tertentu. Untuk ralat sedemikian, adalah penting untuk menambah cap masa dan maklumat status pada log; AI boleh menganalisis log kaya ini dan melihat corak ("ralat sentiasa berlaku apabila kedua-dua peristiwa ini berlaku baru-baru ini"). Ingat peraturan emas penyahpepijatan: fahami dahulu, kemudian betulkan. Pembetulan tanpa pemahaman menyembunyikan ralat tetapi tidak menyelesaikannya dan sering mencipta ralat baru di tempat lain.

tiga kes mini

Kes 1 — Memburu kes tepi. Dalam RPG, pasukan itu menguji sistem inventori dalam permainan "biasa" dan menganggapnya kukuh. Mereka berkata AI "cuba pecahkan inventori ini" dan menjana 30 senario kes tepi; 4 daripada ini adalah ralat benar (0 pemisahan item berat, boleh guna serentak). Dibetulkan sebelum diterbitkan.

Kes 2 — Analisis log menyelesaikan ranap sistem. Permainan telah ranap secara rawak; log ranap adalah beratus-ratus baris. Apabila AI diberikan log dan meminta corak, ia telah mendedahkan bahawa ranap itu sentiasa berlaku pada peralihan adegan tertentu dan memori rendah. Dengan petunjuk ini, pengaturcara mendapati kebocoran memori; Kadar kemalangan menurun kepada sifar.

Kes 3 — Pulangan daripada salah diagnosis. Seorang pengaturcara mempercayai penjelasan AI bahawa "ralat ini disebabkan oleh fungsi ini" dan bermain-main dengannya selama setengah hari; tiada keputusan yang keluar. Apabila dia menjelaskan dan mencatat langkah pengeluaran sekali lagi, ralat itu berada di tempat yang sama sekali berbeza. Pengajaran: Diagnostik AI adalah hipotesis, bukan bukti.

Empat templat yang boleh disalin

1) Penjanaan senario kes tepi/eksploitasi:

Peranan anda: penguji QA berniat jahat. Saya menerangkan sistem berikut: [sistem, peraturan]. Tugasan: senaraikan 20 senario kes tepi yang akan cuba memecahkan, mengeksploitasi atau membuang sistem ini ke dalam keadaan yang tidak dijangka. Untuk setiap: perkara yang perlu dicuba, hasil yang dijangkakan, kemungkinan ralat.

2) Penulisan ujian automatik:

Enjin: [Unity 2022.3 / Unreal 5.3]. Rangka kerja ujian: [nyatakan].Tulis ujian automatik untuk fungsi/sistem berikut: [perihalan/kod].Sertakan kes biasa, kes had dan input yang rosak. Pastikan setiap ujian mengesahkan sesuatu yang benar-benar bermakna; Menulis ujian kosong/tidak bermakna.

3) Analisis log/ranap sistem:

Di bawah ialah log ranap/ralat permainan: [log].Tugas: tandai corak berulang, keadaan biasa (adegan, ingatan, masa) dan punca punca yang mungkin. Kemukakan setiap sebab sebagai "hipotesis untuk dibuktikan"; bercakap dengan jelas. Juga beritahu saya cara untuk mengesahkan.

4) Penjelasan laporan pepijat:

Jadikan laporan ralat samar-samar berikut jelas dan boleh dihasilkan semula: [laporan mentah]. Output: tajuk, pembiakan langkah demi langkah, hasil yang dijangka, hasil sebenar, kekerapan, persekitaran. Jika terdapat maklumat yang hilang, senaraikan maklumat yang diperlukan.

Gesaan lemah / Gesaan kuat

Gesaan yang lemah:

Terdapat pepijat dalam permainan saya, betulkan.

Tiada konteks, tiada log, tiada pembiakan; AI bersifat ramalan dan risiko halusinasi adalah tinggi.

Gesaan kuat:

Terdapat pepijat dalam permainan Unity 2022.3 saya: inventori kadangkala meningkat dua kali ganda apabila pemain melakukan beban simpan pantas. Pembiakan: [langkah].Kod berkaitan: [tampal]. Log: [tampal].Tugas: senaraikan kemungkinan punca sebagai hipotesis yang perlu dibuktikan, berikan cara untuk mengesahkan dan kemungkinan pembetulan bagi setiap satu. Buat sebab yang tidak wujud; Jika anda tidak pasti, beritahu saya.

Pengeluaran semula, kod, log dan permintaan "sediakan sebagai hipotesis" menjadikan diagnosis boleh dipercayai.

Jadual lapisan QA

lapisan

Apa yang diuji?

Sumbangan AI

bahagian manusia

berfungsi

Adakah ciri ini berfungsi?

Skrip, kod ujian

Keputusan kemasukan

regresi

Adakah perkara lama rosak?

ujian automatik

Keputusan skop

kes melampau

input luar biasa

Penghasilan skrip

keutamaan

Ranap/prestasi

keazaman

Analisis log

Pengesahan punca punca

Pengalaman

hiburan, intuisi

terhad

manusia sepenuhnya

Kesilapan biasa

  • Hanya menguji permainan "biasa". Kes tepi meletup selepas dikeluarkan.
  • Tersilap diagnosis AI sebagai bukti. Mengapa dibuktikan dengan log dan ujian.
  • Menulis ujian automatik kosong. Ujian yang tidak bermakna memberikan ilusi keyakinan.
  • Laporan pepijat yang tidak jelas. Ralat yang tidak boleh dibuat semula tidak boleh dibetulkan.
  • Melangkau ujian regresi. Setiap pembetulan boleh menyebabkan ralat baharu.

Secara ringkasnya

QA ialah disiplin yang menyediakan permainan untuk pemain. AI; menjana senario kes kelebihan, menulis ujian automatik, menganalisis log dan menjelaskan laporan ralat. Tetapi diagnosis mereka adalah hipotesis, penilaian pengalaman adalah manusia, dan setiap pembetulan memerlukan ujian semula. Replikasi refleks "siapa yang boleh memecahkan ini dan bagaimana" dengan AI; Awak kumpul bukti.

Tugasan permohonan

Pilih sistem daripada permainan anda. Buat 20 senario dengan templat "kes tepi/penjanaan senario eksploitasi" dan sebenarnya menguji 5 yang paling berisiko. Buat laporan yang boleh diterbitkan semula untuk pepijat yang anda temui dengan templat "Penambahan laporan pepijat".

senarai semak

  • [ ] Saya mencipta kes tepi dengan "Siapa yang boleh memecahkan ini dan bagaimana?"
  • [ ] Menulis dan menyemak ujian automatik untuk semakan berulang.
  • [ ] Saya menganggap diagnosis AI sebagai hipotesis dan membuktikannya dengan log/ujian.
  • [ ] Saya melaporkan ralat secara berulang.
  • [ ] Saya menguji semula setiap pembetulan untuk regresi.