Logo QF-Test

Tutorial zur praktischen Einführung
in QF-Test

 

Gratis Testen  Download  Kaufen

Yann Spöri, QF-Test Entwicklung & Support

Die Beispiele, Demos und praktischen Übungen zu QF-Test verhelfen zu einem schnellen Start.

Yann Spöri,
Software Engineer, QFS

Uwe Klüh, Senior Sales Manager, QFS

Durchsuchen Sie die gesamte Dokumentation (Handbuch, Tutorial, Mailingliste, Standardbibliothek), indem Sie die Suchfunktion der Homepage nutzen.

Uwe Klüh, Sr. Sales Manager, QFS

Tutorial

4
Schreiben einer Prozedur [30-45 Min]

In diesem und den folgenden Kapiteln beginnen wir damit, einige fortgeschrittene Konzepte von QF-Test zu erkunden. Dies soll durch einen "Hands-On" Ansatz geschehen, welcher Ihnen einen guten Überblick vermittelt. Wir werden u. a. das hilfreiche Konzept von Prozeduren in QF-Test erläutern. Auf diesem Weg werden Sie auch andere Einblicke gewinnen, die Ihnen beim Entwickeln eigener Testsuiten nützlich sein werden.

Als ersten Schritt werden Sie eine einfache Prozedur erstellen, die ein Kontrollkästchen im SUT Client auswählt.

4.1
Los geht es mit einer neuen Testsuite

An dieser Stelle im Tutorial sind Sie in der Lage Ihre eigene Testsuite zu erstellen, die Sie im weiteren Verlauf stetig ausbauen werden. Wählen Sie dazu den Menüeintrag »Datei«-»Neue Testsuite...«.

Hinweis Wie Sie zweifellos bemerkt haben gibt es Tastaturkürzel für die meisten Menüoptionen. Sie sind ein schneller Weg hilfreiche Operationen durch einen einfachen Tastendruck auszuführen. Das Kommando »Datei«-»Neue Testsuite...« z.B. hat das Kürzel [Strg-N]. Sie sehen Kürzel direkt neben den meisten Optionen in den QF-Test Menüs, aber es gibt auch noch weitere, die nicht direkt aus der Benutzeroberfläche ersichtlich sind. Eine vollständige Übersicht finden Sie im Anhang Tastaturkürzel im Handbuch. Dort findet sich auch ein kleiner Helfer für die Funktionstastenbelegung von QF-Test zum Befestigen an der Tastatur.

Natürlich braucht eine Testsuite einen SUT Client. Das Options Demo, mit dem Sie ja bereits aus den vorausgegangenen Kapiteln bestens vertraut sind, ist eine einfache Applikation, die sich ideal als SUT eignet. Unser nächster Schritt ist es, dieses Programm als SUT für unsere neue Testsuite einzurichten.

Dafür benötigen Sie einen Vorbereitungsknoten, in dem das Programm gestartet und eine Verbindung zwischen Applikation und QF-Test hergestellt wird. Diesen Schritt können Sie einfach dadurch erreichen, indem Sie den Vorbereitungsknoten von der Testsuite Options.qft in Ihre neue Suite kopieren. Öffnen Sie dazu Options.qft (schlagen Sie in Kapitel 1 nach, wenn Sie hier nicht weiterkommen) und expandieren Sie den Knoten "Testfallsatz: Options". Der erste darin enthaltene Knoten ist die Vorbereitung Vorbereitungssequenz "Start the application". Wählen Sie diesen Knoten aus und kopieren Sie ihn mit »Bearbeiten«-»Kopieren« in die Zwischenablage.

Kehren Sie nun zu Ihrer eigenen Testsuite zurück und expandieren Sie dort den "Testfall" Knoten, so dass ein Einfügen möglich ist. Dann können Sie mit »Bearbeiten«-»Einfügen« die Vorbereitungssequenz an ihren Zielort platzieren.

