35.2 Schleifen
QF-Test stellt zwei Knotentypen für die Implementierung von Schleifen zur Verfügung:
- Schleife Knoten führen ihre Kindknoten so oft aus, wie angegeben ist. Man kann die Schleife jedoch über einen Break Knoten jederzeit verlassen.
- While Knoten führen ihre Kindknoten so oft aus, bis die angegebene Bedingung nicht mehr gegeben ist. Derartige Schleifen können ebenfalls über einen Break Knoten jederzeit verlassen werden.
Hinweis Schleife Knoten enden auf jeden Fall nach der angegeben Anzahl von
Wiederholungen. Bei While Knoten muss man jedoch selbst dafür sorgen, dass die
Ausführung irgendwann endet, indem die Bedingung falsch wird. Ansonsten kommt es zur
Endlosschleife. Im interaktiven Modus können Sie in so einem Fall einfach die Pausetaste
drücken. Im Batch-Modus, d.h. wenn Sie
QF-Test mit dem Kommandozeilenparameter -batch starten um die angegebene Testsuite
ohne die QF-Test Benutzeroberfläche auszuführen, müssen Sie dann jedoch den QF-Test Prozess
"abschießen".
In der folgenden Übung wollen wir einen Testfall implementieren, der prüft, ob eine bestimmter Eintrag in der Liste des CarConfig Demos angezeigt wird.
Die im Testfall durchgeführten Aktionen sind:
- Anzahl Listeinträge bestimmen.
- Über alle Einträge iterieren und prüfen, ob der Eintrag passt.
- Wenn der Eintrag gefunden wurde, die Schleife abbrechen.
- Falls der Eintrag nicht gefunden wurde, einen Fehler ins Protokoll schreiben.
Bitte beginnen Sie mit der Aufnahme eines Checks auf die zu suchende Eintrag:
-
Aktion
Aktivieren Sie den Check-Aufnahmemodus über "Checks
aufnehmen"
.
- Führen Sie einen Rechtsklick auf eine Fahrzeugnamen im CarConfig Demo aus und wählen Sie den Menüpunkt »Text« aus dem Popup-Menü.
-
Beenden Sie die Aufnahme über "Aufnahme beenden"
.
-
Ändern Sie den Namen der aufgenommenen Sequenz z.B. in
Text prüfen. - Wandeln Sie die Sequenz in einen Testfall um: Rechtsklick auf den Sequenz Knoten und Auswahl des Untermenüpunkts »Knoten konvertieren in«-»Testfall« im Popup-Menü.
In QF-Test können Sie sehr effizient Knoten hinzufügen, indem Sie einen Knoten in einen anderen einpacken:
- Aktion Öffnen Sie den Testfall Knoten und packen Sie den aufgenommenen Check Knoten in eine Schleife indem Sie rechts auf den Knoten klicken und in dem sich öffnenden Popupmenü den Punkt »Knoten einpacken in«-»Schleife« auswählen.
QF-Test ermittelt dynamisch, in welche Knoten ein Knoten eingepackt werden kann und bietet nur diese zur Auswahl an. Entsprechend kann es passieren, dass Sie "Schleife" im Untermenü nicht finden. Sie sollten dann prüfen, ob Sie den Rechtsklick auf den richtigen Knoten ausgeführt haben. Dasselbe gilt für die Operationen "Knoten konvertieren in" und "Knoten einfügen".
Als nächstes setzen wir den Wert für das Attribut 'Anzahl Wiederholungen' des
Schleife Knoten. Dazu müssen wir bestimmen, wie viele Einträge die Liste hat. Es
gibt keinen Knoten, der diese Operation direkt ausführen kann. Allerdings gibt es eine
derartige Prozedur in der im letzten Kapitel besprochenen Standardbibliothek. Diese befindet
sich im Package qfs.android.list und heißt getItemCount.
- Aktion Selektieren Sie den Testfall Knoten und drücken Strg+A.
-
Klicken Sie die Schaltfläche "Prozedur auswählen"
links neben
der Überschrift 'Name der Prozedur'.
- Wählen Sie den Reiter 'qfs.qft' im 'Prozedur auswählen' Dialog.
- Navigieren Sie zu 'getItemCount' im Package 'qfs.android.list'
- Drücken Sie 'OK' um die Prozedur auszuwählen.
- Drücken Sie 'OK' um den 'Prozeduraufruf' Dialog zu schließen.
Das Hinzufügen einer Prozedur über Strg+A wurde in Manuelle Erstellung von Prozeduren beschrieben. Dort finden Sie auch Screenshots zur Aktion.
-
Aktion
Fügen Sie eine Variable mit dem Namen
itemCountim Attribut 'Variable für Rückgabewert' ein. -
Ändern Sie den Standardwert für
idin der Variablendefinitionen-Tabelle auf die QF-Test Komponenten-ID der Listeaction_bar_root.list. - Klicken Sie OK.
- Wählen Sie den 'Schleife'-Knoten.
-
Im Attribut 'Anzahl Wiederholungen' des Schleife Knotens tragen Sie
eine Referenz auf die Variable
$(itemCount)ein. -
Tragen Sie den Namen der Zählervariable, z.B.
i, im entsprechenden Attribut des Schleife Knotens ein. - Klicken Sie OK.
In den Details des Check Knotens tragen wir nun in der QF-Test ID der Komponente statt des aufgenommenen Listenindex eine Referenz auf die Zählervariable ein und setzen eine Ergebnisvariable. Außerdem fügen wir einen If Knoten unter dem Check Knoten hinzu, der das Ergebnis auswertet und die Schleife über einen Break Knoten verlässt, wenn die entsprechende Zeile gefunden wurde.
- Aktion Öffnen Sie den Schleife Knoten.
- Selektieren Sie den Check Knoten.
-
Ändern Sie den aufgenommenen Index der QF-Test ID der Komponente in
Zählervariable
$(i). Die QF-Test ID der Komponente sollte nunaction_bar_root.list&$(i)@#Label:lauten. -
Tragen Sie den Variablennamen
ItemGefundenin das Attribut 'Variable für Ergebnis' ein und klicken OK. - Führen Sie einen Rechtsklick auf den Check Knoten aus und wählen Sie aus dem Popup-Menü den Unterpunkt »Knoten einfügen«-»Ablaufsteuerung«-»Break« aus.
- Drücken Sie 'OK' im 'Break' Dialog.
- Packen Sie den Break Knoten in einen If Knoten mittels des Tastaturkürzels Strg+Umschalt+I (Sie können natürlich auch über das Menü gehen).
-
In den Details des 'If'-Knotens tragen Sie
$(ItemGefunden)im Attribut 'Bedingung' ein und klicken OK.
Die Variable ItemGefunden wird vom Check Knoten entweder auf den Wert
'true' oder auf den Wert 'false' gesetzt, so dass wir im Attribut 'Bedingung' des
If Knoten nur die Referenz auf die Variable $(ItemGefunden)
einzutragen brauchen.
In den nächsten Schritten wollen wir einen Else Knoten als letzten Knoten im
Schleife Knoten einfügen. Er wird nur ausgeführt, wenn die Schleife so oft wie
angegeben ausgeführt wurde, was in unserem Fall bedeutet, dass die Variable
ItemGefunden nie wahr wurde, weil die Zeile nicht gefunden wurde.
- Aktion Schließen Sie den If Knoten, falls dies nicht bereits der Fall ist. Dies ist wichtig, da sonst der Else Knoten zum If Knoten und nicht zum Schleife Knoten gehören würde.
- Führen Sie einen Rechtsklick auf den If Knoten aus und wählen Sie auf dem Popup-Menü den Unterpunkt »Knoten einfügen«-»Ablaufsteuerung«-»Else« .
- Klicken Sie im 'Else' Dialog 'OK'.
- Öffnen Sie den Else Knoten.
-
Fügen Sie aus der Standardbibliothek die Prozedur
logErroraus dem Packageqfs.run-logwie oben beschrieben ein. -
In der 'Variablendefinitionen' Tabelle tragen Sie
Item nicht gefundenals Wert der Zeilemessageein. -
Tragen Sie
trueals Wert der ZeilewithScreenshotsein. - Drücken Sie OK.
Wenn Sie die Tests im Batch-Modus ausführen, sind Screenshots eine gute Unterstützung bei
der Fehleranalyse. Da aber eine große Zahl Screenshots sehr große Protokolldateien erzeugen
würden, ist der Standardwert für withScreenshots false.
Nun bleibt nur noch, den Testfall mit Vorbereitung und Aufräumen Knoten zu vervollständigen und ihn in den oberen Teil der Testsuite zu verschieben.
- Aktion Kopieren Sie die Vorbereitung und Aufräumen Knoten aus 'Testset: Einfache Tests' in den neuen Testfall als ersten und letzten Knoten.
- Verschieben Sie den Testfall aus dem Bereich Extrasequenzen in den oberen Bereich der Testsuite hinter den Knoten 'Testset: Einfache Tests'.
Damit würde der neue Testfall wie folgt aussehen:
- Aktion Führen Sie den neuen Testfall aus.
Er sollte ohne Fehler laufen.
-
Aktion
Ändern Sie nun in den Details des Check Elemente
Knotens den Namen des Fahrzeugs zum Beispiel auf
Falscher Wert.
- Aktion Führen Sie den Testfall nochmals aus.
Nun sollte der Test den Else Knoten der Schleife ausführen und eine Fehlermeldung anzeigen.