home  |  suche  |  kontakt/johner  |  institut  |  hinweise 
studierende  |  tech-docs  |  blog  |  mindmailer 

Übung 9 - "Logisches Testen"

Nachdem Sie in der Vorlesung bereits das Testen mit Hilfe der Ursache-Wirkungs-Graphen und Entscheidungstabellen kennen gelernt haben, soll in dieser Übungsaufgabe ein weiteres Beispiel bearbeitet werden.

 Bei einem Bankautomaten kann man Geld abheben. Das bedingt aber, dass Sie eine gültige Karte und genügend Geld haben. Natürlich müssen Sie die richtige PIN eingeben. Sie haben maximal drei Versuche, dann zieht der Automat die Karte ein.

  1. Beschreiben Sie die Eingaben
  2. Beschreiben Sie die Ausgaben
  3. Erstellen Sie den Ursache-Wirkungsgraph
  4. Erstellen Sie die Entscheidungstabelle
  5. Bestimmen Sie die Testdaten

Hinweis: Die Lösung zu dieser Aufgabe können Sie in dem dem Buch von Spillner nachlesen.

Übung 8 - Zustandsbezogenes Testen

Personen können Informatik studieren, wenn Sie eine Hochschulzugangsberechtigung erwerben. Personen werden geboren und können sterben. Wenn die Hochschulzugangsberechtigten studieren, können sie das Studium erfolgreich zum Informatiker abschließen oder aufgrund mangelnder Leistungen für immer vom Informatikstudium ausgeschlossen werden.

Zeichen Sie ein Zustandsdiagramm und benennen Sie die Zustände und Übergänge. Gehen Sie davon aus, dass Personen keine weiteren Studien als Informatik aufnehmen können.

Beschreiben Sie alle zu testenden Übergangsbaum und den erweiterten Übergangsbaum und nennen Sie einige Testfälle.

Übung 7 - auch Blackbox-Testing

Finden Sie geeignete Testfälle für die unten beschriebene Methode. Nutzen Sie zur Testfallermittlung Äquvalenzklassen, Grenzwertanalyse und fehlerbasiertes Testen.

/**

* Methode berechnet Semestergebühr abhängig von Anzahl der Semester und dem

* Notendurchschnitt: Falls der Studierende weniger als 3 Semester studiert

* hat, kostet es 200 EUR, bei 3 bis 6 Semestern 300 EUR und bei mehr als

* 6 Semestern 400 EUR. Ist die Note besser als 2.0 bekommt man 50 EUR,

* bei 1.5 oder besser 100 EUR Ermäßigung. Es werden 10-tel Noten vergeben.

*/

public int getSemestergebuehr(int anzahlSemester, int notenDurchschnitt) {...}

Übung 6 - Blackbox Testing

"Ihr" Lieblingsentwickler hat für einen Kunden (das Finanzamt) zwei Klassen programmiert, die über je eine Methode verfügen:

  • die Klasse TestTax berechnet für ein gegebenes Einkommen den Steuersatz, der wie unten beschrieben spezifiziert ist.
  • die Klasse TestCalendar berechnet den Endtermin/Uhrzeit für ein Treffen, bei dem Anfangsjahr, -monat, -tag, -stunde, und -minute ebenso bekannt sind wie die Dauer des Treffens (in Tagen, Stunden und Minuten).

Sie haben den Eindruck, dass die Entwicklung etwas flüchig war, und der Programmierer möchte auch den Sourcecode nicht zeigen. Vielleicht hat er auch einfach eine Abneigung gegen diesen Kunden. Sie jedenfalls möchten keinesfalls fehlerhaften Code ausliefern und beginnen zu testen.

Hinweis zu Steuerberechnung

Die Spezifikation sieht vor, dass sich die Steuer wie folgt berechnet:

0 <= x < 20000: Steuersatz 0

20000 <= x < 30000: Steuersatz 20% (x ist der Anteil über 20000)

30000 <= x < 40000: Steuersatz 30% (x ist der Anteil über 30000)

ab 40000: Steuersatz 40% (x ist der Anteil über 40000)

ab 50000: zusätzlich 3% auf alles

Aufgabe

  • Legen Sie ein Java-Projekt an, in das Sie das Jar-File blackbox.jar einbinden
  • Schreiben Sie JUnit Tests und nutzen Sie dabei folgende Methoden
    • Äquivalenzklassen
    • Grenzwertanalyse
    • Fehlerprovokation

