19
RCP/SWT-GUI-Tests mit Abbot Gösta Steen

RCP/SWT-GUI-Tests mit Abbot - agis- ...agis- fileAbbot Java GUI Test Rahmenwerk Common Public License (CPL) AWT und Swing Unterstützung Kompilierte und Skript Tests möglich Werden

  • Upload
    ngokhue

  • View
    238

  • Download
    0

Embed Size (px)

Citation preview

Page 1: RCP/SWT-GUI-Tests mit Abbot - agis- ...agis- fileAbbot Java GUI Test Rahmenwerk Common Public License (CPL) AWT und Swing Unterstützung Kompilierte und Skript Tests möglich Werden

RCP/SWT-GUI-Tests mit Abbot

Gösta Steen

Page 2: RCP/SWT-GUI-Tests mit Abbot - agis- ...agis- fileAbbot Java GUI Test Rahmenwerk Common Public License (CPL) AWT und Swing Unterstützung Kompilierte und Skript Tests möglich Werden

Gliederung

● GUI Tests● Abbot● SWT● Abbot SWT● Tests mit Abbot SWT erstellen● Demo● Fazit

Page 3: RCP/SWT-GUI-Tests mit Abbot - agis- ...agis- fileAbbot Java GUI Test Rahmenwerk Common Public License (CPL) AWT und Swing Unterstützung Kompilierte und Skript Tests möglich Werden

GUI Tests

Grafische Benutzeroberflächen zu testen ist schwierig.

● Ereignis getriebener Ablauf● Ungewollte Ereignisse● Sehr viele Pfade

Page 4: RCP/SWT-GUI-Tests mit Abbot - agis- ...agis- fileAbbot Java GUI Test Rahmenwerk Common Public License (CPL) AWT und Swing Unterstützung Kompilierte und Skript Tests möglich Werden

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

Page 5: RCP/SWT-GUI-Tests mit Abbot - agis- ...agis- fileAbbot Java GUI Test Rahmenwerk Common Public License (CPL) AWT und Swing Unterstützung Kompilierte und Skript Tests möglich Werden

Costello

Page 6: RCP/SWT-GUI-Tests mit Abbot - agis- ...agis- fileAbbot Java GUI Test Rahmenwerk Common Public License (CPL) AWT und Swing Unterstützung Kompilierte und Skript Tests möglich Werden

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

Page 7: RCP/SWT-GUI-Tests mit Abbot - agis- ...agis- fileAbbot Java GUI Test Rahmenwerk Common Public License (CPL) AWT und Swing Unterstützung Kompilierte und Skript Tests möglich 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)

Page 8: RCP/SWT-GUI-Tests mit Abbot - agis- ...agis- fileAbbot Java GUI Test Rahmenwerk Common Public License (CPL) AWT und Swing Unterstützung Kompilierte und Skript Tests möglich Werden

SWT

Page 9: RCP/SWT-GUI-Tests mit Abbot - agis- ...agis- fileAbbot Java GUI Test Rahmenwerk Common Public License (CPL) AWT und Swing Unterstützung Kompilierte und Skript Tests möglich Werden

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

Page 10: RCP/SWT-GUI-Tests mit Abbot - agis- ...agis- fileAbbot Java GUI Test Rahmenwerk Common Public License (CPL) AWT und Swing Unterstützung Kompilierte und Skript Tests möglich Werden

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

Page 11: RCP/SWT-GUI-Tests mit Abbot - agis- ...agis- fileAbbot Java GUI Test Rahmenwerk Common Public License (CPL) AWT und Swing Unterstützung Kompilierte und Skript Tests möglich Werden

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()

Page 12: RCP/SWT-GUI-Tests mit Abbot - agis- ...agis- fileAbbot Java GUI Test Rahmenwerk Common Public License (CPL) AWT und Swing Unterstützung Kompilierte und Skript Tests möglich Werden

Erstellen von Tests mit Abbot SWT

● setUpDisplay() und tearDownDisplay() werden mit dem SWT Thread synchronisiert.

Somit ist ein Initialisieren von SWT Komponenten möglich.

Page 13: RCP/SWT-GUI-Tests mit Abbot - agis- ...agis- fileAbbot Java GUI Test Rahmenwerk Common Public License (CPL) AWT und Swing Unterstützung Kompilierte und Skript Tests möglich Werden

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.

Page 14: RCP/SWT-GUI-Tests mit Abbot - agis- ...agis- fileAbbot Java GUI Test Rahmenwerk Common Public License (CPL) AWT und Swing Unterstützung Kompilierte und Skript Tests möglich Werden

Abbot SWT - Matcher

● Der Matcher besteht aus einer simplen Methode.

● Der MultiMatcher trifft dann noch eine Auswahl, falls mehrere Widgets gefunden wurden.

Page 15: RCP/SWT-GUI-Tests mit Abbot - agis- ...agis- fileAbbot Java GUI Test Rahmenwerk Common Public License (CPL) AWT und Swing Unterstützung Kompilierte und Skript Tests möglich Werden

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.

Page 16: RCP/SWT-GUI-Tests mit Abbot - agis- ...agis- fileAbbot Java GUI Test Rahmenwerk Common Public License (CPL) AWT und Swing Unterstützung Kompilierte und Skript Tests möglich Werden

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)

Page 17: RCP/SWT-GUI-Tests mit Abbot - agis- ...agis- fileAbbot Java GUI Test Rahmenwerk Common Public License (CPL) AWT und Swing Unterstützung Kompilierte und Skript Tests möglich Werden

Demo

Live Demo

Page 18: RCP/SWT-GUI-Tests mit Abbot - agis- ...agis- fileAbbot Java GUI Test Rahmenwerk Common Public License (CPL) AWT und Swing Unterstützung Kompilierte und Skript Tests möglich Werden

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.

Page 19: RCP/SWT-GUI-Tests mit Abbot - agis- ...agis- fileAbbot Java GUI Test Rahmenwerk Common Public License (CPL) AWT und Swing Unterstützung Kompilierte und Skript Tests möglich Werden

Quellen

● http://abbot.sourceforge.net● http://www.eclipse.org/swt