Extensión de Rational Functional Tester para probar aplicaciones Flash o Adobe Flex

Extensión con herramientas de fuente abierta para minimizar el impacto de frecuentes actualizaciones y parches del navegador

Uno de los increíbles beneficios de Rational Functional Tester y su entorno de desarrollo integrado (IDE) Eclipse es que se puede extender con facilidad literalmente a cientos de componentes útiles de fuente abierta. Nuestro equipo asumió el reto de automatizar de manera consistente las aplicaciones GUI de Flex a través del soporte integrado para la automatización de Flex debido a los constantes parches de seguridad del navegador. Resolvimos este problema gracias a la utilización de componentes de fuente abierta para estar al día con las actualizaciones de seguridad del navegador que surgen día a día. Este artículo explica cómo funciona Rational Functional Tester en combinación con Selenium y FlexMonkium. Tim Hague brinda instrucciones paso a paso para ayudarlo a implementar una solución similar.

Tim Hague, Quality Assurance Automation Engineer, IBM

author photoTim Hague es ingeniero especializado en automatización de IBM; actualmente está enfocado en el desarrollo de infraestructuras de automatización para el portafolio de productos InfoSphere Optim de IBM. Desde 1994, se ha desempeñado en áreas de desarrollo y control de calidad en roles como desarrollador Java, desarrollador web, líder de control de calidad, gerente de proyectos y analista de negocios.



24-07-2012

Cómo extender Rational Functional Tester

Una de las mayores ventajas de utilizar Rational Functional Tester es su habilidad de extenderse con cualquier número de componentes de fuente abierta. Los desarrolladores de automatización GUI generalmente se enfrentan a limitaciones de herramientas de prueba, pero con la posibilidad de extensión de Rational Functional Tester, podemos liberarnos de estas limitaciones. Este artículo le muestra cómo utilizar Selenium y FlexMonkium con Rational Functional Tester para probar las aplicaciones Flash o Adobe Flex.

Los retos de probar aplicaciones Flex basadas en el navegador

Probablemente, todos estamos de acuerdo con el hecho de que los software revisados o actualizados con más frecuencia hoy son los navegadores de Internet y los plug-ins de Flash que soportan. Debido a que las aplicaciones Flex generalmente se ejecutan en navegadores en plug-ins de Flash, estas aplicaciones de Flash generan retos para que las herramientas de prueba de automatización puedan reconocer de manera consistente los objetos de prueba GUI dentro de la aplicación a prueba (AUT). Imagine que desarrolla una infraestructura de automatización para probar su aplicación Flex empresarial y, luego, esa infraestructura se "rompe", posiblemente varias veces en el mes, a causa de los parches de seguridad del navegador o de los plug-ins de Flash. Al parecer, usted necesita una solución de reconocimiento de objetos GUI de Flex más consistente para mantenerse actualizado con los frecuentes parches de los plug-ins.

Ventajas de la extensión con Selenium y FlexMonkium

El conjunto de herramientas Selenium está diseñado para proporcionar excelentes pruebas de automatización de aplicaciones basadas en el navegador. El equipo de desarrollo de Selenium trabaja estrechamente con los equipos de desarrollo del navegador, con el fin de garantizar que los navegadores operen consistentemente y de manera conjunta con sus herramientas de prueba. Para nuestros propósitos, Selenium-RC es la solución perfecta para pasar los comandos de prueba de Flex desde Rational Functional Tester hacia la aplicación del navegador sin temor a que intervengan los parches de seguridad del navegador.

Mientras Rational Functional Tester se extiende con facilidad, usted también puede utilizar la capacidad integrada para este proceso. Consulte las instrucciones:

Las herramientas FlexMonkium brindan una consistente solución de reconocimiento de objetos GUI de aplicación Flex con un sólido soporte para las constantes actualizaciones de los plug-ins de Flash. FlexMonkium ofrece este completo conjunto de herramientas:

FlexMonkiumConsole

Se utiliza para descubrir y registrar objetos GUI 
FlexMonkium SWC

Un archivo automation_monkey.swc liviano compilado en su AUT para "habilitar" la automatización de Flex 

La combinación de Selenium y FlexMonkium ofrece componentes altamente soportados que funcionan perfectamente juntos para brindar una consistente solución de automatización de la aplicación Flex.


Cómo funciona esta combinación

Los componentes por separado cumplen roles muy importantes. Veamos cómo trabajan juntos.

