taller de gxtest

16
Taller

Upload: genexus

Post on 30-Jul-2015

722 views

Category:

Documents


3 download

TRANSCRIPT

Page 1: Taller de gxtest

Taller

Page 2: Taller de gxtest

Introducción

El taller consta de dos partes, un taller inicial y un taller avanzado. El taller inicial sigue una

serie de pasos para mostrar los principales conceptos de GXtest. Por otro lado el taller

avanzado muestra algunos conceptos más complejos que la herramienta permite manejar para

expresar casos de prueba más complejos.

Ambos talleres se realizarán sobre la aplicación AjaxSample en la versión GeneXus Ev1.

Todos los archivos que se referencian en este taller se encuentran en la carpeta “Material

Taller”, la cual está en el escritorio de la máquina virtual.

Glosario GeneXus

Knowladge Base (KB): la KB GeneXus es el modelo de desarrollo de la aplicación. A partir de la

misma luego se genera la aplicación en una plataforma concreta (Java, Net)

Objeto GeneXus: es un elemento que GeneXus provee para describir la aplicación, es parte de

una KB GeneXus. Hay varios tipos, Transacciones, Web Panels, procedimientos, etc.

Control GeneXus: es un elemento que se encuentra dentro de un objeto GeneXus del tipo

Transacción o Web Panel y sirve para describir la página web que el muestra. Un control puede

ser por ejemplo un campo en una pantalla, un botón, un combo, etc.

Page 3: Taller de gxtest

Taller Inicial

1. Crear el proyecto “AjaxSample”

Objetivo: Crear el primer proyecto en GXtest para automatizar una aplicación Web: Ajax

Sample

Abrir GXtest Designer (en el escritorio se puede encontrar el link que dice GXtest). Presionar

Ok para ingresar a la base local con el usuario Guest.

Crear un proyecto nuevo, para esto ir a Project->New Project.

Cuadro de dialogo de “New Project”

Campo “Name”: Ingresar el nombre del proyecto, por ejemplo AjaXSampleCursoGXtest.

Campo “KB Name”: ahora se debe asociar la Knowladge Base (KB) de GeneXus de la aplicación

con la cual se va a trabajar, para esto hacer clic en el botón con la figura de (+). Luego hacer

clic en el botón que aparece pegado al campo “File Location” e indicar el archivo llamado

“AjaxSampleKB.gxt”. Ese archivo contiene la información relevante de la KB GeneXus que

GXtest utiliza. Luego que se selecciona el archivo presionar Ok. GXtest informará que se

importó correctamente la KB. Luego de esto en el dialogo de creación del proyecto, en el

campo KB Name, indicar la KB recientemente importada.

Nota: el archivo con el cual se importa la KB puede ser un XPZ (si es Genexus 8 o 9), o puede

utilizarse directamente el archivo GXW donde se tiene guardada la KB.

En este caso se exportó una versión reducida de la KB desde una versión superior a Genexus X,

utilizando una extension de GeneXus que en lugar de exportar un XPZ exporta sólo la

información necesaria para GXtest.

La extensión viene en el directorio de instalación de GXtest, o puede bajarse desde GeneXus

Marketplace.

Campo URL: ingresar la siguiente url: http://localhost/AjaxSample/home.aspx. Al momento de

iniciar una grabación de un caso de prueba, GXtest sugerirá esta URL para comenzar la

grabación.

Tip: la variable estándar URLHome, hace referencia a la propiedad URL del proyecto, por lo

cual si no se quiere dejar fija una URL en los casos de prueba, se puede hacer referencia a esta

variable, de este modo si se cambia la aplicación de servidor, solo se deberá modificar esta

propiedad.

Para finalizar, presionar el botón Ok y se creará el proyecto el cual quedará abierto.

Page 4: Taller de gxtest

2. Crear caso de prueba de Alta de Cliente

Objetivo: Crear el primer caso (grabando desde la aplicación) y ejecutarlo

En esta sección se grabará el caso de prueba de Alta Cliente de manera on-line utilizando el

