24
Wie beginnt man in einem Projekt?

Dieses Kapitel beschreibt die wichtigsten Aspekte, welche berücksichtigt werden sollten, bevor Sie QF-Test großflächig in einem Testprojekt einsetzen. Es wirft Fragen auf und versucht allgemeine Antworten mit Referenzen auf detailierte Beschreibungen zu geben.

24.1
Infrastruktur und Testumgebung

Bevor Sie beginnen automatisierte Tests zu erstellen und auszuführen, sollten Sie sich ein paar Gedanken über die zu verwendende Testumgebung machen. Damit Sie Tests verlässlich und wiederholbar abspielen können, müssen Sie bedenken, dass Sie hierfür das SUT in einen definierten Zustand bringen sollten, inklusive das Backend, z.B. einen Server und/oder eine Datenbank. Wenn Sie sich dessen nicht bewusst sind, kann es unter Umständen ziemlich schwierig werden, Tests wiederholbar abzuspielen oder einfach nur die Testresultate zu analysieren. Außerdem kann die Wartung der Tests zu einem Albtraum werden.

Bitte bedenken Sie zusätzlich noch folgende Themen:

  1. Wie sieht der Initialzustand des SUT aus?
  2. Wie sieht der Initialzustand der Datenbank aus?
  3. Wollen Sie QF-Test mit anderen Werkzeugen, z.B. Build- oder Testverwaltungswerkzeuge, integrieren?
  4. Wer wird mit QF-Test arbeiten?

Natürlich werden in Ihrem Projekt noch weitere Punkte auftauchen. Denken Sie einmal darüber nach.

24.2
Speicherorte

Sie sollten sich überlegen, wohin Sie bestimmte Dateien legen bzw. installieren wollen:

  1. Wo soll QF-Test installiert werden? QF-Test kann lokal auf jedem Rechner installiert werden. Dieses Vorgehen zwingt Sie allerdings wiederum, neue Versionen auf jedem Rechner einzeln zu installieren. Alternativ können Sie QF-Test auf einem Netzlaufwerk installieren, wenn Ihr Netzwerk verlässlich funktionieren sollte. Details hierzu finden Sie unter Abschnitt 24.2.1.
  2. Wo soll die Konfigurationsdatei qftest.cfg abgelegt werden? Diese Datei beinhaltet u.a. wie QF-Test die grafischen Komponenten wiedererkennt oder was im Protokoll gespeichert werden soll. Diese Einstellungen müssen für jeden QF-Test Benutzer dieselben sein, sonst können keine Tests im Team geteilt werden. Damit Sie dieselbe Datei verwenden, können Sie QF-Test entweder zentral auf einem Netzlaufwerk installieren oder Sie geben den Pfad zur Konfigurationsdatei als Kommandozeilenparameter beim Start von QF-Test mit. Wenn Sie mit einer Datei auf einem Netzlaufwerk arbeiten, dann stellen Sie sicher, dass diese Datei schreibgeschützt ist und nur bestimmte Benutzer diese ändern können. Details finden Sie unter Abschnitt 1.4.
  3. Wo soll die Lizenzdatei license liegen? Sie sollten die Lizenzdatei an einer zentralen Stelle ablegen, damit Sie die Lizenz nur einmal aktualisieren müssen, wenn Sie ein Update erhalten. Hier können Sie ebenfalls entweder an eine zentrale Netzwerkinstallation von QF-Test denken oder einen Kommandozeilenparameter beim Start von QF-Test verwenden. Details finden Sie unter Abschnitt 1.3.
  4. Wo sollen Testsuiten gespeichert werden? Der beste Speicherort für Testsuiten ist ein Versionsmanagementsystem, womit Sie Änderungen verfolgen und auf jede Version der Datei zugreifen können. Wenn dies nicht möglich sein sollte, dann sollten die Dateien auf einem zentralen Netzlaufwerk installiert werden.
  5. Wo sollen die Testdatendateien gespeichert werden? Testdatendateien gehören immer zu Testsuiten und sollten daher nahe an diesen abgelegt werden, d.h. im selben Versionsmanagementsystem oder Netzlaufwerk.
  6. Wo sollen die HTML Reports und Protokolle abgelegt werden? Diese Dateien sollten an einer zentralen Stelle liegen, auf die jeder Tester zugreifen und die Testresultate auswerten kann. Die meisten Kunden legen diese auf einen zentralen HTTP Server oder einen Netzlaufwerk ab.