Rational Functional Tester

Rational Functional Tester se utiliza para lo que mejor realiza en esta solución:

  • IDE Eclipse extensible para desarrollar y contener su código y scripts de prueba de Java o JUnit
  • Plataforma de ejecución de prueba para iniciar pruebas y registrar resultados

Selenium

Selenium se utiliza principalmente para la interoperabilidad entre Rational Functional Tester y el navegador que hospeda la aplicación Flex:

Selenium IDE

Esto se utiliza para registrar scripts de automatización que se pueden exportar o convertir al código JUnit. 
Selenium-RC

Este componente se utiliza como puente HTTP desde el código JUnit de Rational Functional Tester hasta el navegador que contiene la aplicación Flex. Los comandos de su código JUnit se pasan y ejecutan como comandos JavaScript, lo cual pueden comprender todos los navegadores. 

FlexMonkium

FlexMonkium se utiliza para la grabación de script de automatización Flex, para el descubrimiento o reconocimiento de objetos GUI Flex y para la interoperabilidad entre Selenium-RC y la aplicación Flex.

FlexMonkiumConsole

Al combinarla con Selenium IDE, la consola ofrece ofrece un grabador de automatización GUI de aplicación Flex fácil de usar. Luego, los scripts grabados se exportan como código JUnit para utilizarlos en Rational Functional Tester. 
FlexMonkium SWC

Compilado como parte de su compilación de la aplicación Flex, este componente esencialmente activa la automatización para la aplicación objetivo. 

Introducción

Prerrequisitos

  • Rational Functional Tester instalado y listo para ejecutar
  • Navegador Firefox 3 instalado (las versiones posteriores de Firefox también deberían funcionar)
  • Incluye automation_monkey.swc desde el sitio web Gorilla Logic (consulte la sección Recursos de este artículo) en su aplicación Flex objetivo.

Configuración del componente

Consejo:

Consulte la sección Recursos de este artículo para acceder a los enlaces para realizar las descargas necesarias y obtener las instrucciones de instalación mencionadas en esta sección.

  1. Descargue e instale Selenium IDE. Selenium IDE es un Add-on (extensión) para Firefox y se puede abrir como una barra lateral luego de instalarla (Firefox > View > SideBar > Selenium IDE).
  2. Descargue el último archivo Java (JAR) de Selenium-RC (también conocido como Selenium Server), selenium-server-standalone-2.x.x.jar.
  3. Descargue el último Selenium Client Driver para el archivo Java.zip, selenium-java-2.x.x.zip, y extraiga los archivos JAR que incluirá en su proyecto Rational Functional Tester.
  4. Descargue el último archivo FlexMonkium.zip del sitio web Gorilla Logic y extraiga los contenidos en un directorio local.
  5. Instale FlexMonkiumConsole con el instalador FlexMonkium y tome nota de la ubicación donde lo instaló.
  6. Instale el plug-in flexmonkium.xpi , el cual se incluye con el archivo FlexMonkium.zip, en Firefox. Lo puede hacer arrastrando el archivo .xpi en Firefox o abriendo el archivo .xpi en Firefox.
  7. Inicie Selenium-RC/Selenium Server y aplique user-extensions.js que se proporciona en el archivo FlexMonkium.zip. Debería funcionar el siguiente comando ejecutado en un prompt de comandos de Microsoft Windows:
    java –jar path/selenium-server-standalone-2.x.x.jar –userExtensions path/user-extensions.js

Configuración de Rational Functional Tester

  1. Cree un nuevo proyecto en Rational Functional Tester que contenga su automatización Flex:
    RFT > New > Functional Test Project.
  2. Habilite Firefox como su navegador predeterminado para Rational Functional Tester:
    Configure > Enable Environments for Testing > Mozilla Firefox > Set as Default
  3. Agregue un directorio "lib" a su proyecto:
  1. Haga clic derecho en su proyecto y seleccione Add Test Folder.
  2. La carpeta debe llevar el nombre liby haga clic en Finish.
  1. En el directorio lib de su nuevo proyecto Rational Functional Tester, importe el archivo selenium-java-2.x.x.jar haciendo clic derecho en el directorio lib y seleccionando Import > General > File System ; luego seleccione el archivo selenium-java-2.x.x.jar . Haga clic en Finish para importar el archivo.
  2. Actualice la ruta de acceso de compilación de su proyecto Rational Functional Tester; para hacerlo, haga clic derecho en el nombre del proyecto y seleccione Properties. Luego, seleccione Java Build Path > Add Jars > el nombre de su proyecto > lib > selenium-java-2.x.jar > OK.
  3. Según la configuración de Rational Functional Tester, es posible que tenga que importar e incluir más de los archivos que se descargaron como parte de Selenium Client Driver para el archivo Java.zip (selenium-java-2.x.x.zip). Si su proyecto Rational Functional Tester se ejecuta con problemas de tiempo de ejecución o de compilación, lo primero que debe hacer es importar e incluir estos archivos en su ruta de acceso de compilación de Java del proyecto.

