Generación Automática de Casos de Prueba

From GXtest Wiki
Jump to: navigation, search

Contents

Introducción

GXtest Generator permite crear casos de prueba a partir de una transacción GeneXus. Estos casos de prueba generados realizan las acciones más comunes sobre la transacción: insert, update, delete de registros. En caso que se tenga aplicado el pattern Work With se tiene en cuentra el mecanismo trabajar con asociado en el ingreso y modificación de registros.

GXtestGenerator pattern pretende lograr una generación base de casos de prueba, que pueda testear varias transacciones simples sin tener que realizar ninguna modificación, y para aquellos casos donde se requiera sirva como base para no tener que empezar de cero una prueba; es decir que la generación sirva como unidad fundamental para componer luego nuevos casos de prueba más complejos que validen la lógica de negocio del objeto.

Para ello, cuando se aplica el pattern sobre una transacción se genera en forma predeterminada un ciclo de Insert, Update, Delete y dependiendo de la configuración de la instancia del pattern permite generar los DataPools asociados para ingresar el juego de datos necesarios para la ejecución del mismo.

Generación de casos de prueba

Instalación del Pattern

Descomprimir el contenido del archivo dentro del directorio de instalación de GeneXus, en \Packages\Patterns\GXtest01\
Luego ejecutar 'genexus.exe /install'
Al abrir GeneXus el Pattern estará disponible para aplicar.

Pasos a seguir

Dada una transacción se aplica el pattern GXtestGenerator y genera un ciclo de CRUD básico teniendo en cuenta transacciones planas y de 2 niveles con o sin pattern WW aplicado.

Verificar las propiedades del pattern ya que se puede generar el DataPool correspondiente asociado a la prueba.

Propiedades a definir a nivel de instancia

  • DataPool
    • Filename: Archivo con extensión dpd donde se genera el\los datapools asociados a la transacción.
    • DataPool name: Nombre del Datapool al importarse en GXtest Designer.
    • Generate DataPool: habilita\deshabilita la generación del DataPool.
    • Generate SETID Column: agrega la columna SETID para relacionar DataPools.
  • TestCase
    • Startup Test Case: permite generar una referencia a un TestCase ya existente. El caso de uso es el uso de un login antes de comentar la prueba.
  • Behaviour
    • Check Formulas: se chequea el valor de las fórmulas que defina la transacción según el valor parametrizado en el DataPool asociado.
    • Use Prompt: cuando se ingresan llaves foráneas, si el objeto tiene un Prompt asociado lo utiliza en la selección.

Funcionamiento

Utilizar GXtestGenerator Pattern implica aplicar el pattern sobre las transacciones de una base de conocimiento y posteriormente importar los Test Cases generados en GXtest Designer.

Una vez instalado el pattern, seleccionar una transacción y en la sección de Patterns del objeto marcar Apply this pattern on save y configurar la instancia del pattern.

Una vez configurada la instancia del pattern y aplicar el pattern se genera un archivo XML (mismo nombre que la transacción) en el directorio de generación del modelo que define el TestCase principal asociado con la transacción y si se tienen varios niveles secundarios algunos testCase subordinados para trabajar con las grillas. Ademas si se configura que genere los DataPools existirá un archivo con extensión dpd con la definición de cada DataPool.

Desde GXtest Designer (1.1.4.1906 o superior) asegurarse de tener el proyecto actualizado con respecto a la KB GX (GeneXus X Evolution 1 Upgrade #4 o superior) e importar utilizando Test Cases \ Import Test Cases.

Opciones de Importación

  • TestCases
    • Overwrite Test Cases if exists: Soobrescribe en caso que ya existan los nombres de los Test Cases a importar.
    • All Test Cases definitions (Recursive): En caso de referenciarse TestCases desde el TestCase principal se importan en cascada.
  • DataPools
    • Overwrite DataPools if exists: Soobrescribe en caso que ya existan los DataPools referenciados en el archivo dpd.
    • Data Pool data: no tenido en cuenta desde el GXtest pattern.

Al presionar Import se presenta un diálogo con el resultado de la importación.

El pattern implementa los diferentes comando disponibles en GXtest en formato XML [1] generando un TestCase por cada transacción.

Desde GXtest Designer asegurarse de completar los datos de prueba en los DataPools asociados al Test Case importado. Se genera un DataPool por cada tabla relacionada con la transacción y además un DataPool Master que define la cantidad de inserts, updates y deletes en ejecución. Posteriormente solo es necesario ejecutar el Test Case con la opción Run.

Para ver un ejemplo de uso del Pattern ver este video.

Información Relacionada

[2] Download en Marketplace [3] Código fuente

Consideraciones

  • Si se mantiene un WebForm lo mas estándar posible debería de funcionar sin problemas, en caso contrario se informa en el output posibles problemas encontrados entre la definición de la estructura de la transacción y el WebForm.
  • Cuando se tiene aplicado WW Pattern, se necesita que tenga "Description Attribute" definido.
  • Se hace Skip de atributos autonumber.
  • Eventos, parseo básico en busca de:
   Control.Visible = 0|false
   Control.Enabled = 0|false 
  • Reglas, parseo básico en busca de:
   NoAccept(...);
   Serial(...);
  • En los Datapools que se corresponden con grillas se agrega la columna RowNumber y en el cabezal se agrega RowCount para poder generar un loop indicando la cantidad de líneas a ejecutar un TestCase.

Restrictiones

  • Automatic Translation
  • Regals condicionales
  • AddLines, FreeStyle Grid
  • TRN de 3 niveles (relacionado con la generación de FreeStyle Grid)
  • transacciones relacionadas con otras transacciones (ciudad, pais)