Post on 30-Jul-2015
Taller
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.
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.
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.
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.
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.
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.
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.
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).
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.
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
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.
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).
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.
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.
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.