SlideShare una empresa de Scribd logo
1 de 23
Test Unitarios y E2e en Front y Back -End
Eric Zeidan
@ericjanzei
Que es PHP-UNIT?
• PHPUnit es un entorno para realizar pruebas unitarias en
el lenguaje de programación PHP.
• PHPUnit es un framework de la familia xUnit originada
con SUnit y ha sido creado por Sebastian Bergman.
Para que sirven los Test
Desarrollador al
Comenzar un
Proyecto
VS
Desarrollador
Finalizando el
Proyecto
Para que sirven los Test
• Cuando desarrollamos software pueden aparecer errores en
cualquiera de las etapas del ciclo de programación, algunos
de ellos incluso permanecen sin ser descubiertos, de ahí la
importancia de las pruebas.
• Hay una gran probabilidad de que el código final tenga
errores tanto de requerimientos, como de diseño o de
funcionalidad. Para identificar estos problemas antes de que
ocurran en un entorno crítico, es necesario realizar pruebas
de software, una parte muy importante del proceso pero
también muy costosa; sin embargo, debemos en tener en
cuenta que el coste debido a un fallo mientras está el
software en funcionamiento puede llegar a ser mucho mayor.
Y para el Front?
• Para el front tenemos los llamados E2e testing, o testing
funcional o automated Testing, es un testing que se hace
gráficamente, con un robot imitando a un usuario
• Existen muchas herramientas pero aquí usaremos
Nightwacht, porque? Porque es Extensible, puede usarse
con Selenium Web-Server o con un Header-less Chrome,
ademas le podéis utilizar para escribir Test Unitarios para
Node.js.
Comenzamos…
• Primer paso
Instalamos un
WordPress para
crearnos un
Plugin donde
haremos un test
de PHP-Unit y
un Test E2e.
• El ejemplo será
el de agregar
una entrada
para que el
usuario se
pueda inscribir a
nuestro
Newsletter de
Desarrollo de
ese Plugin
Creamos el Plugin
Nuestra Clase Principal
<?php
namespace ezdevTestingPlugin;
use ezdevTestingPluginServicesMailCheck as MailCheck;
class MainController {
public function __construct() {
add_action('wp_dashboard_setup', [$this, 'add_dashboard_widgets']);
add_action('admin_post_newsletter_form', [$this, 'form_submit_processing']);
}
public function dashboard_widget_function() {
include_once PLUGINS_PATH . '/Templates/newsletter-form.php';
}
public function add_dashboard_widgets() {
wp_add_dashboard_widget('dashboard_widget', 'Testing WordCamp Madrid 2019', [$this, 'dashboard_widget_function']);
}
public function form_submit_processing() {
$return = "El Correo no puede estar vacio";
if (isset($_POST['email'])) {
$em = new MailCheck(($_POST['email']));
if($em) {
// Hacemos algo con el correo como Guardarlo o enviarlo por API
$return = "Gracias por subscribirte";
} else {
$return = "EL correo tiene un formato no valido";
}
}
wp_redirect(admin_url('?message=' . urlencode($return)));
die;
}
}
Nuestro Servicio y nuestro Test
<?php
namespace ezdevTestingPluginServices;
class MailCheck {
private $email;
public function __construct(string $email)
{
$this->ensureIsValidEmail($email);
$this->email = $email;
}
public static function fromString(string $email): self
{
return new self($email);
}
public function __toString(): string
{
return $this->email;
}
private function ensureIsValidEmail(string $email)
{
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
throw new InvalidArgumentException(
sprintf(
'"%s" is not a valid email address',
$email
)
);
}
}
}
<?php
use PHPUnitFrameworkTestCase;
use ezdevTestingPluginServicesMailCheck;
final class MailCheckTest extends TestCase
{
public function testCanBeCreatedFromValidEmailAddress()
{
$this->assertInstanceOf(
MailCheck::class,
MailCheck::fromString('user@example.com')
);
}
public function testCannotBeCreatedFromInvalidEmailAddress()
{
$this->expectException(InvalidArgumentException::class);
MailCheck::fromString('invalid');
}
public function testCanBeUsedAsString()
{
$this->assertEquals(
'user@example.com',
MailCheck::fromString('user@example.com')
);
}
}
Ejecutamos nuestro test
Esqueleto de Nuestro Plugin
Como utilizar nightwatch para
nuestro test de Front-End
• Primero: Instala Node.js.
• "Node.js es una plataforma basada en el tiempo de ejecución de JavaScript de Chrome para crear
fácilmente aplicaciones de red escalables y rápidas. Node.js utiliza un modelo de E / S sin bloqueo
controlado por eventos que lo hace ligero y eficiente, perfecto para datos intensivos. aplicaciones
de tiempo que se ejecutan en dispositivos distribuidos „.
• Hay paquetes de instalación e instrucciones para la mayoría de los principales sistemas operativos
en su sitio web nodejs.org. Recuerde instalar también la herramienta npm, que es el administrador
de paquetes del nodo y se distribuye con el instalador Node.js.
• Segundo: Instala Nightwatch global si se desea:
• Para instalar la última versión con la herramienta de línea de comandos npm, ejecute lo siguiente:
$ npm install nightwatch -g
• Tercero: creamos un archivo llamado package.json donde
incluiremos nightwatch, google chrome driver y
geckodriver y lo instalaremos usando npm
• Cuarto: una vez creado el package.json lo ejecutamos con
$ npm install
{
"devDependencies": {
"chromedriver": "^2.45.0",
"geckodriver": "^1.14.1",
"nightwatch": "^1.0.18"
}
}
Instalar requerimientos
del package.json
Seguimos…
• Quinto: Creamos nuestro nightwacht.json en la carpeta
root de nuestro plugin
{
"src_folders": [
"test"
],
"webdriver": {
"start_process": true,
"server_path": "node_modules/.bin/chromedriver",
"port": 9515
},
"test_settings": {
"default": {
"desiredCapabilities": {
"browserName": "chrome"
}
}
}
}
Creamos nuestro primer test de Front-End
• Para ello debemos crear un archivo .js con las
especificaciones y aserciones que queremos conseguir
• Editamos un archivo que llamaremos
dashboardnewsletter.js
module.exports = {
'Prueba de Formulario en Dashboard Admin' : function (client) {
const url = "http://127.0.0.1/wordpress";
client
.url(url + '/wp-admin')
.waitForElementVisible('#user_login', 1000)
.assert.title('Log In ‹ WordCamp Madrid 2019 — WordPress')
.setValue('#user_login', 'test')
.setValue('#user_pass', 'test')
.click('#wp-submit')
.waitForElementVisible('#welcome-panel', 1000)
.assert.containsText('div.welcome-panel h2', 'Welcome to WordPress!', 'Mensaje de Bienvenida Correcto')
.setValue('#email', 'test@dominio.com')
.click('#newsletter-add')
.waitForElementVisible('#welcome-panel', 2000)
.assert.containsText('#ezdv-message', 'Gracias por subscribirte', 'Suscripción correcta')
.end();
}
};
Ejecutamos nuestro script
Veamos todo nuevamente
Vamos al Código
https://github.com/k2klettern/wp-test
Gracias
@ericjanzei

Más contenido relacionado

La actualidad más candente

Prueba De Aplicaciones Web con Selenium 2 y WebDriver
Prueba De Aplicaciones Web con Selenium 2 y WebDriverPrueba De Aplicaciones Web con Selenium 2 y WebDriver
Prueba De Aplicaciones Web con Selenium 2 y WebDriverDavid Gómez García
 
Desplegando código con Phing, PHPunit, Coder y Jenkins
Desplegando código con Phing, PHPunit, Coder y JenkinsDesplegando código con Phing, PHPunit, Coder y Jenkins
Desplegando código con Phing, PHPunit, Coder y JenkinsLa Drupalera
 
Probando aplicaciones AngularJS
Probando aplicaciones AngularJSProbando aplicaciones AngularJS
Probando aplicaciones AngularJSRodrigo Pimentel
 
Cómo migrar de source safe a team foundation server 2010
Cómo migrar de source safe a team foundation server 2010Cómo migrar de source safe a team foundation server 2010
Cómo migrar de source safe a team foundation server 2010Diego Vazquez Arce
 
atSistemas - Presentación Integración Continua AUG Barcelona enero13
atSistemas - Presentación Integración Continua AUG Barcelona enero13atSistemas - Presentación Integración Continua AUG Barcelona enero13
atSistemas - Presentación Integración Continua AUG Barcelona enero13atSistemas
 