componente GXtest Recorder.

Hacer clic con el botón derecho sobre el nodo Test Cases que aparece en el panel derecho de

GXtest Designer, luego seleccionar Record New Test Case. Ingresar el nombre “Alta Cliente” y

luego presionar el botón rojo para comenzar a grabar.

GXtest abrirá el navegador para comenzar a grabar las acciones que se realicen sobre el

mismo. Seguir los siguientes pasos en la aplicación como parte del caso de prueba que se

quiere automatizar:

a. Hacer clic en el link Work With Clients.

Nota: En ese momento, debido a que se hizo clic en una grilla, GXtest Recorder

desplegará una ventana para que se le indique cual fue el criterio para hacer clic en esa

fila de la grilla. Hay dos opciones distintas, una es por fila y otra es por control. En este

caso dejar la opción por defecto (por control) y presionar Accept.

b. Presionar el botón con el símbolo de (+) para insertar un nuevo cliente

c. Ingresar el nombre del cliente, el apellido, la dirección y el balance, luego presionar

Confirm. La aplicación AjaXSample regresará a la página de Work With Clients.

d. Buscar el cliente creado usando el campo de búsqueda, para filtrar por el nombre del

cliente anteriormente ingresado.

e. Entrar a visualizar el cliente creado.

Para esto en la grilla de clientes del Work With Clients, seleccionar el nombre del cliente

creado y luego el criterio de selección (al momento de seleccionar el cliente se abrirá una

ventana en donde se debe indicar cuál es el criterio por el cual se hace clic en esa fila). En

este caso se indicará que es la fila cuyo ClientFirstName es igual al nombre del cliente

creado. Para esto, primero indicar que la regla de selección será SelectionByControl y

luego presionar Accept.

Page 5: Taller de gxtest

f. Validar que el apellido sea el ingresado en el paso (b).

Para ingresar esta validación seguir los pasos que se detallan a continuación:

i. Seleccionar el texto del apellido en la pantalla

ii. Presionar el botón de validaciones en GXtest Recorder. Esto permitirá elegir el tipo

de validación a agregar. En este caso seleccionar VerifyControlText, la cual permite

comparar un valor de la pantalla con otro valor.

iii. Presionar Accept en la ventana que se muestra para indicar el criterio.

g. Por último, cerrar el navegador para terminar de grabar el caso de prueba.

De esta forma quedó grabado el primer caso de prueba en GXtest. Para entender los casos de

prueba, se recomienda recorrer el modelo que se ha creado para recorrer las distintas

acciones que hemos realizado sobre el navegador.

Iniciar en el nodo Start, siguiendo por la arista Init y así sucesivamente. Recordar que cuando

se tiene más de una arista saliente desde una página, primero se recorre la arista con letra A y

luego la B.

Una vez que se haya entendido el modelo creado por GXtest, ingresar a la aplicación y borrar

el cliente recientemente creado y luego ejecutar en el caso de prueba automatizado. Esto

volverá a crear el cliente pero esta vez con el caso de prueba “Alta Cliente” automatizado.

Para ejecutar un caso de prueba: presionar el botón de ejecutar o las teclas Shift+F5.

Una vez que el caso de prueba haya sido ejecutado, el resultado detallado del mismo se

mostrará en GXtest. Intente navegar en el árbol de resultados y recorrer la secuencia de todos

los comandos ejecutados con sus respectivos parámetros.

Ejercicio: Intente cambiar algo en el caso de prueba de modo tal que falle algo al ejecutar, a

modo de ver como se muestran los fallos detectados. Por ejemplo, cambie el comando donde

se verifica el apellido, y ponga otro apellido distinto, o cambie el criterio de selección del clic

en el menú, como para que vaya a otro elemento.

Page 6: Taller de gxtest

3. Crear un caso de prueba de Baja de Cliente

Esta vez se creará un caso de prueba de Baja de Cliente pero grabándolo de manera off-line.

Esto permite crear un caso de prueba con GXtest Recorder sin tener GXtest Designer instalado.

