wirtschaftsinformatik christof wingender [email protected] 15./16. mai 2008 im rahmen des...
TRANSCRIPT
![Page 1: Wirtschaftsinformatik Christof Wingender c.wingender@uni-muenster.de 15./16. Mai 2008 Im Rahmen des Seminars E-Learning Automatisches Testen und Bewerten](https://reader035.vdocuments.mx/reader035/viewer/2022070310/55204d6649795902118bbb59/html5/thumbnails/1.jpg)
Wirt
scha
ftsin
form
atik
Christof [email protected]
15./16. Mai 2008
Im Rahmen des Seminars „E-Learning“
Automatisches Testen und Bewerten von Java-Klassen
![Page 2: Wirtschaftsinformatik Christof Wingender c.wingender@uni-muenster.de 15./16. Mai 2008 Im Rahmen des Seminars E-Learning Automatisches Testen und Bewerten](https://reader035.vdocuments.mx/reader035/viewer/2022070310/55204d6649795902118bbb59/html5/thumbnails/2.jpg)
2
Motivation
■ Papierbasierte Lernfortschrittskontrolle■ Klausur, Übungen■ Medienbrüche■ Personal- und Zeitaufwändig■ Menschliche Fehler, Subjektivität
■ Lösung: E-Assessment von Java-Klassen?
![Page 3: Wirtschaftsinformatik Christof Wingender c.wingender@uni-muenster.de 15./16. Mai 2008 Im Rahmen des Seminars E-Learning Automatisches Testen und Bewerten](https://reader035.vdocuments.mx/reader035/viewer/2022070310/55204d6649795902118bbb59/html5/thumbnails/3.jpg)
3
Gliederung
■ Einführung■ Anforderungen an Java-Klassen■ Analyse von Java-Klassen
■ Ansätze zum E-Assessment von Java-Klassen■ Praktomat■ Environment for Learning to Program■ extreme eLearning experience
■ Erweiterung der Ansätze■ Fazit
![Page 4: Wirtschaftsinformatik Christof Wingender c.wingender@uni-muenster.de 15./16. Mai 2008 Im Rahmen des Seminars E-Learning Automatisches Testen und Bewerten](https://reader035.vdocuments.mx/reader035/viewer/2022070310/55204d6649795902118bbb59/html5/thumbnails/4.jpg)
4
Anforderungen an Java-Klassen
■ Korrektheit■ Robustheit■ Leichte Wartbarkeit■ Verständlichkeit■ Testbarkeit■ Effiziente Programme
(vgl. [PI08])
![Page 5: Wirtschaftsinformatik Christof Wingender c.wingender@uni-muenster.de 15./16. Mai 2008 Im Rahmen des Seminars E-Learning Automatisches Testen und Bewerten](https://reader035.vdocuments.mx/reader035/viewer/2022070310/55204d6649795902118bbb59/html5/thumbnails/5.jpg)
5
Analyse von Java-Klassen
■ Statische Analyse■ Keine Ausführung des Programms■ Syntax, Semantik■ Programmierstil■ Fehlermuster im Quelltext
■ Dynamische Analyse■ Ausführung des Programms■ Unit-Test (Komponententest)
![Page 6: Wirtschaftsinformatik Christof Wingender c.wingender@uni-muenster.de 15./16. Mai 2008 Im Rahmen des Seminars E-Learning Automatisches Testen und Bewerten](https://reader035.vdocuments.mx/reader035/viewer/2022070310/55204d6649795902118bbb59/html5/thumbnails/6.jpg)
6
Gliederung
■ Einführung■ Anforderungen an Java-Klassen■ Analyse von Java-Klassen
■ Ansätze zum E-Assessment von Java-Klassen■ Praktomat■ Environment for Learning to Program■ extreme eLearning experience
■ Erweiterung der Ansätze■ Fazit
![Page 7: Wirtschaftsinformatik Christof Wingender c.wingender@uni-muenster.de 15./16. Mai 2008 Im Rahmen des Seminars E-Learning Automatisches Testen und Bewerten](https://reader035.vdocuments.mx/reader035/viewer/2022070310/55204d6649795902118bbb59/html5/thumbnails/7.jpg)
7
Praktomat
■ Universität Passau■ Java, Haskell, C++■ Automatische Tests
■ Öffentliche vs. geheime Testfälle■ DejaGnu■ Checkstyle■ Sandbox
■ Peer-Review
![Page 8: Wirtschaftsinformatik Christof Wingender c.wingender@uni-muenster.de 15./16. Mai 2008 Im Rahmen des Seminars E-Learning Automatisches Testen und Bewerten](https://reader035.vdocuments.mx/reader035/viewer/2022070310/55204d6649795902118bbb59/html5/thumbnails/8.jpg)
8
Environment for Learning to Program (ELP)
■ Queensland Universität in Brisbane■ C#, C++, Java, Pascal, Visual Basic■ Beispielaufgabe: IntegerDivision:
import TerminalIO.*;public class IntegerDivision {
KeyboardReader reader = new KeyboardReader();ScreenWriter writer = new ScreenWriter(); public void run() {
} public static void main (String[] args){…}
}
//Declare variables// Print “Please enter integer x: “// Read x// Print “Please enter integer y: “// Read y// Print “x / y = “// Print x / y
![Page 9: Wirtschaftsinformatik Christof Wingender c.wingender@uni-muenster.de 15./16. Mai 2008 Im Rahmen des Seminars E-Learning Automatisches Testen und Bewerten](https://reader035.vdocuments.mx/reader035/viewer/2022070310/55204d6649795902118bbb59/html5/thumbnails/9.jpg)
9
■ Programmierstil-Überprüfung: Java-Reflection API■ NormalisierungQuelltext-Fragment/* Zu lösender Abschnitt: */vor = 0;nach = 1;for (int i = 3; i<= grenze; i+
+){hilf = vor + nachvor = nach;nach = hilf
}/* Ende zu lösender Abschnitt
*/
Environment for Learning to Program (ELP)
![Page 10: Wirtschaftsinformatik Christof Wingender c.wingender@uni-muenster.de 15./16. Mai 2008 Im Rahmen des Seminars E-Learning Automatisches Testen und Bewerten](https://reader035.vdocuments.mx/reader035/viewer/2022070310/55204d6649795902118bbb59/html5/thumbnails/10.jpg)
10
■ Programmierstil-Überprüfung: Java-Reflection API■ NormalisierungQuelltext-Fragment Normalisierte Form/* Zu lösender Abschnitt: */vor = 0;nach = 1;for (int i = 3; i<= grenze; i+
+){hilf = vor + nachvor = nach;nach = hilf
}/* Ende zu lösender Abschnitt
*/
<gap><statements>
<assignment>2</assignment><loop>
<assignment>3</assignment>
</loop></statements></gap>
■ Vergleich: Abgabe - Musterlösung
Environment for Learning to Program (ELP)
![Page 11: Wirtschaftsinformatik Christof Wingender c.wingender@uni-muenster.de 15./16. Mai 2008 Im Rahmen des Seminars E-Learning Automatisches Testen und Bewerten](https://reader035.vdocuments.mx/reader035/viewer/2022070310/55204d6649795902118bbb59/html5/thumbnails/11.jpg)
11
extreme eLearning experience (xLx)
■ Universität Münster■ Java■ Automatische Tests
■ Öffentliche vs. geheime Testfälle■ JUnit■ Apache Ant■ Policies
![Page 12: Wirtschaftsinformatik Christof Wingender c.wingender@uni-muenster.de 15./16. Mai 2008 Im Rahmen des Seminars E-Learning Automatisches Testen und Bewerten](https://reader035.vdocuments.mx/reader035/viewer/2022070310/55204d6649795902118bbb59/html5/thumbnails/12.jpg)
12
Gegenüberstellung der Ansätze
Praktomat ELP xLx
Programmierstil
Fehlermuster
Funktionalität
Effizienz
![Page 13: Wirtschaftsinformatik Christof Wingender c.wingender@uni-muenster.de 15./16. Mai 2008 Im Rahmen des Seminars E-Learning Automatisches Testen und Bewerten](https://reader035.vdocuments.mx/reader035/viewer/2022070310/55204d6649795902118bbb59/html5/thumbnails/13.jpg)
13
Gliederung
■ Einführung■ Anforderungen an Java-Klassen■ Analyse von Java-Klassen
■ Ansätze zum E-Assessment von Java-Klassen■ Praktomat■ Enviroment for Learning to Program■ extreme eLearning experience
■ Erweiterung der Ansätze■ Fazit
![Page 14: Wirtschaftsinformatik Christof Wingender c.wingender@uni-muenster.de 15./16. Mai 2008 Im Rahmen des Seminars E-Learning Automatisches Testen und Bewerten](https://reader035.vdocuments.mx/reader035/viewer/2022070310/55204d6649795902118bbb59/html5/thumbnails/14.jpg)
14
Erweiterung
■ Apache Ant Buildfile■ Buildfile enthält Projekt und beschreibt, wie
■ Anwendung zu erstellen,■ zu testen und■ zu deployen ist
<?xml version=“1.0“ ?><project name=“myProject“ default=“makedir“>
<target name=“makedir“><mkdir dir=“build/classes“ /><mkdir dir=“test/reports“ />
</target></project>
Project
Target
Task
![Page 15: Wirtschaftsinformatik Christof Wingender c.wingender@uni-muenster.de 15./16. Mai 2008 Im Rahmen des Seminars E-Learning Automatisches Testen und Bewerten](https://reader035.vdocuments.mx/reader035/viewer/2022070310/55204d6649795902118bbb59/html5/thumbnails/15.jpg)
15
Build-Prozess
Quelltext
![Page 16: Wirtschaftsinformatik Christof Wingender c.wingender@uni-muenster.de 15./16. Mai 2008 Im Rahmen des Seminars E-Learning Automatisches Testen und Bewerten](https://reader035.vdocuments.mx/reader035/viewer/2022070310/55204d6649795902118bbb59/html5/thumbnails/16.jpg)
16
Build-Prozess
Quelltext
BerichtProgrammierstil
Checkstyle
![Page 17: Wirtschaftsinformatik Christof Wingender c.wingender@uni-muenster.de 15./16. Mai 2008 Im Rahmen des Seminars E-Learning Automatisches Testen und Bewerten](https://reader035.vdocuments.mx/reader035/viewer/2022070310/55204d6649795902118bbb59/html5/thumbnails/17.jpg)
17
Build-Prozess
Quelltext
BerichtProgrammierstil
BerichtFehlermuster
FindBugsCheckstyle
![Page 18: Wirtschaftsinformatik Christof Wingender c.wingender@uni-muenster.de 15./16. Mai 2008 Im Rahmen des Seminars E-Learning Automatisches Testen und Bewerten](https://reader035.vdocuments.mx/reader035/viewer/2022070310/55204d6649795902118bbb59/html5/thumbnails/18.jpg)
18
Build-Prozess
QuelltextQuelltext
Testklassen
.class-Dateien
BerichtFunktionalität
BerichtProgrammierstil
BerichtFehlermuster
javacjavac
FindBugsCheckstyle
JUnit
![Page 19: Wirtschaftsinformatik Christof Wingender c.wingender@uni-muenster.de 15./16. Mai 2008 Im Rahmen des Seminars E-Learning Automatisches Testen und Bewerten](https://reader035.vdocuments.mx/reader035/viewer/2022070310/55204d6649795902118bbb59/html5/thumbnails/19.jpg)
19
Beispiel: Fahrrad.class
public class Fahrrad {private Rahmen rahmen;private boolean einrad;private String marke;
public boolean isEinrad() {if (einrad == true) { return true; } else { return false; } }
public boolean isEqualRahmen(Rahmen rahmen) {return ( (this.rahmen != null)
& this.rahmen.equals(rahmen) ); }
public boolean isEqualMarke(String marke) {return (this.marke == marke); }
//Getter, Setter, ...}
![Page 20: Wirtschaftsinformatik Christof Wingender c.wingender@uni-muenster.de 15./16. Mai 2008 Im Rahmen des Seminars E-Learning Automatisches Testen und Bewerten](https://reader035.vdocuments.mx/reader035/viewer/2022070310/55204d6649795902118bbb59/html5/thumbnails/20.jpg)
20
Checkstyle
■ Statische Analyse■ Überprüft Programmierstil
■ JavaDoc■ Namenskonventionen■ …
■ Konfiguration über XML-Datei■ Beispiel: String-Vergleiche (==, != statt equals)
<module name="StringLiteralEquality"/>
public boolean isEqualMarke(String marke) {
return (this.marke == marke);}
Richtig: return ((this.marke.equals(marke));
![Page 21: Wirtschaftsinformatik Christof Wingender c.wingender@uni-muenster.de 15./16. Mai 2008 Im Rahmen des Seminars E-Learning Automatisches Testen und Bewerten](https://reader035.vdocuments.mx/reader035/viewer/2022070310/55204d6649795902118bbb59/html5/thumbnails/21.jpg)
21
FindBugs
■ Statische Analyse■ Findet mögliche Fehler■ Beispiel: Nullpointer
public boolean isEqualRahmen(Rahmen rahmen) {return((this.rahmen != null)
& this.rahmen.equals(rahmen));}
Besser: return ((this.rahmen != null)
&& this.rahmen.equals(rahmen);
![Page 22: Wirtschaftsinformatik Christof Wingender c.wingender@uni-muenster.de 15./16. Mai 2008 Im Rahmen des Seminars E-Learning Automatisches Testen und Bewerten](https://reader035.vdocuments.mx/reader035/viewer/2022070310/55204d6649795902118bbb59/html5/thumbnails/22.jpg)
22
Alternative: PMD
■ Statische Analyse■ Wie FindBugs■ Zusätzlich:
■ Suboptimaler Quelltext■ Unbenutzer Quelltext
■ Beispiel: Vergleiche in booleschen Ausdrückenpublic boolean isEinrad() {
if(einrad == true) { return true; }
else { return false; }}
Besser: return einrad;
![Page 23: Wirtschaftsinformatik Christof Wingender c.wingender@uni-muenster.de 15./16. Mai 2008 Im Rahmen des Seminars E-Learning Automatisches Testen und Bewerten](https://reader035.vdocuments.mx/reader035/viewer/2022070310/55204d6649795902118bbb59/html5/thumbnails/23.jpg)
23
JUnit
■ Dynamische Analyse■ Komponententest■ Stichprobenverfahren■ Beispiel: isEqualRahmen
public void testIsEqualRahmen() {Fahrrad rad = new Fahrrad();rad.setEinrad (false);rad.setRahmen (new Rahmen("rot", 48));assertEquals (true,
rad.isEqualRahmen(new Rahmen ("rot", 48)));}
![Page 24: Wirtschaftsinformatik Christof Wingender c.wingender@uni-muenster.de 15./16. Mai 2008 Im Rahmen des Seminars E-Learning Automatisches Testen und Bewerten](https://reader035.vdocuments.mx/reader035/viewer/2022070310/55204d6649795902118bbb59/html5/thumbnails/24.jpg)
24
Bewertung
■ Überprüfung■ Programmierstil■ Potentielle Fehler■ Funktionalität■ Effizienz
■ Erweiterbar
■ Problematisch■ GUIs, Applets
![Page 25: Wirtschaftsinformatik Christof Wingender c.wingender@uni-muenster.de 15./16. Mai 2008 Im Rahmen des Seminars E-Learning Automatisches Testen und Bewerten](https://reader035.vdocuments.mx/reader035/viewer/2022070310/55204d6649795902118bbb59/html5/thumbnails/25.jpg)
25
Gliederung
■ Einführung■ Anforderungen an Java-Klassen■ Analyse von Java-Klassen
■ Ansätze zum E-Assessment von Java-Klassen■ Praktomat■ Enviroment for Learning to Program■ extreme eLearning experience
■ Erweiterung der Ansätze■ Fazit
![Page 26: Wirtschaftsinformatik Christof Wingender c.wingender@uni-muenster.de 15./16. Mai 2008 Im Rahmen des Seminars E-Learning Automatisches Testen und Bewerten](https://reader035.vdocuments.mx/reader035/viewer/2022070310/55204d6649795902118bbb59/html5/thumbnails/26.jpg)
26
Fazit
■ Automatische Überprüfung von■ Programmierstil■ Potentiellen Fehlern■ Funktionalität
■ Keine automatische Überprüfung von■ Effizienz■ Aufgaben mit GUI oder Applets
■ Trainingsbereiche■ Statische Analyse■ Aufgabenpool
![Page 27: Wirtschaftsinformatik Christof Wingender c.wingender@uni-muenster.de 15./16. Mai 2008 Im Rahmen des Seminars E-Learning Automatisches Testen und Bewerten](https://reader035.vdocuments.mx/reader035/viewer/2022070310/55204d6649795902118bbb59/html5/thumbnails/27.jpg)
27
Literaturverzeichnis
[AA08] Apache Ant: http://ant.apache.org, Abrufdatum 01.04.2008.
[Ch08] Checkstyle: http://checkstyle.sourceforge.net, Abrufdatum 01.04.2008.
[ELP08] Environment for Learning to Program: http://elp.fit.qut.edu.au, Abrufdatum 01.04.2008.
[FB08] FindBugs: http://findbugs.sourceforge.net, Abrufdatum 01.04.2008.
[Ju08] JUnit: http://www.junit.org, Abrufdatum 01.04.2008.
[PI08] Praktische Informatik: Informatik I: Kapitel 1: Einführung,
http://www.wi.uni-muenster.de/pi/lehre/ws0708/info1/index.php, Abrufdatum 02.04.2008.
[PMD08] PMD: http://pmd.sourceforge.net, Abrufdatum 01.04.2008.
[Pr08] Praktomat: http//www.fim.uni-passau.de/de/fim/fakultaet/lehrstuehle/softwaresysteme/
forschung/praktomat.html, Abrufdatum 01.04.2008.
[Xl08] extreme eLearning experience: http://dbms.uni-muenster.de/xLx, Abrufdatum 02.04.2008.
![Page 28: Wirtschaftsinformatik Christof Wingender c.wingender@uni-muenster.de 15./16. Mai 2008 Im Rahmen des Seminars E-Learning Automatisches Testen und Bewerten](https://reader035.vdocuments.mx/reader035/viewer/2022070310/55204d6649795902118bbb59/html5/thumbnails/28.jpg)
28
Java-Reflection API
■ Zur Laufzeit Informationen zur Struktur einer Klasse
// Klasse „laden“
Class<?> fahrrad = Class.forName("Fahrrad");
// Attribute der Klasse Fahrrad
Field fields[] = fahrrad.getDeclaredFields();
// Methoden der Klasse Fahrrad
Method methods[] = fahrrad.getDeclaredMethods();
![Page 29: Wirtschaftsinformatik Christof Wingender c.wingender@uni-muenster.de 15./16. Mai 2008 Im Rahmen des Seminars E-Learning Automatisches Testen und Bewerten](https://reader035.vdocuments.mx/reader035/viewer/2022070310/55204d6649795902118bbb59/html5/thumbnails/29.jpg)
29
Sicherheitsmanager
■ Zwischen Aufrufer und Betriebssystem■ Kontrolle über problematische (gefährliche) Methoden
der Java-Bibliothek■ Rechtevergabe: Policy-Datei■ grant-Anweisungen
grant {
permission java.io.FilePermission “<Filename>“, “read“;};
■ Nachteile■ Keine Rollen■ Kein Refresh (Neustart der Applikation)
![Page 30: Wirtschaftsinformatik Christof Wingender c.wingender@uni-muenster.de 15./16. Mai 2008 Im Rahmen des Seminars E-Learning Automatisches Testen und Bewerten](https://reader035.vdocuments.mx/reader035/viewer/2022070310/55204d6649795902118bbb59/html5/thumbnails/30.jpg)
30
JUnit
■ Isolierte Ausführung der Testmethoden■ Keine Seiteneffekte Neue Instanz der Klasse■ Herstellen der Testumgebung: setUp()■ Bereinigen der Testumgebung: tearDown()
Test
TestSuiteTestCase
Assert