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

Preview:

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.

Recommended