Softwaretests mit JUnit und Eclipse

Werbung
Softwaretests
mit JUnit
und Eclipse
Dipl.-Inform. Adam Giemza
1
Softwaretests...
... sind sehr wichtig, aber
„Ich habe keine Zeit zum Testen“
„Testen von Software ist langweilig“
„Ich mache keine Fehler, mein Code funktioniert“
„Testen kann ich später immer noch“
2
Warum testen wir Software?
Tests sollen Fehler finden
Fehlerfreie Software
Hohe Softwarequalität
3
Ziel: Hohe Softwarequalität
●
●
Statische Methoden
●
Code-Analyse durch formale Prüfungen
●
Code Review
Dynamische Methoden
●
Debugging
●
Testen
4
Was ist ein Test?
●
Prüft Korrektheit eines Softwarebausteins
●
Jederzeit und beliebig oft wiederholbar
●
Ergebnis bei gleichen Parametern gleich
●
Reduziert das Restrisiko verbleibender Fehler
●
Deckt Fehler auf, beweist nicht Fehlerfreiheit
5
Verschiedene Arten von Tests
UnitTests
Systemtests
Akzeptanztest
Performance-Tests
Integrationstests
6
Wer schreibt einen UnitTest?
●
●
●
Tests werden von den Entwicklern geschrieben
Entwickler einer Komponente muss auch
entsprechenden Test schreiben, um die
Komponente zu testen
Fehlerfreie Tests erhöhen Vertrauen in Code!
7
JUnit
●
●
●
●
●
Framework zum automatisierten Testen von
Units in Java
Units sind Einheiten; in Java Klassen, Objekte
und Methoden
JUnit entwickelt von Kent Beck und Erich
Gamma
Testen ist eine zentrale Tätigkeit im XPEntwicklungszyklus
XP (Extreme Programming)
8
JUnit (2)
●
Framework selbst in Java geschrieben
●
Zwei Versionen
●
●
●
3.8.1 – Java 1.4.x und kleiner
●
4.x
– Java 1.5.x und höher
Tests werden in Java geschrieben (Programm
und Tests in einer Sprache)
Nur zwei Ergebnisse eines Tests:
●
Gelingt (grün)
●
Gelingt nicht (rot) (Failure oder Error)
9
JUnit ≤3.8.x
●
Package junit.framework.*
●
Testklasse von TestCase ableiten
●
Methoden müssen mit test beginnen
●
setUp() und tearDown() überschreiben
●
TestCase leitet ab von Assert
●
Assert bietet statische Methoden zur
Überprüfung
static public void assertEquals(
Object expected, Object actual)
●
TestSuite als Sammlung von TestCases
10
JUnit ≥4.x
●
Package org.junit.*
●
Nutzt Annotations von Java 1.5
●
POJOs als Testklassen
●
Testmethoden durch @Test-Annotation
●
Weitere Annotationen
●
●
@Before, @After (siehe setUp und tearDown)
@BeforeClass, @AfterClass (einmaliger Aufruf vor
und nach dem Test)
11
JUnit ≥4.x (2)
●
Assert durch statischen Import
import static org.junit.Assert.*;
●
TestSuite durch @RunWith -Annotation
import org.junit.runner.RunWith;
import org.junit.runners.Suite;
import org.junit.runners.Suite.SuiteClasses;
@RunWith(Suite.class)
@SuiteClasses({Test1.class, Test2.class})
public class AllTests {}
12
JUnit ≥4.x (3)
●
●
Parametrisierte Tests (siehe Demo)
Möglichkeit JUnit 3.x Test in JUnit 4 einzubetten
(JUnit4TestAdapter)
●
@Ignore -Annotation mit Text
●
Parameter der @Test -Annotation
●
expected=IllegalArgumentException.class
●
timeout=2000
13
JUnit Demo mit Eclipse
14
Abdeckung der Testfälle
●
●
●
Tests decken nur Fehler auf, beweisen nicht
Fehlerfreiheit
Hohe Abdeckung der Tests
●
Parametervarianten
●
Code-Abdeckung
Je mehr Code durch Tests abgedeckt ist, desto
geringer ist das Restrisiko für Fehler
15
EclEmma
●
Java Code Coverage Tool für Eclipse
●
Basiert auf Emma (Java Code Coverage Tool)
●
●
●
Analysiert den Code-Durchlauf und bietet
Statistiken
●
Abdeckungsübersicht
●
Färbung des Source Codes
www.eclemma.org
Eclipse Update Site:
http://update.eclemma.org/
16
EclEmma Demo
17
Viel Spaß beim Testen!
18
Herunterladen