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