El testing funcional, como cualquier otro testing, es importante para asegurar el buen funcionamiento de una aplicación. Sin embargo los tests funcionales suelen ser farragosos, muy susceptibles a cambios y mantenerlos puede convertirse en una pesadilla. Por suerte existen herramientas como Geb y Spock que nos permiten hacer tests bien estructurados, intuitivos y fáciles de mantener. Esta charla pretende ser una introducción a estas herramientas, mostrando distintas formas de hacer los tests y poniéndolo todo en funcionamiento.
3. Spock
Framework para testing de aplicaciones Java y Groovy
Open source (Apache License 2.0)
Tests expresivos y fáciles de leer
Estructura Given-When-Then
Integración con JUnit (vía Sputnik)
4. Geb
Framework en Groovy para automatización de navegadores (WebDriver)
Open source (Apache License 2.0)
Patrón página
API de navegación similar a jQuery
Optimizado para Spock pero apto para JUnit, TestNG y Cucumber-JVM
5. Page Object
Encapsulación y modelado del contenido de la página web
Popularizado por WebDriver
Reduce duplicidad de código
Mejora mantenibilidad y comprensión
Soportado por Geb vía Page y Module
7. Referencias
Documentación oficial de Spock http://spockframework.github.io/spock/docs/1.0/
Documentación oficial de Geb (magnífica) http://www.gebish.org/manual/current/
Taming Functional Web Testing https://www.youtube.com/watch?v=SNMgf6ndoeU
Tutorial http://www.adictosaltrabajo.com/tutoriales/tests-funcionales-con-spock-y-geb-para-
una-aplicacion-spring-boot/
Código demo https://github.com/esloho/functional-testing-with-spock
2008
Cualquier testing: Unitarios, de integración, funcionales
Apache License v2
Fácil de leer pero orientado a desarrolladores: basado en código, no en leng. natural como Cucumber
Sputnik es el runner JUnit de Spock = permite ejecutar las especificaciones de Spock con JUnit
assert implícito
2009
Puede hacerse todo lo que se hace con WebDriver (Selenium 2) y más
Define el contenido de una página. Comportamientos como métodos
Unidades reutilizables = reduce la duplicidad de código