Para esto abrir el Internet Explorer y navegar a la siguiente url:

http://localhost/AjaxSample/home.aspx.

Luego en el margen superior izquierdo de GXtest Recorder ingresar el nombre Baja Cliente y

luego presionar el botón rojo para comenzar a grabar. GXtest Recorder pedirá que se indique

donde será guardado el archivo con la grabación del caso de prueba.

Seguir los siguientes pasos en el navegador como parte del caso de prueba:

a. Hacer clic en Work With Clients. Se abrirá el diálogo de criterio de selección, presionar

Accept.

b. Ingresar en el campo de búsqueda el nombre del cliente dado de alta. En ese momento la

aplicación AjaXSample filtrará por dicho nombre, por lo cual el cliente dado de alta se

mostrará en primer lugar.

c. Luego hacer clic en la cruz roja de la primera fila para dar de baja el cliente. En ese

momento se abrirá el diálogo para indicar el criterio de selección para esa fila. Cambiar el

criterio para seleccionar siempre la fila uno (Selection by row = 1).

d. En la página de confirmación de borrado del cliente se agregará una validación del

mensaje que debe mostrar la aplicación AjaxSample, el mismo es “Confirm Deletion.”.

Para esto seleccionar dicho texto y luego presionar el botón de validaciones e indicar la

validación AppearText. Seleccionarla y luego presionar Accept.

e. Para finalizar el caso de prueba presionar el botón Confirm y luego cerrar el navegador.

Al cerrar el navegador, GXtest Recorder dejará en la ubicación seleccionada un archivo llamado

“Baja Cliente.zip”. Para utilizar dicha grabación en GXtest Designer, hacer clic con el botón

derecho sobre el nodo Test Cases, luego seleccionar la opción “Import Test Case” y seleccionar

el archivo generado.

Nota: Cuando importamos un caso de prueba grabado en GXtest Recorder, GXteset Designer

arma un modelo que expresa dicho caso de prueba. Repasar este modelo y visualizar las

distintas acciones que se realizaron en el caso de prueba.

Ejecutar el caso de prueba de Alta Cliente y luego el de Baja Cliente para asegurar el

correcto funcionamiento del mismo.

Page 7: Taller de gxtest

4. Crear el caso de prueba Alta y Baja Cliente

Objetivo: Crear un caso de prueba compuesto

Ahora se creará un único caso de prueba que realice el alta del cliente y luego la baja del

mismo a partir de los dos casos de prueba creados previamente.

Para esto en GXtest Designer, sobre el nodo Test Cases realizar clic con el botón derecho e

indicar “Create New Test Case”, luego ingresar el nombre Alta y Baja Cliente.

Luego arrastrar desde el panel de elementos (a la izquierda de GXtest Designer) un

elemento del tipo Test Case y seleccionar el test case de Alta Cliente. Realizar la

misma acción para el caso de prueba Baja Cliente.

A continuación unir la punta de la arista init al caso de prueba Alta Cliente y arrastrar un elemento de tipo Edge Line para unir la el Alta de Cliente (inicio de la flecha) con la Baja de cliente (fin de la flecha).

Ha quedado finalizado el caso de prueba, para probar el mismo presionar el botón de ejecutar

o Shift + F5.

Page 8: Taller de gxtest

5. Utilización de Datapools, crear el Datapool Clientes

Objetivo: Parametrizar un caso de prueba en GXtest para ejecutar con un conjunto variable de

datos (Data Driven Testing)

GXtest permite utilizar este enfoque mediante el concepto de Datapools . En este caso se

creará el Datapool Clientes el cual contendrá toda la información relacionada a los clientes que

se utiliza en los casos de prueba.

Crear un nuevo Datapool de nombre Clientes (botón derecho sobre el nodo Datapools y

presionar “Create New Datapool”). Ingresar las columnas que va a tener este Datapool:

Nombre, Apellido, Dirección y Balance.

Los datos en un Datapool se pueden ingresar de manera manual o mediante la utilización de

un archivo CSV. En esta ocasión ingresaremos tres conjunto de datos desde un CSV. Para esto