Eine Aufräumsequenz ist üblicherweise dem Vorbereitungsknoten zugeordnet und macht Schritte der Vorbereitung rückgängig. In unserem Fall soll das Aufräumen gleichbedeutend mit dem Stoppen der Applikation sein. Sie können deshalb äquivalent zu oben den Knoten Aufräumen "Aufräumen: Stop the application" aus der Testsuite Options.qft kopieren und in Ihre eigene Suite einfügen, natürlich nach dem Vorbereitungsknoten.

Es gibt einen weiteren Schritt zu tun, bevor dieser Abschnitt abgeschlossen ist - das Kopieren der Fenster und Komponenten aus Options.qft in Ihre eigene Testsuite. Der Grund für diesen Schritt mag für Sie nicht sofort ersichtlich sein. Wir werden das Thema "Komponenten" etwas später in diesem Kapitel ausführlich diskutieren. Im Moment soll die Erklärung genügen, dass Komponenteninformationen unter dem Knoten "Fenster und Komponenten" einer Testsuite in einer Weise abgelegt werden, dass QF-Test damit Elemente wie Menüs oder Buttons im SUT erkennen kann. Expandieren Sie bitte nun den "Fenster und Komponenten" Knoten in Options.qft und markieren Sie alle erscheinenden Kindknoten. Dann können Sie diese mit den »Kopieren« und »Einfügen« Methoden in den gleichen Knoten Ihrer Testsuite kopieren. Im folgenden Bild sehen Sie, wie Ihre Testsuite nun aussehen sollte.

Abbildung 4.1:  Grundgerüst der neuen Testsuite

An diesem Punkt angelangt haben Sie ein funktionierendes Grundgerüst für Ihre Testsuite erzeugt. Wir werden es in den folgenden Abschnitten mit verschiedenen Tests und Prozeduren beleben.

Sie können nun das SUT starten, indem Sie den Vorbereitungsknoten auswählen und den Play Wiedergabeknopf drücken. Wenn das SUT hochgelaufen ist und sein Fenster erscheint, wechseln Sie zu diesem und selektieren Sie den Knoten "Miscellaneous" im Baum für die Einstellungen auf der linken Seite. Auf der rechten Seite erscheinen verschiedene Optionen für das Demoprogramm, darunter auch ein Kontrollkästchen mit der Bezeichnung "A BooleanOption", wie im folgenden Bild dargestellt:

Abbildung 4.2:  Kontrollkästchen in den "Miscellaneous" Optionen des SUT

Dies ist das Kontrollkästchen, das Sie mit Ihrer neuen Prozedur im Rahmen der nächsten Abschnitte steuern werden.

4.2
Erstellen einer Prozedur

Als Programmierkonstrukt ist eine Prozedur typischerweise als eine Methode definiert, um eine bestimmte, sich wiederholende Aufgabe zu erfüllen - z.B. ein Fenster zu öffnen oder zu überprüfen ob eine gewisse Taste gedrückt wurde. In diesem Teil des Tutorials werden Sie eine Prozedur erzeugen, die ein Kontrollkästchen im SUT aktiviert.

Zuerst expandieren Sie bitte den Package "Prozeduren" Knoten in Ihrer neuen Testsuite.

Hinweis QF-Test gibt Ihnen gute visuelle Hinweise ob ein Knoten geschlossen oder expandiert ist. Das Symbol des Knotens "Prozeduren" z.B. ändert sich von Prozeduren (geschlossen) nach Prozeduren expandiert (expandiert).

Nun wählen Sie den Knoten "Prozeduren" aus und benutzen anschließend im Menü die Option »Einfügen«-»Prozedur Knoten«-»Prozedur«.

Ein neues Dialogfenster erscheint, das die Eingabe des Prozedurnamens und weiterer Details erlaubt. Tragen Sie bitte "selectCheckbox" als Namen ein und betätigen Sie mit dem "OK" Button. Die resultierende Testsuite ist im nachfolgenden Bild gezeigt:

Abbildung 4.3:  Hinzufügen einer Prozedur

Hinweis Eigenschaften eines Knotens in QF-Test (wie der Name einer Prozedur) können einfach geändert werden, indem man den Knoten auswählt und sie in der Detailansicht rechts editiert. Eine andere Möglichkeit ist die Option »Eigenschaften...« im Kontextmenü des Knotens, das über die rechte Maustaste erreicht werden kann. In jedem Fall müssen Sie Ihre Änderungen mit "OK" bestätigen.

