HMI / GUI-Verifikation Automatisierte Tests für Embedded Systeme

GUI-Testarten und ihre Probleme

Eines der Probleme beim GUI-Test ist die mangelnde Abstraktionsfähigkeit einer Maschine. Auch wenn KI-Algorithmen im speziellen Anwendungsfall (z.B. AOI-Test) performante Resultate liefern können, finden sie eine Grenze. Beispielsweise wird ein Button von der Maschine nicht unbedingt immer erkannt, z.B. wenn seine Attribute wie Bildschirmgröße, Betriebssystemstyles oder Seitenverhältnisse zu stark varriieren.

Das Squish GUI Test-Tool [2] geht dagegen einen anderen Weg. Mithilfe von sogenannten Hooks klinkt sich Squish zur Laufzeit direkt in die Anwendung ein und kann auf interne Daten und die Object Map zugreifen. Damit können sämtliche GUI-Objekte und ihre Eigenschaften betrachtet werden. Squish arbeitet mit einer eigenen Eclipse-basierten IDE, mit der ein Testscript erstellt und abgespult werden kann. Dieses Testscript wird dann vom internen Squishrunner interpretiert und ausgeführt. Der Squishrunner schickt die Befehle an den Squishserver, der die Ansteuerung der Anwendung durch den Hook ermöglicht. Für die TODO automatisierte Ausführung der GUI-Tests lässt sich Squish in CI-Tools wie Jenkins, Bamboo und andere Automatisierungssysteme integrieren. Hier eine Darstellung des Default Setup von Squish, bei dem Squish direkt auf den Geräten läuft (Bild 1).

Squishs interner Aufbau

Bei bestimmten Geräte ist ein Fernzugriff erforderlich. Dies löst Squish, indem es den Squishserver extern ausführt (Bild 2). Ein weiterer positiver Aspekt dieses Aufbaus ist, dass die Hooks, je nach Anwendung, ausgetauscht werden können. So unterstützt Squish unterschiedliche Betriebssysteme und GUI-Frameworks wie beispielsweise Qt, .Net, CocoaTouch, JavaFx und viele weitere. Referenz [2] zeigt die komplette Liste an unterstützten Plattformen und GUI-Frameworks zeigt (Bild 3).

Eine weitere Anforderung an GUI-Testtools ist, dass sie das entfernte Testen ermöglichen. Gerade bei Embedded-Zielgeräten ist dies für das automatisierte Testen essentiell. Squish erlaubt durch seinen internen Aufbau einen sogenannten Thin Client, bei dem der Hauptteil der Test-Verarbeitung auf dem Hostserver erfolgt. Die Kommunikation wird durch eine TCP/IP-Verbindung realisiert. Zusätzlich unterstützt Squish FMI [3] für die Interoperabilität mit anderen Test- und Simulationswerkzeugen, wie etwa CANoe [4].