Prácticas recomendadas para el desarrollo de proxy

Las siguientes prácticas recomendadas para desarrollar proxies pueden servirle de ayuda para aumentar tanto la eficacia como la eficiencia. Tenga en cuenta la posibilidad de utilizar los métodos siguientes para mejorar las tareas de desarrollo.
Uso de la jerarquía adecuada para los objetos de la GUI

Los objetos de la GUI se clasifican en dos jerarquías relacionadas: principal-secundario y propietario-en propiedad. Un ejemplo de relación principal-secundario es un recuadro de diálogo y un botón contenido en el recuadro de diálogo. Un ejemplo de relación propietario-en propiedad es una ventana de nivel superior y un recuadro de diálogo. Puede usar uno de estos dos tipos de jerarquía para un objeto.

En la implementación de proxy, es habitual que el modelo de objeto subyacente (por ejemplo, Java™ y HWND) confunda estos dos tipos de relaciones y que trate una relación de propietario-en propiedad como una relación principal-secundario simétrica. En este caso, el proxy debe denegar la posesión de un elemento principal cuando el modelo de relación preferido es propietario-en propiedad. Los métodos que se pueden usar para desplazarse por la jerarquía son: getParent(), getChildren(), getOwner() y getOwned().

Evitar la devolución de diferentes tipos para la misma propiedad

Las propiedades son valores con nombre. La propiedad en sí no tiene un tipo, pero el valor sí. Evite la devolución de diferentes tipos para la misma propiedad. En ocasiones, un valor de propiedad puede ser una referencia a un objeto en lugar de un valor. Si este valor se devuelve a un script, se devuelve como un TestObject. Los métodos que permiten acceder a las propiedades son: getProperty(), setProperty(), getProperties() y getNonValueProperties().

Uso de la Biblioteca de objetos para asignar las propiedades y pesos de reconocimiento para los objetos

De forma predeterminada, puede que los nuevos objetos de proxy no tengan propiedades y pesos de reconocimiento de objetos. Utilice la Biblioteca de objetos para asignar las propiedades y pesos de reconocimiento. Los métodos para acceder a las propiedades y pesos de los objetos son: getRecognitionProperties() y getRecognitionPropertyWeight(). Si existe más de un objeto de la misma clase en el objeto principal, añada la propiedad .classIndex (un valor numérico positivo empezando desde 0) como propiedad de reconocimiento para el objeto secundario.

Gestión de jerarquías correlacionables

Por lo general, la jerarquía entera de los objetos está correlacionada. Sin embargo, algunos objetos tienen más posibilidades de cambiar entre las versiones de la aplicación de prueba. Por ejemplo, en Java, es habitual añadir paneles para agrupar los objetos. Con Functional Tester, el usuario puede especificar que los objetos de proxy no se agrupen. Aunque los objetos no correlacionables no residen en la correlación de objetos de prueba, aparecen en la jerarquía de objetos mientras se desplaza por la jerarquía principal-secundaria. Los métodos para gestionar la jerarquía correlacionable son: shouldBeMapped(), getMappableParent() y getMappableChildren().

Uso de propiedades canónicas

En algunos casos, el modelo de objeto subyacente admite un concepto de propiedades como, por ejemplo, Java, HTML y .NET. Functional Tester permite a los proxies implementar propiedades adicionales. Si un proxy implementa directamente una propiedad, el nombre de la propiedad debe tener un patrón diferente para evitar confusiones con otras propiedades del objeto. Inicie con un punto (.) las propiedades normales que puedan utilizarse para el reconocimiento.. La estructura utiliza algunas propiedades administrativas que no se pueden utilizar para el reconocimiento. Los nombres de estas propiedades empiezan con el signo (#).

Invocación de métodos de objeto

En muchos casos, el objeto subyacente tiene métodos que se pueden encontrar e invocar. La estructura y la implementación del dominio suelen gestionarlas directamente, pero getMethod() normalmente se implementa en un proxy base en un dominio.

Uso de métodos de script bien definidos

Siempre que sea posible, haga que las acciones del ratón se reproduzcan desde el cristal. Si el nombre de un método incluye los términos "click" o "drag", haga que los sucesos del ratón realicen la acción. No utilice nombres de métodos como "click" o "drag" si los sucesos del ratón no se utilizan para implementar la acción. No utilice nombres de métodos que hagan referencia a claves o al teclado si los sucesos del teclado no implementan la acción. Haga que los métodos reflejen la acción que se va a realizar y que su reproducción sea fiable. Evite la heurística.

Gestión de subelementos

Los objetos pueden contener otros objetos y pueden tener una estructura interna que no esté expuesta como objetos u objetos anidados. Por ejemplo, una lista puede incluir elementos en ella, pero el objeto de lista no exponen los elementos como objetos en sí mismos. Este tipo de comportamiento es habitual en los objetos basados en HWND. El método más común en la gestión de subelementos es getSubitem(), así como métodos de acción del ratón como click(), drag() y doubleClick(). El método getSubitem() devuelve un valor nulo o una serie de caracteres.

Utilice cualquiera de las siguientes estrategias si no desea que los objetos de los subelementos se expongan como objetos de pleno derecho:

Excepciones y errores

Cuando implemente excepciones y errores, siga las directrices siguientes:


Comentarios