Automatisieren von Tests auf Flash / Flex-Anwendungen
Die Nachfrage nach Tests von Flash / Flex-Anwendungen ist in den letzten Jahren deutlich gestiegen. Dies deutet auf eine zunehmende Nutzung dieser Technologie hin, was wiederum den Bedarf an automatisierten Tests dieser Anwendungen verdeutlicht. Dieser Bedarf wirft jedoch einige Fragen und Probleme auf, von denen einige im folgenden Artikel erörtert werden.
Konkret lautet die erste Frage, die zur Automatisierung einer Flash/Flex-Anwendung beantwortet werden muss: Welches ist die richtige Automatisierungstechnik? Es gibt zwei verschiedene Wege zu gehen:
Native Maus & Tastaturintegration – gut für Situationen, in denen nur minimale Flash-Interaktion erforderlich ist.
Integration auf API-Ebene – gut für Situationen, in denen viel Flash-Interaktion erforderlich ist.
Native Maus & Tastaturintegration – Hier wird eine Mausbewegung, ein Mausklick oder eine Tastaturaktion auf Betriebssystemebene simuliert. Es reproduziert die realistischste Benutzersimulation, indem es GUI-basierte Aktionen aufzeichnet und uns der „realen“ Nutzung unserer Anwendung sehr nahe bringt. Die Verwendung dieser Methode hat jedoch einige Probleme. Das Testen einer Flash-Anwendung erfordert beispielsweise, dass die Anwendung und die Testumgebung auf besondere Weise vorbereitet werden. Je nach verwendetem Testtool und Entwicklungsumgebung gibt es verschiedene Möglichkeiten, Ihre Flash-Anwendung testbar zu machen. Einige Tools wie TestComplete, Rational Robot und QTP erfordern, dass eine dedizierte Bibliothek (normalerweise vom Hersteller des Tools bereitgestellt) während der Kompilierung oder zur Laufzeit in die Flash-Anwendung eingebettet wird. Einzelheiten zu diesem Prozess finden Sie normalerweise in der Dokumentation dieser Tools.
Das Erfassen der Objekte in einer Flex / Flash-Anwendung ist für sich genommen problematisch. Um dies zu lösen, gibt es zwei Hauptansätze:
- Erfassen Sie die Anzeige vom Gerät und verwenden Sie die Bilderkennung, um die gewünschten Elemente auf dem Bildschirm zu lokalisieren. Aubergine ist ein gutes Beispiel für ein Tool, das diesen Ansatz verwendet. Es ist auch, wie SilkPerformer in einer Citrix-Umgebung arbeitet.
- Analysieren Sie die verwendeten Objekte in Eigenschaften und verwenden Sie diese Eigenschaften, um das Objekt zu lokalisieren. Dies ist der gleiche Ansatz, der in den Objekt-Repositorys von QTP verwendet wird. Typische Flash-Objekteigenschaften wie Status, Name und Text werden sowohl zum Suchen von Objekten als auch zum Überprüfen, ob bestimmte Aktionen ausgeführt wurden, verwendet. Rational Robot ist ein gutes Beispiel für diesen Ansatz; Es verwendet 11 verschiedene Überprüfungspunkte, um zu überprüfen, ob eine bestimmte Aktion stattgefunden hat, oder um den Zustand eines Objekts zu überprüfen. Dieser Ansatz ist ideal für diejenigen, die relativ einfache GUI-Interaktionen simulieren möchten, z. B. das Klicken auf die Schaltfläche „Abspielen“ eines Films oder die Interaktion mit einem Bestätigungsdialog, da dieser Ansatz bei einer komplizierteren Anwendung tendenziell fehlschlägt.
Integration auf API-Ebene – Für Anwendungen mit viel komplexeren Flash / Flex-Benutzeroberflächen oder Anwendungen, die zu 100% Flash-basiert sind, ist es schwierig, GUI-Capturing wie dargestellt zu verwenden, da es spröde und schwierig sein kann, zu bestätigen, dass die gewünschte Funktionalität funktioniert. Dazu kann man die API-Level-Integration verwenden. Um diese Art der Automatisierung durchzuführen, muss man in der Lage sein, die zugrunde liegenden Flash-Objekte neu zu kompilieren / zu modifizieren.
Wie Sie von hier aus vorgehen, hängt davon ab, ob Sie Flash oder Flex verwenden, da Flex einige Automatisierungs-APIs verfügbar macht, die andernfalls reproduziert werden müssen, wenn Sie reines Flash verwenden. Dazu kann man: