Black-Box-Test

Lee Copelands "A Practitioner's Guide to Software Test Design" wurde 2003 veröffentlicht.
Seitdem hat es sich fest in der Liste der Bücher verankert, die jeder Tester lesen muss. Es lohnt sich, im Original zu lesen. Es liest sich sehr gut: Die Sprache ist nicht kompliziert, der Stil ist einfach. Im Verlauf des Buches ironisiert der Autor leicht über sich selbst, seine Schüler, Leser und allgemein über den Bereich unserer Tätigkeit.


Das Folgende ist keine Übersetzung, sondern eine detaillierte Zusammenfassung des Abschnitts „Black Box-Testtechniken“, in dem die Anwendung von Testdesign-Techniken beschrieben wird.


Das Buch fiel mir auf Anraten eines ehemaligen Kollegen in die Hände, wofür ich mich ganz besonders bedanke.


Um möglichst effektiv und effizient zu sein, muss der Testfall entworfen und nicht nur zusammengeschlagen werden.

Testen der Äquivalenzklasse
Grenzwertprüfung
Testen der Entscheidungstabelle
Paarweises Testen
Zustandsübergangstests
Anwendungsfalltests


Testen der Äquivalenzklasse


Technik


  1. Definieren Sie Äquivalenzklassen.
  2. Erstellen Sie Testfälle für jede Äquivalenzklasse.

Eine Äquivalenzklasse ist ein Datensatz, der dieselben Module ausführt und dieselben Ergebnisse liefern sollte.


Alle Daten innerhalb der Klasse sind äquivalent. Wenn also ein Testfall in der Äquivalenzbox einen Fehler entdeckt / nicht gefunden hat, werden alle anderen Testfälle innerhalb dieser Äquivalenzklasse denselben Fehler erkennen / nicht finden.


Ein alternativer Ansatz besteht darin, Äquivalenzklassen nicht für Eingaben, sondern für Ausgaben zu verwenden. Teilen Sie die Ausgabevarianten in Äquivalenzklassen ein und bestimmen Sie, welche Eingabewerte solche Ausgaben auslösen können. Der Vorteil ist, dass jede mögliche Exit-Option aktiviert ist. Der Nachteil ist, dass innerhalb der Ausgabeäquivalenzklasse mehrere Eingabeäquivalenzklassen ausgeblendet werden können.


Wenn es mehrere Variablen gibt:


  1. Gültige Klassen mehrerer Variablen werden zu einem Testfall zusammengefasst.
  2. ungültige Klassen werden separat getestet.
    Lassen Sie Ihre Designer und Programmierer wissen, wann sie Ihnen geholfen haben. Sie werden den Gedanken zu schätzen wissen und vielleicht wieder einsteigen.


Grenzwertprüfung


Technik


  1. Definieren Sie Äquivalenzklassen
  2. Definieren Sie die Grenzen jeder Äquivalenzklasse
  3. Erstellen Sie Testfälle für jeden Grenzwert, indem Sie einen Punkt direkt am Rand über und unter dem Rand auswählen.

Es ist zu beachten, dass ein Punkt über oder unter der Grenze eine Instanz einer anderen Äquivalenzklasse sein kann. In diesem Fall müssen Sie den Test nicht duplizieren.


Die Werte werden nach Typ bestimmt. Wenn die Grenze 5 ist, werden die Punkte 4 und 6 für das Feld getestet, in das ganze Zahlen eingegeben werden, und die Punkte 4.99 und 5.01 werden für das Feld getestet, in dem die Beträge in Rubel und Copecks eingegeben werden.


Wenn es mehrere Variablen gibt:


  1. Mindestwerte gültiger Grenzen werden zu einem Testfall zusammengefasst.
  2. Maximalwerte gültiger Grenzen werden in einem anderen Testfall kombiniert;
  3. Ungültige Grenzen werden separat getestet, wie dies bei ungültigen Klassen der Fall ist.
    Grenzwerttests konzentrieren sich auf die Grenzen, da sich dort so viele Fehler verstecken.


Testen der Entscheidungstabelle


Technik


  1. Definieren Sie alle Bedingungen
  2. Machen Sie alle möglichen Kombinationen von Bedingungen
  3. Entfernen Sie unnötige Kombinationen. Diejenigen, bei denen das Ändern der Werte keine Auswirkung auf das Ergebnis hat (egal - DC), werden gelöscht
  4. Aktionen definieren
  5. Erstellen Sie Testfälle für jede Kombination