presionar el botón “Import CSV” e indicar el archivo Clientes.csv.

Una vez creado el Datapool e ingresados los datos debemos indicar en los casos de prueba

donde se utilizará el mismo. Primero comenzar con el caso de prueba de Alta Cliente, se

deben sustituir todos los valores fijos que se han ingresado e indicarle a GXtest que se tomen

desde el Datapool Clientes. En el caso de prueba de Alta Cliente seleccionar la arista “Click

GX_BtnEnter” y sustituir en los distintos comandos FillInput los valores fijos por los valores del

Datapool Clientes. Para realizar esto hacer clic con el botón derecho sobre el comando que se

quiere modificar y presionar Edit Command (o haciendo doble clic sobre el comando). Cambiar

los parámetros correspondientes desde la opción Value a la opción Datapool e indicar la

columna adecuada dentro del Datapool Clientes. Realizar la mismas acciones en la arista “Click

in Table” en los comandos ClickTable y VerifyControlText. Una vez finalizado el caso de prueba

de Alta Cliente, se debe proceder a hacer lo mismo con el caso de prueba de Baja Cliente, en

esta ocasión hay que cambiar los comandos de la arista Click in Table. Una vez terminadas

estas acciones grabar salvar ambos casos de prueba.

Por último debemos indicarle a GXtest en qué momento se debe avanzar (pasar de una fila a

otra) en el Datapool Clientes, por este motivo debemos agregar el comando DPNext en el

lugar que queremos que esto suceda. En este caso en particular se agregará el comando

DPNext en la arista Init (la primer arista del modelo que se inicia en el nodo inicial) del caso

de prueba Alta y Baja Cliente. Para esto hacer clic con el botón derecho arriba de dicha arista

y seleccionar Add Action. Luego seleccionar el comando DPNext, pasándole como parámetro el

Datapool Clientes y cualquiera de sus columnas.

Page 9: Taller de gxtest

El caso de prueba “Alta y Baja Cliente” se verá algo así:

Al terminar, ejecute el caso 3 veces usando el botón de Run N times o presionando Shift + F7. Este caso de prueba creará y borrará tres nuevos clientes (los especificados en el Datapool Clientes).

Page 10: Taller de gxtest

6. Invocación a procedimientos GeneXus

GXtest permite de manera sencilla invocar procedimientos GeneXus para ser utilizados en las

pruebas. En esta ocasión utilizaremos el procedimiento ExistClient (un procedimiento GeneXus

ya creado) para determinar el flujo a seguir dentro del caso de prueba. Los procedimientos en

general son utilizados para modificar, consultar o validar valores específicos de la base de

datos de la aplicación.

Primero dar de alta el procedimiento que se quiere utilizar en las pruebas desde Commands-

>Genexus Proc y presionar el botón de Add GX Proc.

Ingresar la url http://localhost/AjaxSample/aexistclient.aspx?wsdl y presionar el botón start

(flecha azul). En ese momento GXtest leerá la información de los parámetros que utiliza el

mismo y las presentará. Se debe indicar el tipo de comando a agregar (validación o acción) y

una descripción para el mismo, en este caso ingresar “Verifica si un cliente existe o no en la

aplicación” y presionar Save. Ahora disponemos de un nuevo comando “ExistClient” para ser

utilizado desde las pruebas en GXtest.

A este comando lo utilizaremos en el caso de prueba de Alta y Baja de Cliente para preguntar

si existe el cliente antes de dar de alta. La lógica será:

- Si existe, ir directamente a la baja del mismo

- Si no existe, primero hacer el alta del cliente y luego la baja.

Para poder expresar esto, debemos arrastrar al caso de prueba un nuevo elemento del tipo

Decision. Luego unimos la arista init a la decisión agregada. A las decisiones se le pueden

poner nombres intuitivos que ayuden a interpretar el caso de prueba, en este caso hacer doble

clic sobre la decisión y ponerle el nombre “¿Existe Cliente?”

