Upload
ima-muser
View
109
Download
1
Embed Size (px)
Citation preview
Qualität von Software - Prof. Schlingloff, Lackner - SS2013 1
DYNAMISCHER TEST
Whitebox Testen mit JUnit
Qualität von Software - Prof. Schlingloff, Lackner - SS2013
2
Übersicht
1. Grundlagen des Unittests1. Units2. Unit Testing
2. Testverfahren1. Blackbox2. Whitebox
3. Unit Testing mit Eclipse4. Besprechung der Übungsaufgabe
3
Qualität von Software - Prof. Schlingloff, Lackner - SS2013
Modultest, Komponententest
Unit Testing
Qualität von Software - Prof. Schlingloff, Lackner - SS2013
4
Unit
Funktionales Einzelteil Methode Klasse Modul Komponente
Strukturmittel der Software-Architektur Steigert die Wiederverwendbarkeit Module sind unabhängig voneinander
bearbeitbar
Qualität von Software - Prof. Schlingloff, Lackner - SS2013
5
Unit Testing
Unit ≈ kleinste testbare Einheit einer Anwendung
Units werden isoliert getestet Notwendige umgebende Komponenten
der Unit: Ersetzung durch Stubs oder Mock-Ups
(keine Prototypen!) Testharness/framework
Qualität von Software - Prof. Schlingloff, Lackner - SS2013
6
Auch ein Mock-uphttp://pl.wikipedia.org/wiki/Atrapa
Qualität von Software - Prof. Schlingloff, Lackner - SS2013
7
Anwendung des Unit Testings In frühen Entwicklungsphasen
Agile (z.B. Scrum) und testgetriebene Methoden (Extreme Programming) machen intensiven Gebrauch von Unit Testing
Nach Code-Änderungen Automatisierte Regressionstests Viele Frameworks verfügbar (XUnit)
8
Qualität von Software - Prof. Schlingloff, Lackner - SS2013
Black- & Whitebox
Testverfahren
Qualität von Software - Prof. Schlingloff, Lackner - SS2013
9
Blackbox Test
Spezifikationsbasierter Blackbox-Test Eine Spezifikation beschreibt das erwartete Verhalten Interna des Testlings sind nicht einsehbar Tests überprüfen die Einhaltung der Spezifikation
Exploratives Testen Spezifikation ist unbekannt Tester lernen das System kennen
und wenden Erfahrungswerte an Wiederverwendung für Regressionstests
Qualität von Software - Prof. Schlingloff, Lackner - SS2013
13
Whitebox
Testen mit Kenntnis über den Code Typische Whitebox Techniken sind
Unit Testing Dynamische Technik (mit Code-Ausführung)
Inspektion Verifikation
Whitebox Unit Testing ist häufig kontrollflussorientiert: Anweisungsüberdeckung Zweigüberdeckung Bedingungsüberdeckung Pfadüberdeckung
http://kashif-whiteboxtesting.blogspot.de/2010_07_01_archive.html
Statische Techniken (keine Code-Ausführung)
Qualität von Software - Prof. Schlingloff, Lackner - SS2013
14
Exkurs: Kontrollflussgraphen Jede Anweisung wird
durch einen Knoten repräsentiert
Knoten werden der Ausführungsreihenfolge nach mit gerichteten Kanten verbunden
Jeder Knoten ist vom Wurzelknoten aus erreichbar
Kontrollflussstrukturen führen zu Verzweigungen
Basiswissen Softwaretests Andreas Spillner, Tilo Linz (2005), 3. Auflage, dpunkt.verlag, ISBN: 3-89864-358-1
Qualität von Software - Prof. Schlingloff, Lackner - SS2013
15
Kontrollflussorientierte Abdeckungskriterien
Anweisungsüberdeckung = Knotenüberdeckung
Zweigüberdeckung = Kantenüberdeckung
Weitere kontrollflussorientierte Abdeckungskriterien
Bedingungsüberdeckung = Variablenbelegung für logische Ausdrücke
Pfadüberdeckung = Betrachtung der Ausführungspfade
16
Qualität von Software - Prof. Schlingloff, Lackner - SS2013
Unit Testing mit Eclipse
Qualität von Software - Prof. Schlingloff, Lackner - SS2013
17
JUnit (Beck&Gamma)
JUnit wird als Bibliothek bereitgestellt und muss als solche auf dem Build-Path verfügbar sein.
Eine JUnit-Testfalldatei ist eine Java-Klasse
Testfälle sind mit „@Test“ annotierte Methoden
Eine Junit-Testsuitedatei bündelt mehrere JUnit-Testfalldateien
Beispiel für eineJUnit-Testdatei
Qualität von Software - Prof. Schlingloff, Lackner - SS2013
18
Basisfunktionen
Assertmethoden: Leichte Überprüfung von Bedingungen (assertTrue, assertEquals,…).
Erwartete Exceptions: In der Test-Annotation ist es möglich eine Exception anzugeben, die der Test werfen sollte.
Helfermethoden: Es ist auch möglich, beliebig viele „normale“ Methoden in der Klasse zu benutzen.
Qualität von Software - Prof. Schlingloff, Lackner - SS2013
19
JUnit Annotiationen
@Test: Die tatsächlichen Testmethoden. @Before und @After: Methoden, die
vor und nach jedem Test ausgeführt werden.
@BeforeClass und @AfterClass: Methoden, die vor und nach allen Tests ausgeführt werden.
@Ignore: Methoden, die noch nicht bestehende Funktionalität testen, können temporär ignoriert werden.
20
Qualität von Software - Prof. Schlingloff, Lackner - SS2013
Beispiel in Eclipse
21
Qualität von Software - Prof. Schlingloff, Lackner - SS2013
Werzeugunintegration
Qualität von Software - Prof. Schlingloff, Lackner - SS2013
22
Eclipse Integration
JUnit 4 ist in der aktuellen Eclipse Distribution für Java Developer enthalten
Alternativ von http://www.junit.org das aktuelle Archiv herunterladen.
Qualität von Software - Prof. Schlingloff, Lackner - SS2013
23
Testsuite in Eclipse ausführen Rechtsklick auf die Testfalldatei Run as JUnit Test wählen
Qualität von Software - Prof. Schlingloff, Lackner - SS2013
24
Auswertung der Tests mit JUnit Nach der
Testausführung öffnet sich automatische der Reiter „JUnit“
Qualität von Software - Prof. Schlingloff, Lackner - SS2013
25
EclEmma
Codecoverage Analyse Basierend auf Emma Bereitgestellt als Eclipse Plugin
Installation Eclipse Help Install New Software: Dialog Eclipse Update Site:
http://update.eclemma.org/ Add Paket „EclEmma“ auswählen Finish
Next, Next, Next…
Qualität von Software - Prof. Schlingloff, Lackner - SS2013
26
Messen der Code-Abdeckung JUnit-Datei auswählen EclEmma Launcher wählen Coverage As JUnit Test wählen
Qualität von Software - Prof. Schlingloff, Lackner - SS2013
27
Coverage-Auswertung der Testfälle
Qualität von Software - Prof. Schlingloff, Lackner - SS2013
28
Überdeckungskritierien in EclEmma Instructions (C0): Java Byte Code
Anweisungen Kleinste Einheit Unabhängig von der Code-Formatierung
Branches (C1): if und switch Kontrollstrukturen Exception-Handling ist kein Verzweigen
Außerdem: Zyklomatische Komplexität, Lines, Methoden, Klassen
30
Qualität von Software - Prof. Schlingloff, Lackner - SS2013
Testanalyse und Testfallentwurf
Übungsaufgaben
Qualität von Software - Prof. Schlingloff, Lackner - SS2013
31
1. Testfallentwurf
a) Erstellen Sie für die gegebenen Klassen den Kontrollflussgraphen und beschriften Sie die Kanten.
b) Wie viele Testfälle sind nötig um:i. 100% Anweisungsüberdeckung zu erreichen.ii. 100% Zweigüberdeckung zu erreichen.iii. Geben Sie die Testpfade an.
c) Erstellen Sie jeweils eine JUnit-Testsuite, welche die maximal mögliche Anweisungsüberdeckung für die gegebenen Klassen erreicht.
Qualität von Software - Prof. Schlingloff, Lackner - SS2013
32
2. Testfallanalyse
Laden Sie das auf der Webseite zur Verfügung gestellte Java-Projekt herunter und öffnen Sie dieses in Eclipse
a) Messen Sie die Code-Überdeckung mit EclEmma für die zur Verfügung gestellte Testsuite. Dokumentieren Sie das Ergebnis der Analyse für die TicTacToeModel.java bei Instruktions- und Zweigüberdeckung
b) Erstellen Sie zusätzliche Testfälle, sodass Sie die maximal mögliche Zweigüberdeckung erreichen.