›_ ebskola.lv
← 5.4 5.6 →

5.5 Spēles testēšana, atkļūdošana un publicēšana

Stundas uzdevums: Veikt pilnu spēles testēšanas ciklu, dokumentēt kļūdas, ieviest labojumus un sagatavot projektu publicēšanai bez acīmredzamiem tehniskiem šķēršļiem.

SR 1.3.3. Dizaina risinājuma īstenošana SR 1.4.2. Testēšana un pilnveide SR 2.6.1. Programmas strukturēšana SR 5.2.4. Sadarbība un atgriezeniskā saite SR 1.1.3. Materiālu, ierīču un programmvadāmu rīku izvēle SR 1.4.3. Vērtēšana un pamatota atgriezeniskā saite

70 min darba sadalījums: 1. uzdevums (~20 min) - atjauno teorijas piemēru vai minimālo prototipu; 2. uzdevums (~25 min) - pielieto to galvenajā uzdevumā; 3. uzdevums (~25 min) - pārbaudi rezultātu, izlabo kļūdas un tikai beigās pieraksti vienu secinājumu. Papildus/4. līmeņa uzdevums ir paredzēts tikai tad, ja pamatdarbs ir pabeigts.

Pirms sāc: izmanto iepriekš apgūto un šīs lapas teorijas/koda piemērus. Ja vajadzīga jauna komanda vai rīks, vispirms atrodi tās paraugu teorijas sadaļā.

Teorija: testēšana ir pierādījums, nevis minējums

Spēle nav gatava tikai tāpēc, ka tā vienreiz nostrādāja autora datorā. Testēšana nozīmē pārbaudīt paredzamās darbības, robežgadījumus un citu lietotāju pieredzi. Jo precīzāk pieraksti kļūdu, jo ātrāk vari atrast tās cēloni.

function parbauditSadursmi(speletajs, skerslis) {
  return speletajs.x < skerslis.x + skerslis.w &&
         speletajs.x + speletajs.w > skerslis.x &&
         speletajs.y < skerslis.y + skerslis.h &&
         speletajs.y + speletajs.h > skerslis.y;
}
Testē šo funkciju ar parastu sadursmi, malu pieskārienu un situāciju bez sadursmes.

Labs kļūdas pieraksts satur četras daļas: kas notika, kā to atkārtot, ko gaidīji un kādā failā vai funkcijā problēma, visticamāk, atrodas.

Praktiskie uzdevumi

1. uzdevums - Iesildies ar gatavu piemēru

Šis ir īss iesildīšanās uzdevums. Nokopē sagatavi, ielīmē to pareizajā koda vietā un palaid. Šeit pietiek droši izmēģināt tēmu 5.5 Spēles testēšana, atkļūdošana un publicēšana; detalizētu izpratni veidosi nākamajos uzdevumos.

Kopējamais piemērs vai sagatave: izmanto šo bloku kā starta punktu, nevis kā gala risinājumu.

function parbauditSadursmi(speletajs, skerslis) {
  return speletajs.x < skerslis.x + skerslis.w &&
         speletajs.x + speletajs.w > skerslis.x &&
         speletajs.y < skerslis.y + skerslis.h &&
         speletajs.y + speletajs.h > skerslis.y;
}
  1. Atver darba failu vai rīku. JavaScript fragmentu ievieto script.js failā vai lapas esošajā skripta daļā.
  2. Nokopē visu piemēra bloku no šī uzdevuma un ielīmē to norādītajā vietā.
  3. Palaid kodu tieši tādu, kāds tas ir, un pārliecinies, ka parādās rezultāts, izvade vai vismaz nav kļūdas paziņojuma.
  4. Atrodi vienu drošu vietu, ko drīkst mainīt: tekstu, skaitli, krāsu, mainīgā vērtību vai testa ierakstu.
  5. Maini tikai šo vienu vērtību un palaid kodu vēlreiz.
  6. Salīdzini rezultātu pirms un pēc izmaiņas. Ja parādās kļūda, atcel pēdējo izmaiņu un palaid vēlreiz.
  7. Turpini pie 2. uzdevuma tikai tad, kad šis mazais piemērs darbojas.

2. uzdevums: Biedru beta tests un kļūdu labošana kodā

