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
cd [histrix_path]./vendor/bin/codecept buildPosteriormente se debe volver a escanear las clases para regenerar el proceso de autoload con el comando
./composer.phar dumpautoloadConfiguració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 SeleniumConfiguración de la base
el directorio de la base a testear debe tener la siguiente estructura
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áticamentehistrix/database/nombre_base/tests/_output/histrix/database/nombre_base/tests/acceptance/histrix/database/nombre_base/tests/acceptance/_bootstrap.php <-- se generará automáticamentehistrix/database/nombre_base/tests/acceptance/PedidoInternoCest.php <-- EjemploTest 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
./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)
./histrix tests nombre_base mitestCest.php chrome-local./histrix tests nombre_base mitestCest.phpEjecuta test localmente
Referencias
- Documentación de comandos de codeception: https://codeception.com/docs/modules/WebDriver
Testing Histrix
Histrix posee un set de test unitarios Dichos tests se encuentran en la carpeta
cd tests/unit/para ejecutar los test debe ejecutar el comando (https://phpunit.de/)
phpunitDicho comando esta parametrizado en el archivo
phpunit.xmlEjemplo de salida:
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.45MBOK, but incomplete, skipped, or risky tests!Tests: 947, Assertions: 3447, Incomplete: 149.