Difference between revisions of "Manual de Usuario de GXtest Generator"

From GXtest Wiki
Jump to: navigation, search
(Ejecutando GXtest Generator)
(GXtest Generator)
 
(11 intermediate revisions by 2 users not shown)
Line 1: Line 1:
 
[[category:GXtest Guides]]
 
[[category:GXtest Guides]]
 +
{{Idiomas|Manual de Usuario de GXtest Generator|GXtest Generator User Manual|GXtest Generator ユーザーズマニュアル}}
  
{{Idiomas|Manual de Usuario de GXtest Generator|GXtest Generator User Manual|GXtest Generator User Manual}}
 
  
GXtest Generator es una herramienta que nos ayuda a comenzar a automatizar pruebas con GXtest, a partir de la generación automática de casos de prueba. La extensión GXtest Generator que se instala en GeneXus.
+
GXtest Generator es una herramienta que nos ayuda a comenzar a automatizar pruebas con GXtest. A partir de la generación automática de casos de prueba con la extensión GXtest Generator que se instala en GeneXus.
  
 
Antes de comenzar se debe tener instalado y activado GXtest en algún PC, de modo de poder ejecutar las pruebas (Ver [[Installation guide]] de GXtest).
 
Antes de comenzar se debe tener instalado y activado GXtest en algún PC, de modo de poder ejecutar las pruebas (Ver [[Installation guide]] de GXtest).
Line 9: Line 9:
 
== Generación Automática de Casos de Prueba ==
 
== Generación Automática de Casos de Prueba ==
  
Gracias a la abstracción que provee GeneXus a través de las transacciones y patrones, se pueden generar casos de prueba para GXtest de manera automática, a partir de la información que existe de dichos objetos en la base de conocimiento.
+
Gracias a la abstracción que provee GeneXus a través de las transacciones y patrones, se pueden generar casos de prueba para GXtest de manera automática a partir de la información que existe de dichos objetos en la base de conocimiento.
  
 
* ¿Qué testean los casos de prueba automáticos?
 
* ¿Qué testean los casos de prueba automáticos?
Line 16: Line 16:
 
* ¿Para qué me sirven estos casos de prueba?
 
* ¿Para qué me sirven estos casos de prueba?
 
Si bien sirven para probar el ABM (Alta, Baja y Modificación) de todas las entidades de la KB, la principal finalidad de dichos casos de prueba es utilizarlos como base para comenzar la automatización de pruebas sobre una aplicación.
 
Si bien sirven para probar el ABM (Alta, Baja y Modificación) de todas las entidades de la KB, la principal finalidad de dichos casos de prueba es utilizarlos como base para comenzar la automatización de pruebas sobre una aplicación.
Dependiendo del tipo de aplicación, los ABM de datos pueden significar un 80% de la totalidad de las funcionalidades de la aplicación. Por ello, generar estas pruebas de forma automática implica reducir los tiempos de automatización de gran forma, pudiendo utilizar ese tiempo en extender las pruebas generadas, o realizar nuevos casos de prueba, utilizando incluso los ya generados.
+
Dependiendo del tipo de aplicación, los ABM de datos pueden significar un 80% de la totalidad de las funcionalidades de la aplicación. Por ello, generar estas pruebas de forma automática implica reducir de gran forma los tiempos de automatización. Permitiendo así  utilizar ese tiempo en extender las pruebas generadas, o realizar nuevos casos de prueba utilizando incluso los ya generados.
  
 
* ¿Cómo genera GXtest los casos de prueba?
 
* ¿Cómo genera GXtest los casos de prueba?
 
** Se examinan todas las transacciones y por cada una se determina si es posible generar el caso de prueba, y el flujo que tendrá el ABM dependiendo si tiene aplicado algún pattern WorkWith.  
 
** Se examinan todas las transacciones y por cada una se determina si es posible generar el caso de prueba, y el flujo que tendrá el ABM dependiendo si tiene aplicado algún pattern WorkWith.  
 
** Durante la generación de cada objeto, se analizan todos sus atributos, y para cada uno se determinan si es necesario generar datos (si son editables, no son calculados, etc.), y cómo se van a generar los mismos. Algunas de las estrategias son:  
 