4.3
Hinzufügen eines Check Knotens

Nun sind wir bereit, der Prozedur wirklichen Inhalt zu geben. Doch stellen Sie sich bitte zuerst selbst die Frage, wie Sie weitermachen würden, um das Kontrollkästchen zu setzen. Einer der ersten notwendigen Schritte ist, den Status des Kontrollkästchens zu überprüfen, bevor wir ihn dann setzen. Schließlich gibt es in dem Fall, dass das Kontrollkästchen bereits ausgewählt ist, nichts zu tun, als es so zu belassen wie es ist. Im anderen Fall (es ist nicht ausgewählt) machen wir weiter, indem wir es aktivieren.

Solche Überprüfungen lassen sich in QF-Test mit "Check" Knoten realisieren, die verschiedene Arten von Abfragen über den Zustand eines Elementes im SUT ermöglichen. Wir werden mit einem "Check" Knoten vom Typ "Check Boolean: selected" beginnen. Wie der Name sagt, überprüft dieser, ob sich eine Komponente im Zustand "ausgewählt" befindet oder nicht.

Sie habe hoffentlich bereits aus vorausgegangenen Kapiteln Erfahrung mit "Check" Knoten. Wenn nicht, kann es hilfreich sein, einen Blick zurück in Abschnitt 2.5 zu werfen. Um den "Check Boolean: selected" Knoten einzufügen, werden Sie nun ähnliche Schritte ausführen.

Gehen Sie zuerst in das Fenster des SUT und selektieren Sie dort die Option "Miscellaneous" im "Preferences" Baum auf der linken Seite, wie es auch schon in Abbildung 4.2 gezeigt wurde. Das erlaubt Ihnen einen leichten Zugriff auf die gewünschte Komponente, wenn die Aufnahme erst einmal gestartet wurde. Kehren Sie nun in Ihre Testsuite zurück und drücken Sie den Knopf Check aufnehmen "Check aufnehmen" und springen gleich wieder zum Fenster des SUT. Wenn Sie dort die Maus über verschiedene Komponenten bewegen sehen Sie, dass sich deren Farbe jeweils invertiert. Wählen Sie so das Kontrollkästchen "A BooleanOption", das wir schon vorher betrachtet hatten, aus. Das erscheinende Kontextmenü enthält neben der Auswahl von möglichen Checks, die wir schon in früheren Beispielen gesehen hatten, eine Option für "Selektion", wie die nachfolgende Grafik zeigt.

Abbildung 4.4:  Aufnehmen des "Check Boolean: selected" Knotens

Wählen Sie den Punkt "Selektion" aus und kehren Sie nun in Ihre Testsuite zurück, wo Sie die Aufnahme mit dem Stop "Stop" Knopf beenden.

QF-Test platziert die aufgenommene Sequenz im Knoten "Extrasequenzen"- sie wird direkt nach dem Stoppen der Aufnahme sichtbar. Wenn Sie diesen Knoten expandieren, sieht man darin unseren "Check Boolean: selected" Knoten. Dieser muss nun von dort in Ihre Prozedur verschoben werden. Sie können entweder nur den Knoten selbst oder die gesamte Sequenz transferieren. Der Unterschied ist mehr ästhetischer Natur, da die Sequenz ja nur den einen Knoten enthält.

Führen Sie den Vorgang mit der »Kopieren« oder »Ausschneiden« und der »Einfügen« Funktion aus. Vergessen Sie nicht, die "selectCheckbox" Prozedur zu expandieren, bevor Sie den kopierten Knoten einfügen. Ansonsten wird er nicht an der richtigen Stelle platziert und Sie müssen nacharbeiten, damit Ihre Testsuite dem folgenden Bild entspricht.

Abbildung 4.5:  Prozedur mit "Check Boolean: selected" Knoten

Hinweis QF-Test bietet die Option, eine aufgenommene Sequenz direkt an der aktuellen Position einzufügen. Dies erspart das wiederholte Ausschneiden und Einfügen. Aktivieren Sie hierfür unter »Bearbeiten«-»Optionen« in der Kategorie "Aufnahme" das Auswahlkästchen "Aufnahme bei aktueller Selektion einfügen".