Ahora le debemos agregar a la Decision, la condición que hace que se siga un camino u otro.

Para esto hacer clic con el botón derecho sobre la misma y seleccionar Add Condition. Una vez

que se abre el dialogo de comandos, se debe seleccionar una de las validaciones disponibles,

en este caso observar que aparece como una validación más el procedimiento agregado de

ExistClient, seleccionar el mismo e indicarle como parámetro el Datapool Clientes en su

columna Nombre. Luego presionar Add Command para confirmar la creación del comando.

Una vez definida la condición, unir la arista False de la Decisión al caso de prueba Alta Cliente y

la arista True al caso de prueba Baja Cliente.

Page 11: Taller de gxtest

Listo, ha quedado finalizado el caso de prueba. Ahora, para testear nuestro caso de prueba (sí,

a los casos de prueba también hay que probarlos) vamos a crear un cliente en la aplicación

para que al ejecutarse el caso de prueba Alta y Baja de Cliente, el mismo tome otro flujo y vaya

directamente a la Baja. Crear entonces a mano desde la aplicación, un cliente de nombre Juan.

Luego ejecutar nuevamente 3 veces el caso de prueba y analizar los resultados para visualizar

su correcta ejecución.

Observe el árbol de resultados para verificar que sea el esperado

Page 12: Taller de gxtest

7. Ejecución en FireFox

Objetivo: Ejecutar el mismo conjunto de pruebas en otro navegador.

Cambie la propiedad de ejecución del proyecto. Para esto, botón derecho en el árbol

de proyecto -> Properties.

Ahora ejecute nuevamente el caso de prueba anterior 3 veces, pero en FireFox.

Page 13: Taller de gxtest

8. Actualizar la versión del sistema bajo pruebas e impactar los cambios

En la automatización del testing es esencial la posibilidad de adaptar los casos de prueba a los

cambios que se producen al evolucionar el desarrollo en forma rápida. Por este motivo ahora

ejecutaremos la funcionalidad de “Update KB Information” la cual toma la nueva KB (la nueva

versión de la aplicación) y realiza el impacto de los cambios sobre los casos de prueba

involucrados.

A efectos de probar esto, se dispone de una copia de la versión de AjaxSample en

http://localhost/NewAjaxSample/home.aspx, que es la nueva versión del sistema.

Si la KB permanece en el mismo lugar (path / modelo / xpz) alcanza con hacer un Update KB.

En el caso de este taller, tenemos la 2da versión de nuestra KB (NewAjaxSample) en otro

archivo, por lo cual debemos indicarle a GXtest que tome la KB desde otro archivo.

Ir a KB->Edit Properties, luego seleccionar la KB AjaxSample e indicarle en el campo File Path el

archivo NewAjaxSampleKB.gxt.

Este nuevo archivo corresponde a la KB AjaxSample con las siguientes modificaciones:

Se cambió el nombre de la transacción Client por SuperClient

Dentro de la transacción Client, se cambió el botón confirmar por el botón enter

Dentro de la transacción Client se cambió el atributo ClientFirstName por ClientName

Estos cambios producen también cambios en los objetos asociados al Pattern Work With

Client.

Ahora si a ejecutar el Update KB desde: Knowledge Base -> Update KB Information.

Nota: Es recomendable cerrar los Test Cases abiertos antes de continuar.

Una vez que se actualiza la KB, GXtest leerá la información de la KB y analizará cuántos objetos

han sido agregados, borrados y modificados. Por otro lado brindará un detalle de que casos de

prueba quedarán en estado deshabilitados (por tener cambios que inhabilitan su ejecución) o

pendientes de revisión (aquellos que GXtest aplicó una determinada heurística para su

adaptación y requiere que el usuario acepte el cambio aplicado).

Page 14: Taller de gxtest

Para ejecutar el caso de prueba Alta y Baja Cliente en la nueva aplicación se debe cambiar el

comando Go de los casos de prueba Alta Cliente y Baja Cliente a la URL

http://localhost/NewAjaxSample/home.aspx. En esa URL se encuentra la nueva aplicación a

