miércoles, 30 de enero de 2013

Pruebas de carga CITRIX con Loadrunner (3ª Parte)

Continuamos  nuestro recorrido por las pruebas CITRIX con la parte más importante del ciclo de grabación, la sincronización.



6.- Sincronizando...


La sincronización es el paso indispensable para que la grabación en CITRIX sea exitosa. Como comentábamos en el artículo anterior, este tipo de grabaciones no va por eventos o URLs como sucede en otros protocolos más comunes, sino por coordenadas asociadas a pulsaciones de ratón y/o teclado. Por lo tanto después de cada acción debe establecerse algo, una sincronización, para que el usuario virtual espere a que se cargue el evento, la ventana o los datos, antes de realizar la siguiente, de lo contrario podrían producirse eventos inesperados. Estas sincronizaciones deben realizarse en objetos, textos…. que no se encuentren en el estado anterior a la acción realizado.



Se pueden diferenciar dos tipos de sincronización dependiendo de la presencia o ausencia del agente CITRIX de LoadRunner en el servidor CITRIX:



Grabación con agente CITRIX



El agente CITRIX permite que el VUGen reconozca los objetos de la aplicación, es decir, los botones, cuadros de texto y similares. Hemos de tener en cuenta que el cliente CITRIX recibe del servidor únicamente imágenes por lo que es necesaria alguna aplicación en el servidor que informe de lo que está ocurriendo. Desafortunadamente sólo reconoce estos objetos si la aplicación está programada en ciertos lenguajes como VB, C o .NET. Por otro lado suele ser bastante difícil que se nos permita instalar un software en cada una de las máquinas servidores de la granja CITRIX.


Modos de sincronización:


  • Sincronización por ventana, esta se hace de forma automática, pulsando sobre la ventana emergente (se espera a que la ventana esté completa)

  • Sincronización por texto:

  1. Forma automática, pulsando sobre un texto de la ventana.

  2. Forma manual, pulsando sobre el botón de Sincronizar por texto y seleccionando una zona que contenga texto.


    Botón "Sincronizar por texto"

  • Sincronización por imagen, pulsando sobre el botón de bitmap de la barra de grabación y seleccionando una zona rectangular.

  • Sincronización por objeto, (combo, check, List-box...) se realiza de forma manual haciendo clic sobre el objeto en concreto.


Grabación sin agente CITRIX



Este es el tipo de grabación más común, y, a su vez, más laborioso. Al no disponer de información en tiempo real sobre los objetos en la parte servidor, la única forma de sincronizar es utilizando los bitmaps y los nombres de ventana. Es obligatorio para el correcto funcionamiento del script que se realice una sincronización por bitmap después de cada pulsación de ratón, de tal forma que tengamos la seguridad de que ha ocurrido el evento asociado a esta pulsación. Por ejemplo, si pulsamos en un desplegable deberíamos grabar un sincronismo por bitmap sobre la lista que se despliega.



Pulsamos sobre el desplegable
Sincronizamos sobre la zona que cambia


VUGen guarda la información de los bitmaps como un “hash”, es decir como una cadena hexadecimal de 32 caracteres. Esta cadena es única y con la variación de cualquier píxel del área seleccionada el valor es distinto. De ahí que sea muy importante que todas las grabaciones estén configuradas igual en tamaño de ventana y profundidad de color.


Ejemplo de hash


Estos sincronismos se pueden realizar durante la grabación, lo que es muy recomendable, o una vez concluida podemos pasar en el VUGen a modo “Tree” y pulsando botón derecho sobre la imagen asociada al paso seleccionando “insert_sync_on_bitmap


Menú contextual modo Tree


Otra instrucción útil relacionada con el control por bitmaps es “ctrx_sync_on_bitmap_change”, que nos permite seleccionar un área de la pantalla y espera a que el contenido de la misma varíe. Esta instrucción guarda el “hash” asociado a la imagen previa al cambio y permite que la ejecución continúe cuando su valor sea distinto.


Ejemplo de Bitmap Change


Recordad que la estructura final de un script debe ser lo más parecido a:



Acción-Sincronismo-Acción-Sincronismo


Tras cada acción debe haber siempre una sincronización. 

En el próximo y definitivo artículo daremos una serie de consejos a la hora de optimizar el funcionamiento del ciclo grabado.

No hay comentarios:

Publicar un comentario