Zustandsübergangstest

Das Szenario beinhaltet einen Geldautomaten (ATM). Um diesen Automaten zu benutzen, muss der Benutzer seine PIN eingeben.

Der Benutzer sieht zuerst den Startbildschirm, dann den Bildschirm „Warte auf PIN“. Danach sind 3 Versuche möglich. Wenn der PIN-Code korrekt ist, hat der Benutzer Zugriff auf das Konto. Wenn der Benutzer die maximale Anzahl an Versuchen überschreitet, wird die Karte eingezogen.

Aufgabe:

  1. Bestimme die Zustände, Übergänge und Ereignisse
  2. Erstelle die Zustandsübergangstabelle und das Zustandsübergangsdiagramm

Überdeckung

Dein Teamkollege hat einige Testfälle für das folgende Code-Stück erstellt.

Solange ein Kunde mehr als 50 € ausgibt, sollte der Versand kostenlos sein. Wenn es mehr als 25 € sind, aber weniger als 3 Artikel versendet werden müssen, sollte er ebenfalls kostenlos sein. Wenn es nur einen Artikel gibt, der mehr als 10 € kostet, sollte es einen Rabatt geben, aber der Versand sollte nicht kostenlos sein. In anderen Fällen sollte der volle Versandpreis gezahlt werden.

def is_shipping_free(price, numberOfItems, isPrimeShoppingMember):
    print("Additional Statement 1")
    if price > 50 or isPrimeShoppingMember:
        print("Additional Statement 2")
    if price > 25 and numberOfItems <3:
        print("Additional Statement 3")
    elif price > 10 and numberOfItems == 1 :
        print("Additional Statement 4(discount)")
        return False
    return True
    print("Additional Statement 5")

Er hat die folgenden Tests geschrieben und fragt dich, ob diese Testfälle den Code abdecken:

print("----------------")
is_shipping_free(30,2,True)
print("----------------")
is_shipping_free(15,1,False)
print("----------------")
is_shipping_free(15,1,True)
print("----------------")
is_shipping_free(50,1,False)

Aufgaben:

  1. Zeichne ein Zustandsübergangsdiagramm (gerichteter azyklischer Graph) für diesen Codeabschnitt
  2. Berechne die Anweisungsüberdeckung (Statement Coverage) und die Zweigüberdeckung (Branch Coverage)
  3. Berechne die Anweisungsüberdeckung und die Zweigüberdeckung, wenn die Zeile print("Additional Statement 5") aus dem Code entfernt wird.

Beispiel:

Beispielaufgabe: Zustandsübergangstest & Überdeckung