Testovanie systému eXam
1. | Analýza informačného systému pre podporu výuky programovania |
2. | Požiadavky na navrhovaný systém eXam |
3. | Implementácia systému eXam |
4. | Testovanie systému eXam
|
Obsah
V praxi je pri vývoji profesionálnych IS nutnosťou aplikácie testovať. Tieto testovania sa zvyknú robiť už počas programovania samotných funkcii aplikácie. Po implementácii každej funkcie bola skúšaná správnosť fungovania. Týmto testovaním overíme funkčnosť len jednotlivých modulov pre testovanie systému ako celku je použité alfa a beta testovanie.
Alfa testovanie
Aby bola funkčnosť aplikácie overená ako celok a nie len po funkčných celkoch bolo v prvom kroku zvolené alfa testovanie systému. Toto testovanie prebiehalo na lokálnom serveri vývojárov aplikácie. Testovalo sa s neživými umelo vytvorenými dátami a testeri boli samotní programátori tj. Erik Schmidt a Ing. Juraj Ďuďák, PhD. Pri testovaní sa prišlo na viaceré chyby z nepozornosti. Medzi menšie chyby patrilo napríklad definícia prázdnych premenných pred ich použitím, definícia funkcii, kde nie je jednoznačne určená návratová hodnota, alebo zlé komentovanie funkcii apod. Takéto chyby sa pri programovaní stávajú často a je nutné ich odstrániť. Keďže hľadanie týchto chýb v kóde je zdĺhavé, bol použitý nástroj na analýzu kódu phpstan, ktorý vykonáva statickú analýzu kódu podľa štandardu PSR [2]. Phpstan dokáže kontrolovať kód v ôsmich úrovniach: level 0 až level 7. Medzi základné analýzy patrí napríklad
- prítomnosť a dostupnosť metód a funkcii, počet parametrov funkcie,
- kontrola návratovej hodnoty funkcie podľa jej deklarácie,
- kontrola použitia premenných v kóde,
- kontrola dátových typov v relačných výrazoch [5].
Jednou z výhod používania phpstan je aj fakt, že ponúka možnosť rozdelenia chýb na tzv. levely (úrovne). Programátor tak môže začať od najväčších chýb po najmenšie, čo tiež môže šetriť čas. Pri implementácii systému bol nástroj phpstan systematicky používaný a v aktuálnej verzii boli opravené všetky chyby ktoré nástroj phpstan našiel. Pri analýze chýb bol použitý level 7.
Beta testovanie
Po kontrole s neživými dátami je nutné pre overenie systém testovať naživo. Server pre aplikáciu bol zriadený na škole MTF STU, kde je aktuálne aplikácia používaná.
Prvé väčšie odskúšanie systému eXam bolo 26.3.2019. Testovanie prebiehalo na cvičení predmetu Programovacie jazyky a študenti dostali zadania na vypracovanie, ktorých správnosť mali následne overiť v systéme.
Počiatočné chyby sa našli už pri registrácii študentov, kedy aplikácia hlásila chybu 500 - Server error. Zistilo sa, že chyba nastáva lebo v systéme aplikácia nemala zadefinovaný žiadny predmet a nebola voči takémuto stavu ošetrená. Tieto chyby súviseli s faktom, že v niektorých prípadoch chýbala v kóde kontrola návratových hodnôt funkcií na prázdnu hodnotu null. Podobná chyba nastala aj keď sa študent zaregistroval a odoslal vypracované riešenie na kontrolu správnosti. Server vtedy vyhodil chybu v prípade, že si študent pri registrácii nevybral predmet. Pri registrácii študentov boli prípady kedy sa používateľ nemohol prihlásiť do systému kvôli zlému heslu. Problém vznikal ak študent spravil pri výbere hesla preklep, lebo existovalo len jedno pole na zvolenie hesla bez spätnej kontroly. Po tomto incidente bolo do formuláru pridané pole na overenie zhodnosti hesla, aby sa takýmto chybám predišlo.
Testovania prebiehali skoro na každom cvičení predmetu po úvodnom testovaní a zistili sa viaceré nedostatky. Zistilo sa, že systém nebol ochránený pri kontrole riešenia proti výstupu z generovanej aplikácie ak obsahoval znaky iné než zo štandardu UTF-8. Takéto prípady boli po zistení ošetrené. Našla sa aj slabina systému na ktorú prišiel študent etickým hacknutím aplikácie. V nasledovných testoch systému sa zistili aj grafické nedostatky, kedy sa aplikácia nechovala responzívne. Boli podané návrhy na zlepšenie dizajnu a štruktúry niektorých formulárov a komponentov, ktoré boli neskôr aj implementované. Jedným z cieľov tohto testovania bolo aplikáciu prispôsobiť čo najviac na jednoduchosť používania pre jej používateľov.
Budúce vylepšenia systému
Po návrhoch a pripomienok študentov a učiteľov tj. používateľov systému sa prišlo na rôzne zlepšenia, ktoré budú v systéme eXam v budúcnosti implementované. Systém bude obsahovať kontrolu plagiátorstva, ktorá je potrebná na overenie samostatnosti vypracovania odoslaného zdrojového kódu. Systém bude vypisovať zoznam používateľov, ktorí majú text riešenia najviac podobný. Funkcia bude riešená pridaním nového komponentu do systému.
Vylepšenie nastane v budúcnosti aj v admin module, sekcia riešenia (obrázok [fig:solutionsPresenterAdmin]). Učiteľ má možnosť si aktuálne pozrieť len posledné odovzdané riešenie. Keďže študent môže na programátorskú úlohu odoslať viacero riešení, bolo by dobré pridať funkciu na prehľad všetkých odoslaných riešení používateľa.
Aby bola aplikácia čo najviac intuitívna prerobí sa aj vzhľad niektorých komponentov aplikácie. Systém je vyvíjaný s víziou neustáleho zlepšovania sa a akákoľvek kritika, pripomienky k vzhľadu alebo funkčnosti sú vítané.
Záver
Účel práce bol návrh a implementácia informačného systému pre podporu výuky programovania a zlepšenia učebného procesu na MTF STU. Štruktúra systému zrkadlí reálne fungovanie procesu výuky na škole. Pri návrhu systému boli brané požiadavky učiteľov na funkčnosť systému. Ako prvé bol vytvorený zoznam požiadaviek systému.
Zhrnutím poznatkov o systémoch na kontrolu kódov a fungovania edukačného procesu na škole vznikol dátový model aplikácie. Model sa počas realizácie systému neustále menil a zlepšoval. Výsledný produkt dátového modelu je odrazom aktuálnej funkčnosti systému. Pre implementáciu aplikácie bol zvolený jazyk PHP s frameworkom Nette. Voľba bola najmä z dôvodu rýchlosti spracovania požiadavok jazyka, veľkej podpore a dokumentácii. Implementácia a testovanie boli riešené spoločne s vedúcim práce Ing. Jurajom Ďuďákom, PhD.
Výsledkom práce je funkčný informačný systém pre podporu výuky programovania. Systém je prepojený so školským akademickým informačným systémom školy STU na úrovni registrácie používateľov. Cieľová skupina pre používanie systému sú študenti a učitelia tejto školy. Oblasti prínosu implementovaného systému sú hlavne šetrenie času učiteľom a zefektívnenie procesu výuky na škole. Študenti sa používaním systému učia aj veľmi dôležitú schopnosť pri štúdiu, ktorou je čítanie s porozumením. Funkčnosť, bezpečnosť a používateľnosť systému sa neustále zlepšuje vďaka pripomienkam používateľov a testovania systému. Systém je aktuálne zavedený na škole MTF STU a aktívne sa využíva v procese výuky a skúšok. Systém eXam je licencovaný pod licenciou "Apache License, Version 2.0".
Zoznam použitej literatúry
[1] Nette Foundation. Nette dokumentácia. 2019. url: https://doc.nette.org/cs/2.4/
[2] PHP Framework Interop Group. “PHP Standards Recommendations”. In: (2016). url: https://www.php-fig.org/psr/.
[3] Laura Thomson Luke Welling. PHP and MySQL web development. Pearson Education, Inc., 2017.
[4] Ari Luotonen. World-Wide Web Proxies. Prentice Hall, 1994.
[5] Ondřej Mirtes. “PHPStan: Find Bugs In Your Code Without Writing Tests!” In: (2016). url: https://medium.com/@ondrejmirtes/phpstan-2939cd0ad0e3.
[6] J A. O’Brien. Introduction to information systems: essentials for the e-business enterprise. Boston, MA: McGraw-Hill, 2003.
[7] G. POWELL. Beginning Database Design. John Wiley Sons, Inc., 2006. isbn:978-0-7645-7490-0.
[8] Steve Ranger. “At 30,000 for a flaw, bug bounties are big and getting bigger -ZDNet”. In: (2017). url: https://www.zdnet.com/article/at-30000-for-a-flaw-bug-bounties-are-big-and-getting-bigger/.
[9] The Unified Modeling Language. uml-diagrams.org. 2019. url: https://www.uml-diagrams.org/.
[10] “Web Based Information Systems”. In: Essays, UK (2013). url: https://www.ukessays.com/essays/information-systems/web-based-information-systems.php?vref=1.