Pārvērt biedra novērojumus par konkrētiem labojumiem savā HTML un JavaScript kodā.

  1. Nodod peli un tastatūru klasesbiedram. Nepalīdzi un nekomentē, kamēr viņš spēlē.
  2. Pieraksti tabulā katru kļūdu un tās vietu kodā, piem.: poga #start nereaģē, funkcija updateScore() nerāda punktus.
  3. Sašķiro atsauksmes trīs grupās: kritiska, lietojamība, nākotnei.
  4. Izlabo vienu kritisku kļūdu - piemēram, pievieno pogai skaidru tekstu:
    <button id="start">Sākt spēli</button>
  5. Pievieno īsu pamācību virs spēles, lai biedram nav jāmin:
    <p class="hint">Spied "Sākt", lai sāktu. Kustini ar bultiņām.</p>
  6. Veic commit ar konkrētu ziņu, piem., "Fix unclear start button label".

Pārbaudi: palūdz citam biedram izmēģināt spēli vēlreiz - vai viņš tagad saprot, kā sākt, bez tava paskaidrojuma?

3. uzdevums - Veic pilnu testa ciklu

Pārbaudi spēles darbību sistemātiski un pieraksti kļūdas.

  1. Izveido testa tabulu (papīrā vai tekstā) ar kolonnām: ko pārbaudi, ko gaidīji, kas notika, statusu.
  2. Pārbaudi normālu spēles kārtu: sāc → kustini → sadursme → beigas → restarts.
  3. Pārbaudi robežgadījumu: nospied "Sākt" divreiz ātri - vai spēle nepaātrinās?
  4. Pārbaudi kļūdainu darbību: aizver un atver pārlūka cilni spēles vidū - vai spēle atjaunojas saprātīgi?
  5. Salabo vienu kļūdu no testa tabulas - pieraksti, kurā failā un funkcijā bija problēma.
  6. Pārbaudi labojumu vēlreiz ar to pašu testa scenāriju.
  7. Pieraksti vienu secinājumu: kāda ir atšķirība starp "spēle darbojas" un "spēle ir notestēta".

Papildu uzdevums - Koda tīrīšana un publicēšanas sagatavošana

Ja pamatdarbs ir pabeigts, sagatavojiet projektu nodošanai.

  1. Atver script.js un nodzēs visus console.log() izsaukumus, kas nav nepieciešami galaversijā.
  2. Pārbaudī, ka visi funkciju nosaukumi ir saprotami latviski vai angliski (ne aaa() vai temp()).
  3. Pārbaudi DevTools → "Console" uz publicēšanas versijas - nav jābūt kļūdas ziņojumiem.
  4. Pārbaudi spēli uz mobilā ekrāna izmēra: DevTools → toggle device toolbar (Ctrl+Shift+M).
  5. Salabo vismaz vienu vizuālu problēmu mazā ekrānā.
  6. Veic git commit -m "Clean up console logs and fix mobile view" un git push.
  7. Atver GitHub Pages saiti un pārbaudi, ka publicētā versija darbojas bez kļūdām.

Biežākās kļūdas (un kā tās labot)

Nodošanas pierādījumi

Vērtēšanas kritēriji (SLA)

Kritēriji Sācis apgūt (1-3) Turpina apgūt (4-6) Apguvis (7-8) Apguvis padziļināti (9-10)
Testēšana un kļūdu novēršana (5.2.4.) Spēlei ir kritiskas kļūdas, kas traucē tās pabeigšanu. Atgriezeniskā saite netiek ņemta vērā. Lielākā daļa kļūdu ir novērsta, taču "edge case" situācijās spēle mēdz uzkārties vai darboties neloģiski. Spēle ir stabila. Novērstas gan loģiskās, gan vizuālās kļūdas, pamatojoties uz testēšanas rezultātiem. Projekts ir perfekti noslīpēts. Ieviesta kļūdu apstrāde un lietotāja pieredze ir plūdena un intuitīva.
Koda kvalitāte un optimizācija (1.3.3.) Kods ir grūti lasāms, satur daudz lieku rindu un netīru struktūru. Kods ir funkcionāls, bet trūkst komentāru un nosaukumu konsekvences. Kods ir tīrs, labi strukturēts un papildināts ar jēgpilniem komentāriem. Kods atbilst profesionāliem standartiem. Izmantotas funkcijas, lai novērstu dublēšanos (DRY princips).

Pašpārbaudes saraksts

⬅ Iepriekšējā stunda Nākamā stunda ➡