** Durante la generación de cada objeto, se analizan todos sus atributos, y para cada uno se determinan si es necesario generar datos (si son editables, no son calculados, etc.), y cómo se van a generar los mismos. Algunas de las estrategias son:  
*** Si es una FK, se extraen de la base de datos de la aplicación, consultando la tabla asociada a la FK, incluyendo valores para atributos inferidos por éste (por ejemplo, si en la transacción está como FK el ClienteId,pero en realidad en la pantalla se ingresa el ClienteNombre).
+
*** Si es una FK, se extraen de la base de datos de la aplicación, consultando la tabla asociada a la FK, incluyendo valores para atributos inferidos por éste (por ejemplo, si en la transacción está como FK el ClienteId, pero en realidad en la pantalla se ingresa el ClienteNombre).
 
*** Si el control tiene valores predefinidos (por ejemplo con combobox con opciones estáticas) se toma uno aleatorio.  
 
*** Si el control tiene valores predefinidos (por ejemplo con combobox con opciones estáticas) se toma uno aleatorio.  
 
*** En otro caso, se genera de forma aleatoria un valor asociado al tipo del atributo, y que cumpla con las máscaras definidas en el control o atributo.
 
*** En otro caso, se genera de forma aleatoria un valor asociado al tipo del atributo, y que cumpla con las máscaras definidas en el control o atributo.
Line 30: Line 30:
 
* ¿Cómo accedo a los casos de prueba generados?
 
* ¿Cómo accedo a los casos de prueba generados?
 
Después de generados los casos de prueba y los datapools, se importan de forma automática dentro de GXtest, en un nuevo proyecto que lleva el nombre de la KB y el sufijo "_Auto".
 
Después de generados los casos de prueba y los datapools, se importan de forma automática dentro de GXtest, en un nuevo proyecto que lleva el nombre de la KB y el sufijo "_Auto".
 
 
  
 
== GXtest Generator ==
 
== GXtest Generator ==
La herramienta se instala como una extensión de GeneXus Ev1 o Ev2. De esta forma, las funcionalidades estarán accesibles integradas al entorno de desarrollo.
+
La herramienta se instala como una extensión de GeneXus Ev1 o posterior. De esta forma, las funcionalidades estarán accesibles e integradas al entorno de desarrollo.
  
 
=== Instalación de la Extensión en GeneXus ===
 
=== Instalación de la Extensión en GeneXus ===
Line 45: Line 43:
 
Las versiones soportadas para la base de datos son Microsoft SQLServer 2005 o superior, pudiendo ser una Express Edition.
 
Las versiones soportadas para la base de datos son Microsoft SQLServer 2005 o superior, pudiendo ser una Express Edition.
  
=== Acceso a la GXtest Generator en GeneXus ===
+
=== Acceso a GXtest Generator en GeneXus ===
 
Al abrir GeneXus, aparecerá un nuevo menú "GXtest" que tendrá el ítem "Autogenerate TestCases".
 
Al abrir GeneXus, aparecerá un nuevo menú "GXtest" que tendrá el ítem "Autogenerate TestCases".
 
Dicha opción de menú abre la ventana de generación automática de GXtest Generator.
 
Dicha opción de menú abre la ventana de generación automática de GXtest Generator.
Line 58: Line 56:
  
 
* En la sección general, se puede configurar:
 
