Yunit 9 / 11

Quality Assurance (QA), Debugging at Automated Testing

Mga nadagdag:

  • Kakayahang maunawaan ang functional, regression, edge case at crash test layer at gumawa ng mga test scenario at edge case list na may artificial intelligence
  • Kakayahang mapabilis ang pag-debug sa pamamagitan ng pagsusulat ng awtomatikong test code na may artificial intelligence at pag-extract ng mga pattern sa log at crash analysis
  • Ang kakayahang maunawaan na ang error diagnosis ng artificial intelligence ay hindi katibayan ngunit hypothesis, ang dahilan ay dapat mapatunayan sa mga log at reproduction, at ang kahalagahan ng error na ulat ay maaaring kopyahin.

Kapag inilabas ang isang laro, nilalaro ito ng mga manlalaro sa mga paraang hindi naisip ng developer: natigil sa mga pader, pagsasamantala sa imbentaryo, pag-abot sa mga imposibleng lugar, pag-trigger ng mga pag-crash. Quality assurance (QA — quality assurance); Ito ay ang proseso ng sistematikong pagsubok sa laro bago ilabas at paghahanap at pag-aayos ng mga error (mga bug), pag-crash, kawalang-tatag at masamang karanasan. Ito ay isa sa mga pinaka-labor-intensive ngunit kritikal na mga link sa produksyon ng laro. Pinapabilis ng AI ang QA sa maraming punto: pagbuo ng test case, pagsusuri sa ulat ng bug, pagsusuri sa log, awtomatikong pagsusulat ng code ng pagsubok, pag-debug, at pagpino ng mga hakbang sa produksyon. Ngunit hindi pinapalitan ng AI ang intuwisyon at pagsusuri ng isang human tester sa pakiramdam ng laro.

Sa unit na ito matututunan mo kung paano gamitin ang AI sa QA at pag-debug; Matututuhan mo ang disenyo ng senaryo ng pagsubok, pagsusuri ng log, awtomatikong pagsulat ng pagsubok at disiplina sa pag-uulat ng error.

Mga layer ng QA at lugar ng AI

Ang QA ay multi-layered. Functional testing: gumagana ba ang feature (nagbubukas ba ang pinto, nag-load ng recording). Pagsusuri ng regression: sinira ba ng bagong pagbabago ang gumagana noon? Pagsubok sa Edge case: hindi pangkaraniwang mga input (i-reset ang imbentaryo, dalawang key nang sabay-sabay, mga halaga ng borderline). Pagsubok sa pagganap/pag-crash: ang laro ay matatag. Gameplay/experience test: masaya, intuitive. Malakas ang AI sa unang apat: pagbuo ng mga senaryo, paglilista ng mga edge case, pagsusulat ng test code, pagsusuri ng mga log. Ang huling—karanasan—ay sa tao.

Hakbang-hakbang na daloy ng QA:

  1. Bumuo ng mga test case (functional at edge case list na may AI).
  2. Sumulat ng awtomatikong pagsubok (code para sa mga paulit-ulit na pagsusuri).
  3. Patakbuhin at mangolekta (mga error sa pag-log, log, pag-crash).
  4. Pag-aralan (suriin ang log at pattern ng error gamit ang AI).
  5. Iulat at i-verify (malinaw, maaaring kopyahin ang ulat ng bug; pagsubok na ayusin).
Hint: Mahirap maghanap ng mga edge case dahil "tama" ang laro ng taga-disenyo. Tanungin ang AI "ano ang susubukan ng isang manlalaro kung gusto nilang sirain ang sistemang ito?" Maglista ng mga pagsasamantala at edge case.

Awtomatikong pagsubok: iwanan ang pag-uulit sa makina

Ang manu-manong pagsubok sa parehong mga bagay sa bawat release ay nakakapagod at madaling magkamali. Inilalagay ng awtomatikong pagsubok ang mga pagsusuring ito sa code: ang isang function ba ay nagbabalik ng tamang resulta sa tuwing ito ay tinatawag, ay isang sistema sa inaasahang estado. Mga framework ng pagsubok sa alok ng Unity at Unreal; Ang AI ay mabilis sa pagsulat ng mga pagsubok na ito. Ito ay lalong mahalaga para sa regression: kung ang isang pagbabago ay masira ang isang bagay na gumagana noon, ang pagsubok ay magiging pula. Suriin ang mga pagsubok na ginagawa ng AI, siguraduhing sinusuri nila kung ano ang tunay na makabuluhan — ang isang blangkong pagsubok ay mas masahol kaysa sa walang pagsubok.

