Testing Automation
Parte 2
Browser Tests - Dusk - Selenium
¿Qué es el testing?
“Las pruebas de software (en inglés software testing) son las investigaciones empíricas y técnicas cuyo objetivo es proporcionar información objetiva e independiente sobre la calidad del producto a la parte interesada o stakeholder.”
REPASO
Tipos de Testing (los más comunes)
Unit tests
Son usados para testear pequeñas partes del código, relativamente aisladas. En general una clase o un método.
Integration tests
Testean la forma en que diferentes partes del código trabajan juntas y se pasan mensajes.
Application tests
También llamados Acceptance Tests o Functional Tests. Prueban toda la aplicación. En general usan un driver que emula el uso del navegador.
REPASO
Qué es Testing Automation?
“Consiste en el uso de software especial (casi siempre separado del software que se prueba) para controlar la ejecución de pruebas y la comparación entre los resultados obtenidos y los resultados esperados”
REPASO
Para qué sirve?
REPASO
Ventajas
REPASO
Desventajas
REPASO
Browser testing
Browser Testing
Cómo se imaginan que se hace esto?
Laravel Dusk
Dusk Install
composer require --dev laravel/dusk
public function register()
{
if ($this->app->environment('local', 'testing')) {
$this->app->register(DuskServiceProvider::class);
}
}
Dusk Install
php artisan dusk:install
Correr los tests
Para correr los tests ejecutamos
php artisan dusk
Container de Test
selenium:
image: selenium/standalone-chrome
Usando Selenium: Container del test
Laravel files
(volume)
:8000
web container (nginx)
:80
database container
:5432
app container (php)
:9000
app:9000
adminer container
:8001
:8001
selenium container
:4444
Dusk test
Test access
selenium:4444
web:80
Configuración
protected function driver()
{
return RemoteWebDriver::create(
'http://selenium:4444/wd/hub', DesiredCapabilities::chrome()
);
}
APP_URL=http://web
Miremos el test de ejemplo
$this->browse(function (Browser $browser) {
$browser->visit('/')
->assertSee('Laravel');
});
Hagamos que pase
Corren los Tests y los Asserts!
Nuestro Primer Test
php artisan dusk:make LoginTest
Test - Loguearnos a la App
TBC
Test - Fallar la password y ver el error
TBC
Test - Fallar la password varias veces y ver el error
TBC
Manos a la obra
TDD
Test Driven Development
¿Qué es Test Driven Development?
TDD es una práctica de programación, dividida en 3 partes:
Fue creado por
(Kent Beck)
Ventajas
Mantra - Red, Green, Refactor
Nuevo Requerimiento
El cliente quiere que se realicen los siguientes renombres:
Decidimos entonces hacer los cambios requeridos con TDD
Escribo el Test
TBC
Escribo el Código
TBC
Refactor
TBC
Conclusiones
Referencias
F.A.Q.
Falló la ejecución
Code coverage
Extras (Revisar)
Dusk + Laradock: Workspace Setup
+
# Instalador de Laravel para configurar proyecto Demo�WORKSPACE_INSTALL_LARAVEL_INSTALLER=true�...�# Dependencias necesarias para correr tests de Dusk�WORKSPACE_INSTALL_DUSK_DEPS=true
docker-compose build workspace
Dusk + Laradock: Application Setup
docker-compose run workspace bash
/var/www> laravel new dusk-test�/var/www> cd dusk-test�/var/www/dusk-test> composer require --dev laravel/dusk�/var/www/dusk-test> php artisan dusk:install
/var/www/dusk-test> cp .env .env.dusk.local
Dusk + Laradock: Ejecución de Tests
Iniciar server local en container workspace y ejecutar tests de Dusk
# Iniciar Server en Background (php artisan serve --quiet &)�/var/www/dusk-test> serve�# alias to run Dusk tests (php artisan dusk)�/var/www/dusk-test> dusk��PHPUnit 6.4.0 by Sebastian Bergmann and contributors.��. 1 / 1 (100%)��Time: 837 ms, Memory: 6.00MB