Functional Tests with Geb

Post on 04-Jul-2015

619 views 1 download

description

Slides from my talk in Pucela Testing Days 2013 about functional testing with Geb

Transcript of Functional Tests with Geb

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