ReConnect 2015 - ASP.NET 5: MVC 6 y EF 7
ReConnect 2015  - ASP.NET 5: MVC 6 y EF 7ReConnect 2015  - ASP.NET 5: MVC 6 y EF 7
ReConnect 2015 - ASP.NET 5: MVC 6 y EF 7Luis Ruiz Pavón
 
Catalyst: Framework para el desarrollo de aplicaciones Web
Catalyst: Framework para el desarrollo de aplicaciones WebCatalyst: Framework para el desarrollo de aplicaciones Web
Catalyst: Framework para el desarrollo de aplicaciones WebEsteban Saavedra
 
Gestión del software con Maven y Jenkins
Gestión del software con Maven y JenkinsGestión del software con Maven y Jenkins
Gestión del software con Maven y JenkinsBEEVA_es
 
Instalacion de java y sus herramientas
Instalacion de java y sus herramientasInstalacion de java y sus herramientas
Instalacion de java y sus herramientasJuan Diaz Calixtro
 
lección 02- creación de Virtual Host laravel 5 + Xampp + Windows
lección 02- creación de Virtual Host laravel 5 + Xampp + Windowslección 02- creación de Virtual Host laravel 5 + Xampp + Windows
lección 02- creación de Virtual Host laravel 5 + Xampp + WindowsJairo Hoyos
 
Dev ops infraestructura agil con open source
Dev ops   infraestructura agil con open sourceDev ops   infraestructura agil con open source
Dev ops infraestructura agil con open sourcescrumecuador
 
Laboratorio de netbeans sql server15-04-2013
Laboratorio de netbeans  sql server15-04-2013Laboratorio de netbeans  sql server15-04-2013
Laboratorio de netbeans sql server15-04-2013saul1905
 
Presentación Spring Boot en Autentia
Presentación Spring Boot en AutentiaPresentación Spring Boot en Autentia
Presentación Spring Boot en AutentiaJorge Pacheco Mengual
 
Testing & debugging lightning web components
Testing & debugging lightning web componentsTesting & debugging lightning web components
Testing & debugging lightning web componentsFederico Giust
 

La actualidad más candente (20)

Prueba De Aplicaciones Web con Selenium 2 y WebDriver
Prueba De Aplicaciones Web con Selenium 2 y WebDriverPrueba De Aplicaciones Web con Selenium 2 y WebDriver
Prueba De Aplicaciones Web con Selenium 2 y WebDriver
 
Desplegando código con Phing, PHPunit, Coder y Jenkins
Desplegando código con Phing, PHPunit, Coder y JenkinsDesplegando código con Phing, PHPunit, Coder y Jenkins
Desplegando código con Phing, PHPunit, Coder y Jenkins
 
Java desde cero maven
Java desde cero mavenJava desde cero maven
Java desde cero maven
 
Probando aplicaciones AngularJS
Probando aplicaciones AngularJSProbando aplicaciones AngularJS
Probando aplicaciones AngularJS
 
Cómo migrar de source safe a team foundation server 2010
Cómo migrar de source safe a team foundation server 2010Cómo migrar de source safe a team foundation server 2010
Cómo migrar de source safe a team foundation server 2010
 
