Freitag, 23. Oktober 2015

Musterlösung Übung Komponententests und Testabdeckung

Hier finden Sie eine Musterlösung in Form von zwei JUnit Tests für die erste Übungsaufgabe zum Thema Komponententests, geprüft wird die Klasse Quicksort:
Link zur Musterlösung

Donnerstag, 22. Oktober 2015

Übungsaufgabe zu Komponententests

Für die Komponente "quicksort" im Java Package "swqs.quicksort" soll ein Komponententest (Unit-Test) geschrieben werden. Die Komponente umfasst alle Klassen im Java Package.

Schritt 0: Importieren des Beispiel-Projekts in Eclipse

Dazu laden Sie sich die ZIP Datei herunter: DOWNLOAD

Anschließend entpacken Sie das Archive und rufen das folgende Gradle Kommando auf:

  gradlew.bat eclipse



(Linux und OSX Benutzer können das Kommando wie folgt aufrufen ./gradlew eclipse)

Nun können Sie das Projekt in Eclipse importieren als existierendes Projekt.

Hinweis für den Import in Eclipse:
Für den Import die Funktion File > Import aufrufen.
 Das Verzeichnis mit dem entpackenten Projekt (ZIP) auswählen und den Finsh Button klicken.



Schritt 1: Erstellen einer Unit Test Klasse 



Geben Sie der Klasse den Namen QuicksortTest geprüft werden soll die Komponente Quicksort, die Test-Klasse sollte im Source-Folder "src/test/java" abgelegt werden


Schritt 2: Schreiben eines Tests zum Sortieren des folgenden Arrays:


  new Integer[]{5, 6, 3};

Schritt 3: Markieren Sie die 4 Phasen in Ihrer Unit Test Klasse

Nutzen Sie dazu einfache Java Kommentare.


Schritt 4: Messen der Abdeckung mittels Gradle oder Eclipse Plugin. 


Dazu kann das Gradle Skript wie folgt aufgerufen werden:

  ./gradlew.bat

Der Report mit der Abdeckung kann dem folgenden Ordner entnommen werden:
swqs.quicksort\build\reports\tests\index.html

Oder Sie installieren ein entsprechendes Eclipse Plugin z.B. EclEmma (http://eclemma.org/)

Schritt 5: Erstellen eines Tests zum Sortieren des folgenden Arrays:


  new String[]{"xy", "aa", "bb"};



Schritt 6: Identifizieren Sie weitere Testfälle 


Versuchen Sie 100 % Anweisungsabdeckung zu erreichen und 100 % Zweigabdeckung.


Optional Schritt 6: FEST Asserts 

Nutzen Sie anstelle der JUnit Assertion API die FEST asserts
siehe dazu https://github.com/alexruiz/fest-assert-2.x/wiki/Using-fest-assertions




Hinweis - Eclipse Tooling für Coverage

Um Coverage in Eclipse messen zu können müssen Sie eine Erweiterung installieren z.B. Code Cover oder EclEmma. Die Links zu den Eclipse Update Sites finden Sie hier.

Installieren von Code Cover in Eclipse
(siehe http://codecover.org/documentation/install.html)
Name: CodeCover Update Site
URL:  http://update.codecover.org/

Installieren von EclEmma Eclipse Plugin
(siehe auch http://www.eclemma.org/)
Name: EclEmma
URL:  http://update.eclemma.org/ 



Mittwoch, 21. Oktober 2015

Komponententests und Testabdeckung

Download Folien (als PDF) hier.

Lernziele:
  • Beschreiben Sie die Phasen in die ein Unit-Test aufgeteilt werden kann.
  • Welchen Teil einer Anwendung testet ein Komponententests?
  • Welche Qualitätskriterien sollten bei Komponententests (Modultests) geprüft werden?
  • Was bezeichnet der Begriff Testabdeckung?
  • Warum ist eine vollständige Testabdeckung i.d.R. nicht möglich?
  • Welche Methoden zur Bestimmung der Testabdeckung für White-Box (bzw. Gray-Box) Tests kennen Sie?
  • Wie bestimmen Sie die mögliche Anzahl der Pfade in einer Schleife? 
  • Was sind "Test Doubles" und wozu braucht man sie?
  • Welche unterschiedlichen Typen von "Test Doubles" kennen Sie?
  • Wann sollte man ein Mocking Werkzeug wie Mockito zum testen einsetzten?
Werkzeuge Links

Mittwoch, 7. Oktober 2015

Einführung Software Qualitätssicherung

Download

Lernziele

  • Was ist Software-Qualität?
  • Was sind die Kriterien guter Software?
  • Wie kommt man zu guter Software?
  • Was versteht man unter konstruktive und analytischer Qualitässicherung?
  • Unterscheiden Sie die Begriffe Fehlerwirkung, Fehlerzustand, Fehlhandlung.
  • Was ist der Unterschied zwischen Testen und Debuggen?
  • Beschreiben Sie das Vier Phasen Test Muster. Welche Phasen gibt es und wozu dienen sie?
  • Wozu setzt man bei JUnit die Methoden setUp() und tearDown() ein?
  • Wie muss man vorgehen, um aus einer "normelen" Klasse eine Testklasse zu machen?
  • Welche Java Sprachfunktionen werden in JUnit 4 verwendet um eine Methode als Test zu markieren?

ISO-9126 Attribute

ISO-25010 Attribute

Links

Blog Software-Qualitätssicherung

Herzlich Willkommen zur Vorlesung Softwarequalitätssicherung. Hier auf diesem Blog finden Sie alle Informationen (Folien, Hinweise zu Bücher, Links, etc.) zu der SWQS Vorlesung des WS1516. Es wird zur jeder Vorlesung ein Blogeintrag geben über den ich Ihnen alle Unterlagen zur Vorlesung bereitstelle.

Am besten Sie abonnieren einfach den News-Feed dann bekommen Sie immer mit wenn es was neues rund um die Vorlesung gibt.

Viele Grüße

Christian Baranowski