Entscheidungstabelle - repräsentiert die Beziehung der zusammengesetzten Bedingungen und der daraus resultierenden Aktionen.


Wenn die Bedingung ein Wertebereich ist, werden zusätzlich Tests erstellt, um die Werte über und unter der Grenze zu überprüfen.


2 3 = 8 Kombinationen
Regel 1
Regel 2
Regel 3
Regel 4
Regel 5
Regel 6
Regel 7
Regel 8
Bedingungen
Gültiger Bestandscode
N.
N.
N.
N.
Y.
Y.
Y.
Y.
Zulässiger Betrag
N.
N.
Y.
Y.
N.
N.
Y.
Y.
Genug Geld
N.
Y.
N.
Y.
N.
Y.
N.
Y.
Aktionen
Zu kaufen
N.
N.
N.
N.
N.
N.
N.
Y.

Wenn Sie sich die Tabelle genau ansehen, können Sie feststellen, dass in den Regeln 1, 2, 3, 4 die Überprüfung der verbleibenden Bedingungen keinen Sinn ergibt, wenn der Bestandscode ungültig ist. Regeln 5 und 6 können kombiniert werden, weil Die Bedingung für die Überprüfung von Geldern hat keinen Einfluss auf das Ergebnis. Bedingungen, die das Ergebnis nicht beeinflussen, sind als „DC“ gekennzeichnet. Die Tabelle wird konvertiert:


4 Kombinationen
Regel 1
Regel 2
Regel 3
Regel 4
Bedingungen
Gültiger Bestandscode
N.
Y.
Y.
Y.
Zulässiger Betrag
DC
N.
Y.
Y.
Genug Geld
DC
DC
N.
Y.
Aktionen
Zu kaufen
N.
N.
N.
Y.

Weil Es besteht immer die Möglichkeit, dass die Tabelle nicht korrekt konvertiert wird oder der Code falsch besser geschrieben wird, sodass die ursprüngliche Tabelle noch vorhanden ist.


Der berühmte Software-Tester Mick Jagger gibt ausgezeichnete Ratschläge zu diesem Thema: „Sie können nicht immer das bekommen, was Sie wollen, aber wenn Sie es manchmal versuchen, finden Sie vielleicht, was Sie brauchen.“


Paartests


Technik


  1. Parameter definieren
  2. Bestimmen Sie die Anzahl der Werte für jeden Parameter (Auswahlmöglichkeiten für Variablen)
  3. Erstellen Sie ein Array mit Spalten für jeden Parameter und Werten in Spalten, die alle Kombinationen der Werte dieser Parameter miteinander enthalten.
  4. Passen Sie das resultierende orthogonale Array zu Testzwecken an.
  5. Erstellen Sie Testfälle.

Es wurde experimentell festgestellt, dass die meisten Defekte entweder Single-Mode-Defekte oder Double-Mode-Defekte sind, d.h. manifestiert sich, wenn ein einzelner Parameter mit nur einem anderen Parameter kombiniert wird, während der Wert der verbleibenden Parameter keine Rolle spielt.


Wenn die Anzahl der Kombinationen von Variablenwerten groß ist, sollten Sie nicht versuchen, alle möglichen Kombinationen zu testen. Es ist besser, sich auf das Testen aller Paare von Variablenwerten zu konzentrieren.
Zwei paarweise Testansätze: die Methode der orthogonalen Arrays und der Allpair-Algorithmus.


Ein orthogonales Array ist ein zweidimensionales Array mit einer besonderen Eigenschaft: Wenn Sie zwei Spalten im Array auswählen, sind alle möglichen Kombinationen von Parameterwerten in ihnen vorhanden. Alle Spaltenpaare haben dieselbe Eigenschaft.


Alle Paare - Um ein Array zu erstellen, wird ein Algorithmus verwendet, der Paare direkt generiert, ohne zusätzlichen Ausgleich zu verwenden. Wenn es eine große Anzahl von Parametern gibt, die eine kleine Anzahl von Werten annehmen, ist diese Methode besser für das Pairing geeignet.


Es ist nicht notwendig, paarweise Kombinationen manuell vorzunehmen, dafür gibt es viele Werkzeuge .


Es ist zu beachten, dass Einschränkungen auftreten können, da einige Parameterkombinationen niemals stattfinden.


