28
DYNAMISCHER TEST Whitebox Testen mit JUnit 1 Qualität von Software - Prof. Schlingloff, Lackner - SS2013

DYNAMISCHER TEST Whitebox Testen mit JUnit 1 Qualität von Software - Prof. Schlingloff, Lackner - SS2013

Embed Size (px)

Citation preview

Page 1: DYNAMISCHER TEST Whitebox Testen mit JUnit 1 Qualität von Software - Prof. Schlingloff, Lackner - SS2013

Qualität von Software - Prof. Schlingloff, Lackner - SS2013 1

DYNAMISCHER TEST

Whitebox Testen mit JUnit

Page 2: DYNAMISCHER TEST Whitebox Testen mit JUnit 1 Qualität von Software - Prof. Schlingloff, Lackner - SS2013

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

Page 3: DYNAMISCHER TEST Whitebox Testen mit JUnit 1 Qualität von Software - Prof. Schlingloff, Lackner - SS2013

3

Qualität von Software - Prof. Schlingloff, Lackner - SS2013

Modultest, Komponententest

Unit Testing

Page 4: DYNAMISCHER TEST Whitebox Testen mit JUnit 1 Qualität von Software - Prof. Schlingloff, Lackner - SS2013

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

Page 5: DYNAMISCHER TEST Whitebox Testen mit JUnit 1 Qualität von Software - Prof. Schlingloff, Lackner - SS2013

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

Page 6: DYNAMISCHER TEST Whitebox Testen mit JUnit 1 Qualität von Software - Prof. Schlingloff, Lackner - SS2013

Qualität von Software - Prof. Schlingloff, Lackner - SS2013

6

Auch ein Mock-uphttp://pl.wikipedia.org/wiki/Atrapa

Page 7: DYNAMISCHER TEST Whitebox Testen mit JUnit 1 Qualität von Software - Prof. Schlingloff, Lackner - SS2013

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)

Page 8: DYNAMISCHER TEST Whitebox Testen mit JUnit 1 Qualität von Software - Prof. Schlingloff, Lackner - SS2013

8

Qualität von Software - Prof. Schlingloff, Lackner - SS2013

Black- & Whitebox

Testverfahren

Page 9: DYNAMISCHER TEST Whitebox Testen mit JUnit 1 Qualität von Software - Prof. Schlingloff, Lackner - SS2013

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

Page 10: DYNAMISCHER TEST Whitebox Testen mit JUnit 1 Qualität von Software - Prof. Schlingloff, Lackner - SS2013

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)

Page 11: DYNAMISCHER TEST Whitebox Testen mit JUnit 1 Qualität von Software - Prof. Schlingloff, Lackner - SS2013

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

Page 12: DYNAMISCHER TEST Whitebox Testen mit JUnit 1 Qualität von Software - Prof. Schlingloff, Lackner - SS2013

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

Page 13: DYNAMISCHER TEST Whitebox Testen mit JUnit 1 Qualität von Software - Prof. Schlingloff, Lackner - SS2013

16

Qualität von Software - Prof. Schlingloff, Lackner - SS2013

Unit Testing mit Eclipse

Page 14: DYNAMISCHER TEST Whitebox Testen mit JUnit 1 Qualität von Software - Prof. Schlingloff, Lackner - SS2013

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

Page 15: DYNAMISCHER TEST Whitebox Testen mit JUnit 1 Qualität von Software - Prof. Schlingloff, Lackner - SS2013

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.

Page 16: DYNAMISCHER TEST Whitebox Testen mit JUnit 1 Qualität von Software - Prof. Schlingloff, Lackner - SS2013

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.

Page 17: DYNAMISCHER TEST Whitebox Testen mit JUnit 1 Qualität von Software - Prof. Schlingloff, Lackner - SS2013

20

Qualität von Software - Prof. Schlingloff, Lackner - SS2013

Beispiel in Eclipse

Page 18: DYNAMISCHER TEST Whitebox Testen mit JUnit 1 Qualität von Software - Prof. Schlingloff, Lackner - SS2013

21

Qualität von Software - Prof. Schlingloff, Lackner - SS2013

Werzeugunintegration

Page 19: DYNAMISCHER TEST Whitebox Testen mit JUnit 1 Qualität von Software - Prof. Schlingloff, Lackner - SS2013

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.

Page 20: DYNAMISCHER TEST Whitebox Testen mit JUnit 1 Qualität von Software - Prof. Schlingloff, Lackner - SS2013

Qualität von Software - Prof. Schlingloff, Lackner - SS2013

23

Testsuite in Eclipse ausführen Rechtsklick auf die Testfalldatei Run as JUnit Test wählen

Page 21: DYNAMISCHER TEST Whitebox Testen mit JUnit 1 Qualität von Software - Prof. Schlingloff, Lackner - SS2013

Qualität von Software - Prof. Schlingloff, Lackner - SS2013

24

Auswertung der Tests mit JUnit Nach der

Testausführung öffnet sich automatische der Reiter „JUnit“

Page 22: DYNAMISCHER TEST Whitebox Testen mit JUnit 1 Qualität von Software - Prof. Schlingloff, Lackner - SS2013

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…

Page 23: DYNAMISCHER TEST Whitebox Testen mit JUnit 1 Qualität von Software - Prof. Schlingloff, Lackner - SS2013

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

Page 24: DYNAMISCHER TEST Whitebox Testen mit JUnit 1 Qualität von Software - Prof. Schlingloff, Lackner - SS2013

Qualität von Software - Prof. Schlingloff, Lackner - SS2013

27

Coverage-Auswertung der Testfälle

Page 25: DYNAMISCHER TEST Whitebox Testen mit JUnit 1 Qualität von Software - Prof. Schlingloff, Lackner - SS2013

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

Page 26: DYNAMISCHER TEST Whitebox Testen mit JUnit 1 Qualität von Software - Prof. Schlingloff, Lackner - SS2013

30

Qualität von Software - Prof. Schlingloff, Lackner - SS2013

Testanalyse und Testfallentwurf

Übungsaufgaben

Page 27: DYNAMISCHER TEST Whitebox Testen mit JUnit 1 Qualität von Software - Prof. Schlingloff, Lackner - SS2013

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.

Page 28: DYNAMISCHER TEST Whitebox Testen mit JUnit 1 Qualität von Software - Prof. Schlingloff, Lackner - SS2013

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.