Pag-iingat: Sa pag-debug, minsan ay gumagawa ang AI ng isang gawa-gawang paliwanag bilang isang "probable cause" (hallucination). Huwag tanggapin ang sanhi ng isang bug dahil lang sinabi sa iyo ito ng AI; Patunayan ang dahilan sa pamamagitan ng pag-log, pagpaparami, at pagsubok. Ang maling diagnosis ay nakakaantala sa paghahanap ng tama.

Pagpaparami: ang puso ng pag-debug

Ang unang kinakailangan upang ayusin ang isang bug ay ang pagpaparami nito nang mapagkakatiwalaan. Ang isang bug na inilarawan bilang "nangyayari minsan" ay hindi maaaring ayusin dahil hindi mo ma-verify kung ang pag-aayos ay gumana. Kaya't ang pinakamahalagang gawain ng pag-debug ay ang pagpapaliit sa eksaktong mga kondisyon kung saan nangyayari ang bug (aling mga hakbang, aling sitwasyon, anong timing). Tinutulungan ng AI na paliitin ito: maaari mong ibigay ang mga sintomas at bahagyang mga hakbang sa pagpaparami at sabihin ang "magmungkahi ng mga kundisyon at diskarte sa pagpapaliit na maaaring mag-trigger ng gawi na ito." Ngunit talagang ginagawa mo ang pagpapaliit sa pamamagitan ng pagpapatakbo ng laro; Bumubuo ang AI ng mga hypotheses, inaalis mo ang mga ito.

Lalo na ang mga error na may kaugnayan sa timing (kondisyon ng lahi) at memory state-related ay mapanlinlang; nangyayari lamang ang mga ito sa isang partikular na pagkakasunod-sunod o pagkarga. Para sa mga ganitong error, kritikal na magdagdag ng timestamp at impormasyon ng status sa log; Maaaring suriin ng AI ang rich log na ito at makita ang pattern ("laging nangyayari ang error kapag nangyari ang dalawang kaganapang ito kamakailan"). Tandaan ang ginintuang tuntunin ng pag-debug: unawain muna, pagkatapos ay ayusin. Itinatago ng pagwawasto nang walang pag-unawa ang error ngunit hindi ito nilulutas at madalas na lumilikha ng bagong error sa ibang lugar.

tatlong mini case

Case 1 — Pangangaso ng Edge case. Sa isang RPG, sinubukan ng koponan ang sistema ng imbentaryo sa "normal" na gameplay at naisip na ito ay solid. Sinabi nila ang AI na "subukang basagin ang imbentaryo na ito" at nakabuo ng 30 gilid na mga sitwasyon ng kaso; 4 sa mga ito ay totoong mga error (0 weight item splitting, sabay-sabay na disposable). Itinama bago ilathala.

Kaso 2 — Nalutas ng pagtatasa ng log ang pag-crash. Ang isang laro ay random na nag-crash; daan-daang linya ang mga crash log. Nang ang AI ay binigyan ng mga log at humingi ng pattern, ipinahayag na ang pag-crash ay palaging nangyayari sa isang partikular na paglipat ng eksena at mababang memorya. Sa pahiwatig na ito, natagpuan ng programmer ang pagtagas ng memorya; Bumaba sa zero ang rate ng pag-crash.

Kaso 3 — Bumalik mula sa maling pagsusuri. Isang programmer ang nagtiwala sa paliwanag ng AI na "ang error na ito ay sanhi ng function na ito" at pinag-aralan ito sa loob ng kalahating araw; walang lumabas na resulta. Nang linawin at i-log niya muli ang mga hakbang sa produksyon, ang error ay nasa ibang lugar. Aralin: Ang mga diagnostic ng AI ay mga hypotheses, hindi patunay.

Apat na maaaring kopyahin na mga template

1) Pagbuo ng senaryo ng Edge case/exploitation:

Ang iyong tungkulin: malisyosong QA tester. Inilalarawan ko ang sumusunod na sistema: [system, rules]. Gawain: maglista ng 20 edge case scenario na susubukang sirain, pagsamantalahan, o itapon ang system na ito sa hindi inaasahang kalagayan. Para sa bawat isa: kung ano ang susubukan, inaasahang resulta, posibleng pagkakamali.

2) Automated test writing:

Engine: [Unity 2022.3 / Unreal 5.3]. Framework ng pagsubok: [tukuyin]. Sumulat ng mga automated na pagsubok para sa sumusunod na function/system: [paglalarawan/code]. Isama ang normal na case, limitahan ang case, at faulty input. Siguraduhin na ang bawat pagsubok ay nagve-verify ng isang bagay na tunay na makabuluhan; Pagsusulat ng walang laman/walang kahulugan na mga pagsubok.

