Saltearse al contenido

Testing

Testeando XMLs

Consideraciones

El test de los archivos XML que utiliza Histrix es mas complejo dado que requiere testear el resultado final de lo interpretado por Histrix, el Formulario generado y sus interacciones. Por tal motivo se efectuán tests de aceptación con la plataforma codeception (https://codeception.com/)

Requisitos

Antes de poder realizar los test codeception debe generar las clases de soporte con el comando

Ventana de terminal
cd [histrix_path]
./vendor/bin/codecept build

Posteriormente se debe volver a escanear las clases para regenerar el proceso de autoload con el comando

Ventana de terminal
./composer.phar dumpautoload

Configuración

Configuración de Histix

Se deberá preparar la configuración de la base de datos a testear en el archivo database/config.xml.

<testuser>histrix</testuser>
<testpass>XXXXXXXX</testpass>
<testurl>http://xxx.xxx.xxx.xxx</testurl>
<testhost>xxx.xxx.xxx.xxx</testhost>
- <testuser>histrix</testuser> Nombre de usuario con el que se ingresará al Logín del sistema
- <testpass>XXXXX</testpass> Contraseña de usuario con el que se ingresará al Logín del sistema
- <testurl>http://xxx.xxx.xxx.xxx/</testurl> URL del servidor histrix a utilizar
- <testhost>xxx.xxx.xxx.xxx</testhost> IP del servidor de Selenium

Configuración de la base

el directorio de la base a testear debe tener la siguiente estructura

Ventana de terminal
histrix/database/nombre_base/
histrix/database/nombre_base/xml/
histrix/database/nombre_base/tests/
histrix/database/nombre_base/tests/acceptance.suite.dist.yml <-- se generará automáticamente
histrix/database/nombre_base/tests/_output/
histrix/database/nombre_base/tests/acceptance/
histrix/database/nombre_base/tests/acceptance/_bootstrap.php <-- se generará automáticamente
histrix/database/nombre_base/tests/acceptance/PedidoInternoCest.php <-- Ejemplo

Test Ejemplo

<?php
/**
* Automatic Test
* target: Título
* Reference: http://codeception.com/docs/03-AcceptanceTests*
* © Copyright 2018, Luis M. Melgratti - Mundo IT - All Rights reserved
*
*/
class PedidoInternoCest // el Nombre de la clase debe terminar en Cest.php ej: NombreElegidoCest.php
{
private $numeroPedido;
public function _before(\Step\Acceptance\Admin $I) // Se ejecutara antes de cada Test
{
}
public function _after(AcceptanceTester $I)
{
}
/**
* Test Emision Pedido
*/
public function testEmsionPedido(\Step\Acceptance\Admin $I) // El nombre del método debe tener el prefijo "test" ej: testNombreMetodo
{
$I->loadXml('pedidoint_simple_ing.xml', 'pedidoint/', 'Emision Pedido'); // Carga XML y efectua el login de ser necesario
$I->fillField('artcod', 'ES001'); // Llena el campo artcod con el valor 'ES001'
$I->fillField('cant', '10'); // Llena el campo cant con el valor '10'
$I->fillField('movref', 'texto de referencia'); // Llena el campo movfef
$I->click('Crear'); // hacer click en botón Crear
$I->waitForText('KGS='); // Se espera a que aparezca el texto KGS=
$numero = $I->grabValueFrom('nrocom'); // Obtiene el valor de un campo de la pantall
$this->numeroPedido = $numero;
$I->click('Procesar'); // Presiona el boton Procesar
$I->wait(3); // Esperar 3 segundos
$I->seeInDatabase('PEDIDOINT', ['nrocom' => $numero, 'fechaemi' => date("Y-m-d"), 'artcod' => 'ES001']); // Verifica la existencia del registro creado en la Base de Datos
$I->waitForElement('.pdfFrame', 10); // Espera la aparición del un elemento (impresión en este caso)
$I->click('.ui-dialog-titlebar-close'); // Cierra ventana de impresion
$I->click('.closetab'); // Cierra solapa del programa
}
}

Step Helpers

Además de los métodos que posee el webdriver de codeception para testear. Se implementaron los siguientes métodos para facilitar el test de elementos de Histrix.

$I->loadXml('nombre_archivo.xml', 'path/al/archivo', 'titulo de la solapa');

Permite cargar un xml a Histrix.

$->clickRowContains(['valor 1', 'valor 2']);

Selecciona la fila que contenta en cualquiera de sus celdas los valores elegidos

$->clickFormTab('título Tab');

Selecciona el Tab interno del formulario por el título.

Ejecución

Una vez listos los tests ejecutamos el comando de histrix para lanzarlos

Ventana de terminal
./histrix tests nombre_base [testCest.php] [entorno]

El entorno indica que configuración de test utilizar:

  • chrome: (valor por defecto), busca un servidor selenium en la dirección especificada en el archivo config.xml
  • chrome-local: ejecuta el test en el navegador chrome local (requiere chromedriver)
Ventana de terminal
./histrix tests nombre_base mitestCest.php chrome-local
Ventana de terminal
./histrix tests nombre_base mitestCest.php

Ejecuta test localmente

Referencias

Testing Histrix

Histrix posee un set de test unitarios Dichos tests se encuentran en la carpeta

Ventana de terminal
cd tests/unit/

para ejecutar los test debe ejecutar el comando (https://phpunit.de/)

Ventana de terminal
phpunit

Dicho comando esta parametrizado en el archivo

Ventana de terminal
phpunit.xml

Ejemplo de salida:

Ventana de terminal
PHPUnit 6.4.4 by Sebastian Bergmann and contributors.
............................................................... 63 / 947 ( 6%)
............................................................... 126 / 947 ( 13%)
............................................................... 189 / 947 ( 19%)
............................................................... 252 / 947 ( 26%)
............................................................... 315 / 947 ( 33%)
.........I.I.I...II............III.IIIIIIII...III....I......... 378 / 947 ( 39%)
..................I.....I.............................I.II..... 441 / 947 ( 46%)
......II.II...............................I..........I.II.I.III 504 / 947 ( 53%)
II...................................I.IIIIIIIIIIIIIIIIIIIIIIII 567 / 947 ( 59%)
IIIIIIIIIIIIIIIIIIIIIIII....I.III....III......I.IIIII.......... 630 / 947 ( 66%)
..I................................II.......................... 693 / 947 ( 73%)
................................................II............. 756 / 947 ( 79%)
.....................................IIIII.....I.I............. 819 / 947 ( 86%)
....II.....I...IIIIIII....I...IIII........I........I.III..I.I.. 882 / 947 ( 93%)
IIIII.II.I............................................I....IIII 945 / 947 ( 99%)
.I 947 / 947 (100%)
Time: 2.48 minutes, Memory: 122.45MB
OK, but incomplete, skipped, or risky tests!
Tests: 947, Assertions: 3447, Incomplete: 149.