Es gibt keine zugrunde liegende „Softwarefehlerphysik“, die garantiert, dass paarweise Tests von Vorteil sind. Es gibt nur einen Weg zu wissen - probieren Sie es aus.


Zustandsübergangsdiagramm


Technik


Status - Ein Zustand, in dem das System ein oder mehrere Ereignisse erwartet. Der Status merkt sich, was am Eingang empfangen wurde, und bestimmt die Antwort, die auftreten soll. Dieses Ereignis kann in einen neuen Zustand versetzt und / oder eine neue Aktion eingeleitet werden. Der Status spiegelt normalerweise den Wert einer Variablen im System wider. Dargestellt in Form eines Kreises.


Übergang - Stellt den Übergang vom aktuellen in einen neuen Status als Ergebnis einer Aktion dar. Dargestellt als Pfeil.


Ereignis - Das Ereignis, durch das sich der Status geändert hat. Normalerweise tritt ein Ereignis von außen über eine Schnittstelle in das System ein. Manchmal wird dieses Ereignis im System selbst ausgelöst, z. B. ein Timer, der unter ein bestimmtes Niveau fällt. Es wird angenommen, dass das Ereignis sofort eintritt. Ein Ereignis kann entweder unabhängig oder verwandt sein. Wenn ein Ereignis eintritt, kann das System den Status ändern oder im selben Status bleiben und / oder eine Aktion einleiten. Ereignissen können Parameter zugeordnet sein (Kartennummer, Betrag auf dem Konto). Dargestellt als Beschriftung des Übergangspfeils.


Aktion - Eine Operation, die aufgrund einer Statusänderung eingeleitet wurde. Dies ist häufig eine Systemantwort. Denken Sie daran, dass während des Übergangs zwischen Zuständen eine Aktion ausgeführt wird. Die Zustände selbst sind statisch. Dies wird durch einen Schrägstrich in der Signatur des Übergangspfeils nach dem Ereignis angezeigt.


Ein Zustandsübergangsdiagramm ist eine bestimmte Entität (z. B. ein Sicherungsprozess). Ein häufiger Fehler ist der Versuch, verschiedene Entitäten in einem Diagramm zu mischen (z. B. Reservierung und Passagier mit Ereignissen und Aktionen, die mit jedem von ihnen verbunden sind).


Es kann verwendet werden, wenn das System den Hintergrund oder die richtige Reihenfolge der Vorgänge kennen muss.


Basierend auf dem Zustandsübergangsdiagramm wird eine Zustandsübergangstabelle erstellt. Die Tabelle enthält 4 Spalten: aktueller Status, Ereignis, Aktion, nächster Status.


Der Vorteil der Statusübergangstabelle besteht darin, dass sie eine Liste aller möglichen Kombinationen von Übergängen von Status zu Status enthält, einschließlich ungültiger. Bei der Analyse einer solchen Tabelle können Lücken in den Anforderungen festgestellt werden. Mithilfe einer Statusübergangstabelle können Sie ungültige Statusübergänge aufspüren.


Sie können eine von 4 Optionen zum Erstellen von Testfällen auswählen:


  1. Erstellen Sie Testfallsätze so, dass alle Zustände mindestens einmal abgeschlossen sind. In einem Testfall kann ein Übergang durch mehrere Zustände beschrieben werden. Dies ist eine eher schwache Testabdeckung.
  2. Erstellen Sie Testfallsätze so, dass alle Ereignisse mindestens einmal ausgelöst werden. Testfälle, die alle Ereignisse gleichzeitig abdecken, decken alle Bedingungen ab. Wieder schwache Testabdeckung.
  3. Erstellen Sie Sätze von Testfällen, sodass alle Pfade mindestens einmal abgeschlossen werden. Diese Methode ist unter dem Gesichtspunkt der Testabdeckung gut, aber praktisch nicht durchführbar. Wenn das Diagramm Zyklen enthält, kann die Anzahl der möglichen Pfade unendlich sein.
  4. Erstellen Sie Testfallsätze so, dass alle Übergänge mindestens einmal abgeschlossen werden. Diese Methode bietet eine gute Testabdeckung, daher wird empfohlen, sie zu verwenden.
    Bild
    Die empfohlene Strategie zum Erstellen von Testfällen besteht darin, alle Statusübergänge mindestens einmal zu testen. In Hochrisikosystemen, in denen eine zuverlässigere Testabdeckung erforderlich ist, können Testfälle für jeden Pfad (Übergangskette) zwischen Zuständen erstellt werden.
    Und jetzt zu etwas ganz anderem. Monty Python