Cómo grabar y generar códigos JUnit

Utilizará la barra lateral de Selenium IDE dentro de Firefox y FlexMonkiumConsole para grabar scripts de prueba y descubrir las propiedades del objeto GUI de la aplicación Flex.

Descubra las propiedades del objeto GUI de Flex

Es probable que, en algún momento, desee crear una infraestructura de automatización controlada por datos para su prueba de la aplicación Flex, y las propiedades del objeto GUI le permiten mapear y reconocer sus objetos de prueba dentro de la infraestructura. En una aplicación Flex, el equipo de desarrollo le puede otorgar a cada objeto GUI un identificador único (por ejemplo, la propiedad "Id") mientras desarrollan la aplicación. Estos pasos le muestran cómo descubrir estas propiedades:

  1. Abra Firefox y coloque el puntero en el URL de su aplicación Flex objetivo.
  2. Abra la barra lateral de Selenium IDE seleccionando Firefox > View > Sidebar > SeleniumIDE, como se muestra en la Figura 1.
Figura 1. Barra lateral de Selenium IDE y aplicación objetivo
Barra lateral de Selenium IDE y aplicación objetivo
  1. Para asegurarse de que Selenium IDE + FlexMonkium reconozca la aplicación Flex, primero inicie FlexMonkiumConsole, como se muestra en la Figura 2.
Figura 2. Abra FlexMonkiumConsole (haga clic en el ícono negro)
Abra FlexMonkiumConsole (haga clic en el ícono negro)
  1. Ahora verifique el estado de conexión de FlexMonkiumConsole y de la aplicación Flex. La luz verde debe estar encendida (consulte la Figura 3).
    • De no ser así, debe depurar los problemas que tenga su aplicación y el archivo automation_monkey.swc que compiló con su compilación.
    • Si la luz verde está encendida, entonces en este momento puede grabar propiedades de objetos y scripts en la aplicación Flex objetivo.
Figura 3. Verifique el estado de FlexMonkium
Verifique el estado de FlexMonkium
  1. Inspeccione las propiedades del objeto GUI en la aplicación Flex objetivo haciendo clic en la marca de verificación verde , en la ventana de FlexMonkiumConsole y desplace el cursor por los objetos GUI que quiere inspeccionar. El objeto que está inspeccionando estará resaltado en rojo y se mostrarán algunas de las propiedades del objeto, como se muestra en la Figura 4.
Figura 4. Inspeccione objetos GUI en la aplicación Flex
Inspeccione objetos GUI en la aplicación Flex
  1. Si desea ver todas las propiedades del objeto GUI que está inspeccionando, haga clic en ese objeto para abrir la ventana que se muestra en la Figura 5.
Figura 5. Vea la ventana expandida de propiedades del objeto Flex
Vea la ventana expandida de propiedades del objeto Flex

Grabe scripts de prueba y expórtelos en código JUnit

Selenium IDE y FlexMonkiumConsole funcionan bien para grabar y reproducir varias acciones de prueba. Pero, en última instancia, tendrá que poder ejecutarlos en Rational Functional Tester, donde puede crear una infraestructura de automatización controlada por datos. Los pasos a continuación le muestran cómo grabar scripts simples y exportarlos en código JUnit, los cuales se pueden ejecutar en Rational Functional Tester.

  1. Cierre todos los navegadores y abra Firefox en el URL de su aplicación Flex objetivo.
  2. Abra la barra lateral de Selenium IDE: Firefox > View > Sidebar > SeleniumIDE (consulte la Figura 6). Tenga en cuenta que, de manera predeterminada, el botón rojo "Record" (Grabar) está presionado.