* En la sección general, se puede configurar:
** Data Dictionary Path: El path a un diccionario de datos en formato XML. Este diccionario se puede utilizar para atributos que tengan una semántica bien definida, por ejemplo nombres, o direcciones de email. Esos diccionarios se pueden asociar a cualquier atributo o dominio. Ver [[GXtest Generator - Diccionarios]].
+
** Data Dictionary Path: El path a un diccionario de datos en formato XML. Este diccionario se puede utilizar para atributos que tengan una semántica bien definida, por ejemplo nombres, o direcciones de email. Esos diccionarios se pueden asociar a cualquier atributo o dominio. Ver mas información [[GXtest_Generator_User_Manual#Dictionaries|aquí]].
 
** Include Unreferences Transactions: Indica si se debe incluir a todas las transacciones y objetos (True), o solamente a transacciones y objetos que sean alcanzables por algún Main (False).
 
** Include Unreferences Transactions: Indica si se debe incluir a todas las transacciones y objetos (True), o solamente a transacciones y objetos que sean alcanzables por algún Main (False).
 
** Language: El lenguaje en el que se probará la aplicación. Esto es requerido para predefinir el lenguaje de los mensajes que GXtest validará.
 
** Language: El lenguaje en el que se probará la aplicación. Esto es requerido para predefinir el lenguaje de los mensajes que GXtest validará.
 
** Startup Test Case: un caso de prueba inicial que se ejecutará antes de cada TestCase. Ver [[GXtest Generator - Incluir TestCase de login]].
 
** Startup Test Case: un caso de prueba inicial que se ejecutará antes de cada TestCase. Ver [[GXtest Generator - Incluir TestCase de login]].
** Test depth: Indica la profundidad que tendrán los casos generados, en lo referido a la cantidad de combinaciones de datos que se generarán para la prueba. Tiene cuatro opciones:
+
** Test depth: Indica la profundidad que tendrán los casos generados, en lo referido a la cantidad de combinaciones de datos que se generarán para la prueba. Mas información disponible [[GXtest Generator - Complejidad de las pruebas|aquí]].
*** Minimum (genera un único dato válido para cada campo).
+
*** Basic (genera varios registros válidos para cada campo, según casos borde de cada campo).
+
*** Basic with rules(igual al Basic, pero también toma en cuenta las rules de los objetos).
+
*** Valid and Invalid (datos conjuntos de datos válidos e inválidos, de forma de testear las validaciones sobre los datos inválidos).
+
 
** Visit Web Pages: Si se configura en True, genera un caso de prueba que visita todos los webpanels encontrados en la KB, de forma de validar que los mismos estén generados y deployados correctamente en la aplicación.
 
** Visit Web Pages: Si se configura en True, genera un caso de prueba que visita todos los webpanels encontrados en la KB, de forma de validar que los mismos estén generados y deployados correctamente en la aplicación.
  
Line 84: Line 78:
  
 
Al ejecutar el proceso de generación, se mostrarán los pasos del proceso en la grilla, y también en la ventana de Output de GeneXus, en la sección GXtest. Allí se podrán ver los objetos examinados, así como los casos de prueba generados e importados a GXtest.
 
Al ejecutar el proceso de generación, se mostrarán los pasos del proceso en la grilla, y también en la ventana de Output de GeneXus, en la sección GXtest. Allí se podrán ver los objetos examinados, así como los casos de prueba generados e importados a GXtest.
 
 
  
 
== Actualizar los casos de prueba luego de hacer cambios en la KB ==
 
== Actualizar los casos de prueba luego de hacer cambios en la KB ==
Line 99: Line 91:
  
 
* El Datapool fue modificado en GXtest Designer (las columnas o sus datos), y la propiedad Update Automatically está deshabilitada (se deshabilita cuando modificamos manualmente el datapool generado o agregamos datos). Esta opción se puede ver en las propiedades del Datapool.
 
* El Datapool fue modificado en GXtest Designer (las columnas o sus datos), y la propiedad Update Automatically está deshabilitada (se deshabilita cuando modificamos manualmente el datapool generado o agregamos datos). Esta opción se puede ver en las propiedades del Datapool.
 +
 +
 +
== Troubleshooting GXtest Generator ==
 +
 +
Al generar el proyecto desde GeneXus Ev2 Upgrade 2 o anterior, puede aparecer este mensaje:
 +
 +
    ========== Generation started ==========
 +
    Error: Método no encontrado: 'Artech.Architecture.Common.Objects.KBEnvironment Artech.Architecture.Common.Objects.KBModel.get_Environment()'.
 +
 +
El problema se corrige actualizando GeneXus al último upgrade disponible de Evolution 2.

Latest revision as of 19:04, 17 August 2015

Spanish.gif
English.gif
Japan.gif


GXtest Generator es una herramienta que nos ayuda a comenzar a automatizar pruebas con GXtest. A partir de la generación automática de casos de prueba con la extensión GXtest Generator que se instala en GeneXus.

Antes de comenzar se debe tener instalado y activado GXtest en algún PC, de modo de poder ejecutar las pruebas (Ver Installation guide de GXtest).

Contents

Generación Automática de Casos de Prueba

Gracias a la abstracción que provee GeneXus a través de las transacciones y patrones, se pueden generar casos de prueba para GXtest de manera automática a partir de la información que existe de dichos objetos en la base de conocimiento.

  • ¿Qué testean los casos de prueba automáticos?

Se genera un caso de prueba para cada entidad de la aplicación, el cual probará el Alta, Baja, Modificación, Visualización y Búsqueda de una instancia de dicha entidad. Por ejemplo, para la transacción Client, se dará de alta un cliente, se lo buscará en el "Trabajar Con" asociado, se lo modificará, y finalmente se lo dará de baja.

  • ¿Para qué me sirven estos casos de prueba?

Si bien sirven para probar el ABM (Alta, Baja y Modificación) de todas las entidades de la KB, la principal finalidad de dichos casos de prueba es utilizarlos como base para comenzar la automatización de pruebas sobre una aplicación. Dependiendo del tipo de aplicación, los ABM de datos pueden significar un 80% de la totalidad de las funcionalidades de la aplicación. Por ello, generar estas pruebas de forma automática implica reducir de gran forma los tiempos de automatización. Permitiendo así utilizar ese tiempo en extender las pruebas generadas, o realizar nuevos casos de prueba utilizando incluso los ya generados.

  • ¿Cómo genera GXtest los casos de prueba?
    • Se examinan todas las transacciones y por cada una se determina si es posible generar el caso de prueba, y el flujo que tendrá el ABM dependiendo si tiene aplicado algún pattern WorkWith.
    • Durante la generación de cada objeto, se analizan todos sus atributos, y para cada uno se determinan si es necesario generar datos (si son editables, no son calculados, etc.), y cómo se van a generar los mismos. Algunas de las estrategias son:
      • Si es una FK, se extraen de la base de datos de la aplicación, consultando la tabla asociada a la FK, incluyendo valores para atributos inferidos por éste (por ejemplo, si en la transacción está como FK el ClienteId, pero en realidad en la pantalla se ingresa el ClienteNombre).
      • Si el control tiene valores predefinidos (por ejemplo con combobox con opciones estáticas) se toma uno aleatorio.
      • En otro caso, se genera de forma aleatoria un valor asociado al tipo del atributo, y que cumpla con las máscaras definidas en el control o atributo.
  • ¿Cómo hace GXtest para obtener los datos de la base de datos de la aplicación?

Para la consulta de datos a la BD, se aprovecha la abstracción que provee GeneXus para acceder a ésta sin tener que configurar un conector. Esto se logra generando temporalmente en la KB un procedure y un data provider que realizan la consulta sobre cierta tabla, y lo exponen como un servicio REST.

  • ¿Cómo accedo a los casos de prueba generados?

Después de generados los casos de prueba y los datapools, se importan de forma automática dentro de GXtest, en un nuevo proyecto que lleva el nombre de la KB y el sufijo "_Auto".

GXtest Generator

La herramienta se instala como una extensión de GeneXus Ev1 o posterior. De esta forma, las funcionalidades estarán accesibles e integradas al entorno de desarrollo.

Instalación de la Extensión en GeneXus

La funcionalidad se distribuye con el instalador de GXtest (versión professional).

Durante la instalación:

  • Se deberá indicar el path de la instalación de GeneXus donde se quiere instalar la extensión. Puede aplicarla en más de una instalación de GeneXus (si tuviera varias).
  • Se deberá proporcionar una base de datos de GXtest, donde la extensión guardará los casos de prueba generados. La versión de GXtest instalada debe ser 1.2.0 +, y además debe coincidir con la versión de la extensión.

Las versiones soportadas para la base de datos son Microsoft SQLServer 2005 o superior, pudiendo ser una Express Edition.

Acceso a GXtest Generator en GeneXus

Al abrir GeneXus, aparecerá un nuevo menú "GXtest" que tendrá el ítem "Autogenerate TestCases". Dicha opción de menú abre la ventana de generación automática de GXtest Generator.

Allí se verá información de testing asociada a la KB que está abierta (si es que ya generamos un proyecto en GXtest), y estará disponible el botón para iniciar el proceso: "Generate tests".

En caso de ser necesario, antes de comenzar a generar los casos de prueba es posible configurar las opciones de generación que la extensión provee.

Opciones de Configuración

En el menú Tools->Options en GeneXus, hay una sección específica para configurar la extensión de GXtest.

  • En la sección general, se puede configurar:
    • Data Dictionary Path: El path a un diccionario de datos en formato XML. Este diccionario se puede utilizar para atributos que tengan una semántica bien definida, por ejemplo nombres, o direcciones de email. Esos diccionarios se pueden asociar a cualquier atributo o dominio. Ver mas información aquí.
    • Include Unreferences Transactions: Indica si se debe incluir a todas las transacciones y objetos (True), o solamente a transacciones y objetos que sean alcanzables por algún Main (False).
    • Language: El lenguaje en el que se probará la aplicación. Esto es requerido para predefinir el lenguaje de los mensajes que GXtest validará.
    • Startup Test Case: un caso de prueba inicial que se ejecutará antes de cada TestCase. Ver GXtest Generator - Incluir TestCase de login.
    • Test depth: Indica la profundidad que tendrán los casos generados, en lo referido a la cantidad de combinaciones de datos que se generarán para la prueba. Mas información disponible aquí.
    • Visit Web Pages: Si se configura en True, genera un caso de prueba que visita todos los webpanels encontrados en la KB, de forma de validar que los mismos estén generados y deployados correctamente en la aplicación.


  • En la sección Manager se puede configurar los datos para que GXtest Manager agende la tarea, y ordene la ejecución de los casos de pruebas generados, en el GXtest Executor configurado.


  • En la sección Connection se configuran los datos de conexión a la base de datos de GXtest, donde se creará el proyecto y los casos de prueba generados.


  • En la sección Advanced se configuran opciones mas avanzadas de la generación.
    • Temp XML path: el directorio temporal donde se almacenan los casos de prueba y datapools autogenerados. Además allí se genera un archivo de Log donde se pueden ver detalles de la generación y errores ocurridos durante el proceso.
    • Ignore List: esta opción permite especificar una lista separada por comas de objetos que no se deben incluir en la generación de los casos de prueba. Por ejemplo: "Client,Invoice*".
    • Update KB: Indica si la KB en GXtest debe ser actualizada cada vez que se genera el proceso (Always Update), solamente cuando no hay conflictos (Update if no conflicts), o nunca (Never Update).

Ejecutando GXtest Generator

Al ejecutar el proceso de generación, se mostrarán los pasos del proceso en la grilla, y también en la ventana de Output de GeneXus, en la sección GXtest. Allí se podrán ver los objetos examinados, así como los casos de prueba generados e importados a GXtest.

Actualizar los casos de prueba luego de hacer cambios en la KB

GXtest Generator está principalmente diseñado para ejecutarse una única vez al inicio del proyecto de prueba, y a partir de allí trabajar sobre los casos de prueba generados y mejorarlos en GXtest Designer. De todas maneras, existen funcionalidades del generador que permiten generar nuevos casos de prueba a medida que la KB continúa creciendo.


En cada ejecución del generador, todos los casos de prueba y sus datos son generados nuevamente. Por ello, si el proyecto de destino ya existe, los casos de prueba y los datos se sobre-escribirán, salvo en los siguientes casos:

  • El caso de prueba fue modificado en GXtest Designer, y la propiedad Update Automatically está deshabilitada (se deshabilita cuando modificamos manualmente el caso de prueba generado). Esta opción se puede ver en las propiedades del caso de prueba.
TCUpdateAuto.png


  • El Datapool fue modificado en GXtest Designer (las columnas o sus datos), y la propiedad Update Automatically está deshabilitada (se deshabilita cuando modificamos manualmente el datapool generado o agregamos datos). Esta opción se puede ver en las propiedades del Datapool.


Troubleshooting GXtest Generator

Al generar el proyecto desde GeneXus Ev2 Upgrade 2 o anterior, puede aparecer este mensaje:

   ========== Generation started ==========
   Error: Método no encontrado: 'Artech.Architecture.Common.Objects.KBEnvironment Artech.Architecture.Common.Objects.KBModel.get_Environment()'.

El problema se corrige actualizando GeneXus al último upgrade disponible de Evolution 2.