Und nun probieren Sie es aus! Markieren Sie Ihre Prozedur und drücken Sie den Wiedergabe Wiedergabe Knopf. An dieser Stelle passiert nicht viel aber in der Statusleiste zeigt QF-Test an, dass die Prozedur fehlerfrei beendet wurde. Der erste Schritt ist getan.

4.4
Über Komponenten

Bevor wir fortfahren, könnte ein wenig Hintergrundinformation zu Checks und Komponenten hilfreich sein, die aus dem bisherigen Inhalt des Tutorials noch nicht unmittelbar hervorging.

Eine Komponente ist einfach ein Element des SUT, wie ein Button, ein Menü oder (wie in unserem Fall) ein Kontrollkästchen. Jede Komponente sollte innerhalb der Testsuite eine eindeutige QF-Test ID besitzen, so dass QF-Test die Komponente beim Ausführen findet.

Wählen Sie nun den Knoten "Check Boolean: selected" aus, den Sie im vorhergehenden Kapitel aufgenommen hatten. Unter seinen Eigenschaften, die in der Detailansicht zu sehen sind, befindet sich auch ein Feld 'QF-Test ID'. Dessen Inhalt sollte die QF-Test ID des Kontrollkästchens enthalten, welches wir in Abbildung 4.2 identifiziert haben. Die QF-Test ID sollte "CheckBox-boolean2" lauten.

Die QF-Test ID, die Sie dort sehen, ist ein Name, ein praktischer Weg für Sie und QF-Test, Komponenten zu identifizieren und zu referenzieren. QF-Test IDs werden in Ihrer Testsuite unter dem Knoten "Fenster und Komponenten" angelegt, wann immer eine Komponente des SUT aufgenommen wird. Wenn Sie alle Knoten unterhalb dieses Bereiches, wie vom folgenden Bild dargestellt, expandieren, sollten Sie dort auch unser Kontrollkästchen finden.

Abbildung 4.6:  Die Kontrollkästchen Komponente im Komponentenbaum

Hinweis Es gibt einen komfortablen Weg in QF-Test, um Komponenten zu finden. Öffnen Sie hierfür das Kontextmenü des Knotens "Check Boolean: selected" mit der rechten Maustaste und wählen Sie "Komponente finden" (oder auch einfach [Strg-W]). Dies bringt Sie geradewegs zum Knoten der Komponente im Bereich "Fenster und Komponenten". Mit der Tastenkombination [Strg-Backspace] kann man von dort wieder zurück zum "Check" Knoten springen.

Klicken Sie nun auf den Knoten der "CheckBox-boolean2" Komponente. Rechts können Sie dann ein wenig sehen, wie QF-Test Komponenten intern identifiziert.

Komponentenerkennung in QF-Test ist ein komplexes Thema und wir werden im Rahmen diese Tutorials nicht tiefer einsteigen. Für weitere Details über Komponenten sei auf das Kapitel im Handbuch verwiesen.

4.5
Der Try/Catch Mechanismus

Und was passiert, wenn unser Kontrollkästchen nicht gesetzt ist? Klicken Sie auf das Kontrollkästchen, um es zu deaktivieren und lassen Sie die Prozedur nochmal laufen. Nun sollten Sie folgende Meldung erhalten:

Abbildung 4.7:  "Check Boolean: selected" Fehler

Die Fehlermeldung erscheint, weil Ihr Knoten "Check Boolean: selected" das Kontrollkästchen im Zustand "selektiert" erwartet.

Klicken Sie nun auf den Knoten "Check Boolean: selected", so dass die Eigenschaften in der Detailansicht erscheinen. Darin sehen Sie ein Feld mit dem Titel "Fehlerstufe der Meldung" und ein Kontrollkästchen "Im Fehlerfall Exception werfen". Mit diesen Eigenschaften können Sie die Aktion bestimmen, die QF-Test ausführt, wenn ein Check schief geht. Spielen Sie ein wenig mit diesen Einstellungen und beobachten Sie jeweils die Resultate nach dem Abspielen der Prozedur.

