Testing //Quiz-program

Om du er interessert i å lese om hva som gikk bra og hva som gikk mindre bra under programmeringen, fortsetter du å lese dette innlegget.

Funksjonene Start, Fasit, taPaNytt, taPaNytt2, tilbake, hjelp og tilbakeHjelp krevde svært lite koding og testing. De er består kun av gotoAndStop(), de gjør ikke annet enn å hoppe til en annen frame.

Jeg var usikker på om tilbake-funksjonen (som går fra «fasit-siden» til «resultat-siden») ville huske verdien til variabelen poeng, slik at resultatet kunne hentes ut på nytt om ønskelig. Jeg ble imidlertid gledelig overrasket da jeg testet funksjonen, og så at dette fungerte som ønsket.

Neste er en mye mer avansert funksjon, og krevde testing av flere faktorer.

  1. Gjøre ingenting om ikke et svaraternativ er valgt.
  2. Sjekke om riktig svar er valgt, og i så fall legge til et poeng.
  3. Generere nytt spørsmål og svaralternativer.
  4. Gå videre til resultatsiden etter siste spørsmål.

1. Fungerte greit ved første testing, ingen problemer med dette ble oppdaget under resten av jobbingen med programmet heller.

2. Etter noe tenking fant jeg ut at jeg burde ha en egen array med svaralternativene for å få til denne funksjonen på en enkel måte.

    if(group.selection.label == tabKorrekt[spørsmålNummer]) {
poeng++;
txtBox.text = String(poeng); }

Tracet variabelen poeng slik at jeg kunne sjekke om riktig poeng ble ført mens quizen ble tatt. Oppdaget etter hvert at for et av spørsmålene fikk man ikke poeng for riktig svar, men feilen var i arrayen. Hadde rett og slett skrevet indeksnummeret til feil svaralternativ i tabellen. Gikk over resten av spørsmålene og fant ingen flere feil.

3. Til å begynne med hadde jeg svaralternativene i egne tekstbokser ved siden av radioknappene, men fikk ikke da helt til å oppdatere de slik som de skulle. Fjernet tekstboksene og satte labelen til radioknappene lik svaralternativene, og da funket det.

Oppdaget at når nytt spørsmål ble generert, var valget av radio button fra tidligere bevart. Ønsket at de skulle være helt blanke, og hadde litt problemer med å få til dette. Prøvde å sette de til false og null, men fikk ikke dette til å fungere. Løsningen ble at jeg satte inn en fjerde radio button som står utenfor visingsområdet. Satte den til true inne i if/else-setningen som genererer nye spørsmål og svaralternativer. Dette fungerte ved testing.

4. Å få programmet til å gå til resultatsiden gjorde jeg ved bruk av ovennevnte if/else-setning. Om spørsmålsnummeret var høyere enn lengden på tabellen med spørsmålene, ble gotoAndStop(3) kjørt. Fungerte som ønsket.

Funksjonen resultat slet jeg mere med. Den var i en ny frame, så hvordan skulle jeg få med meg verdien til variabelen som telte poengene? Etter å ha prøvd og feilet en stund fikk jeg tips om å lage en tekstboks der poengene kunne skrives ut underveis. Med denne tekstboksen i både frame 2 og 3 fikk jeg med tallet jeg ville ha. Men nå var det blitt String, og man kan jo ikke bare regne med tekst. Så når jeg prøvde å skrive ut en tekst for 5 < poeng < 8 virket det som at if/else setningen ikke ble kjørt. Endte opp med en tungvint metode hvor jeg har en else if for hvert poeng alternativ. Var nok ikke den optimale løsningen, men den funker.

Den siste funksjonen er mail-funksjonen. Den føler jeg fortsatt ikke at jeg har fått testet godt nok, skulle gjerne sett hvordan teksten ble seende ut på mail. Fikk tracet meldingen greit, men der vistes så klart &body= og %0D%0A. Satser på at funksjonen fungerer som den skal, den er så og si kopiert fra et eksempel i læreboka, så det burde ikke være store feil i hvert fall.

I forhold til forrige programmeringsoppgave vi fikk (kassasystem) syns jeg denne gikk mye greiere. Det jeg lærte om bruk av arrays i den oppgaven fikk jeg god bruk for her, og jeg oppdaget hvor nyttig det er å anvende arrays.
Det har vært gøy å arbeide med denne quizen, og jeg ser fram til neste oppgave i søken etter å bli flink til å programmere.

//Heggvoll

Advertisements

Klasser og funkjsoner //Quiz-program

Quiz-programmet er snart ferdig, så da er det på tide å dokumentere arbeidet.
Jeg har valgt å ha alle spørsmålene i en frame for enkelhetsskyld, så jeg slapp å lage en ny frame for hvert spørsmål. Det er ti spørsmål i quizen, så jeg er fornøyd med det valget. Koden er naturligvis rettet etter dette valget.

Klasser:
Spørsmålene, svaralternativene og de riktige svarene er arrangert i Arrays. Ved hjelp av en variabel som holder styr på spørsmålsnummeret genereres spørsmål og svaralternativer med indexnr lik spørsmålsnummeret inn i framen.

Klassen String er brukt ved input og output av tekst i quizen. Spesielt mye brukt når resultatet skal vises og sendes på e-mail.

Funksjoner:
Programmet har 8 egendefinerte funksjoner, som er koblet opp til knapper:

Start er eneste funksjon i frame 1. Når knappen btnStart trykkes på sender funksjonen brukeren til frame 2 ved gotoAndStop(2), hvor første spørsmål kommer.

Neste gjør en rekke ting. Først sjekker den om en av radioknappene er valgt, hvis ikke return (ingenting skjer). En if/else setning sjekker om rett svar er valgt, og legger i så fall til et poeng til variabelen poeng, hvis ikke blir poengsummen stående. Variabelen spørsmålNummer økes så med én, og en ny if/else setning oppdaterer spørsmål og svaralternativ som vises hos brukeren. Hvis var spørsmålNummer har høyere verdi enn antall spørsmål, går Quizen til frame 3, hvor man får resultatet.

Resultat sjekker ved if/else-setninger poengsummen og skriver ut resultatet av Quizen i en tekstboks.

Fasit går sender brukeren til frame 4, hvor en liste over spørsmål og korrekte svar vises.

taPaNytt sender brukeren tilbake til frame 1 fra frame 3, som «restarter» programmet.

sEnd sender email med teksten fra resultat-tekstboksen til innskrevet email-adresse. En if/else setning sjekker om det er skrevet noe i resultat-tekstboksen, hvis ikke skjer ingenting. Etter email er sendt vil adressefeltet klareres for å gi tegn til brukeren om at email er sendt.

tilbake lar brukeren gå tilbake til resultatsiden fra fasitsiden (fra frame 4 til frame tre).

taPaNytt2 er lik funksjonen taPaNytt, men ligger i frame 4.

Det eneste som kanskje trenger mer jobbing er funksjonen sEnd, det skal være ganske lett, må bare få testet den ordentlig.

//Heggvoll