Automaticke´ testova´nı´ doma´cı´ch u´loh z programova´nı´ Toma´sˇ Tichy´ ?
[email protected]
Petr Vilı´m?
[email protected]
Abstrakt This paper describes an automatical tester of homeworks from programming which we developed at MFF UK. The automatical tester cannot fully suplly the teacher, but can make his/her job easier by testing the homeworks on the test datas. Students send their homeworks to the tester by an e-mail and the tester responds the results in the same way. The results are also available on automatically generated web pages. Another web interface for teachers allows them to create new homeworks, browse received solutions and change assigned points. In the time we write this paper the tester have been used for two years, during the last year for two different lectures. Tento cˇla´nek popisuje automaticky´ testovacˇ doma´cı´ch u´loh ktery´ jsme vyvinuli na MFF UK. Automaticky´ testovacˇ samozrˇejmeˇ nemu˚zˇe plneˇ nahradit ucˇitele, ale mu˚zˇe mu znacˇneˇ zjednodusˇit pra´ci otestova´nı´m u´lohy na testovacı´ch datech. Studenti zası´lajı´ sva´ ˇresˇenı´ testovacˇi e-mailem, stejny´m zpu˚sobem jim pak testovacˇ ozna´mı´ vy´sledek testu. Kromeˇ toho si studenti mohou sve´ vy´sledky prˇecˇ´ıst na automaticky generovany´ch webovy´ch stra´nka´ch. Ucˇitele´ majı´ mozˇnost pomocı´ dalsˇ´ıho webove´ho rozhranı´ zada´vat u´lohy, prohlı´zˇet ˇresˇenı´ studentu˚ a meˇnit jejich bodove´ ohodnocenı´. V dobeˇ vzniku tohoto cˇla´nku se testovacˇ pouzˇ´ıval dva roky, poslednı´ rok pro vy´uku dvou ru˚zny´ch prˇedmeˇtu˚.
´ vod 1 U Proble´mem vy´uky programova´nı´ v prvnı´ch rocˇnı´cı´ch na MFF UK je pomeˇrneˇ velke´ zameˇˇrenı´ na teorii a zanedba´va´nı´ praxe. Na cvicˇenı´ch se veˇtsˇinou programuje „na sucho“ na tabuli, cvicˇ´ıcı´ nahrazuje kompila´tor i interpreter. Tento model vy´uky je vhodny´ pro programy, u ktery´ch je hlavnı´ mysˇlenka, avsˇak zvla´sˇteˇ studenti neinformaticke´ho zameˇˇrenı´ tak te´meˇˇr neprˇijdou do styku s pocˇ´ıtacˇem. U prakticke´ho testu pak majı´ cˇasto velke´ proble´my i ti studenti, kterˇ´ı na cvicˇenı´ excelovali, protozˇe se vu˚bec nevyznajı´ ve vy´vojove´m prostrˇedı´. Jako cvicˇ´ıcı´ programova´nı´ v jazyku Pascal jsme si tento proble´m uveˇdomovali. Rˇ esˇenı´m je da´vat studentu˚m doma´cı´ u´lohy, ktere´ budou muset ˇresˇit prakticky a ˇresˇenı´ budou odevzda´vat na disketeˇ, nebo le´pe posı´lat e-mailem. Prˇi tomto prˇ´ıstupu ale narazı´me na na´sledujı´cı´ proble´my: – Studentu˚ je mnoho, cvicˇ´ıcı´ budou zahlceni e-maily. – O nalezeny´ch chyba´ch se student dozvı´ azˇ za neˇkolik dnı´, kdy uzˇ si veˇtsˇinou moc nepamatuje, jak jeho ˇresˇenı´ vypadalo. – Opravova´nı´ spousty jednoduchy´ch doma´cı´ch u´kolu˚ je zdlouhava´ a nudna´ pra´ce, proto bychom urcˇiteˇ ze sve´ho cı´le drˇ´ıve nebo pozdeˇji slevili. K naprogramova´nı´ testovacˇe doma´cı´ch u´loh na´s inspiroval testovacˇ u´loh na programa´torske´ souteˇzˇi ACM. Na´sˇ testovacˇ funguje takto: ?
Matematicko-fyzika´lnı´ fakulta, Univerzita Karlova v Praze
– Student posˇle e-mail obsahujı´cı´ zdrojovy´ ko´d ˇresˇenı´ jeho doma´cı´ho u´kolu. – Z emailu se vybere zdrojovy´ ko´d, prˇelozˇ´ı a spustı´ na testovacı´ch datech. – Pokud se program chova´ spra´vneˇ na verˇejny´ch i tajny´ch testovacı´ch datech, jsou studentovi zapocˇteny body. Verˇejna´ testovacı´ data jsou soucˇa´stı´ zada´nı´. – Testovacˇ ozna´mı´ vy´sledek testova´nı´ v odpoveˇdi na prˇ´ıchozı´ e-mail. – Dotazy na nejasnosti v ˇresˇenı´ lze zaslat cvicˇ´ıcı´mu prosty´m odpoveˇzenı´m na tento e-mail. – Prˇideˇlene´ body se objevı´ take´ na stra´nka´ch testovacˇe, studenti tak spolu mohou souteˇzˇit. Je zrˇejme´, zˇe testovacˇ nemu˚zˇe nahradit prˇi kontrole ucˇitele, protozˇe testuje pouze funkci programu a ne elegantnost ˇresˇenı´. Nicme´neˇ cvicˇ´ıcı´ ma´ mozˇnost si ˇresˇenı´ prohle´dnout dodatecˇneˇ. Velkou vy´hodou je interaktivita – o vy´sledku testova´nı´ se student dozvı´ beˇhem neˇkolika ma´lo minut (velkou roli zde hraje cˇas potrˇebny´ na dorucˇenı´ e-mailu).
2 Na´vrh syste´mu Testovacˇ je provozova´n na pocˇ´ıtacˇi s OS Linux, jednotlive´ cˇa´sti jsou napsa´ny prˇ´ımo jako shellove´ skripty nebo v jazyku Perl, pro webove´ rozhranı´ se pouzˇ´ıva´ HTTP server Apache. Na´vrh syste´mu je sche´maticky nakreslen na obra´zku 1, jednotlive´ moduly jsou popsa´ny v na´sledujı´cı´ch odstavcı´ch:
ail
e-m
e-mail
Fronta dosˇly´ch e-mailu˚
Rozebra´nı´ e-mailu
Wrapper e-m
ail
Testovacˇ
e-mail
data
Internet
Fronta odchozı´ch e-mailu˚
e-mail
E-mailove´ rozhranı´
ht
tp
Databa´ze
cˇten´ı n´ı cˇte
Dynamicke´ stra´nky (pro ucˇitele)
za´pis
s
tp
ht
Staticke´ stra´nky (pro studenty)
za´pis testerdb.pl
Webove´ rozhranı´ Obra´zek 1: Sche´ma syste´mu
E-mailove´ rozhranı´ Studenti mohou sva´ ˇresˇenı´ posı´lat na adresu sve´ho cvicˇ´ıcı´ho, nebo prˇ´ımo testovacˇi. Do prˇedmeˇtu (subject) vyplnı´ svu˚j univerzitnı´ login, na´zev u´lohy a mohou si zde take´ vybrat
kompila´tor (prˇ´ıpadneˇ interpreter), pomocı´ ktere´ho bude u´loha testova´na. Naprˇ. pro jazyk Prolog jsou k dispozici trˇi ru˚zne´ interpretery. Samotne´ ˇresˇenı´ je pak mozˇne´ napsat prˇ´ımo do teˇla mailu, nebo ho poslat jako prˇ´ılohu. Na straneˇ testovacˇe je e-mail prˇijat skriptem, ktery´ jej zarˇadı´ do fronty pro sekvencˇnı´ zpracova´nı´, aby nedocha´zelo k docˇasny´m prˇetı´zˇenı´m. Po vyjmutı´ z fronty je e-mail rozdeˇlen na jednotlive´ cˇa´sti (hlavicˇku, teˇlo a prˇ´ılohy) a z nich jsou vybra´na potrˇebna´ data pro testova´nı´, tj. login studenta, identifika´tor u´lohy, zdrojovy´ ko´d u´lohy a prˇ´ıpadneˇ zvoleny´ prˇekladacˇ. Samotny´ test pak zapı´sˇe vy´sledky do databa´ze, ze ktere´ je pak sestavena odpoveˇd’ na prˇ´ıchozı´ e-mail, ktera´ je zarˇazena do fronty na odesla´nı´. Prˇi testova´nı´ u´lohy je trˇeba dba´t na bezpecˇnost – na pocˇ´ıtacˇi je spusˇteˇn zcela nezna´my´ program, cozˇ znamena´ velke´ riziko. Proto jsou u´lohy testova´ny v bezpecˇneˇ oddeˇlene´m prostoru, cozˇ zarucˇuje modul nazvany´ bezpecˇnostnı´ wrapper. V tomto prostrˇedı´ jsou take´ deko´dova´ny e-maily (deko´dovacı´ software ukla´da´ prˇ´ılohy do souboru˚ podle jmen z e-mailu). Databa´ze Vesˇkera´ zada´nı´, testovacı´ data, ˇresˇenı´ atd. musı´ by´t ulozˇena v perzistentnı´ pameˇti pocˇ´ıtacˇe – databa´zi. Protozˇe velka´ cˇa´st testovacˇe je napsa´na shellu a kvu˚li jednodusˇsˇ´ımu spravova´nı´ jsme nezvolili SQL ale pouze souborovy´ syste´m. Nevy´hodou tohoto ˇresˇenı´ je me´neˇ prˇ´ıjemna´ pra´ce s databa´zı´ ve webovy´ch rozhranı´ch. Webove´ studentske´ rozhranı´ Webove´ho rozhranı´ pro studenty se pocˇ´ıta´ s pomeˇrneˇ velky´m mnozˇstvı´m prˇ´ıstupu˚. Proto nejsou stra´nky tvorˇeny dynamicky z databa´ze, ale jsou vytvorˇeny prˇedem a prˇepisujı´ se po zmeˇna´ch v databa´zi (samozrˇejmeˇ pouze zmeˇneˇna´ cˇa´st z nich). Pro tvorbu stra´nek jsme pouzˇili jazyk Perl, pro veˇtsˇ´ı konfigurovatelnost ma´ kazˇda´ stra´nka svou sˇablonu (template). Studenti majı´ k dispozici tyto stra´nky: – Seznam zada´nı´ u´loh. (Pouzˇ´ıva´ se jako server side include do jiny´ch stra´nek.) – Pro kazˇdou u´lohu stra´nku zada´nı´, ktera´ obsahuje take´ verˇejnou cˇa´st testovacı´ch dat a uka´zkovy´ vy´stup na teˇchto datech. – Tabulku studentu˚ se seznamem jejich vyrˇesˇeny´ch prˇ´ıkladu˚ a bodovy´m ziskem. Studenti jsou take´ rozdeˇleni do jednotlivy´ch vy´ukovy´ch kruhu˚. – Stra´nka studenta, kde nalezne vesˇkere´ informace, ktere´ mu testovacˇ poslal e-mailem (kdy odeslal kterou u´lohu, jak dopadlo testova´nı´ atd.). Webove´ ucˇitelske´ rozhranı´ Toto rozhranı´ vzniklo teprve neda´vno. Dovoluje pracovat s testovacˇem i ucˇitelu˚m, kterˇ´ı nemajı´ prˇ´ımy´ prˇ´ıstup k databa´zi testovacˇe. Na rozdı´l od studentske´ho rozhranı´ jsou stra´nky tvorˇeny dynamicky. K tvorbeˇ stra´nek byl opeˇt pouzˇit jazyk Perl, pro zrychlenı´ take´ modul modperl pro HTTP server Apache. Protozˇe ucˇitele´ mohou pomocı´ tohoto rozhranı´ meˇnit databa´zi testovacˇe, kladli jsme velky´ du˚raz na bezpecˇnost. Stra´nky pro ucˇitele jsou proto prˇ´ıstupne´ pouze pomocı´ bezpecˇne´ho sˇifrovane´ho protokolu https a kazˇdy´ ucˇitel se musı´ proka´zat svy´m heslem. Pomocı´ tohoto rozhranı´ ucˇitele´ mohou: – Prˇida´vat a meˇnit zada´nı´ u´kolu˚ vcˇetneˇ testovacı´ch dat, maxima´lnı´ho bodove´ho ohodnocenı´ apod.
– Prohlı´zˇet si ˇresˇenı´ jednotlivy´ch studentu˚ prˇ´ımo na stra´nka´ch (se zvy´razneˇnı´m syntaxe) nebo je stahovat. – Meˇnit prˇideˇlene´ body za prˇ´ıklady. – Prˇideˇlit studentovi body navı´c, nebo je naopak ubrat. Samotny´ webovy´ server nema´ pra´va meˇnit databa´zi testovacˇe, kdyzˇ to chce udeˇlat, musı´ pouzˇ´ıt specia´lnı´ program testerdb.pl a proka´zat se mu jme´nem a heslem ucˇitele. Testovacˇ u´loh Vstupem testovacˇe je neˇkolik souboru˚ (prˇ´ılohy e-mailu), z nichzˇ neˇktery´ obsahuje zdrojovy´ ko´d zası´lane´ho ˇresˇenı´. Z principia´lnı´ch du˚vodu˚ je proble´m rozpoznat zdrojovy´ ko´d od dalsˇ´ıch prˇ´ıloh, proto testovacˇ vyzkousˇ´ı zkompilovat vsˇechny. Testovacˇ podporuje neˇkolik programovacı´ch jazyku˚, pro kazˇdy´ jazyk mu˚zˇe by´t da´no neˇkolik kompila´toru˚ prˇ´ıpadneˇ interpeteru˚. V soucˇasnosti jsou podporova´ny jazyky Pascal (GNU Pascal, Free Pascal), Prolog (GNU Prolog, SWI Prolog, SICStus) a Haskell (GHC, HUGS). Testovacˇ lze snadno rozsˇ´ıˇrit o dalsˇ´ı jazyky a kompila´tory/interpretery napsa´nı´m trˇ´ı jednoduchy´ch skriptu˚: pro kompilaci, spusˇteˇnı´ programu na dane´m vstupu a porovna´nı´ zı´skany´ch vy´sledku˚ se vzorovy´m vy´stupem. Tento na´vrh umozˇnˇuje pouzˇitı´ kompila´toru˚ i interpreteru˚, cˇi zada´va´nı´ u´loh s nejednoznacˇny´m ˇresˇenı´m. Kazˇdy´ programovacı´ jazyk ma´ svu˚j implicitnı´ kompila´tor/interpreter. Zdrojovy´ ko´d je zkompilova´n vybrany´m kompila´torem (implicitnı´m nebo zvoleny´m uzˇivatelem, musı´ se ale jednat o kompila´tor jazyka dane´ho v zada´nı´ u´lohy). Testova´nı´ programu se prova´dı´ s pomocı´ zmı´neˇny´ch skriptu˚ prˇ´ıslusˇejı´cı´ch dane´mu kompila´toru. Naprˇed je test proveden na vstupech zverˇejneˇny´ch jako soucˇa´st zada´nı´. Do protokolu je zaznamena´n vy´sledek a prˇ´ıpadne´ rozdı´ly mezi zı´skany´m vy´stupem vzorovy´mi vy´sledky. Bylo-li toto testova´nı´ u´speˇsˇne´ na vsˇech verˇejny´ch vstupech, na´sleduje testova´nı´ na tajny´ch vstupech, o vy´sledku tohoto testova´nı´ se uzˇivatel dozvı´ pouze zda byl test u´speˇsˇny´ nebo ne. Je zde samozrˇejmeˇ kladen velky´ du˚raz na bezpecˇnost, proto jsou vesˇkere´ kriticke´ operace (kompilace, spousˇteˇnı´ programu i porovna´va´nı´ vy´sledku˚) prova´deˇny s pomocı´ bezpecˇnostnı´ho wrapperu a cˇasovy´mi limity. Bezpecˇnostnı´ wrapper Bezpecˇnostnı´ wrapper je cˇa´st testovacˇe znacˇneˇ neza´visla´ na ostatnı´ch. U´ lohou tohoto modulu je spustit dany´ program (testovanou u´lohu cˇi program na zpracova´nı´ e-mailu˚), ale znemozˇnit mu prˇ´ıstup k veˇtsˇineˇ dat na pocˇ´ıtacˇi (program nesmı´ mı´t mozˇnost cˇ´ıst nebo dokonce meˇnit soubory „do ktery´ch mu nic nenı´“). Wrapper oddeˇluje a znemozˇnˇuje jakoukoliv nezˇa´doucı´ interakci spusˇteˇne´ho programu s ostatnı´mi cˇa´stmi testovacˇe a jiny´mi programy a daty v ra´mci operacˇnı´ho syste´mu. Wrapper ma´ adresa´ˇr se svou vlastnı´ instalacı´ operacˇnı´ho syste´mu. Prˇed spusˇteˇnı´m programu se zmeˇnı´ korˇenovy´ adresa´ˇr (programem chroot) pra´veˇ na tuto vlastnı´ instalaci. Testova´nı´ je navı´c prova´deˇno pod jiny´m uzˇivatelem. Program ma´ opra´vneˇnı´ zapisovat pouze do adresa´ˇre vyhrazene´ho pro svou pra´ci. Soucˇasnou implementaci nepovazˇujeme za zcela idea´lnı´ a pracujeme na lepsˇ´ım ˇresˇenı´. Zvazˇovali jsme pouzˇitı´ jizˇ existujı´cı´ch programu˚, naprˇ´ıklad subterfugue, avsˇak zˇa´dny´ z nich nenı´ povazˇova´n za dostatecˇneˇ bezpecˇny´.
3 Soucˇasny´ stav a dalsˇ´ı pla´ny Prvnı´ verze testovacˇe vznikla sponta´nneˇ z vy´ukovy´ch du˚vodu˚ a byla da´le zdokonalova´na podle aktua´lnı´ch potrˇeb a na´padu˚. V souvislosti s pouzˇitı´m testovacˇe pro dalsˇ´ı vyucˇovane´ prˇedmeˇty se uka´zala potrˇeba podpory vı´ce programovacı´ch jazyku˚ a potrˇebnost ucˇitelske´ho webove´ho rozhranı´. Proto jsme napsali novou (soucˇasnou) verzi testovacˇe, ve ktere´ jsme pouzˇili zkusˇenosti s prˇedchozı´ho provozova´nı´ testovacˇe. Nasˇe pla´ny dalsˇ´ıho vy´voje mu˚zˇeme shrnout takto; neˇktere´ jsou me´neˇ a jine´ vı´ce vy´znamne´: – – – – – –
dota´hnout vy´voj bezpecˇnostnı´ho wrapperu vytvorˇit softwarovy´ balı´cˇek pro snadnou instalaci a pouzˇitı´ umozˇnit vytva´ˇrenı´ sad u´loh pro ru˚zne´ skupiny studentu˚ rozsˇ´ıˇrit nabı´dku u´loh umozˇnit ru˚zne´ zpu˚soby bodove´ho ohodnocova´nı´ odevzda´va´nı´ u´loh prˇes webovy´ formula´ˇr
Soucˇasna´ verze testovacˇe nenı´ prˇipravena k distribuci, proto ani nenı´ nikde volneˇ ke stazˇenı´, nicme´neˇ v prˇ´ıpadeˇ za´jmu o pouzˇitı´ testovacˇe pro potrˇeby Vasˇ´ı vy´uky na´s mu˚zˇete kontaktovat.
4 Zkusˇenosti z praxe – Opisova´nı´ ´ cˇinnou prevencı´ je upozorneˇnı´ na arOd pocˇa´tku jsme se oba´vali prˇ´ılisˇne´ho opisova´nı´. U chivaci ˇresˇenı´ a na prˇ´ıpadne´ dodatecˇne´ anulova´nı´ vy´sledku˚. Opisova´nı´ lze u´cˇinneˇ testovat unixovy´m prˇ´ıkazem diff. Pokud nejsou zadane´ u´lohy prˇ´ılisˇ teˇzˇke´, opisova´nı´ se moc neobjevuje a spı´sˇe se mu˚zˇeme setkat se souteˇzˇivy´m prˇ´ıstupem studentu˚. – Prakticke´ zkusˇenosti studentu˚ Zejme´na studenti prvnı´ho rocˇnı´ku se tak naucˇ´ı posı´lat e-maily vcˇetneˇ prˇ´ıloh, pracovat s Internetem, zı´skajı´ vı´ce zkusˇenostı´ s vy´vojovy´m prostrˇedı´m. Tak zı´skajı´ lepsˇ´ı prˇedpoklady pro slozˇenı´ zkousˇky a budoucı´ vyuzˇitı´ zı´skany´ch znalostı´. – Klesajı´cı´ bodove´ ohodnocenı´ Pocˇet prˇideˇleny´ch bodu˚ zacˇne po termı´nu odevzda´nı´ klesat. To motivuje studenty odevzda´vat u´lohy v termı´nu, ale soucˇasneˇ jim da´va´ cˇa´stecˇnou volnost vlastnı´ho rozhodova´nı´. Ztracene´ body mohou dohnat na nepovinny´ch prˇ´ıkladech. – Neprˇesne´ cˇtenı´ zada´nı´ Obcˇasny´m proble´mem zacˇ´ınajı´cı´ch uzˇivatelu˚ je nerespektova´nı´ prˇesne´ho zada´nı´ a jeho sve´volne´ u´pravy s cı´lem ˇresˇenı´ zlepsˇit, naprˇ´ıklad vypisova´nı´m neˇjaky´ch dodatecˇny´ch nebo ladı´cı´ch u´daju˚ (naprˇ. „zadej cˇ´ıslo:“). – Pozitivnı´ reakce studentu˚ Interakce s testovacˇem je na rozdı´l od interakce s ucˇitelem okamzˇita´, cozˇ sˇetrˇ´ı studentu˚m cˇas. Hned veˇdı´, zda jejich ˇresˇenı´ je spra´vne´, cˇi v neˇm majı´ neˇjakou chybu. Prˇ´ıpadne´ trivia´lnı´ chyby snadno odhalı´ z testovacˇem zaslane´ odpoveˇdi.
5 Prˇ´ıklady Uva´dı´me neˇkolik prˇ´ıkladu˚, jak mu˚zˇe vypadat webove´/e-mailove´ rozhranı´ z pohledu studenta i z pohledu ucˇitele - skutecˇne´ u´daje z letosˇnı´ vy´uky. Tyto stra´nky naleznete (v soucˇasnosti) na adrese http://kiwi.ms.mff.cuni.cz/˜testovac.
Výsledky kruhu Úterý 12:20, T4 Cvicˇící: Petr Vilím Mail:
[email protected] Login: Jméno a prˇíjmení: Založit nového studenta v tomto kruhu
n
Jméno
Login
Celkem bodu˚
cyklus logic posloupnosti suma xjoin zjednodus
1
Miroslav Bajtos
bajtm0am
9.00000
1.00
3.00
2.00
1.00
2.00
−
2
Rudolf Helm
helmr0am
2.00000
−
−
−
−
2.00
−
3
Stepan Hlavac
hlavs8am
7.00000
1.00
3.00
−
1.00
2.00
−
4
Michal Hocko
hockm0bm
7.00000
1.00
3.00
−
1.00
2.00
−
5
Jakub Krchak
krchj0bm
9.00000
1.00
3.00
2.00
1.00
2.00
−
6
Jirˇí Krejsa
krejj0am
9.00000
1.00
3.00
2.00
1.00
2.00
−
7
Petr Kucka
kuckp0am
9.00000
1.00
3.00
2.00
1.00
2.00
−
8
Jan Lánský
lansj0bm
9.00000
1.00
3.00
2.00
1.00
2.00
−
9
Martin Malý
malym0bm
9.00000
1.00
3.00
2.00
1.00
2.00
0.00
10 Petr Mandys
mandp0am
9.00000
1.00
3.00
2.00
1.00
2.00
−
11 Lukas Marsalek
marsl0am
9.00000
1.00
3.00
2.00
1.00
2.00
−
12 Karel Mašek
masek0am
13.00000
1.00
3.00
2.00
1.00
2.00
4.00
13 Marek Matejak
matem0bm
7.00000
1.00
3.00
−
1.00
2.00
−
14 Tomáš Matoušek
matot0am
13.00000
1.00
3.00
2.00
1.00
2.00
4.00
15 Peter Morong
morop0am
7.00000
1.00
3.00
−
1.00
2.00
0.00
16 Michal Pravda
pravm9am
7.00000
1.00
3.00
−
1.00
2.00
−
17 Ladislav Prošek
prosl0am
9.00000
1.00
3.00
2.00
1.00
2.00
−
18 Arne Rusek
rusea0am
9.00000
1.00
3.00
2.00
1.00
2.00
−
17
17
12
17
18
2
Celkový pocˇet správných rˇešení:
Pru˚meˇrný pocˇet bodu˚:
8.50000
Obra´zek 2: Webova´ stra´nka: Vy´sledky studentu˚ v kruhu
6 Za´veˇr Podle nasˇich zkusˇenostı´ se testovacˇ jednoznacˇneˇ osveˇdcˇil. Splnil u´lohu, pro kterou byl napsa´n, tj. studenti zı´skali prakticke´ zkusˇenosti s programova´nı´m prˇ´ımo u pocˇ´ıtacˇe. To se projevilo nejen na jejich studijnı´ch vy´sledcı´ch, ale take´ na cvicˇenı´ch – programova´nı´ uzˇ pro neˇ nebylo pouha´ teorie na tabuli cˇi v sesˇiteˇ, ale zacˇali sami pokla´dat prakticke´ ota´zky. Programova´nı´ je zacˇalo daleko vı´ce zajı´mat. Testovacˇ se osveˇdcˇil zejme´na prˇi ucˇenı´ se syntaxe programovacı´ho jazyka a jednoduchy´ch programovacı´ch technik. Nemyslı´me ale, zˇe by byl vhodny´ pro vy´uku ve vysˇsˇ´ıch rocˇnı´cı´ch na MFF UK, kdy se klade veˇtsˇ´ı du˚raz na logiku veˇci.
Zdenek Kavalir Cvicˇící: Tomáš Tichý Cvicˇení: Strˇeda 9:00, E4 Celkový pocˇet bodu˚: 7.00000
Domácí úkoly: Úkol
Bodu˚
Max. bodu˚
Stav
Pokusu˚ o odevzdání
Zkompilovatelných pokusu˚
Uznán
1
1
1 1
cyklus
1.00000
1.00000
Pokusu˚ správneˇ nad vzorovým vstupem
logic
3.00000
3.00000
Uznán
1
1
posloupnosti
−
2
Neodevzdán
−
−
−
suma
1.00000
1.00000
Uznán
3
3
1
xjoin
2.00000
2.00000
Uznán
2
2
1
zjednodus
0.00000
4.00000
NEuznán
3
3
3
Obra´zek 3: Webova´ stra´nka: Informace o studentovi
1. pokus *** Automatic test *** login: hockm0bm task: xjoin language: prolog compiler: swi cksum: 6196982 180 time: 2001−12−12_17−09−27_uq21949 Compiling... Trying sample test vzor_0.in −>Test je OK. Trying sample test vzor_1.in −>Test je OK. Trying sample test vzor_2.in −>Test je OK. Trying sample test vzor_3.in −>Test je OK. Trying sample test vzor_4.in −>Test je OK. Running test test_0.in ... −>Test is OK. Running test test_1.in ... −>Test is OK. Running test test_2.in ... −>Test is OK. Running test test_3.in ... −>Test is OK. Running test test_4.in ... −>Test is OK. Running test test_5.in ... −>Test is OK. Running test test_6.in ... −>Test is OK. Running test test_7.in ... −>Test is OK. Running test test_8.in ... −>Test is OK. Running test test_9.in ... −>Test is OK.
... ... ... ... ...
Succeessive / all tests: 15 / 15 Conclusion: task xjoin IS confirmed. Assigned points: 2
Obra´zek 4: Webova´ stra´nka: Automaticka´ odpoveˇd’ testovacˇe