webova aplikace pro testovani programu pri vyuce
TRANSCRIPT
Webová aplikacepro Testování Programů Při Výuce
Autor: Ing. Luděk Podolka, [email protected]í: Ing. Luboš Pavlíček, [email protected]
Verze: Draft 1
Obsah
•Cíl projektu•Řešený problém•Testování kódu•Pod pokličkou•Závěr
Cíl projektuPodpora praktické výuky programování v Javě..
Cíl projektu
● Vytvoření webové aplikace pro testování programů při výuce,
● která umožní studentům vypracovávat úkoly dle zadání prostřednictvím webového prohlížeče a získat zpětnou vazbu v podobě hlášení o průběhu kompilace a vyhodnocení jednotkových testů.
● Vyučujícím umožní snadné vypisování termínů domácích úkolů a zkoušek, tvorbu a otestování zadání úkolů a hromadné vyhodnocení zkoušek v jednotném prostředí.
Řešený problémZadání, vypracování, vyhodnocení úkolu..
Řešený problém - předpoklady
• Studenti používají integrované vývojové prostředí instalované na pracovní stanici
• 3 fáze zpracování úkolu:1. Zadání2. Vypracování a odevzdání3. Vyhodnocení
Fáze zpracování úkolu
1. Učitel promítne pomocí projektoru zadání úkolu, případně umístí soubory zadání do sdíleného úložiště
2. Student přepíše zadání to textového editoru v IDE, případně zkopíruje soubory zadání ze sdíleného úložiště. Student vypracuje úkol, případně spustí jednotkové testy. Ohlásí vyučujícímu, že je hotov, případně nahraje v časovém limitu vypracování do sdíleného úložiště.
Fáze vypracování úkolu / pokračování
3. Učitel přijde ke studentovi a zkontroluje správnost vypracování nebo alternativně zkopíruje soubory každého studenta do pracovního adresáře, zkompiluje zdrojový kód a spustí jednotkové testy. Informuje studenta o výsledku (počet bodů), případně zapíše známku.
Řešený problém - závěry
● Procesně neoptimální přístup● Kopírování kódu mezi sdíleným úložištěm a
pracovním adresářem (tam a zpět)● Možný výskyt problémů s konfigurací
konkrétního IDE● Časová náročnost vyhodnocení úkolu● Každý vyučující si vytváří vlastní styl/způsob
zadání, odevzdání a vyhodnocení úkolu● Student musí při vypracování domácích úkolů
nejprve stahovat a konfigurovat IDE
Řešený problém – závěry / pokračování
● Webová aplikace by měla:● Přispět ke standardizaci a optimalizaci celého
procesu praktické výuky● Zefektivnit práci učitelů● Usnadnit výuku studentů začátečníků● Umožnit studentům vypracovávat úkoly z domova
Testování kóduPrincip vypracování a tvorby zadání úkolu
Kompilace a testování uživatelského kódu
1) Uživatel vyplní pole pro zadání zdrojového kódu a stiskne tlačítko pro odeslání formuláře.
2) Systém sestaví uživatelský kód do podoby zdrojového kódu java třídy
3) Systém provede analýzu zdrojového kódu z důvodu odhalení bezpečnostních rizik
4) V případě úspěšnosti bodu 3 je kompilován zdrojový kód java třídy do podoby class souboru
5) V případě úspěšnosti bodu 4 je třída otestována pomocí jednotkového testu, který je vytvořen učitelem jako součást zadání
6) Uživateli je zobrazen výstup otestování a nabídnuto pokračování řešení.
Ukázka 1 - Vypracování na zkoušku v roli učitele
Učitel vyzkouší správnost svého zadání formou vypracování „na zkoušku“
Je zde možnost přejít na úpravu zadání
V poli pro vypracování je automaticky zvýrazňována syntaxe
Při uložení se zobrazí výsledky kompilace i jednotkového testu
Pozn. Název metody není nejlépe zvolen
Ukázka 2 – Úprava zadání v roli učitele
Šablona třídy je součástí zadání zobrazeného studentovi
Řetězce $editor(1-9) a $metoda jsou nahrazeny názvem metody a textovým polem pro vypracování
V těle jednotkového testu očekáváme výsledek 5
Pozn. Název metody není nejlépe zvolen
Pod pokličkouNávrh, implementace, technologie
Konceptuální model – class diagram
Architektura aplikace
•MVC webová aplikace ve Struts 2
Statický model – vypracování úkolu
Použité komponenty a technologie
Java/J2EE (java.sun.com)– Compiler API, Comp. Tree API, Security, Logging
JUnit (junit.org) Struts 2 (struts.apache.org) Hibernate (hibernate.org) Jquery (jquery.com), Codepress Tomcat (tomcat.apache.org) MySQL (mysql.com) LDAP (cs.wikipedia.org/wiki/LDAP)
Závěr
● Webová aplikace připravena pro nasazení při výuce
● Kam dál?● Rozšíření o další programovací jazyky?● Uvolnění služby pro výuku na SŠ, ZŠ ?
Děkuji za pozornost!