atSistemas - Presentación Integración Continua AUG Barcelona enero13
atSistemas - Presentación Integración Continua AUG Barcelona enero13atSistemas - Presentación Integración Continua AUG Barcelona enero13
atSistemas - Presentación Integración Continua AUG Barcelona enero13
 
Selenium
SeleniumSelenium
Selenium
 
ReConnect 2015 - ASP.NET 5: MVC 6 y EF 7
ReConnect 2015  - ASP.NET 5: MVC 6 y EF 7ReConnect 2015  - ASP.NET 5: MVC 6 y EF 7
ReConnect 2015 - ASP.NET 5: MVC 6 y EF 7
 
Integrando sonar
Integrando sonarIntegrando sonar
Integrando sonar
 
Evidencia aa1 taller
Evidencia aa1 tallerEvidencia aa1 taller
Evidencia aa1 taller
 
Catalyst: Framework para el desarrollo de aplicaciones Web
Catalyst: Framework para el desarrollo de aplicaciones WebCatalyst: Framework para el desarrollo de aplicaciones Web
Catalyst: Framework para el desarrollo de aplicaciones Web
 
Gestión del software con Maven y Jenkins
Gestión del software con Maven y JenkinsGestión del software con Maven y Jenkins
Gestión del software con Maven y Jenkins
 
Instalacion de java y sus herramientas
Instalacion de java y sus herramientasInstalacion de java y sus herramientas
Instalacion de java y sus herramientas
 
Laravel 4.2 pdf
Laravel 4.2 pdfLaravel 4.2 pdf
Laravel 4.2 pdf
 
Framework Catalyst
Framework CatalystFramework Catalyst
Framework Catalyst
 
lección 02- creación de Virtual Host laravel 5 + Xampp + Windows
lección 02- creación de Virtual Host laravel 5 + Xampp + Windowslección 02- creación de Virtual Host laravel 5 + Xampp + Windows
lección 02- creación de Virtual Host laravel 5 + Xampp + Windows
 
Dev ops infraestructura agil con open source
Dev ops   infraestructura agil con open sourceDev ops   infraestructura agil con open source
Dev ops infraestructura agil con open source
 
Laboratorio de netbeans sql server15-04-2013
Laboratorio de netbeans  sql server15-04-2013Laboratorio de netbeans  sql server15-04-2013
Laboratorio de netbeans sql server15-04-2013
 
Presentación Spring Boot en Autentia
Presentación Spring Boot en AutentiaPresentación Spring Boot en Autentia
Presentación Spring Boot en Autentia
 
Testing & debugging lightning web components
Testing & debugging lightning web componentsTesting & debugging lightning web components
Testing & debugging lightning web components
 

Similar a Test Unitarios y E2E front y Back

Gestionar mis proyectos con ayuda de CodeIgniter
Gestionar mis proyectos con ayuda de CodeIgniterGestionar mis proyectos con ayuda de CodeIgniter
Gestionar mis proyectos con ayuda de CodeIgniterandrewzg
 
Magallanes, Herramienta de despliegue PHP sencilla y poderosa
Magallanes, Herramienta de despliegue PHP sencilla y poderosa�Magallanes, Herramienta de despliegue PHP sencilla y poderosa�
Magallanes, Herramienta de despliegue PHP sencilla y poderosaFco Javier Núñez Berrocoso
 
Proyect Evenge. Event manager
Proyect Evenge. Event managerProyect Evenge. Event manager
Proyect Evenge. Event managerIvan Ortega
 
Intro a cakephp
Intro a cakephpIntro a cakephp
Intro a cakephpbetabeers
 
PHP Unit y TDD
PHP Unit y TDDPHP Unit y TDD
PHP Unit y TDDEmergya
 
instalacion e intregracion de OcsInventory-NG y GLPI
instalacion e intregracion de OcsInventory-NG y GLPIinstalacion e intregracion de OcsInventory-NG y GLPI
instalacion e intregracion de OcsInventory-NG y GLPImiltonvf
 