Figura 6. Barra lateral de Selenium IDE y Firefox listos para grabar
Barra lateral de Selenium IDE y Firefox listos para grabar
  1. Realice algunas acciones con su aplicación Flex y observe los comandos que se capturan en la barra lateral de Selenium IDE, como se muestra en la Figura 7.
  2. Haga clic en el botón rojo Record para detener la grabación en este punto.
Figura 7. Grabe acciones y observe los comandos capturados
Grabe acciones y observe los comandos capturados
  1. Exporte un código JUnit desde Selenium IDE; haga clic en File > Export Test Case As > FlexMonkium (JUnit) – Selenium – RC como se muestra en la Figura 8.
Figura 8. Exporte el código JUnit para utilizarlo en Rational Functional Tester
Exporte el código JUnit para utilizarlo en Rational Functional Tester
  1. Se le solicitará que exporte el código con un nombre de archivo que usted elija. El código se exporta en formato de archivo Java; por lo tanto, usted puede guardar el archivo como un archivo .txt o .java, si lo desea. Para los fines de esta demostración, guarde el archivo con el nombre ExportedCode.java .

Consulte el Listado 1 para ver un ejemplo de la apariencia del código JUnit.

Listado 1. Ejemplo del código JUnit exportado
package tests;
import com.thoughtworks.selenium.*;
import org.junit.*;
import static org.junit.Assert.*;
import static org.hamcrest.CoreMatchers.*;

public class ExportedCode {
 private Selenium selenium;
 private HttpCommandProcessor proc;

 @Before
 public void setUp() throws Exception {
 proc = new HttpCommandProcessor
("localhost", 4444, "*firefox", "http://9.75.229.34:8080/");
 selenium = new DefaultSelenium(proc);
 selenium.start();
 }

 @After
 public void tearDown() throws Exception {
 if (selenium != null) {
 selenium.stop();
 selenium = null;
 }
 }

