|
Technisch interessierten Anwendern gibt diese Seite Einblicke in
den Aufbau von QF-Test und weiterführende Features.
Funktionsweise
Wir verwenden den Ausdruck System Under Test (SUT) für
die zu testende Anwendung, da es mit QF-Test möglich ist,
beliebig viele Programme gleichzeitig zu starten und damit
komplexe Systeme als ganzes zu testen.
Beim Start des SUT aus QF-Test heraus, werden Java
Anwendungen in separaten Virtuellen Maschinen (JVM)
ausgeführt. Dabei wird zunächst spezieller Code ausgeführt, der
eine RMI Verbindung zu QF-Test herstellt und eine eigene
EventQueue installiert, bevor die Kontrolle an das
SUT weitergegeben wird. Die EventQueue wird
benötigt, um die GUI Komponenten des SUT zu verfolgen und um
Events aufzuzeichnen. Es wurden besondere Vorkehrungen
getroffen, um Konflikte mit eventuellen eigenen
EventQueues des SUT zu vermeiden.
Beim Abspielen einer Testsequenz durch QF-Test werden die
Eventdaten zusammen mit den Informationen über die
Zielkomponente über RMI an das SUT geschickt. Dort wird mit
Hilfe eines flexiblen Algorithmus die Komponente ermittelt, auf
die sich der Event bezieht. Wenn die Entwickler eindeutige Namen
an die relevanten Komponenten vergeben, ist dieser Algorithmus
absolut zuverlässig. Doch auch ohne Namen gewährleistet er eine
exzellente Wiedererkennung. Er arbeitet nicht allein mit der
Geometrie der Komponenten, sondern berücksichtigt die
hierarchische Struktur des GUI und bezieht alle möglichen
Informationen zu den Komponenten mit ein, z.B. Titel oder
Beschriftungen.
Schließlich wird der Event zusammengesetzt und künstlich in die
EventQueue des Systems eingespeist. Für das SUT
macht es keinen Unterschied, ob ein Event von einem realen
Anwender ausgelöst wurde oder von QF-Test. Diese künstlichen Events
sind zuverlässiger als "harte" Events, die z.B. den Mauszeiger
tatsächlich über den Bildschirm bewegen und die mit dem
AWT-Robot erzeugt werden können. Solche "harten" Events könnten
unbeabsichtigt vom Betriebssystem oder von anderen Anwendungen
abgefangen werden, was nicht nur den Test behindern, sondern
auch zu unerwünschten Reaktionen dieser Anwendungen führen
kann. QF-Test setzt den AWT-Robot nur
zur Simulation von Drag&Drop und für optische Effekte wie
selbstlaufende Demos ein. Diese wirken wesentlich
eindrucksvoller, wenn der Mauszeiger den Aktionen folgt.
All das und mehr wird in der Technischen Referenz des Handbuches im Detail erläutert.
Es folgt eine kleine Liste von verschiedenen Features:
Darstellung der Komponenten
Die GUI Komponenten des SUT werden auf separate Objekte
abgebildet und stehen dem Tester damit direkt zur Verfügung.
Unterelemente komplexer Komponenten
Für komplexen Komponenten, wie Listen, Tabellen oder Bäume etc., bietet QF-Test
besondere Unterstützung. So kann z.B. der Inhalt von Tabellenzellen ausgelesen
werden, oder ein Mausklick relativ zum Ast eines Baumes angegeben werden, der anhand
seines Textes identifiziert wird, unabhängig von seiner Position im Baum.
Anpassungsfähiges Laufzeitverhalten
Das Laufzeitverhalten des getesteten Programms kann bei
jedem Durchgang anders sein. Es wird beeinflusst von der
Auslastung des Rechners und des Netzwerks, der Mondphase
etc. Kurze Verzögerungen überbrückt QF-Test bis zu einer
einstellbaren Grenze automatisch. Längere Verzögerungen
können explizit vorgesehen werden.
Variablen und Prozeduren
Häufige Ablaufmuster eines Tests lassen sich in Prozeduren
auslagern, die von beliebigen Stellen aus aufgerufen werden
können. Diese können über Parameter gesteuert und somit
vielseitig wiederverwendet werden. Ein analoger Mechanismus
erlaubt es, vielfältige Informationen in statischen oder
dynamischen Variablen abzulegen und später darauf
zuzugreifen, z.B. um den Inhalt einer Tabellenzelle
auszulesen und später mit dem Inhalt eines Textfeldes zu
vergleichen.
Dateiübergreifende Verweise
Aus einer Testsuite können Prozeduren auch in einer anderen
Suite aufgerufen werden. Damit lassen sich zentrale
Bestandteile in Bibliotheken auslagern, einfacher pflegen
und für verschiedene Tests wiederverwenden.
Skriptsprachen Jython und Groovy
Jython und Groovy Interpreter werden sowohl in QF-Test selbst, als
auch im SUT eingebettet. Die Skripte haben über den
Wiedererkennungsmechanismus von QF-Test Zugriff auf die
konkreten Java Objekte des SUT. Da das gesamte Java API zur
Verfügung steht, sind die Möglichkeiten grenzenlos.
|