View
252
Download
0
Category
Preview:
Citation preview
RCP/SWT-GUI-Tests mit Abbot
Gösta Steen
Gliederung
● GUI Tests● Abbot● SWT● Abbot SWT● Tests mit Abbot SWT erstellen● Demo● Fazit
GUI Tests
Grafische Benutzeroberflächen zu testen ist schwierig.
● Ereignis getriebener Ablauf● Ungewollte Ereignisse● Sehr viele Pfade
Abbot
● Java GUI Test Rahmenwerk● Common Public License (CPL)● AWT und Swing Unterstützung● Kompilierte und Skript Tests möglich
● Werden als JUnit Tests gestartet
● Skript Editor (Costello)● Costello erlaubt das Starten, Erkunden und
Kontrollieren von Anwendungen
Costello
SWT
● SWT: Standard Widget Toolkit● 2001 von IBM für Eclipse entwickelt● Nutzt native grafische Elemente des
Betriebssystems● SWT Bibliotheken sind nicht Bestandteil der
Java Laufzeitumgebung● Sie müssen mit der Anwendung ausgeliefert werden
SWT Unterstützung
● * AIX (PPC/Motif)
● * FreeBSD (x86/GTK 2)
● * FreeBSD (AMD64/GTK 2)
● * HP-UX (HP 9000/Motif)
● * Linux (x86/GTK 2)
● * Linux (AMD64/GTK 2)
● * Linux (PPC/GTK 2)
● * Linux (x86/Motif)
● * Mac OS X (PPC/Carbon1)
● * Mac OS X (x86/Carbon1)
● * QNX (x86/Photon)
● * Solaris 8 (SPARC/GTK 2)
● * Solaris 8 (SPARC/Motif)
● * Windows (x86/Win32)
● * Windows CE (ARM PocketPC)
● * Windows CE (ARM PocketPC, J2ME profile)
SWT
Abbot SWT
● Abbot SWT ist ein Prototyp der bei dem Versuch Abbot auf SWT zu portieren entstanden ist
● Entwickelt von Gary Johnston, Kevin Dale u.a.● Überarbeitet von Matthias Zeimer
● JUnit Erweiterung● Ziele
● SWT Tests● Eclipse RCP Tests● Costello Nutzung
Aktueller Zustand von Abbot SWT
● Keines der Projekte ist Kompilierbar● Außer „Abbot One“ eine Version von Matthias
Zeimer
● SWT ist nicht vollständig Testbar● Tree-, Table-,Menu-Widgets und die jeweiligen
Items sind nicht Testbar● Das Beenden eines Tests verhält sich
nichtdeterministisch
● Eclipse RCP Tests nicht lauffähig● Costello Anbindung nicht lauffähig
Erstellen von Tests mit Abbot SWT
● Die Testklasse muss SWTTestCase erweitern
● setUp() und tearDown() von SWTTestCase müssen aufgerufen werden
● Es ist nicht zulässig in setUp() und tearDown() SWT Komponenten zu initialisieren.
Hierfür gibt es setUpDisplay() und tearDownDisplay()
Erstellen von Tests mit Abbot SWT
● setUpDisplay() und tearDownDisplay() werden mit dem SWT Thread synchronisiert.
Somit ist ein Initialisieren von SWT Komponenten möglich.
Abbot SWT - Finder
● Mit Hilfe des Finders lassen sich SWT Widgets ausfindig machen.
● SWTTestCase.getFinder() liefert eine Instanz des Finders.
● Dem Finder muss zum Suchen eines Widgets ein Matcher übergeben werden. Dieser muss genau ein Widget finden.
Abbot SWT - Matcher
● Der Matcher besteht aus einer simplen Methode.
● Der MultiMatcher trifft dann noch eine Auswahl, falls mehrere Widgets gefunden wurden.
Abbot SWT - Tester
● Um etwas mit den gefundenen Widgets zu testen, braucht man einen Tester.
● Es gibt zu jedem Widget einen eigenen Tester
● z.B.: ButtonTester● Mit einem Tester kann man den Zustand des Widgets auslesen und Benutzerinteraktionen simulieren.
Abbot SWT - Wait
● Nach einer Interaktion mit der Benutzeroberfläche durch einen Tester muss man warten bis das hierdurch ausgelöste Ereignis fertig abgearbeitet ist und die Oberfläche sich aktualisiert hat.
● Es gibt zwei Möglichkeiten zu warten:● Tester.waitForIdle()● Wait.wait(Condition condition, long timeout)
Demo
Live Demo
Fazit
● Momentan nicht produktiv einsetzbar:● Zum Teil nichtdeterministische Fehler● SWT nicht vollständig testbar● Eclipse RCP nicht testbar● Callisto nicht integriert
● Grundlage für Weiterentwicklung ist vorhanden.
Recommended