Hftest

A hftest programmal az önálló gyakorláshoz szeretnék segítséget nyújtani. A félév során időről-időre feladatokat adok ki, melyek ellenőrzéséhez és egyben adminisztrálásához automatikus megoldást kerestem. Bízom abban, hogy egyrészt hasznos "játék" lesz, másrészt kerekítési tényezőként figyelembe tudom venni a félév végi jegy kialakításában.

Használat

Az adott feladatot lekérdező illetőleg megvalósító, lefordított C programot (PROG) az ural2-n a hftest programmal kell futtatni, ami a ~szebi katalógusból érhető el: ~szebi/hftest PROG arg1 arg2 ...

A könnyebb használat érdekében érdemes egy szimbolikus linkkel (ln -s) a saját könyvtárukba, vagy a saját bin katalógusukba (amit előzőleg betettek a PATH-ba) linkelni a hftest programot. Így egyszerűen csak hftest névvel hivatkozhatunk rá a továbbiakban.

A hftest program első indítási paramétere maga a tesztelendő program. A további paraméterek a tesztelt program paraméterei lesznek. Például: hftest PROG arg1 arg2 ...

A fenti parancs hatására PROG a megadott további argumentumokkal fog futni úgy, hogy PROG standard bemenete és standard kimenete összekapcsolódik a hftest programmal. A fenti parancssor standard kimenete természetesen átirányítható és ez nem más, mint a hftest program standard kimenete.

Az előzőekben említettek alapján célszerű a saját magunk által írt, vagy másoktól átvett, nem a rendszerhez tartózó programokat a login katalógusunk bin katalógusában tárolni, vagy legalább hivatkozni rá a bin katalógusból egy linkkel, mert így az mindig könnyen – kevés gépeléssel – elérhető. Ha még nincs bin katalógusunk akkor hozzuk azt először létre: (a következőkben feltesszük, hogy bash shell-t használunk, ami az ural2-n az alapértelmezett)
cd          # a login katalógusba visz, bárhol is vagyunk éppen
mkdir bin
Ezt követően készítsünk egy szimbolikus linket a hftest programra:
ln -s ~szebi/hftest bin    # a bin katalógusba linkeli hftest néven
Mivel a shell a programokat szigorúan csak a PATH környezeti változóban megadott katalógusokban keresi, a kényelmünk érdekében célszerű ezt a bin katalógust is betenni a PATH-ba:
PATH=$PATH:~/bin           # bővítjük a PATH változót a ~/bin katalógussal
Most már a munkánk során bármelyik katalógusban kiadhatjuk a hftest parancsot, azt a shell megtalálja. Sajnos az így megváltoztatott PATH változó tartalma a kilépéskor elvész, ezért a következő bejelentkezéskor újból bővítenünk kell azt a ~/bin katalógussal. Ezt a .bash_login fájlba tett megfelelő paranccsal automatikusan megtehetjük:
echo 'PATH=$PATH:~/bin' >> ~/.bash_login
                           # a fenti parancsot a .bash_login fájl végére írjuk
Most már minden belépéskor bekerül a PATH-ba a ~/bin katalógus.

Eredmények

Amennyiben a hftest sikeresen azonosította a felhasználót és a feladatot, akkor egy rövid összefoglalót ad az eddigi futtatások eredményéről f: s/p alakban, ahol:
f – a feladat sorszáma,
p – a próbák száma,
s – a sikeres próbák száma.

A végleges értékelésnél nem számít a próbák illetve a futtatások száma, csak az, hogy az adott feladathoz legyen sikeres próba és megoldás. A program a feladatok kiadásánál személyre szólóan mindig ugyanazt a feladatot illetve tesztadatot fogja generálni, így felesleges többször futtatni, de természetesen nem tilos.

Határidő

A feladatok beadási határidejét a kisZH-k ütemtervénél adjuk meg. Minden határidőig jól megoldott páros sorszámú feladatra 1 pontot lehet szerezni feladatonként, amit a félév végi jegy kialakításakor számításba veszünk. Az összes feladat hibátlan megoldásával összesen 7 extra pont szerezhető. Ez a házi feladattal szerezhető 6 ponttal együtt 13 extra pont megszerzését teszi lehetővé, ami lénygében egy jeggyel jobb félév végi jegyet eredményezhet, amennyiben az egyéb követelmények teljesülnek.

Eredményes tesztelést kívánok.

Dr. Szeberényi Imre

Utolsó frissítés: 2019-02-02 20.12