Optionale Ergänzung: Stellen Sie sich vor, Sie wären für die Fehlerkorrektur und das Nachtesten obiger Klassen verantwortlich:

  • Dekompilieren Sie den Code und korrigieren Sie ihn, bis alle Ihre Modulttests fehlerfrei durchlaufen.

Abgabe

... bis Aufgabe 4 am 22.12.

Übung 4 - Testen mit Mock-Objekten

Sie sind als TesterIn für die Integrationstests einer Entwicklungsabteilung verantwortlich. Diese ist dabei, ein kleines Programm zu schreiben, mit dem man die Reisekosten berechnen kann. Nach Auskunft des stolzen Entwicklerteams fehlt nur noch die GUI. Die eigentliche Funktionalität sei aber implementiert.

Ihre Aufgabe ist es nun, die Klasse ExpenseCalculator zu testen, der selbst auf einen Webservice zur Währungsumrechung zurückgreift. Dieser Webservice ist aber nicht sehr zuverlässig und erlaubt auch keine unnötigen Zugriffe, wie sie beispielsweise durchs (automatisierte) Testen entstehen würden. Daher entscheiden Sie sich, diesen Dienst durch ein Mockobjekt zu ersetzen. Möglicherweise müssen Sie auch noch ein ernstes Wort mit dem Entwicklungsteam reden.

Aufgaben:

  • Laden Sie sich Initiates file downloaddie Dateien (Initiates file downloadhier der Source-Code) des Entwicklungsteams herunter
  • Legen Sie ein neues Projekt oder einen zumindest ein neues Package an und kopieren Sie die Dateien hinein.
  • Analysieren Sie diese Dateien, besonders den ExpenseCalculator. Weshalb sind Sie als TesterIn mit den Entwicklungsergebnissen nicht glücklich? Führen Sie notwendiges Refactoring durch.
  • Erstellen Sie einen JUnit Testcase, der ein oder mehrere Mockobjekte nutzt. Die Tests sollen zumindest eine 100%-ige Anweisungsabdeckung erzielen.

Abgabe

Die Übungen 1-3 sind zu Beginn der 4. Stunde abzugeben!

Übung 3 - Code Coverage

Gegeben sei folgendes Aktivitätsdiagramm.

Fragen

  • Wie könnte der Programmgraph dazu aussehen?
  • Welche Zyklomatische Komplexität hat er?
  • Wie müssten man ihn durchlaufen, um ein vollständige Anweisungs- und wie, ume eine vollständige Pfadabdeckung zu erreichen?
  • Wie viele Pfade ergeben sich, falls die Schleife genau fünfmal durchlaufen würde? Wieviele, falls die Schleife einmal bis fünfmal durchlaufen werden könnte?

Übung 2 - Code Coverage, Refactoring

Aufgaben:

  1. Legen Sie ein neues Eclipse Projekt an und erstellen Sie darin die gebenen Klassen.
  2. Versuchen Sie JUnit-Tests für die Klasse BadExample zu erstellen, die zu einem möglichst hohen Code Coverage führen (v.a. Statement Coverage).
  3. Falls Sie keine ausreichenden Fortschritte erziehlen, könnten Sie ein Refactoring in Erwägung ziehen.
  4. Erstellen Sie einen Coverage Report.

Übung 1 - Code Coverage, Clover

Code Cover gibt an, den Condition Coverage zu berechnen. Versuchen Sie durch eine geeignete Testmethode herauszufinden, ob Code Cover die Einfach- oder die Mehrfachbedingungsabdeckung oder sogar ein anderes Abdeckungsmaß damit meint.

Übung 0 - Einstieg JUnit und Coverage

Gegeben sei die folgende Klasse. Testen Sie deren Methoden mit JUnit so, dass Sie 100% Zweigabdeckung erreichen. Welche ISO 9126 Kriterien können Sie mit diesem Test sinnvoll prüfen?

package junit;

public class ToBeTested {
  public int abs(int a){
    System.out.println("a: " + a);
    if (a < 0) {
      return -a;
    }
    return a;
  }
  
  public int faculity(int numberthrows IllegalArgumentException{
    if(number > 0){
      int faculty = 1;
      for(int i = 1; i<= number; i++){
        faculty = faculty *number;
      }
      return number;
    }
    throw new IllegalArgumentException();
  }
}