Quality First Software GmbHgradient
Quality First Software GmbH
ProfessionelleTestautomatisierung
Home|Kontakt|English
QF-Test  –  Das GUI Testtool für Java und Web Demo VideoDownloadQF-Test BroschüreQF-Test

Technische Details

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.