|
Automatisk vurdert oppgave. Oppgave der kandidatene skriver inn en kodesnutt som blir automatisk kjørt og validert. |
Oppgavetypen Kompilering i Inspera Assessment lar kandidatene skrive inn en kodesnutt som automatisk blir kjørt og validert. Denne oppgavetypen er for øyeblikket i Open Beta og krever en aktiv internettforbindelse for å fungere.
For å ta den i bruk må oppgavetypen aktiveres for ditt Inspera Assessment-miljø; vennligst kontakt din hovedkontakt i Inspera for mer informasjon.
Denne artikkelen gir en introduksjon til oppgavetypen Kompilering, forklarer nyttig terminologi for forfattere, beskriver hvordan du oppretter disse oppgavene, forklarer rollen til test cases, skisserer testprosessen for både forfattere og kandidater, og lister opp kjente begrensninger.
Oversikt og nøkkelterminologi
Oppgavetypen Kompilering er designet for automatisk vurdering av programmeringsoppgaver. Kandidatene skriver koden sin i en dedikert editor, som deretter kompileres (for kompilerbare språk) og kjøres mot test cases definert av forfatteren.
- Kandidatene skriver koden sin i en spesialisert koderedigerer med syntaksfremheving og linjenummerering, tilsvarende oppgavetypen Programmering. Denne editoren presenteres som et inntastingsfelt direkte i oppgaven, slik at kandidatene slipper å åpne en ny fane. For enkelte språk støttes også en viss grad av autokorrektur. Forfattere kan velge om denne autokorrekturen skal være tilgjengelig.
-
Du definerer test cases for å validere kandidatens kode. Hvert test case består av input og forventet output. For at et test case skal kjøre korrekt, må kandidatens kode lese inndata fra Input Stream og sende utdata to Output Stream.
Som vist i eksempelet: Hvis inndata er "hallo", skal korrekt utdata være "hllo", som indikerer at bokstaven "a" ble fjernet.
For eksempel i C++ hentes inndata fra std::in og utdata sendes via std::out. Utdata og forventet utdata må samsvare nøyaktig, så kandidaten bør ikke sende annen informasjon gjennom utdatastrømmen.
Opprette en kompileringsoppgave
Når du oppretter en kompileringsoppgave, setter du opp oppgaveteksten, definerer programmeringsmiljøet og legger eventuelt inn forhåndsdefinert kode.
-
Du kan konfigurere generelle alternativer for denne oppgavetypen i sidepanelet. Disse inkluderer innstillinger for poeng, poengberegning, tilbakemelding med mer. For mer informasjon om generelle alternativer, se artikkelen Generelle alternativer for oppgaver.
Følgende generelle alternativer er spesifikke for oppgavetypen Kompilering:
-
Disse definerer hvordan vurderingen av oppgaven skal utføres.
Kandidatens kode kjøres mot test cases for vurdering. Hvis alle testene passerer, får kandidaten full poengsum. Hvis minst én av testene feiler, får oppgaven 0 poeng.
Dermed bruker du kun innstillingen Poeng for alle riktige når du setter poeng på oppgaven. For mer informasjon, se Poenggivning for oppgaver - Enkel.
-
Kandidatens kode kjøres mot disse testene for å evaluere om den er korrekt og gi poeng deretter. Forfatteren kan definere så mange test cases for vurdering som ønskelig. Kandidaten har ikke tilgang til disse testene.
Hvert test case består av input og forventet output. Du kan bruke x-tegnet øverst til høyre for å slette et spesifikt test case. Vær oppmerksom på at dersom ett eneste test case feiler, vil oppgaven få 0 poeng.
- Test cases for kandidat fungerer likt som test cases for vurdering, men med et annet formål. Kandidatene kan se disse testene og kan kjøre koden sin mot dem for å teste den før de leverer oppgaven. Det er ingen poeng knyttet til disse testene.
-
-
Du kan konfigurere generelle alternativer for denne oppgavetypen i sidepanelet. Disse inkluderer innstillinger for poeng, poengberegning, tilbakemelding med mer. For mer informasjon om generelle alternativer, se artikkelen Generelle alternativer for oppgaver.
Følgende generelle alternativer er spesifikke for oppgavetypen Kompilering:
-
Disse definerer hvordan vurderingen av oppgaven skal utføres.
Kandidatens kode kjøres mot test cases for vurdering. Hvis alle testene passerer, får kandidaten full poengsum. Hvis minst én av testene feiler, får oppgaven 0 poeng.
Dermed bruker du kun innstillingen Poeng for alle riktige når du setter poeng på oppgaven. For mer informasjon, se Poenggivning for oppgaver - Enkel.
-
Kandidatens kode kjøres mot disse testene for å evaluere om den er korrekt og gi poeng deretter. Forfatteren kan definere så mange test cases for vurdering som ønskelig. Kandidaten har ikke tilgang til disse testene.
Hvert test case består av input og forventet output. Du kan bruke x-tegnet øverst til høyre for å slette et spesifikt test case. Vær oppmerksom på at dersom ett eneste test case feiler, vil oppgaven få 0 poeng.
- Test cases for kandidat fungerer likt som test cases for vurdering, men med et annet formål. Kandidatene kan se disse testene og kan kjøre koden sin mot dem for å teste den før de leverer oppgaven. Det er ingen poeng knyttet til disse testene.
-
Spesifikke alternativer
Ved å klikke på svarfeltet kan forfatteren definere instruksjon (standard er Skriv inn ditt svar) og andre valg som er spesifikke for Kompilering.
- Forfattere kan velge mellom et bredt utvalg av kodespråk og kompilatorversjoner. Dette valget gir automatisk syntaksfremheving tilpasset det valgte språket.
- Etter å ha valgt språk (og lukket/åpnet innstillingene på nytt), kan forfatteren skrive kode som vil være synlig og redigerbar for kandidaten når de starter prøven. Denne koden vises sammen med oppgaveteksten.
- Koden kandidaten leverer må være fullstendig kjørbar, inkludert nødvendige importer eller includes. For eksempel i språk som C++ må det finnes en main-funksjon, og i Java må klassen hete Main.
- Forfatteren kan legge inn denne koden på forhånd for å redusere risikoen for feil hos kandidaten og veilede dem i bruken av input- og utdatastrømmer.
Testing av koden
-
-
Før oppgaven leveres, kan kandidaten teste koden sin mot test cases for kandidat ved å klikke på knappen Test kode.
-
Etter noen sekunder vil kandidaten se resultatet av hver test dersom koden ble kompilert uten feil. For hver test vil kandidaten se Input, Forventet output, Status (Riktig eller Feil), og kjøretiden.
-
Dersom det oppstår en kompileringsfeil, vises en feilmelding til kandidaten.
- Ved å klikke på Lukk (enten kompileringen var vellykket eller ikke), går kandidaten tilbake til oppgaven for å fortsette redigeringen eller gå videre.
-
-
-
I forhåndsvisning har forfatteren samme opplevelse som kandidaten. Forfatteren kan imidlertid velge å kjøre koden mot både test cases for kandidat og test cases for vurdering ved å klikke på knappen Sjekk validering av test cases for vurdering, som ikke er tilgjengelig for kandidater.
-
Etter å ha kjørt koden mot test cases for vurdering, kan forfatteren kjøre den igjen mot testene for kandidat ved å klikke på Sjekk validering av test cases for kandidat.
-
Kjente begrensninger
- Kandidaten kan kun teste koden sin mot test cases definert som tilgjengelige for kandidat.
- Hverken kandidat eller forfatter kan se den faktiske utdataen (Actual Output) fra testene, kun Input, Forventet output, Status (Riktig eller Feil) og kjøretid.
- Koden kandidaten leverer må inneholde alt som trengs for å kjøre, inkludert importer, includes og lignende. For eksempel:
- I språk som C++ må det finnes en main-funksjon
- I Java må klassen hete Main
- Denne oppgavetypen har ingen støtte for offline-modus.
- Serviceavtaler (SLA) inkluderer ikke denne oppgavetypen.
- Brukere kan i enkelte tilfeller oppleve forsinkelser (lag).
- Dersom kompilering feiler, vil det ikke gjøres automatiske nye forsøk; kandidaten må prøve igjen manuelt.
- Vi anbefaler ikke å bruke denne funksjonaliteten på store prøver (over 500 kandidater).
- Oppgaven er ikke kompatibel med designinnstillingen Vis advarsel ved navigasjon bort fra en side som inneholder ubesvarte oppgaver. For mer informasjon, se artikkelen om Designinnstillinger i oppgavesett.