PASOS PARA LA SOLUCION DE PROBLEMAS - HTML
PASOS PARA LA SOLUCION DE PROBLEMAS - HTMLPASOS PARA LA SOLUCION DE PROBLEMAS - HTML
PASOS PARA LA SOLUCION DE PROBLEMAS - HTMLfelipeforero72
 
SecondNug Febrero 2012 - Automatización de despliegues
SecondNug Febrero 2012 - Automatización de desplieguesSecondNug Febrero 2012 - Automatización de despliegues
SecondNug Febrero 2012 - Automatización de desplieguesJose Luis Soria
 
Tutorial CodeIgniter + Netbeans 7
Tutorial CodeIgniter + Netbeans 7Tutorial CodeIgniter + Netbeans 7
Tutorial CodeIgniter + Netbeans 7Juan Fede
 
Formato 001 guia_de_actividades_de_aprendizaje
Formato 001 guia_de_actividades_de_aprendizajeFormato 001 guia_de_actividades_de_aprendizaje
Formato 001 guia_de_actividades_de_aprendizajeewinmauricio
 
Tutorial windows azure con visual studio 2010
Tutorial windows azure con visual studio 2010Tutorial windows azure con visual studio 2010
Tutorial windows azure con visual studio 2010Naim Jhon Cruzado Paredes
 
Pylot : Herramienta para pruebas de rendimiento de Aplicaciones Web
Pylot : Herramienta para pruebas  de rendimiento de Aplicaciones WebPylot : Herramienta para pruebas  de rendimiento de Aplicaciones Web
Pylot : Herramienta para pruebas de rendimiento de Aplicaciones WebDeisy Sapaico
 
Conferencia Rails: Integracion Continua Y Rails
Conferencia Rails: Integracion Continua Y RailsConferencia Rails: Integracion Continua Y Rails
Conferencia Rails: Integracion Continua Y RailsDavid Calavera
 
Metodología para la solución de problemas utilizando la computadora 2°Am Prog...
Metodología para la solución de problemas utilizando la computadora 2°Am Prog...Metodología para la solución de problemas utilizando la computadora 2°Am Prog...
Metodología para la solución de problemas utilizando la computadora 2°Am Prog...Dulcevelazquez6
 
Continuous Integration
Continuous Integration Continuous Integration
Continuous Integration jose diaz
 
Dynamics saturday madrid 2019 jose antonio estevan share
Dynamics saturday madrid 2019   jose antonio estevan shareDynamics saturday madrid 2019   jose antonio estevan share
Dynamics saturday madrid 2019 jose antonio estevan shareDemian Raschkovan
 

Similar a Test Unitarios y E2E front y Back (20)

Gestionar mis proyectos con ayuda de CodeIgniter
Gestionar mis proyectos con ayuda de CodeIgniterGestionar mis proyectos con ayuda de CodeIgniter
Gestionar mis proyectos con ayuda de CodeIgniter
 
Magallanes, Herramienta de despliegue PHP sencilla y poderosa
Magallanes, Herramienta de despliegue PHP sencilla y poderosa�Magallanes, Herramienta de despliegue PHP sencilla y poderosa�
Magallanes, Herramienta de despliegue PHP sencilla y poderosa
 
Proyect Evenge. Event manager
Proyect Evenge. Event managerProyect Evenge. Event manager
Proyect Evenge. Event manager
 
Intro a cakephp
Intro a cakephpIntro a cakephp
Intro a cakephp
 
Intro a cakephp
Intro a cakephpIntro a cakephp
Intro a cakephp
 
PHP Unit y TDD
PHP Unit y TDDPHP Unit y TDD
PHP Unit y TDD
 
Python Gae django
Python Gae djangoPython Gae django
Python Gae django
 