24.2.1
Netzwerkinstallation

Wenn Sie planen QF-Test auf einem Netzlaufwerk zu installieren, müssen Sie einige Dinge beachten.

Der kritische Punkt ist die Konfigurationsdatei qftest.cfg. Es ist empfehlenswert (und notwendig), dass alle Tester dieselben Einstellungen verwenden, besonders für die Wiedererkennung. Dies erreichen Sie durch Sharen dieser Datei. Jedoch sollten Sie darauf achten, dass sie schreibgeschützt ist, damit ein Benutzer nicht unabsichtlich die Einstellungen verändert. Da QF-Test vorgenommene Änderungen so nicht beim Beenden speichern kann. Jede gewollte Änderung sollte durchgeführt werden, in dem Sie die Datei explizit mit Schreibrechten versehen, dann QF-Test beenden, und danach die Schreibrechte wieder entziehen. Eine andere Möglichkeit ist, dass jeder Benutzer, seine eigene Konfigurationsdatei benutzt, z.B. mittels den Kommandozeilenparameter -systemcfg, aber das ist nicht empfehlenswert.

Falls Sie eine Java/SWING Anwendung testen und die Option "Ohne JDK Instrumentierung verbinden" ausgeschaltet haben, kann die Liste der instrumentierten JDKs eine weitere Quelle für Unstimmigkeiten sein, welche zentral gespeichert wird. Dies führt zu Durcheinander, wenn Benutzer mit unterschiedlichen JDK Versionen oder mit unterschiedlichen Installationsverzeichnissen arbeiten. Sie können allerdings diese Liste als eine zentrale Stelle aller verwendeten JDK Verzeichnissen auf allen System verstehen. Die wirkliche Prüfung, ob das JDK auf dem aktuellen System instrumentiert ist, erfolgt unabhängig davon zur Laufzeit beim Öffnen des Instrumentierungsdialogs.

Die laufenden QF-Test Instanzen teilen sich auch das Logverzeichnis (internes Logging, das kein Problem darstellt) und den Jython Package Cache, welcher gelegentlich Probleme verursacht. In diesem Fall kann QF-Test den Jythoninterpreter nicht mehr initialisieren. Das passiert sehr selten und kann mit Säuberung (nicht kompletten Löschens) des Jython Cache Verzeichnisses behoben werden.

Auf Windows sollte jeder Benutzer die Datei setup.exe ausführen, damit die aktuelle QF-Test Version, die sich im installierten qftest-x.y.z. Verzeichnis befindet, mit den entsprechenden Windowseinstellungen in der Registry verknüpft wird.

In sehr seltenen Fällen kann das Überschreiben von Jar Dateien von QF-Test beim Einspielen eines QF-Test Patches, bereits laufende Instanzen auf Windows zum Absturz bringen.

24.3
Wiedererkennung von Komponenten

Der wichtigste Aspekt eines GUI Testtools ist eine stabile und verlässliche Wiedererkennung der grafischen Komponenten. In diesem Bereich ist QF-Test sehr flexibel und bietet unterschiedlichen Konfigurationsmöglichkeiten. In den meisten Fällen reicht die Standardkonfiguration der Komponentenerkennung aus, allerdings müssen Sie diese manchmal anpassen.

