Pratiques recommandées pour le développement de proxy

Lors du développement d'un proxy, suivez les pratiques recommandées afin d'être plus efficace. Envisagez d'appliquer les méthodes ci-dessous pour optimiser votre travail de développement.
Utilisation de la hiérarchie appropriée pour les objets d'interface graphique

Les objets d'interface graphique sont présentés dans deux hiérarchies liées : parent-enfant et possesseur-possédé. Une boîte de dialogue et un bouton figurant dans la boîte de dialogue présentent une relation parent-enfant. Une fenêtre de niveau supérieur et une boîte de dialogue présentent une relation possesseur-possédé. Vous pouvez utiliser n'importe quel type de hiérarchie pour un objet.

Dans une implémentation de proxy, le modèle d'objet sous-jacent (par exemple Java™ et HWND) confond souvent ces deux relations et traite la relation possesseur-possédé comme une relation parent-enfant asymétrique. Dans ce cas, le proxy doit nier le fait qu'il possède un parent lorsque le modèle de relation préférable est possesseur/possédé. Les méthodes permettant de parcourir la hiérarchie sont getParent(), getChildren(), getOwner() et getOwned().

Eviter le renvoi de différents types pour la même propriété

Les propriétés sont des valeurs nommées. La propriété elle-même n'est pas associée à un type ; c'est la valeur qui possède un type. Evitez le renvoi par les proxys de types différents pour la même propriété. Parfois, une valeur de propriété peut être une référence à un objet plutôt qu'une valeur. Si une telle valeur est renvoyée à un script, elle est renvoyée sous forme d'objet de test (TestObject). Les méthodes d'accès aux propriétés sont getProperty(), setProperty(), getProperties() et getNonValueProperties().

Utilisation de la bibliothèque d'objets pour affecter des propriétés de reconnaissance et des poids aux objets

Par défaut, il se peut que les nouveaux objets de proxy ne soient pas associés à des propriétés de reconnaissance ni à des poids. Utilisez la bibliothèque d'objets pour affecter les propriétés de reconnaissance et les poids. Les méthodes d'accès aux propriétés de reconnaissance et aux poids des objets sont getRecognitionProperties() et getRecognitionPropertyWeight(). Si plusieurs objets de la même classe existent dans l'objet parent, ajoutez la propriété .classIndex (valeur numérique positive à partir de 0) en tant que propriété de reconnaissance pour l'objet enfant.

Gestion des hiérarchies pouvant être mappées

En général, l'intégralité de la hiérarchie des objets est mappée. Toutefois, certains objets peuvent changer fréquemment d'une génération de l'application de test à l'autre. Par exemple, dans Java, il est fréquent d'ajouter des panneaux afin de regrouper des objets. Avec Functional Tester, l'utilisateur peut spécifier qu'il ne souhaite pas mapper l'objet de proxy. Même si les objets qui ne sont pas mappables ne se trouvent pas dans la mappe d'objets de test, ils sont répertoriés dans la hiérarchie des objets lorsque vous parcourez la hiérarchie parent-enfant. Les méthodes de gestion de la hiérarchie mappable sont shouldBeMapped(), getMappableParent() et getMappableChildren().

Utilisation de propriétés canoniques

Dans certains cas, le modèle d'objet sous-jacent prend en charge une notion de propriétés, par exemple Java, HTML et .NET. Functional Tester permet aux proxys d'implémenter des propriétés supplémentaires. Si un proxy implémente une propriété directement, le modèle de nom de la propriété doit être différent afin d'éviter la confusion avec une autre propriété de l'objet. Les noms de propriété standard susceptibles d'être utilisés pour la reconnaissance doivent commencer par un point (.). Certaines propriétés d'administration sont utilisées par la structure et ne peuvent pas être utilisées pour la reconnaissance : leurs noms doivent commencer par le signe dièse (#).

Appel des méthodes d'objet

Dans de nombreux cas, l'objet sous-jacent comporte des méthodes pouvant être recherchées et appelées. Elles sont généralement gérées directement par la structure et l'implémentation de domaine, mais la méthode getMethod() est communément implémentée sur un proxy de base dans un domaine.

Utilisation de méthodes pouvant être appelées dans un script et correctement définies

Si possible, faites en sorte que les actions de la souris soient lues à partir d'une méthode dont le nom reflète l'action. Si un nom de méthode inclut le terme "click" ou "drag", l'action doit être effectuée par des événements de souris. N'utilisez pas de noms de méthode tels "click" ou "drag" si des événements de souris ne sont pas utilisés pour implémenter l'action. N'utilisez pas de noms de méthode référençant les touches ou le clavier si l'action n'est pas implémentée par des événements de clavier. Faites en sorte que les méthodes reflètent l'action à exécuter et qu'elles soient fiables pendant la lecture. Evitez les méthodes heuristiques.

Gestion des sous-éléments

Les objets peuvent contenir d'autres objets et posséder une structure interne qui ne se présente pas sous forme d'un ou de plusieurs objets imbriqués. Par exemple, une liste peut se composer d'éléments, mais les éléments ne sont pas forcément présentés par l'objet de liste sous forme d'objets. Ce type de comportement est fréquent dans le cas des objets reposant sur HWND. Les méthodes de traitement des sous-éléments les plus courantes sont getSubitem() et les méthodes d'action de la souris telles click(), drag() et doubleClick(). La méthode getSubitem() renvoie une valeur null ou une chaîne.

Utilisez l'une des stratégies suivantes si vous ne voulez pas que les objets figurant dans les sous-éléments soient présentés sous forme d'objets à part entière :

Exceptions et erreurs

Respectez les règles suivantes lors de l'implémentation des exceptions et des erreurs :


Retour d'informations