Wir verwenden den Ausdruck System Under Test (SUT) für die zu testende Anwendung, da es mit web2test möglich ist, beliebig viele Programme gleichzeitig zu starten und damit komplexe Systeme als Ganzes zu testen.
Beim Start des SUT aus web2test heraus, werden die in der Betriebsumgebung installierten Browser in einem separaten Wrapper ausgeführt. Dabei wird zunächst spezieller Code in einem eigenen Prozess ausgeführt, der eine Verbindung zu web2test herstellt. Der Wrapper dient der Kommunikation zwischen SUT und web2test und wird benötigt, um die GUI Komponenten des SUT zu verfolgen, um Events aufzuzeichnen und wiederzugeben. Über den Wrapper ist es web2test ermöglicht, lesend und schreibend auf den vollständigen DOM des Browsers zuzugreifen.
Beim Abspielen einer Testsequenz durch web2test werden die Eventdaten zusammen mit den Informationen über die Zielkomponente 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 wie z.B. Titel oder Beschriftungen mit ein.
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 web2test. Diese künstlichen Events sind zuverlässiger als “harte” Events, die z.B. einen Mausklick tatsächlich auf einer bestimmten Position des Bildschirms auslösen. 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. In web2test werden alle Events komponentenbezogen aufgezeichnet und im Browser ausgelöst. Dadurch haben Layoutänderungen oder dynamisches HTML keine unerwünschten Auswirkungen auf den jeweiligen Testlauf.
In der Technischen Referenz des Handbuches finden Sie noch detailliertere Erläuterungen.
Es folgt eine kleine Liste von verschiedenen Features:
Es werden keine modifizierten Browser oder Browserplugins verwendet. Dadurch können testbedingte Verfälschungen der Darstellung oder des Laufzeitverhaltens in den verschiedenen Browsern ausgeschlossen werden. Neue, zukünftige Browserversionen werden ohne zusätzliche Anpassungen unterstützt.
Mit Hilfe der speziellen Wrapper-Komponente hat web2test vollständigen Zugriff auf alle Events des Browsers (z.B. Seitenwechsel, Scrolling, etc.) und alle Events des DOM´s (inkl. Javascript-Events). Dadurch werden alle Änderungen in der dargestellten Website automatisch registriert, auch wenn kein Seitenwechsel erfolgt ist (Ajax).
Die GUI Komponenten des SUT (im Sinne von browserbasierten Softwaresystemen: Elemente des DOM) werden auf separate Objekte abgebildet und stehen dem Tester damit direkt zur Verfügung.
Für die komplexen Komponenten <table>, <textarea>, <select>, <frame>, <iframe> etc. bietet web2test besondere Unterstützung. So kann z.B. der Inhalt von Tabellenzellen ausgelesen oder in einer komplexen Menüstruktur ein Mausklick relativ zur Position in der Hierarchie angegeben werden, der anhand seines Textes unabhängig von seiner aktuellen Position identifiziert wird.
Alle Testsequenzen sind völlig unabhängig vom Browserhersteller und der Browserversion, sowohl bei der Aufnahme als auch bei der Ausführung.
Das Laufzeitverhalten des getesteten Programms kann bei jedem Durchgang anders sein. Es wird von einer Vielzahl von Faktoren wie z.B. der Auslastung des Rechners oder des Netzwerks beeinflusst. Kurze Verzögerungen überbrückt web2test bis zu einer einstellbaren Grenze automatisch. Längere Verzögerungen können explizit vorgesehen werden.
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.
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.
Der Jython und Groovy Interpreter ist in web2test selbst eingebettet. Die Skripte haben über den Wiedererkennungsmechanismus von web2test Zugriff auf die konkreten Komponenten des SUT. Da das gesamte Java API zur Verfügung steht, sind die Möglichkeiten grenzenlos.
Je nach Testanforderung:
Für das Testen von Java Swing- und SWT-Anwendungen bietet unser Kooperationspartner QFS die passende Testsoftware.