3) Pagsusuri ng log/crash:

Nasa ibaba ang mga tala ng pag-crash/error ng laro: [log].Gawain: markahan ang mga umuulit na pattern, mga karaniwang kundisyon (eksena, memorya, timing), at posibleng mga sanhi. magsalita ng malinaw. Sabihin mo rin kung paano mag-verify.

4) Paglilinaw ng ulat ng bug:

Gawing malinaw at maaaring kopyahin ang sumusunod na hindi malinaw na ulat ng error: [raw report]. Output: pamagat, step-by-step na pagpaparami, inaasahang resulta, aktwal na resulta, dalas, kapaligiran. Kung may nawawalang impormasyon, ilista kung anong impormasyon ang kailangan.

Mahinang prompt / Malakas na prompt

Mahinang prompt:

May bug sa laro ko, ayusin mo.

Walang konteksto, walang log, walang pagpaparami; Ang AI ay predictive at ang panganib ng mga guni-guni ay mataas.

Napakahusay na prompt:

May bug sa aking Unity 2022.3 na laro: ang imbentaryo minsan ay dumodoble kapag ang player ay nagsagawa ng mabilis na pag-save-load. Pagpaparami: [steps]. Kaugnay na code: [paste]. Log: [i-paste].Gawain: ilista ang mga posibleng ugat bilang mga hypotheses na mapapatunayan, ibigay kung paano i-verify at posibleng ayusin para sa bawat isa. Bumuo ng hindi umiiral na dahilan; Kung hindi ka sigurado, ipaalam sa akin.

Ang pag-reproduction, code, log at "present as hypothesis" na kahilingan ay ginagawang maaasahan ang diagnosis.

QA layer table

layer

Ano ang sinusubok nito?

kontribusyon ng AI

bahagi ng tao

functional

Gumagana ba ang feature?

Script, test code

Desisyon sa pagpasok

regression

Nasira ba ang lumang bagay?

awtomatikong pagsubok

Pagpapasya sa saklaw

matinding kaso

hindi pangkaraniwang input

Paggawa ng script

priority

Pag-crash/pagganap

pagpapasiya

Pagsusuri ng log

Root cause confirmation

karanasan

libangan, intuwisyon

limitado

ganap na tao

Mga karaniwang pagkakamali

  • Sinusubukan lang ang "normal" na gameplay. Ang mga kaso ng gilid ay sumasabog pagkatapos ilabas.
  • Napagkakamalang patunay ang AI diagnosis. Bakit napatunayan sa pamamagitan ng pag-log at pagsubok.
  • Pagsusulat ng mga walang laman na awtomatikong pagsubok. Ang walang kabuluhang pagsubok ay nagbibigay ng ilusyon ng kumpiyansa.
  • Malabong ulat ng bug. Ang isang error na hindi maaaring kopyahin ay hindi maaaring itama.
  • Nilaktawan ang pagsubok ng regression. Ang bawat pagwawasto ay maaaring magdulot ng mga bagong error.

Sa buod

Ang QA ay ang disiplina na ginagawang handa ang laro para sa manlalaro. AI; bumubuo ng mga edge case scenario, nagsusulat ng mga automated na pagsubok, nagsusuri ng mga log at nililinaw ang mga ulat ng error. Ngunit ang kanilang mga diagnosis ay mga hypotheses, ang pagsusuri ng karanasan ay tao, at bawat pagwawasto ay nangangailangan ng muling pagsusuri. Gayahin ang "sino ang makakasira nito at kung paano" reflex gamit ang AI; Kinokolekta mo ang ebidensya.

Gawain ng aplikasyon

Pumili ng system mula sa iyong laro. Gumawa ng 20 senaryo gamit ang template na "edge case/exploitation scenario generation" at aktwal na subukan ang 5 pinakamapanganib. Gumawa ng reproducible na ulat para sa isang bug na makikita mo gamit ang template na "Pagpipino ng ulat ng bug."

checklist

  • [ ] Gumawa ako ng edge case na may "Sino ang makakasira nito at paano?"
  • [ ] Sumulat at nagsuri ng awtomatikong pagsubok para sa mga umuulit na pagsusuri.
  • [ ] Itinuring ko ang AI ​​diagnosis bilang hypothesis at pinatunayan ko ito sa log/test.
  • [ ] Nag-ulat ako ng mga error nang paulit-ulit.
  • [ ] Sinuri ko muli ang bawat pag-aayos para sa regression.