testear.

Cambie la propiedad URL de proyecto, para indicar cuál es el nuevo home a probar.

Bien, una vez finalizado esto, podemos correr el caso de prueba Alta y Baja Cliente con

Shift+F7 indicando que corra 3 veces.

Ver como ejecuta en la nueva aplicación con los cambios realizados.

Page 15: Taller de gxtest

Taller Avanzado

9. Datapools con SETID

Hay ocasiones en las que es necesario relacionar los datos que existen entre los diferentes

Datapools utilizados en un caso de prueba. Si queremos crear países y para cada uno de ellos

tenemos distintos datos de ciudades, es necesario acceder por cada línea de un Datapool de

datos de países a varias líneas de un Datapool de datos de ciudades. Para no tener toda la

información junta en un único DataPool, nos va a interesar hacer “filtros” en nuestros datos,

accediéndolos por “conjuntos de datos”.

En este caso los llamados Datapools estructurados nos permiten expresar relaciones entre los

datos de los distintos Datapools.

En este caso realizaremos el alta de países y sus respectivas ciudades. Para esto crear los

siguientes Datapools:

Países con las columnas SetId, Nombre, IdPaís, CantidadCiudades

Ciudades con la columna SetId, Nombre, IdCiudad

Las columnas SetId son las que sirven para relacionar los distintos datos. Importar el archivo

Paises.csv en el Datapool Países y el archivo Ciudades.csv en el Datapool Ciudades

Una vez creados los Datapools hay que grabar el caso de prueba Alta País.

Ir a Record New Test Case e ingresar el nombre Alta País. Luego realizar los siguientes pasos en

la aplicación:

Clic en Work With Countries. Poner Accept en el dialogo de criterio de selección.

Clic en el botón (+)

Ingresar un id, por ejemplo 999 y un nombre para el país y luego hacer clic en Confirm

Cerrar el navegador

Grabar ahora Alta Ciudad. Realizando los siguientes pasos:

Clic en Work With Cities. Poner Accept en el dialogo de criterio de selección.

Clic en el botón (+)

Seleccionar el país previamente ingresado, luego ingresar un identificador y un

nombre de ciudad y presionar Confirm

Asociar a los casos de prueba los Datapools correspondientes. Para esto abrir el caso de

prueba de Alta Pais y asignar en los comandos correspondientes el Datapool Paises con los

campos Nombre e IdPais. Y luego, en el caso de prueba de Alta Ciudad usar el Datapool Paises

y el Datapool Ciudades.

Bien, resta agregar el comando DPNext al comienzo de los dos casos de prueba, (por ejemplo.

en la arista Init). En el caso de prueba de Alta País hacer un DPNext del Datapool Paises. En el

caso de prueba de Alta Ciudad hacer un DPNext del Datapool Ciudades.

Page 16: Taller de gxtest

Como queremos dar de alta países y luego sus respectivas cuidades, debemos agregar dentro

del caso de prueba Alta País el caso de prueba Alta Ciudad. Para esto agregar una arista desde

la página Work With Countries al caso de prueba agregado “Alta Ciudad”.

Ahora debemos indicarle a GXtest que el caso de prueba de Alta Ciudad incluido dentro de Alta

País se debe ejecutar tantas veces como se indica en la columna CantidadCiudades del

Datapool Paises, para esto hacer clic derecho sobre el caso de prueba incluido y seleccionar

Properties. En dicho dialogo seleccionar Datapool y luego seleccionar el Datapool Paises, la

columna CantidadCiudades.

Ejecutar el caso de prueba de Alta País dos veces para ver como se dan de alta los países con

sus respectivas ciudades.

Parte 2

Para analizar mejor el comportamiento de los Datapools estructurados, borrar en la aplicación

las ciudades y países ingresados e indicar en el Datapool Países que la cantidad de ciudades a

ingresar será 1. Ejecutar nuevamente dos veces el caso de prueba Alta País. Se podrá visualizar

que se ingresaron correctamente en el sistema sus países con sus respectivas ciudades.