Vyhodnocení miniprojektu JŘES

Kritéria hodnocení

Základních 15 bodů je rozděleno následovně:

korektnost: 11 bodů (za každý neúspěšný test sraženo půl bodu)
efektivita: 1 bod (sražen, pokud je program velmi neefektivní)
návrh: 1 bod (sražen při opravdu špatném návrhu)
kvalita kódu: 1 bod (sražen, pokud se kód velmi špatně čte)
dokumentace: 1 bod (sražen, pokud je někde dokumentace skutečně třeba a chybí)
vtipnost: 0 bodů (byť jsem se nad mnohými komentáři a zdrojáky skvěle pobavil, bohužel nebylo předem avizováno obodování vtipů :-))

Bonusových 6 bodů není rozděleno vůbec:

korektnost: 6 bodů (za každý neúspěšný test sraženo půl bodu)

Další srážky ze základních 15 bodů:

warningy při překladu: 0 bodů (i když by vůbec neměly nastávat!)
chyby při překladu opravitelné: 2 body za každou
chyby při překladu zásadní: 15 bodů
chyby práce s pamětí: 1-5 bodů celkem (pokud to není ojedinělý jev)
výpis chyb na stdout: 2 body
nulový návratový kód při chybě: 1 bod (pokud to není ojedinělý jev)
jiné nedostatky: individuálně

Vzorové řešení

Vzorové řešení základní části: zdrojový kód

Vzorové řešení včetně bonusového rozšíření: zdrojový kód

Vzorové řešení se přeloží jednoduše spuštěním příkazu make.

Testovací skript

Celý balík testovacích vstupů a odpovídajících výstupů si můžete stáhnout spolu se skriptem pro jejich vyhodnocení a vzorovým řešením: balík pro základní část, balík pro bonusovou část (liší se pouze tím, že v základní verzi jsou některé testy vypnuté)

Pro zprovoznění testovacího balíčku na Aise stačí udělat jediné - nastavit práva ke spuštění: chmod u+x stest escapeargs. (Obezřetní mohou zkontrolovat obsah skriptu stest i přeložit si escapeargs sami ze zdroje escapeargs.c.) Pro testování včetně kontroly paměti je navíc potřeba valgrind - ale ten je na Aise taky.

Pro spuštění testů dodaného vzorového řešení je ještě třeba vzorové řešení přeložit: make

Testy korektnosti pak můžete spustit příkazem: ./stest -ev jres

stest přijímá různé přepínače (viz jeho usage info), přepínač -e značí ignorování rozdílů na chybovém výstupu (protože každý může mít jiné chybové zprávy), přepínač -v zapíná kontrolu práce s pamětí. Argumentem pro stest je cesta k binárce, která se má testovat. Z názvu programu se odvozuje i sada testů, která se má spustit, takže v tomto případě se program musí jmenovat jres, ale můžete jej zadat s celou cestou - tedy cestou k vašemu řešení.

V souboru tests.desc.txt jsou všechny prováděné testy zhruba popsány (včetně toho, jestli testují bonus, nebo základní verzi). Jednotlivé testovací vstupy jsou v souborech tests/jres.tXX, jim odpovídající výstupy v tests/jres.rXX (návratový kód -1 značí libovolný nenulový návratový kód) a chybové výstupy v souborech tests/jres.rXXe. Pokud nějaký test selže, je výstup testovaného programu uložen do souboru tests/jres.oXX (stdout), tests/jres.oXXe (stderr), případně tests/jres.oXXv (výstup valgrindu při chybách paměti).

Testy orientační výkonnosti můžete spustit příkazem: ./stest -s jres

K tomu je vhodné váš program přeložit s přepínačem -O2 (v balíčku lze takto přeložit vzorové řešení příkazem make release). Rozhodně nejde o vyčerpávající performance testy. Jde opravdu jen o hrubou představu o výkonnosti rozhodující o přidělení nebo nepřidělení jednoho bodu. Rovněž testují schopnost programu zpracovat i opravdu velký vstup (100M znaků). Testovací vstupy jsou zabalené v souborech tests/jres.stXX.gz, výstupy v souborech tests/jres.srXX.gz; stest tyto automaticky rozbalí (a při úspěšném provedení testu zase rozbalené soubory smaže).

V případě dotazů k testovacím skriptům neváhejte napsat na xbouda2@fi.muni.cz - byla by škoda si neotestovat svůj program jen proto, že se vám nepodaří zprovoznit testovací skript…

QR Code
QR Code public:jres_2013_vyhodnoceni (generated for current page)