 @Test
 public void myTestMethod() throws Exception {
 selenium.open("/optim/console#");
 for (int t = 0;; t++) {
 if (t >= 60) fail("timeout");
 try {

 if (proc.getBoolean("isFlexMonkey", new String[] {"<UIEvent command=\"SelectText\" 
value=\"userNameTextInput\"><arg value=\"0\"/><arg value=\"0\"/></UIEvent>"})) break;
 } catch (Exception e) { }
 Thread.sleep(500);
 }

 for (int t = 0;; t++) {
 if (t >= 60) fail("timeout");
 try {
 if (proc.getBoolean("isFlexMonkey", new String[] {"<UIEvent command=\"Input\" 
value=\"userNameTextInput\"><arg value=\"test\"/></UIEvent>"})) break;
 } catch (Exception e) { }
 Thread.sleep(500);
 }

 for (int t = 0;; t++) {
 if (t >= 60) fail("timeout");
 try {
 if (proc.getBoolean("isFlexMonkey", new String[] {"<UIEvent command=\"Input\" 
value=\"passwordTextInput\"><arg value=\"test\"/></UIEvent>"})) break;
 } catch (Exception e) { }
 Thread.sleep(500);
 }

 for (int t = 0;; t++) {
 if (t >= 60) fail("timeout");
 try {
 if (proc.getBoolean("isFlexMonkey", new String[] {"<UIEvent command=\"Click\" 
value=\"Login\"/>"})) break;
 } catch (Exception e) { }
 Thread.sleep(500);
 }

Cómo ejecutar casos de pruebas exportadas

El código "generado" que se muestra en el Listado 1 deja mucho que desear. Se debe limpiar considerablemente para utilizarlo en cualquier infraestructura que planee configurar. Para los fines de esta demostración, puede crear un script de prueba de Rational Functional Tester, y llamar a los métodos exportados o generados directamente desde testMain(Object[] args)que se incluye de manera predeterminada en todos los scripts de Rational Functional Tester.

  1. Cree un nuevo paquete en su proyecto Rational Functional Tester y colóquele el nombre pruebas, e importe el archivo ExportedCode.java que creó anteriormente a este paquete "pruebas".
  2. Cree un nuevo script de prueba de Rational Functional Tester; para hacerlo, seleccione RFT > New > Empty Functional Test Script. Colóquele un nombre a su script de prueba y haga clic en Finish.
  3. En el método testMain(Object[] args) , agregue un código similar al que se muestra en el Listado 2.
Ejemplo de un script de prueba de Rational Functional Tester
import resources.TestScriptHelper;
import tests.ExportedCode;

/**
 * Description : Functional Test Script
 * 
 */
publicclass TestScript extends TestScriptHelper {
   publicvoid testMain(Object[] args) {
      ExportedCode expCode = new ExportedCode();
      try {
         expCode.setUp();// Setup AUT and Selenium components for testing
         expCode.myTestMethod();// Run recorded Flex test scripts
         expCode.tearDown();// Bring down AUT and Selenium components
      } catch (Exception e) {
 e.printStackTrace();
 }
 }
}
  1. Ahora puede ejecutar una prueba. Haga clic en el botón Play (círculo verde) en la barra de herramientas, como se muestra en la Figura 9.
Figura 9. Ejecute o reproduzca la prueba de la aplicación Flex en Rational Functional Tester
Ejecute o reproduzca la prueba de la aplicación Flex en Rational Functional Tester

Vista aumentada de la Figura 9.


Considere desarrollar una infraestructura de automatización

Rational Functional Tester funciona muy bien para desarrollar infraestructuras de automatización controladas por datos, ya que esencialmente es un IDE de Java desarrollado que usted puede extender de la manera que desee para resolver varios problemas de automatización. Aquí hay varios puntos para considerar para una infraestructura de automatización Flex:

  • Declare los objetos GUI de la aplicación Flex en un archivo objects.properties, en lugar de un código.
  • Almacene sus datos de prueba en un archivo sin formato, en un archivo CSV o en una base de datos, y utilícelos para accionar sus pruebas. La grabación y reproducción implican un mantenimiento tedioso a la larga.
  • Cree métodos auxiliares de acción o relleno para cada tipo de objeto Flex, de manera que pueda llamar fácilmente a estos métodos desde su infraestructura.
  • Implemente una solución de inicio de sesión expandida para su infraestructura. Hay muchas extensiones disponibles de otras fuentes para mejorar el inicio de sesión de Rational Functional Tester.

Resumen

Como se describe aquí, la extensión de Rational Functional Tester con Selenium y FlexMonkium crea una consistente plataforma de prueba de automatización de la aplicación Flex, y dicha plataforma es altamente soportada.


Reconocimientos

Gracias a Sunaina Gupta y Tom Hammell por recomendar la posibilidad de FlexMonkium y por su ayuda con la prueba de concepto. Un agradecimiento especial a Carlo Yaralian y Connie Ko por su ayuda en la implementación de estas herramientas en un entorno real.

Recursos

Aprender

Obtener los productos y tecnologías

  • Pruebe Rational Functional Tester , la versión sin cargo requiere que se registre).
  • Evalúe software IBM de la manera que le convenga: descárguelo para probarlo, pruébelo online, úselo en un entorno de nube o pase algunas horas en la SOA Sandbox aprendiendo cómo implementar eficientemente la arquitectura orientada al servicio.

Comentar

Comentarios

developerWorks: Ingrese

Los campos obligatorios están marcados con un asterisco (*).


¿Necesita un IBM ID?
¿Olvidó su IBM ID?


¿Olvidó su Password?
Cambie su Password

Al hacer clic en Enviar, usted está de acuerdo con los términos y condiciones de developerWorks.

 


La primera vez que inicie sesión en developerWorks, se creará un perfil para usted. La información en su propio perfil (nombre, país/región y nombre de la empresa) se muestra al público y acompañará a cualquier contenido que publique, a menos que opte por la opción de ocultar el nombre de su empresa. Puede actualizar su cuenta de IBM en cualquier momento.

Toda la información enviada es segura.

Elija su nombre para mostrar



La primera vez que inicia sesión en developerWorks se crea un perfil para usted, teniendo que elegir un nombre para mostrar en el mismo. Este nombre acompañará el contenido que usted publique en developerWorks.

Por favor elija un nombre de 3 - 31 caracteres. Su nombre de usuario debe ser único en la comunidad developerWorks y debe ser distinto a su dirección de email por motivos de privacidad.

Los campos obligatorios están marcados con un asterisco (*).

(Por favor elija un nombre de 3 - 31 caracteres.)

Al hacer clic en Enviar, usted está de acuerdo con los términos y condiciones de developerWorks.

 


Toda la información enviada es segura.


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=90
Zone=Rational
ArticleID=827097
ArticleTitle=Extensión de Rational Functional Tester para probar aplicaciones Flash o Adobe Flex
publish-date=07242012