Proxyentwicklung - Bewährte Verfahren

Die folgenden bewährten Verfahren können Ihnen beim Entwickeln von Proxys helfen, damit Ihre Arbeit effizienter und effektiver wird. Berücksichtigen Sie diese Methoden, um Ihren Entwicklungsaufwand zu optimieren.
Geeignete Hierarchie für GUI-Objekte verwenden

Die GUI-Objekte (Objekte der grafischen Benutzerschnittstelle) werden in zwei zusammengehörigen Hierarchien angeordnet: "übergeordnetes und untergeordnetes Element" (parent-child) und "Eignerspezifisch" (owner-owned). Ein Beispiel für eine parent-child-Beziehung ist ein Dialogfenster und eine darin enthaltene Schaltfläche. Ein Beispiel für eine owner-owned-Beziehung ist ein Fenster der höchsten Ebene und ein Dialogfenster. Verwenden Sie einen beliebigen Hierarchietyp für ein Objekt.

Im Rahmen der Proxy-Implementierung kommt es beim zugrundeliegenden Objektmodell (z. B. Java™ und HWND) häufig vor, dass diese beiden Beziehungen verwechselt werden und deshalb die owner-owned-Beziehung als asymmetrische parent-child-Beziehung behandelt wird. In diesem Fall muss der Proxy die Annahme zurückweisen, dass es ein übergeordnetes Element für ihn gibt, wenn "owner-owned" das zu bevorzugende Beziehungsmodell ist. Die folgenden Methoden können zum Durchlaufen der Hierarchie verwendet werden: "getParent()", "getChildren()", "getOwner()" und "getOwned()".

Rückgabe unterschiedlicher Typen für dieselbe Eigenschaft vermeiden

Eigenschaften sind benannte Werte. Die Eigenschaft selbst verfügt über keinen Typ; der Wert hat einen Typ. Vermeiden Sie es festzulegen, dass Proxys unterschiedliche Typen für dieselbe Eigenschaft zurückgeben sollen. Manchmal kann ein Eigenschaftswert ein Verweis auf ein Objekt statt ein Wert sein. Wird ein solcher Wert an ein Script zurückgegeben, so wird er als Testobjekt zurückgegeben. Die Methoden für den Zugriff auf die Eigenschaften umfassen "getProperty()", "setProperty()", "getProperties()" und "getNonValueProperties()".

Objektbibliothek zum Zuordnen von Erkennungseigenschaften und Wertigkeiten für die Objekte verwenden

Standardmäßig enthalten die neuen Proxyobjekte u. U. keine Objekterkennungseigenschaften und Wertigkeiten. Verwenden Sie dann die Objektbibliothek zum Zuordnen der Erkennungseigenschaften und Wertigkeiten. Die Methoden für den Zugriff auf die Objekterkennungseigenschaften und Wertigkeiten sind "GetRecognitionProperties()" und "getRecognitionPropertyWeight()". Wenn das übergeordnete Objekt mehrere Objekte derselben Klasse enthält, fügen Sie die Eigenschaft ".classIndex" (ein positiver numerischer Wert, der mit "0" anfängt) als Erkennungseigenschaft für das untergeordnete Objekt hinzu.

Objekte verwalten, die nicht in die Übersicht aufgenommen werden können

Im Allgemeinen ist die gesamte Hierarchie der Objekte in der Übersicht enthalten. Bestimmte Objekte werden jedoch häufig zwischen den verschiedenen Builds der Testanwendung geändert. So ist es beispielsweise in Java üblich, Anzeigen hinzuzufügen, um Cluster aus Objekten zu bilden. Bei Functional Tester kann der Benutzer festlegen, dass das Proxy-Objekt nicht zugeordnet werden soll. Obwohl die Objekte, die nicht in die Übersicht aufgenommen werden können, in der Testobjektübersicht nicht enthalten sind, werden sie in der Objekthierarchie aufgelistet, während die Hierarchie der über- und untergeordneten Elemente durchlaufen wird. Die Methoden zum Verwalten der Hierarchie, die zugeordnet werden kann, umfassen "shouldBeMapped()", "getMappableParent()" und "getMappableChildren()".

Kanonische Eigenschaften verwenden

In einigen Fällen unterstützt das zugrundeliegende Objektmodell ein Konzept von Eigenschaften, z. B. Java, HTML und .NET. Functional Tester ermöglicht Proxys das Implementieren zusätzlicher Eigenschaften. Wenn ein Proxy eine Eigenschaft direkt implementiert, muss der Eigenschaftsname ein anderes Muster aufweisen, um die Verwechslung mit einer beliebigen Eigenschaft des Objekts zu vermeiden. Der reguläre Eigenschaftsname, der für die Erkennung verwendet werden könnte, muss mit einem Punkt (.) beginnen.. Namen bestimmter Verwaltungseigenschaften, die vom Framework verwendet werden und nicht für die Erkennung eingesetzt werden können, beginnen mit einem Nummernzeichen (#).

Objektmethoden aufrufen

In vielen Fällen verfügt das zugrundeliegende Objekt über Methoden, die gefunden und aufgerufen werden können. Normalerweise werden diese Methoden vom Framework und von der Domänenimplementierung direkt verwaltet, doch "getMethod()" wird häufig in einem Basisproxy einer Domäne implementiert.

Klar strukturierte scriptfähige Methoden

Sorgen Sie dafür, dass Mausaktionen nach Möglichkeit direkt wiedergegeben werden. Wenn ein Methodenname den Begriff "click" (Klicken) oder "drag" (Ziehen) enthält, müssen Mausereignisse die Aktion ausführen. Verwenden Sie keine Methodennamen wie "click" oder "drag", wenn Mausereignisse nicht zum Implementieren der Aktion verwendet werden. Verwenden Sie keine Methodennamen, die sich auf Tasten oder die Tastatur beziehen, wenn die Aktion nicht durch Tastaturereignisse implementiert wird. Sorgen Sie dafür, dass die Methoden die Aktion widerspiegeln, die während der Wiedergabe zuverlässig ausgeführt werden soll. Vermeiden Sie Heuristik.

subitem-Elemente verwalten

Objekte können andere Objekte enthalten und weisen möglicherweise eine interne Struktur auf, die nicht als ein oder mehrere verschachtelte Objekte offen gelegt werden. So enthält eine Liste z. B. Einträge, doch die Einträge werden vom Listenobjekt nicht als Objekte offen gelegt. Dieses Verhalten ist in HWND-basierten Objekten üblich. Die häufigsten Methoden zum Bearbeiten von subitem-Elementen umfassen "getSubitem()" sowie die Mausaktionsmethoden "click()", "drag()" und "doubleClick()". Die Methode "getSubitem()" gibt "0" (null) oder eine Zeichenfolge zurück.

Verwenden Sie eine der folgenden Strategien, wenn die Objekte in den subitem-Elementen nicht als eigenständige Objekte offen gelegt werden sollen:

Ausnahmebedingungen und Fehler

Beachten Sie während der Implementierung von Ausnahmebedingungen und Fehlern die folgenden Regeln:


Feedback