Blau und Grau

Transcription

Blau und Grau
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
●
* Mac OS X (PPC/Carbon1)
●
* AIX (PPC/Motif)
●
* Mac OS X (x86/Carbon1)
●
* FreeBSD (x86/GTK 2)
●
* QNX (x86/Photon)
●
* FreeBSD (AMD64/GTK 2)
●
* Solaris 8 (SPARC/GTK 2)
●
* HP-UX (HP 9000/Motif)
●
* Solaris 8 (SPARC/Motif)
●
* Linux (x86/GTK 2)
●
* Windows (x86/Win32)
●
* Linux (AMD64/GTK 2)
●
* Windows CE (ARM PocketPC)
●
* Linux (PPC/GTK 2)
●
●
* Linux (x86/Motif)
* 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.
Quellen
●
http://abbot.sourceforge.net
●
http://www.eclipse.org/swt

Documents pareils