Anwendungsfalltests


Technik


Anwendungsfall - Dies sind Szenarien, die beschreiben, wie ein Akteur (normalerweise eine Person, aber möglicherweise ein anderes System) das System verwendet, um ein bestimmtes Ziel zu erreichen. Anwendungsfälle werden aus Sicht des Benutzers und nicht des Systems beschrieben. Interne Arbeiten zur Aufrechterhaltung des Systemzustands sind nicht Teil des Anwendungsfalls.


Mindestens ein Testfall sollte das Hauptszenario überprüfen, und mindestens ein Fall sollte sich in alternativen Szenarien befinden.


Empfehlungen für Anwendungsfall-Testfälle


  1. Beginnen Sie mit gültigen Daten und den häufigsten Szenarien.
  2. Überprüfen Sie Grenzwerte und ungültige Werte (unter Verwendung der zuvor diskutierten Techniken).
  3. Selten verwendete systemkritische Szenarien (der sogenannte Shut Down The Nuclear Reactor)
  4. Tests für jeden Erweiterungszweig jedes Schritts
  5. Versuchen Sie, die Operation auf ungewöhnliche Weise durchzuführen
  6. Perverse Voraussetzung, wenn es wirklich passieren kann
  7. Wenn eine Transaktion Schleifen enthält, führen Sie sie in einer Schleife aus und nicht ein- oder zweimal - seien Sie härter
  8. Finde einen sehr langen und kurvenreichen Weg und folge ihm
  9. Wenn erwartet wird, dass die Transaktion in einer logischen Reihenfolge ausgeführt wird, versuchen Sie, sie in umgekehrter Reihenfolge auszuführen (füllen Sie beispielsweise die Felder nicht von oben nach unten, sondern von unten nach oben aus).
  10. Erstellen Sie narrensichere Tests

Anwendungsfallbeschreibungsvorlage


Anwendungsfallkomponente
Beschreibung
Anwendungsfallnummer oder Kennung
(Nummer oder ID)
Eindeutige Kennung
Anwendungsfallname
(Name)
In Form eines Satzes, der ein Verb in aktiver Form enthält (was tun?).
Beispiel: Anmelden, Bestellung erstellen
Ziel im Kontext
(Zweck und Kontext)
Eine detailliertere Beschreibung des Zwecks, falls erforderlich.
Erstellen Sie beispielsweise eine Bestellung im Namen der Organisation.
Geltungsbereich (Grenzen)
Corporation (General) | System | Subsystem
Level
Allgemein | Privat | Unterfunktion
Hauptdarsteller
Primäre Benutzerrolle oder Beschreibung
Voraussetzungen
Der Zustand, in dem sich das System befinden muss, bevor der Anwendungsfall beginnt
Erfolgsendbedingungen
Der Status, in den das System gehen soll, wenn der Anwendungsfall erfolgreich abgeschlossen wurde
Fehlgeschlagene Endbedingungen
Der Status, in den das System gehen soll, wenn der Anwendungsfall fehlschlägt
Auslöser (Auslösebedingung)
Aktion zum Auslösen dieses Anwendungsfalls
Haupterfolgsszenario
(Hauptszenario)
Schritte und Aktionen
Erweiterungen

Bedingungen, unter denen sich in den Hauptschritten des Szenarios alternative Optionen ergeben können.
Untervariationen
Alternativen
Schritte und Aktionen. Optionen, die sich nicht auf den Hauptthread beziehen, aber auftreten können. Beschrieben für den Schritt.
Priorität
Kritisch
Reaktionszeit
Die Zeit, die benötigt wird, um diesen Fall abzuschließen
Frequenz
Verwendungshäufigkeit
Kanäle zum Hauptdarsteller
Interaktiv | Datei | Datenbank Interaktiv / Datei / Basis
Daten fällig
Zeitplan
Vollständigkeitsgrad
Abschlussgrad
Offene Fragen
Gemeldete Mängel

Wenn Sie keine seltsamen Dinge ausprobieren. Sie wissen, dass die Benutzer werden.

Source: https://habr.com/ru/post/de462837/


All Articles