Egységteszt-keretrendszerek támogatása a TMS beadandókezelő rendszerben
A nyílt forráskódú TMS beadandókezelő rendszer egyik fő funkciója programozási beadandó és zárthelyi feladatok kiírása és a hallgatói megoldások begyűjtése. A TMS rendszer automata fordítással, fekete-doboz elvű teszteléssel, statikus analízissel és plágiumvizsgálattal tudja a hallgatók és az oktatók munkáját segíteni.
A rendszer jelenleg kizárólag fekete-doboz elvű tesztelést támogat: a hallgatói program szabványos bemenetére ad egy tesztadatot, majd a szabványos kimenetét veti össze az elvárt kimenettel. Számos tantárgy esetében azonban a beadott megoldás minőségét osztály- és metódusszinten, egységtesztekkel lenne célszerű ellenőrizni, erre pedig a rendszer jelenleg nem ad lehetőséget.
A szakdolgozat célja az elterjedt egységteszt-keretrendszerek támogatásának megvalósítása a TMS automatikus értékelő szolgáltatásában. A szakdolgozat keretében specifikálandó és implementálandó az a folyamat, amelynek során az oktató által megadott tesztkészlet a hallgatói megoldás mellé kerül a futtatókörnyezetbe, ott a megfelelő keretrendszerrel lefut, majd a keretrendszer által előállított, géppel feldolgozható jelentést (jellemzően JUnit XML vagy TAP formátumban) a szolgáltatás beolvassa, és tesztesetenkénti eredménnyé alakítja. Legalább két, eltérő ökoszisztémához tartozó keretrendszer — például C++ nyelvhez a GoogleTest, Java nyelvhez a JUnit, Python nyelvhez a pytest vagy .NET platformhoz az MSTest / NUnit / xUnit — támogatását el kell készíteni, oly módon, hogy a megoldás további keretrendszerekkel is bővíthető maradjon. Kezelendők a hibás esetek is: a tesztkészlet fordítási hibája, a futtatás időtúllépése, illetve a jelentés hiánya vagy sérülése. Elkészítendő az oktatói konfigurációs felület, valamint a hallgatói eredménymegjelenítés.
Az automatikus értékelő szolgáltatás C# nyelven, .NET platformon, vertical slice architektúrában készül; a hallgatói megoldások futtatása a Docker Engine API-n keresztül vezérelt konténerekben zajlik, így a feladat része a szükséges Docker képfájlok összeállítása is. A szolgáltatás a TMS központi komponensével OpenAPI specifikáció alapján generált klienssel kommunikál; a központi komponens PHP nyelven, Yii2 keretrendszerben, a webes felhasználói felület React és TypeScript technológiákkal készült. Az elkészült megoldáshoz egység- és integrációs tesztek készítése is elvárt.