instalacion e intregracion de OcsInventory-NG y GLPI
instalacion e intregracion de OcsInventory-NG y GLPIinstalacion e intregracion de OcsInventory-NG y GLPI
instalacion e intregracion de OcsInventory-NG y GLPI
 
PASOS PARA LA SOLUCION DE PROBLEMAS - HTML
PASOS PARA LA SOLUCION DE PROBLEMAS - HTMLPASOS PARA LA SOLUCION DE PROBLEMAS - HTML
PASOS PARA LA SOLUCION DE PROBLEMAS - HTML
 
Informatica
InformaticaInformatica
Informatica
 
SecondNug Febrero 2012 - Automatización de despliegues
SecondNug Febrero 2012 - Automatización de desplieguesSecondNug Febrero 2012 - Automatización de despliegues
SecondNug Febrero 2012 - Automatización de despliegues
 
Tutorial CodeIgniter + Netbeans 7
Tutorial CodeIgniter + Netbeans 7Tutorial CodeIgniter + Netbeans 7
Tutorial CodeIgniter + Netbeans 7
 
Formato 001 guia_de_actividades_de_aprendizaje
Formato 001 guia_de_actividades_de_aprendizajeFormato 001 guia_de_actividades_de_aprendizaje
Formato 001 guia_de_actividades_de_aprendizaje
 
Tutorial windows azure con visual studio 2010
Tutorial windows azure con visual studio 2010Tutorial windows azure con visual studio 2010
Tutorial windows azure con visual studio 2010
 
Pylot : Herramienta para pruebas de rendimiento de Aplicaciones Web
Pylot : Herramienta para pruebas  de rendimiento de Aplicaciones WebPylot : Herramienta para pruebas  de rendimiento de Aplicaciones Web
Pylot : Herramienta para pruebas de rendimiento de Aplicaciones Web
 
Conferencia Rails: Integracion Continua Y Rails
Conferencia Rails: Integracion Continua Y RailsConferencia Rails: Integracion Continua Y Rails
Conferencia Rails: Integracion Continua Y Rails
 
Estructura de datos
Estructura de datosEstructura de datos
Estructura de datos
 
Metodología para la solución de problemas utilizando la computadora 2°Am Prog...
Metodología para la solución de problemas utilizando la computadora 2°Am Prog...Metodología para la solución de problemas utilizando la computadora 2°Am Prog...
Metodología para la solución de problemas utilizando la computadora 2°Am Prog...
 
Continuous Integration
Continuous Integration Continuous Integration
Continuous Integration
 
Dynamics saturday madrid 2019 jose antonio estevan share
Dynamics saturday madrid 2019   jose antonio estevan shareDynamics saturday madrid 2019   jose antonio estevan share
Dynamics saturday madrid 2019 jose antonio estevan share
 

Último

El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.241514949
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfSergioMendoza354770
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafiosFundación YOD YOD
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)GDGSucre
 
SalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 TestcontainersSalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 TestcontainersIván López Martín
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfsoporteupcology
 
Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024GiovanniJavierHidalg
 
R1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en minaR1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en minaarkananubis
 
definicion segun autores de matemáticas educativa
definicion segun autores de matemáticas  educativadefinicion segun autores de matemáticas  educativa
definicion segun autores de matemáticas educativaAdrianaMartnez618894
 
tics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxtics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxazmysanros90
 
ejercicios pseint para aprogramacion sof
ejercicios pseint para aprogramacion sofejercicios pseint para aprogramacion sof
ejercicios pseint para aprogramacion sofJuancarlosHuertasNio1
 
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...FacuMeza2
 
Hernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxHernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxJOSEMANUELHERNANDEZH11
 
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxCrear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxNombre Apellidos
 
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6    CREAR UN RECURSO MULTIMEDIAActividad integradora 6    CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA241531640
 
El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...
El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...
El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...JaquelineJuarez15
 
dokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptdokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptMiguelAtencio10
 
Plan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxPlan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxpabonheidy28
 
KELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesKELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesFundación YOD YOD
 
Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadMiguelAngelVillanuev48
 

Último (20)

El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafios
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)
 
SalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 TestcontainersSalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 Testcontainers
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdf
 
Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024
 
R1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en minaR1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en mina
 
definicion segun autores de matemáticas educativa
definicion segun autores de matemáticas  educativadefinicion segun autores de matemáticas  educativa
definicion segun autores de matemáticas educativa
 
tics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxtics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptx
 
ejercicios pseint para aprogramacion sof
ejercicios pseint para aprogramacion sofejercicios pseint para aprogramacion sof
ejercicios pseint para aprogramacion sof
 
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
 
Hernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxHernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptx
 
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxCrear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
 
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6    CREAR UN RECURSO MULTIMEDIAActividad integradora 6    CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
 
El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...
El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...
El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...
 
dokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptdokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.ppt
 
Plan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxPlan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docx
 
KELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesKELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento Protégeles
 
Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidad
 

Test Unitarios y E2E front y Back

  • 1. Test Unitarios y E2e en Front y Back -End Eric Zeidan @ericjanzei
  • 2. Que es PHP-UNIT? • PHPUnit es un entorno para realizar pruebas unitarias en el lenguaje de programación PHP. • PHPUnit es un framework de la familia xUnit originada con SUnit y ha sido creado por Sebastian Bergman.
  • 3. Para que sirven los Test Desarrollador al Comenzar un Proyecto VS Desarrollador Finalizando el Proyecto
  • 4. Para que sirven los Test • Cuando desarrollamos software pueden aparecer errores en cualquiera de las etapas del ciclo de programación, algunos de ellos incluso permanecen sin ser descubiertos, de ahí la importancia de las pruebas. • Hay una gran probabilidad de que el código final tenga errores tanto de requerimientos, como de diseño o de funcionalidad. Para identificar estos problemas antes de que ocurran en un entorno crítico, es necesario realizar pruebas de software, una parte muy importante del proceso pero también muy costosa; sin embargo, debemos en tener en cuenta que el coste debido a un fallo mientras está el software en funcionamiento puede llegar a ser mucho mayor.
  • 5. Y para el Front? • Para el front tenemos los llamados E2e testing, o testing funcional o automated Testing, es un testing que se hace gráficamente, con un robot imitando a un usuario • Existen muchas herramientas pero aquí usaremos Nightwacht, porque? Porque es Extensible, puede usarse con Selenium Web-Server o con un Header-less Chrome, ademas le podéis utilizar para escribir Test Unitarios para Node.js.
  • 6.
  • 7. Comenzamos… • Primer paso Instalamos un WordPress para crearnos un Plugin donde haremos un test de PHP-Unit y un Test E2e. • El ejemplo será el de agregar una entrada para que el usuario se pueda inscribir a nuestro Newsletter de Desarrollo de ese Plugin
  • 9.
  • 10.
  • 11. Nuestra Clase Principal <?php namespace ezdevTestingPlugin; use ezdevTestingPluginServicesMailCheck as MailCheck; class MainController { public function __construct() { add_action('wp_dashboard_setup', [$this, 'add_dashboard_widgets']); add_action('admin_post_newsletter_form', [$this, 'form_submit_processing']); } public function dashboard_widget_function() { include_once PLUGINS_PATH . '/Templates/newsletter-form.php'; } public function add_dashboard_widgets() { wp_add_dashboard_widget('dashboard_widget', 'Testing WordCamp Madrid 2019', [$this, 'dashboard_widget_function']); } public function form_submit_processing() { $return = "El Correo no puede estar vacio"; if (isset($_POST['email'])) { $em = new MailCheck(($_POST['email'])); if($em) { // Hacemos algo con el correo como Guardarlo o enviarlo por API $return = "Gracias por subscribirte"; } else { $return = "EL correo tiene un formato no valido"; } } wp_redirect(admin_url('?message=' . urlencode($return))); die; } }
  • 12. Nuestro Servicio y nuestro Test <?php namespace ezdevTestingPluginServices; class MailCheck { private $email; public function __construct(string $email) { $this->ensureIsValidEmail($email); $this->email = $email; } public static function fromString(string $email): self { return new self($email); } public function __toString(): string { return $this->email; } private function ensureIsValidEmail(string $email) { if (!filter_var($email, FILTER_VALIDATE_EMAIL)) { throw new InvalidArgumentException( sprintf( '"%s" is not a valid email address', $email ) ); } } } <?php use PHPUnitFrameworkTestCase; use ezdevTestingPluginServicesMailCheck; final class MailCheckTest extends TestCase { public function testCanBeCreatedFromValidEmailAddress() { $this->assertInstanceOf( MailCheck::class, MailCheck::fromString('user@example.com') ); } public function testCannotBeCreatedFromInvalidEmailAddress() { $this->expectException(InvalidArgumentException::class); MailCheck::fromString('invalid'); } public function testCanBeUsedAsString() { $this->assertEquals( 'user@example.com', MailCheck::fromString('user@example.com') ); } }
  • 15. Como utilizar nightwatch para nuestro test de Front-End • Primero: Instala Node.js. • "Node.js es una plataforma basada en el tiempo de ejecución de JavaScript de Chrome para crear fácilmente aplicaciones de red escalables y rápidas. Node.js utiliza un modelo de E / S sin bloqueo controlado por eventos que lo hace ligero y eficiente, perfecto para datos intensivos. aplicaciones de tiempo que se ejecutan en dispositivos distribuidos „. • Hay paquetes de instalación e instrucciones para la mayoría de los principales sistemas operativos en su sitio web nodejs.org. Recuerde instalar también la herramienta npm, que es el administrador de paquetes del nodo y se distribuye con el instalador Node.js. • Segundo: Instala Nightwatch global si se desea: • Para instalar la última versión con la herramienta de línea de comandos npm, ejecute lo siguiente: $ npm install nightwatch -g
  • 16. • Tercero: creamos un archivo llamado package.json donde incluiremos nightwatch, google chrome driver y geckodriver y lo instalaremos usando npm • Cuarto: una vez creado el package.json lo ejecutamos con $ npm install { "devDependencies": { "chromedriver": "^2.45.0", "geckodriver": "^1.14.1", "nightwatch": "^1.0.18" } }
  • 18. Seguimos… • Quinto: Creamos nuestro nightwacht.json en la carpeta root de nuestro plugin { "src_folders": [ "test" ], "webdriver": { "start_process": true, "server_path": "node_modules/.bin/chromedriver", "port": 9515 }, "test_settings": { "default": { "desiredCapabilities": { "browserName": "chrome" } } } }
  • 19. Creamos nuestro primer test de Front-End • Para ello debemos crear un archivo .js con las especificaciones y aserciones que queremos conseguir • Editamos un archivo que llamaremos dashboardnewsletter.js module.exports = { 'Prueba de Formulario en Dashboard Admin' : function (client) { const url = "http://127.0.0.1/wordpress"; client .url(url + '/wp-admin') .waitForElementVisible('#user_login', 1000) .assert.title('Log In ‹ WordCamp Madrid 2019 — WordPress') .setValue('#user_login', 'test') .setValue('#user_pass', 'test') .click('#wp-submit') .waitForElementVisible('#welcome-panel', 1000) .assert.containsText('div.welcome-panel h2', 'Welcome to WordPress!', 'Mensaje de Bienvenida Correcto') .setValue('#email', 'test@dominio.com') .click('#newsletter-add') .waitForElementVisible('#welcome-panel', 2000) .assert.containsText('#ezdv-message', 'Gracias por subscribirte', 'Suscripción correcta') .end(); } };
  • 21. Veamos todo nuevamente Vamos al Código https://github.com/k2klettern/wp-test