Wenn Sie die Komponentenerkennungseinstellungen nach Erstellen mehrerer Testfälle ändern, laufen Sie Gefahr, dass diese Testfälle nicht mehr lauffähig sind. Deshalb sollten Sie so früh wie möglich versuchen eine angemessene Erkennungsstrategie für Ihr Testprojekt zu finden. Sie sollten sich diese Zeit in jedem Fall nehmen und diesen Bereich wirklich genau ansehen, bevor Sie viele Testfälle kreiren. Im schlimmsten Fall müssen Sie alle bereits erstellten Testfälle neu erstellen, nachdem Sie die Erkennungseinstellungen verändert haben.

Am besten erstellen Sie einige Demotestfälle und versuchen herauszufinden, wie QF-Test die Komponenten Ihres SUT erkennt. Der Wiedererkennungsmechanismus ist in den Kapiteln Kapitel 6 und Kapitel 7 beschrieben. Wenn Sie die Demotestfälle, im Idealfall mit einer anderen SUT Version, ausführen und auf Wiedererkennungsprobleme stoßen, versuchen Sie folgende Punkte zu klären:

  1. Gibt es genügend Synchronisationspunkte, wie 'Warten auf Komponente' oder 'Check' Knoten mit Wartezeiten, um die Testschritte nur dann auszuführen, wenn das SUT wirklich bereit dazu ist?
    1. Beispiel 1: Nach Öffnen eines Fenster können Sie Aktionen nur dann darin ausführen, wenn es wirklich schon vorhanden ist -> Verwenden Sie einen 'Warten auf Komponente' Knoten.
    2. Beispiel 2: Nachdem Sie auf einen "Suchen" Knopf geklickt haben, können Sie erst dann fortfahren, wenn die Suche wirklich beendet ist -> Verwenden Sie einen 'Check' Knoten mit Wartezeit.

Ein weiterer Punkt neben Synchronisationspunkten ist die richtige Einstellung für die Komponentenerkennung. Sie sollten folgende Punkte vorab klären, um herauszufinden, welche Einstellung für Sie die geeignetste ist:

  1. Werden eindeutige und stabile Namen für die Komponenten von den Entwicklern vergeben? Siehe Abschnitt 30.12 für Details.
  2. Vielleicht reicht es aus, einen regulären Ausdruck im 'Merkmal' Attribut der Komponente des Hauptfensters unter des 'Fenster und Komponenten' Knotens zu setzen? Siehe Abschnitt 27.3 für Details.
  3. Wenn die Entwicklung keine benutzbaren oder sogar dynamische Namen vergeben haben, dann könnten Sie dies mit einem NameResolver lösen. Siehe Kapitel 27.
  4. Vielleicht kommen die Probleme vom Aufzeichnen unterschiedlicher Komponentenklassen. Das ist typischerweise ein Resultat von Obfuscation. Siehe Abschnitt 27.5.
  5. Müssen Sie vielleicht die QF-Test Wiedererkennungsoptionen ändern? Diese sind im Kapitel Kapitel 27 beschrieben.
  6. Ist es denkbar, generische Komponente einzusetzen? Siehe Abschnitt 27.6.

In einigen Fällen reicht es aus, einfach die Standardkonfiguration zu ändern. Angenommen die Entwicklung hat eindeutige und stabile Namen für die Zielkomponenten vergeben, d.h. für Buttons, Textfelder, Checkboxen etc., dann können Sie einfach die 'Gewichtung von Namen' Option von QF-Test auf 'Name übertrifft alles' setzen. Diese Einstellung teilt QF-Test mit, Änderungen in der Komponentenhierarchie zu ignorieren und nur mit der eigentlichen Zielkomponente und deren Fenster zu arbeiten.

Hinweis Sie müssen diese Option an zwei Stellen ändern. Einmal unter 'Aufnahme' -> 'Komponenten' -> 'Gewichtung von Namen' und einmal unter 'Wiedergabe' -> ' Wiedererkennung' -> 'Gewichtung von Namen'. Siehe Kapitel 27 für mehr Informationen.