functional tests with geb
DESCRIPTION
Slides from my talk in Pucela Testing Days 2013 about functional testing with GebTRANSCRIPT
PTD Pucela Testing Days
Jorge Jiménez @semurat
GEB Tests Funcionales
<me>Miembro de BeCode
!Desarrollador
Convencido de Agile Freak Geek
¿Emprendedor? ....
</me>
¿Tests Funcionales?
¿Tests Funcionales?
¿Tests de Aceptación?
¿Tests Funcionales?
¿Tests de Aceptación?
¿Tests de Usuario?
¿Cómo pruebas tus aplicaciones web?
¿Cómo pruebas tus aplicaciones web?
¿Cómo pruebas tus aplicaciones web?
!
Son lentos Difíciles de automatizar Débiles
¿Cómo pruebas tus aplicaciones web?
!
Validan que la aplicación funciona Iteraciones más rápidas Ahorran dinero
Soluciones
Grabando acciones ! Selenium IDE
Scripting !!
Model Driven ! WebDriver con Page Objects
Soluciones Scripting !!
Model Driven ! WebDriver con Page Objects
Lenguaje Natural ! Cucumber
GEB
Selenium WebDriver !
Estilo jQuery de selección !
Modelado con Page Object !
Expresividad de Groovy !
Buena documentación !
Integrado con otros frameworks
GEB
DEMO 1
NAvigator API
El método $()Devuelve un objeto Navigator
Formato:
Selectores
Matching
Chaining
Form
Ejemplos
Contenido relativo
JavaScript & Ajax
Aplicaciones web modernas son asincronas:
Ajax Efectos Aplicaciones Single Page
JavaScript & Ajax
Polling
JavaScript & Ajax
Acceso a JS
Páginas y MódulosPage Object Pattern
! “A page object wraps an HTML page, or fragment, with an application-specific API, allowing you to manipulate page elements without digging around in the HTML.” !
Martin Fowler 10/09/2013
Páginas y Módulos
Páginas y MódulosAbstracción que modeliza y da
estructura a nuestro código
Páginas y Módulos
Una página.... !
Encapsula la estructura El Comportamiento aparece en métodos Unidades Reusables
Páginas y MódulosPáginas en Geb
Páginas y MódulosPáginas en Geb - NAVEGACION
Páginas y MódulosPáginas en Geb - ¿Página correcta?
Páginas y MódulosPáginas en Geb - Content DSL
Páginas y MódulosMódulos: Fragmentos de content
reutilizados
Integración con Spock
Spock es un framework de testing BDD para Groovy Lenguaje de specification altamente expresivo Se ejecuta sobre un JRunner de JUnit Sigue el concepto de BDD: Given-When-Then Given: pone el sistema en un estado conocido When: describe la acción a realizar Then: observa el resultado del test
Integración con Spock
Framework Artifact Base class
Spock geb-spock geb.spock.GebSpec
JUnit4 geb-junit4 geb.junit4.GebTest
JUnit3 geb-junit3 geb.junit3.GebTest
TestNG geb-testng geb.testng.GebTest
Integración con Spock
DEMO 2
Configuración GebConfig.groovy
Configuración GebConfig.groovy
DEMO 3
Referencias!Home Page — www.gebish.org !Reference Documentation — www.gebish.org/manual/current !Source Code — github.com/geb/geb !User Mailing List — xircles.codehaus.org/projects/geb/lists !Maven Central — central.maven.org/maven2/org/codehaus/geb !Example projects from GitHub - Demo 1 & Demo 2 - https://github.com/semurat/geb-demo-cyliconvalley - Demo 3: https://github.com/semurat/movie-database https://github.com/semurat/geb-demo