Testing en Grails y Pruebas funcionales con Geb (WebDriver) Fátima Casaú Pérez @fatimacasau
<ul>@fatimacasau </ul><ul><li>3 años desarrollando aplicaciones web con J2EE, Groovy & Grails
3 años en
SCJP J2SE 5.0
Curso ScrumManager – Gestión Proyectos con Scrum </li></ul>
¿Qué vamos a ver? <ul><li>Tests Unitarios </li><ul><li>De dominio
De constraints
De controller </li></ul><li>Tests de Integración
Tests Funcionales </li><ul><li>Geb </li></ul></ul>
Tests Unitarios <ul><li>Mocks: Simuladores de Objetos </li><ul><li>Grails nos ofrece: </li><ul><li>mockDomain
mockForConstraints
MockController </li><ul><li>redirectArgs
renderArgs </li></ul><li>mockParams
mockFor
... </li></ul></ul></ul>
Upcoming SlideShare
Loading in...5
×

Taller Testing en Grails con Grails y Geb (WebDriver) - Springio I/O 2011

978

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
978
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
0
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Taller Testing en Grails con Grails y Geb (WebDriver) - Springio I/O 2011

  1. 1. Testing en Grails y Pruebas funcionales con Geb (WebDriver) Fátima Casaú Pérez @fatimacasau
  2. 2. <ul>@fatimacasau </ul><ul><li>3 años desarrollando aplicaciones web con J2EE, Groovy & Grails
  3. 3. 3 años en
  4. 4. SCJP J2SE 5.0
  5. 5. Curso ScrumManager – Gestión Proyectos con Scrum </li></ul>
  6. 6. ¿Qué vamos a ver? <ul><li>Tests Unitarios </li><ul><li>De dominio
  7. 7. De constraints
  8. 8. De controller </li></ul><li>Tests de Integración
  9. 9. Tests Funcionales </li><ul><li>Geb </li></ul></ul>
  10. 10. Tests Unitarios <ul><li>Mocks: Simuladores de Objetos </li><ul><li>Grails nos ofrece: </li><ul><li>mockDomain
  11. 11. mockForConstraints
  12. 12. MockController </li><ul><li>redirectArgs
  13. 13. renderArgs </li></ul><li>mockParams
  14. 14. mockFor
  15. 15. ... </li></ul></ul></ul>
  16. 16. Tests de Integración <ul><li>Comprueban la integración entre todos los componenetes de la aplicación
  17. 17. Más pesados y lentos
  18. 18. Se ejecutan menos veces </li></ul>
  19. 19. Tests Funcionales <ul><li>En este punto ya podremos probar el interfaz gráfico así como toda la funcionalidad de la aplicación. Varias opciones: </li><ul><ul><li>Selenium-IDE + Grails Plugin Selenium-rc (Selenium1)
  20. 20. Grails Plugin GEB (WebDriver, jQuery API) </li><ul><li>+ Grails Plugin Spock </li></ul></ul></ul></ul>
  21. 21. GEB <ul><li>WebDriver </li><ul><ul><li>Navegadores: Firefox, Chrome, IE
  22. 22. HTMLUnit
  23. 23. jQuery API (inspección y navegación html)
  24. 24. Lenguaje Groovy
  25. 25. Documentación: http://geb.codehaus.org </li></ul></ul></ul>
  26. 26. El Navegador def browser = new Browser(&quot; http://myapp.com &quot;) browser.go(&quot;/signup&quot;) browser.go(&quot;/signup&quot;, param1: &quot;value1&quot;, param2: &quot;value2&quot;) Browser.drive(&quot;http://myapp.com&quot;) { go &quot;/signup&quot; }
  27. 27. Páginas <ul><li>Page Object Pattern </li><ul><li>Nos proporcionan: </li><ul><li>modularidad,
  28. 28. encapsulación,
  29. 29. reutilizable </li></ul></ul></ul>
  30. 30. Páginas Import geb.* class GoogleHomePage extends Page { static url = &quot;http://google.com&quot; static at = { title == &quot;Google&quot; } static content = { searchField { $(&quot;input[name=q]&quot;).value() } searchButton(to: GoogleResultsPage) { $(&quot;input[value=Google Search]&quot;) } } }
  31. 31. Páginas def browser = new Browser(&quot;http://myapp.com&quot;) browser.to(SignupPage) assert browser.at(SignupPage)
  32. 32. $(“title”).text() == “Inspeccionando el contenido” <ul><ul><li>$(“div.message”, text:contains(“Todo Ok”)) </li><ul><li>StartsWith, iStartsWith, contains, iContains, endsWith, iEndsWith, containsWord, iContainsWord </li></ul><li>$(“li a”).size()
  33. 33. $(“p”, 0).text()
  34. 34. $(&quot;div&quot;).find(&quot;.b&quot;) --> $(&quot;div&quot;).filter(&quot;.b&quot;)
  35. 35. $(&quot;input.loginButton&quot;).click(LoginPage) </li></ul></ul>
  36. 36. Javascript y Ajax <ul><li>Javascript: </li><ul><ul><li>js.'nombreVariable'
  37. 37. js.'nombreFuncion(params) </li></ul></ul><li>Contenido dinámico </li><ul><ul><li>waitFor(condicion), waitFor(tiempo(seg),condicion)
  38. 38. alert()
  39. 39. Confirm() </li></ul></ul><li>jQuery </li><ul><ul><li>$(&quot;div#a&quot;).jquery.mouseover() </li></ul></ul></ul>
  40. 40. Ejemplo <ul><li>Aplicación Grails de ejemplo:
  41. 41. Grails Blog </li></ul>
  42. 42. Más en: http://blogs.salenda.es/fatimacasau

×