Letztendlich wollen wir eine Exception werfen, wenn der Check fehlschlägt. Dies eröffnet die Möglichkeit, den sehr hilfreichen Try/Catch Mechanismus einzuführen. Setzen Sie also bitte die Option "Im Fehlerfall Exception werfen" in den Eigenschaften, wie im nachfolgenden Bild gezeigt:

Abbildung 4.8:  Im Fehlerfall Exception werfen

Der Try/Catch Mechanismus ist eine in vielen Programmiersprachen benutzte Technik zur Behandlung von Ausnahmesituationen (Exception handling). Das Konzept ist einfach: Mit "Try" wird versucht eine Aktion durchzuführen. Wenn dabei eine Ausnahme auftritt, wird sie vom "Catch" gefangen und es kann eine entsprechende Behandlung erfolgen. Keine Angst, wenn Sie mit diesem Konstrukt nicht vertraut sind - seine Funktionsweise wird sehr schnell klar, wenn man es in Aktion sieht.

Fügen Sie nun bitte einen "Try" Knoten ganz an den Anfang Ihrer Prozedur ein. Der Einfügepunkt ist immer nach dem gerade ausgewählten Knoten (Einfügemarke beachten). Anschließend wählen Sie im Menü »Einfügen«-»Ablaufsteuerung«-»Try«. Ein Dialog erscheint, um Ihnen die Eingabe der Knoteneigenschaften zu ermöglichen. Bei diesem Knoten sind keine Eingaben notwendig, für eine bessere Lesbarkeit kann jedoch das Namensfeld hilfreich sein. Wir füllten es mit "checkbox selected".

Expandieren Sie den "Try" Knoten, so dass darunter neue Knoten eingefügt werden können. Es werden alle Aktionen überwacht, die innerhalb dieses "Try" Blocks ausgeführt werden, und ein "Catch" Knoten kann (wie in Kürze beschrieben) entsprechend die Exception abfangen. Doch zuerst wollen wir den Knoten "Check Boolean: selected", der unsere Aktion darstellt, in den "Try" Block einfügen. Der Knoten sollte sich noch in Ihrer Prozedur befinden, ist aber nicht an der richtigen Position. Benutzen Sie bitte die »Ausschneiden« und »Einfügen« Funktionen, um den "Check" Knoten direkt unterhalb des "Try" Knotens einzufügen.

