SWT45.2
SWT-Instrumentierung

Zum Testen von SWT basierten Anwendungen mit QF-Test/swt sind spezielle Maßnahmen erforderlich. Da bei der Entwicklung von SWT die Testbarkeit von Anwendungen nicht berücksichtigt wurde, müssen diese mit leicht modifizierten SWT Klassen gestartet werden, in welchen wir SWT um die nötigen Einstiegspunkte zum Filtern von Events und Auffinden von GUI-Komponenten erweitert haben. Die Änderungen sind transparent, so dass das Verhalten einer Anwendung innerhalb und außerhalb von QF-Test nicht verändert wird.

4.5+ Sind beim Start des SUT der QF-Test Agent und die Option Ohne SWT-Instrumentierung verbinden aktiviert, werden die benötigten Klassen beim Laden ohne weiteres Zutun durch den Agent ausgetauscht. Dies funktioniert für alle SWT-Versionen unter Windows und für SWT 4.8 und höher unter Linux. Ältere Versionen unter Linux benötigen nach wir vor die Instrumentierung wir unten beschrieben. Es ist generell eine gute Idee, den Prozeduraufruf zur Instrumentierung in der Startsequenz zu haben und dabei den Parameter forceInstrumentation auf false zu setzen. So kann QF-Test abhängig von den Optionen und der SWT-Version entscheiden, ob die Instrumentierung notwendig ist.

Wenn Sie den Schnellstart Wizard von QF-Test zur Erstellung der Startsequenz für Ihr SUT verwenden (siehe Kapitel 3), wird er sich auch um die SWT Instrumentierung kümmern. Für diejenigen unter Ihnen, die nicht so gerne mit Wizards arbeiten, sei nun der händische Weg erklärt.

Die Standardbibliothek qfs.qft, die Teil der Distribution von QF-Test ist und ausführlich im Tutorial beschrieben wird, enthält im 'Package'qfs.swt.instrument eine 'Prozedur' namens setup, um die SWT-Instrumentierung durchzuführen. Fügen Sie vor dem Startknoten für Ihr SUT einen 'Prozeduraufruf' Knoten ein. Setzen Sie 'Name der Prozedur' auf qfs.qft#qfs.swt.instrument.setup und in den 'Variablendefinitionen' den Parameter sutdir auf das Installationsverzeichnis Ihrer Anwendung. Der Parameter plugin kann leer gelassen werden, es sei denn, Ihre Anwendung folgt nicht dem üblichen Layout des Plugin-Verzeichnisses. In diesem Fall können Sie das zu instrumentierende Plugin direkt über den plugin Parameter angeben. Das ist alles. Für jene, die genau wissen möchten, was hinter den Kulissen abläuft, werden nachfolgend in diesem Kapitel die manuellen Schritte zur SWT-Instrumentierung beschrieben.

Vorbereitung einer manuellen SWT-Instrumentierung

Die für SWT Tests unterstützten Architekturen umfassen 32 und 64 Bit Windows und 32 und 64 Bit Linux mit Gtk. Die benötigten Dateien werden mit QF-Test in den Verzeichnissen namens .../qftest-7.1.3/swt/$ARCH/$VERSION bereit gestellt, wobei $ARCH entweder win32, win32-64, linux-gtk oder linux-gtk-64 ist und $VERSION eine der unterstützten SWT-Versionen.

Zunächst müssen Sie herausfinden, ob Ihre Anwendung eine eigenständige SWT-Anwendung ist oder auf Eclipse basiert. Werfen Sie dazu einfach einen Blick auf die Verzeichnisstruktur Ihrer Anwendung. Wenn Sie ein Verzeichnis namens plugins finden, das eine Datei namens org.eclipse.swt.win32.win32.x86_X.Y.Z.jar (unter Windows) oder org.eclipse.swt.gtk.linux.x86_X.Y.Z.jar (unter Linux) enthält, wobei X.Y.Z einer Versionsnummer wie 3.2.0 entspricht, basiert Ihre Anwendung auf Eclipse. Bei einer eigenständigen SWT-Anwendung sollten Sie dagegen eine Datei namens swt.jar finden, üblicherweise in einem Verzeichnis namens lib.

Manuelle SWT-Instrumentierung für Eclipse basierte Anwendungen

Ersetzen Sie einfach die Datei mit dem SWT Plugin durch ein von QF-Test instrumentiertes Plugin. Um dieses zu erstellen, führen Sie einmal die oben beschriebene 'Prozedur' qfs.qft#qfs.swt.instrument.setup aus. Geben Sie dabei Ihr original Plugin (oder eine Kopie davon) im Parameter plugin an. QF-Test erstellt eine Kopie des Originals namens _org.eclipse.swt....jar.orig. Kopieren Sie dann die instrumentierte Datei in das plugin Verzeichnis Ihrer Anwendung. Die SWT Plugin Dateien enden mit Versionsinformation der Form ...X.Y.Z.jar, z.B. org.eclipse.swt.win32.win32.x86_3.2.0.jar. Um die entsprechende Datei aus QF-Test verwenden zu können, muss der X.Y Teil exakt übereinstimmen. Die Unterversion Z muss in der QF-Test Variante größer oder gleich dem Original sein.

Zum Abschluss starten Sie Ihre Anwendung einmal von der Kommandozeile mit dem Argument -clean um den Plugin Cache der Anwendung zu aktualisieren:

eclipse -clean

Die Programmdatei Ihrer Anwendung heißt eventuell nicht eclipse, aber alle Eclipse basierten Anwendung sollten das Argument -clean unterstützten.

Manuelle Instrumentierung für eigenständige SWT-Anwendungen

Bei einer eigenständigen SWT-Anwendung ersetzen Sie die Datei swt.jar mit der gleichnamigen Datei aus dem oben erwähnten Verzeichnis von QF-Test. Machen Sie dabei zunächst eine Sicherheitskopie vom Original.

HinweisWenn die Anwendung über den 'Java-SUT-Client starten' Knoten gestartet wird, kann man den Classpath auch auf das entsprechende .../qftest-7.1.3/swt/$ARCH/$VERSION/swt.jar Archiv setzen und braucht die Originaldatei nicht zu ersetzen.