Ein "Try" Knoten ohne einen "Catch" Knoten ist nutzlos. Fügen Sie deshalb einen "Catch" Knoten mit »Einfügen«-»Ablaufsteuerung«-»Catch« direkt nach Ihrem "Check" Knoten (und immernoch innerhalb des "Try" Blocks") ein. Analog zu vorher erscheint ein Eingabedialog. Für den "Catch" Knoten müssen Sie festlegen, welcher Typ von Exception durch ihn gefangen werden soll. Das erste Feld im Dialog trägt die Beschriftung "Exception Klasse", das eine Liste von allen möglichen Exceptions enthält. Wählen Sie hier bitte die CheckFailedException.

Abbildung 4.9:  Auswählen der Exception für den "Catch" Knoten

Der Try/Catch Mechanismus wird als deterministisches Konstrukt bezeichnet. Das bedeutet, dass die Exception (oder Exceptions), die gefangen werden, sich direkt auf die im "Try" Block ausgeführten Aktionen beziehen. In unserem Fall enthält der "Try" Block einen "Check" Knoten, so dass die zu fangende Exception eine "CheckFailedException" ist. Die zu fangende Exception muss aber natürlich beim Implementieren eines Try/Catch Blockes nicht immer unmittelbar offensichtlich sein. Falls Sie sich nicht sicher sind, welche Exception gefangen werden muss, hilft das Protokoll weiter. Versuchen Sie nun erneut, Ihre Prozedur laufen zu lassen. Keine Angst, auch wenn die Try/Catch Knoten nicht vollständig sind. Wichtig ist, dass der "Check Boolean: selected" Knoten immer noch vorhanden ist und sein Attribut "Im Fehlerfall Exception werfen" gesetzt ist. Danach öffnen Sie das letzte Protokoll im Menü »Wiedergabe« (das neueste ist immer an oberster Position) und suchen den Knoten, in dem die Exception geworfen wird, wie im folgenden Bild dargestellt:

Abbildung 4.10:  CheckFailedException im Protokoll

Hinweis Mehr Informationen zum Thema Exceptions und eine vollständige List aller Typen finden Sie im Referenzteil des Handbuchs.

An dieser Stelle sollte Ihre Prozedur nun folgendermaßen aussehen:

Abbildung 4.11:  Prozedur mit Try/Catch Konstrukt

Hinweis Lassen Sie QF-Test Ihnen helfen, wenn Sie Fragen zu einem bestimmten Knotentyp haben: Klicken Sie dazu einfach mit der rechten Maustaste auf den gewünschten Knoten und wählen Sie den Punkt "Was ist das?" aus dem erscheinenden Kontextmenü. QF-Test führt Sie dann an die richtige Stelle im Handbuch.

4.6
Fertigstellen der Auswahllogik

Ihre Try/Catch Knoten sind nun an Ort und Stelle - der letzte verbleibende Schritt ist das Fertigstellen der Aktionen, die ausgeführt werden sollen, wenn die "CheckFailedException" geworfen und gefangen wird. Als Erinnerung: Die Exception wird geworfen, wenn der Check fehlschlägt, z.B. wenn das Kontrollkästchen nicht gesetzt ist. Die Aktion, die wir benötigen, wenn die Exception gefangen wird, ist die Aktivierung des Kontrollkästchens.

Hierfür müssen wir eine neue Sequenz vom SUT aufnehmen. Klicken Sie auf den Aufnahme starten Aufnahmeknopf und wechseln Sie zum Fenster des SUT. Das Einzige was wir aufnehmen wollen, ist ein Mausklick auf das "A BooleanOption" Kontrollkästchen. Klicken Sie also bitte auf das Kontrollkästchen, so dass sich dessen Status von "aktiv" auf "inaktiv" oder umgekehrt ändert. Ob so oder so spielt keine Rolle, da wir nur eine Zustandsänderung erreichen wollen. Nun kehren wir zur Testsuite zurück und betätigen den Knopf Aufnahme beenden "Aufnahme beenden". Nachdem die Aufnahme beendet ist, platziert QF-Test die aufgenommene Sequenz in Bereich "Extrasequenzen". Darin sollten Sie einen "Mausklick" Knoten finden. Wenn Sie einen Blick auf die Knotenattribute werfen, sehen Sie verschiedene vertraute Felder wie die Komponenten ID des Kontrollkästchens.

Hinweis Es ist in der Regel nicht nötig, dass Sie Änderungen an den Eigenschaften von diesem Knotens vornehmen, höchstens ein Eintrag in das Feld "Bemerkung" kann sinnvoll sein. Bemerkungen haben keinen Einfluss auf den Test, sondern verbessern lediglich die Lesbarkeit der Testsuite.

Wie wir es bereits früher bei aufgenommenen Knoten getan haben, müssen wir den "Mausklick" Knoten von den "Extrasequenzen" in unsere Prozedur mit den »Ausschneiden«/»Kopieren« und »Einfügen« Funktionen transportieren. Expandieren Sie den "Catch" Knoten in Ihrer Prozedur und fügen Sie den neuen Knoten direkt darunter ein. Ihre Prozedur sollte nun folgendermaßen aussehen:

Abbildung 4.12:  Prozedur mit komplettiertem Try/Catch Mechanismus

Ihre Prozedur ist nun eine vollständige funktionale Einheit. Klicken Sie auf die Prozedur und führen Sie diese einige Male mit dem Wiedergabe Wiedergabe Button aus. Je nach Status der Checkbox im SUT werden beide logischen Pfade in der Prozedur ausgeführt. Die Funktion "Einzelschritt ausführen" des Debuggers (siehe Kapitel 3) ist ein ausgezeichnetes Hilfsmittel, um genau nachzuvollziehen, wie der Try/Catch Mechanismus funktioniert.

An dieser Stelle noch ein kleiner Hinweis. Eine Bibliothek mit Hilfsprozeduren, wie "selectCheckbox", ist bei QF-Test bereits enthalten. Diese wird ausführlich in Kapitel 7 beschrieben. Wir wollen uns jedoch zuerst noch der Verallgemeinerung unserer Prozedur widmen.

4.7
Verbessern der Prozedur

Wir werden nun noch eine letzte Verbesserung an unserer Prozedur durchführen, bevor wir dieses Kapitel des Tutorials beenden. Das Problem dieser Prozedur ist, dass sie nur für genau dieses spezifische Kontrollkästchen funktioniert. Was ist, wenn im SUT mehrere solche Komponenten zu manipulieren sind. Sollen wir je eine Prozedur für jedes individuelle Kontrollkästchen schreiben?

Die Lösung kommt zu uns in Form von Variablen. Eine Variable kann benutzt werden, um die QF-Test ID der Komponente zu ersetzen, so dass die Prozedur für jedes Kontrollkästchen im SUT verwendet werden kann.

Die Variablensyntax in QF-Test ist wie in allen Computerprogrammen spezifisch. Eine Variable wird einfach durch einen Namen definiert. Wenn jedoch auf die Variable zugegriffen werden soll, so ist die notwendige Syntax $(Name). Wir werden in den folgenden Abschnitten mehr darüber lernen.

Wir wollen nun in der Prozedur statt des spezifischen Kontrollkästchens eine Variable referenzieren. Wir nennen die Variable zum Beispiel id. Für diese Aktion öffnen Sie einfach die Detailansichten der Knoten "Check Boolean: selected" und "Mausklick". Ersetzen Sie dort jeweils im Feld 'QF-Test component ID' den Ausdruck CheckBox-boolean2 durch die Variable $(id). Die Prozedur sollte nun wie folgt aussehen.

Abbildung 4.13:  Variable anstelle einer festen Komponente
4.8
Aufrufen der Prozedur

Wenn Sie versuchen die Prozedur nun laufen zu lassen, werden Sie einen Fehler erhalten "Unbekannte Variable". Mit einem zugehörigen Erklärungstext teilt Ihnen QF-Test so mit, dass kein Wert für die Variable gesetzt ist.

Und wie setzt man die Variable? In unserem Beispiel benutzen wir den gebräuchlichsten Fall, die Prozedur einfach mit einem spezifischen Wert für die Variable aufzurufen. Man nennt dies in der Fachsprache "ein Argument (oder einen Parameter) an eine Prozedur übergeben".

Wir wollen nun den Aufruf der Prozedur einbauen. Dazu kehren wir zum Wurzel-Testknoten der Testsuite zurück. Schließen Sie den Knoten "Vorbereitung", so dass Sie danach einen Knoten einfügen können. Zuerst benötigen wir einen "Testfall" mittels »Einfügen«-»Test und Sequenz Knoten«-»Testfall«, dem Sie einen beliebigen Namen geben können. Nach dem Aufklappen das "Testfall" Knotens erzeugen wir den Prozeduraufruf entweder mittels »Einfügen«-»Prozedur Knoten«-»Prozeduraufruf« oder durch Drücken von [Strg-A]. Es erscheint ein Dialog, der es Ihnen ermöglicht, die Knotenattribute zu bearbeiten. Hier ist es zwingend notwendig, einige Werte anzugeben. Als erstes geben Sie den Namen der gewünschten Prozedur ein, in unserem Fall "selectCheckbox".

HinweisDer dritte und vielleicht einfachste Weg ist Drag&Drop. Wenn Sie den "selectCheckbox" Prozedurknoten mit der Maus aus dem Bereich "Prozeduren" nach oben in den "Testfall" ziehen, wird dieser automatisch einen "Prozeduraufruf" umgewandelt (da "Prozedur" Knoten dort nicht erlaubt sind). Den gleichen Effekt erhält man, wenn man den Prozedurknoten z.B. [Strg-C] kopiert und dann im "Testfall" Knoten [Strg-V] zum Einfügen drückt.

Als Nächstes wollen wir die Variable hinzufügen, die als Argument an die Prozedur übergeben wird. Dies lässt sich über die Tabelle "Variablen" erreichen, die das nächste Element im Fenster mit den Knoteneigenschaften ist. Erzeugen Sie dort eine neue Zeile, indem Sie auf das Zeile einfügen Icon ganz links klicken. Ein neuer Dialog erscheint für die Definition der neuen Variable. In diesem Fenster tragen Sie id als Namen ein und CheckBox-boolean2 als Wert ein. Der Dialog mit den Eigenschaften des Prozeduraufrufs sollte somit folgendermaßen ausgefüllt sein:

Abbildung 4.14:  Eigenschaften des Prozeduraufrufs

Hinweis Außer den Icons, die für die Funktionen zum Hinzufügen, Bearbeiten, Entfernen von Elementen in der Variablentabelle stehen, gibt es ein weiteres Symbol in der obigen Grafik: der kleine gelb-rote Button Prozedur auswählen rechts neben dem Feld "Prozedurname". Dieses Icon dient dazu, einen sehr hilfreichen Dialog zu öffnen, mit dem sich Prozeduren direkt aus einer Liste auswählen lassen. Die Liste enthält alle Prozeduren der Testsuite (und sogar auch die anderer geöffneter Testsuiten). Für unseren Fall finden Sie bitte die "selectCheckbox" Prozedur und bestätigen Sie mit "OK". QF-Test überträgt damit automatisch den entsprechenden Namen in das zugehörige Feld im Eigenschaftenfenster.

Damit sind die Attribute des Knotens "Prozeduraufruf" komplett und Sie können ihn mit "OK" schließen. Anschließend klicken Sie auf den neuen Knoten und starten ihn mit dem Wiedergabe Wiedergabeknopf. Sie werden sehen, dass beim Aufruf nun die QF-Test ID des Kontrollkästchens an die Prozedur übergeben wird, so dass "selectCheckbox" sauber arbeiten kann. Wenn das SUT mehrere Kontrollkästchen beinhalten würde, könnten Sie nun verschiedene Prozeduraufrufe realisieren, jeden mit der entsprechenden QF-Test ID der Komponente als Argument!

Falls Sie die gesamte Testsuite nun durchlaufen lassen wollen, werden Sie eine Fehlermeldung erhalten, die darauf hinweist, dass die Zielkomponente Checkbox-boolean2 nicht gefunden wurde. Dieses Problem wird in Kapitel 7.3 behandelt, daher könnten Sie diese Passage auch überspringen. Wir empfehlen aber, es zu Übungs- und Verständniszwecken hier anzugehen. Ein Blick in das Protokoll (im Wiedergabe-Menü) zeigt, "wo der Wurm drin ist". Besonders das enthaltene Bildschirmabbild ist hierbei hilfreich.

Wie Sie feststellen, befindet sich die Zielkomponente nicht auf der Startseite des Option Demos. Zunächst brauchen wir daher eine Sequenz, die den "Miscellaneous" Knoten expandiert. Eine solche sollten Sie inzwischen mit Leichtigkeit aufnehmen können (das SUT öffnen, auf den "Aufnahme starten" Knopf, dann den "Miscellaneous" Knoten und "Aufnahme beenden" drücken). Wo fügen wir diese Sequenz nun in unsere Testsuite ein? Intuitiv ist man versucht, sie über den Prozeduraufrufen zu platzieren, aber das führt zu derselben Fehlermeldung. Ein Blick ins Protokoll offenbart auch hier den Grund - weil jede Sequenz zwischen "Vorbereitung: Start the application" und "Aufräumen: Stop the application" einen Start UND Stopp des SUT zur Folge hat.

Um also den gewünschten Zustand des SUTs für alles Testfälle zu gewährleisten, müssten Sie diese Sequenz in die Vorbereitung einbinden. Für den Fall, dass nur eine Prozedur an dieser bestimmten Stelle beginnen soll, fügen Sie eine neue Sequenz ein, die den aufgenommenen Mausklick und den Prozeduraufruf enthält.

Videos Downloads Dokumentation Kaufen Gratis Testen