Successfully reported this slideshow.

Patrones de diseño en la automatización, PageObject o ScreenPlay

0

Share

1 of 40
1 of 40

Patrones de diseño en la automatización, PageObject o ScreenPlay

0

Share

Download to read offline

Impartido por Abel Quintana
Code Example:
PageObject:
https://github.com/beloquintana/SeleniumFramework
ScreenPlay:
https://github.com/beloquintana/screenplay-pattern

Impartido por Abel Quintana
Code Example:
PageObject:
https://github.com/beloquintana/SeleniumFramework
ScreenPlay:
https://github.com/beloquintana/screenplay-pattern

More Related Content

Related Books

Free with a 14 day trial from Scribd

See all

Patrones de diseño en la automatización, PageObject o ScreenPlay

  1. 1. Patrones de diseño en la automatización: ¿PageObject o ScreenPlay? Ing. Abel Quintana López @beloquintana belo.quintana@gmail.com
  2. 2. Automation Test Lead belo.quintana@gmail.com @beloquintana Abel Quintana Lopez https://github.com/beloquintana
  3. 3. Patrones de diseño Automatización de pruebasFramework Automatización Patrones de Diseño
  4. 4. Agenda  Page Object  SOLID  Refactorización de Page Object  ScreenPlay Pattern  Demo
  5. 5. Agenda  Page Object  SOLID  Refactorización de Page Object  ScreenPlay Pattern  Demo
  6. 6. Page Object  Representa componentes web  Evita duplicación de código  Automatizaciones mantenibles
  7. 7. Page Object - Ejemplo
  8. 8. Page Object - Beneficios PageObject Test1 Test2 Test3 Interfaz gráfica
  9. 9. Page Object – Problema más común Clases grandes  Atributos Localizadores PageFactory  Métodos Interacción página web Algoritmos de validación
  10. 10. Page Object – Clases grandes ¿Cuál es el problema con tener clases con muchas líneas de código?
  11. 11.  Más líneas de código, Más complejo  Código repetido  Difícil de mantener Page Object – Clases grandes
  12. 12. Agenda  Page Object  SOLID  Refactorización de Page Object  ScreenPlay Pattern  Demo
  13. 13. SOLID – Principios Single responsibility principle Open Closed principle Liskov substitution principle Interface segregation principle Dependency inversion principle
  14. 14. SOLID – Principios  Buenas prácticas  Mas fácil de mantener y extender  Elimina malas prácticasRobert C. Martin
  15. 15. SOLID – Principios Single responsibility principle Open Closed principle Liskov substitution principle Interface segregation principle Dependency inversion principle
  16. 16. Single responsibility principle (SRP) A class should have only one reason to change. Robert C. Martin
  17. 17. SRP – Page Object
  18. 18. SRP – Page Object GridPage AddButton RemoveButton Checkbox CancelButton … AddItem() RemoveItem() Filter() AddInvalidItem() … Responsabilidades Localizar elementos web Realizar tareas
  19. 19. Open Closed principle – (OCP)  Abierta por extensión  Cerrada por modificación Clase
  20. 20. Open Closed principle – (OCP) GridPage AddButton RemoveButton Checkbox CancelButton … AddItem() RemoveItem() Filter() AddInvalidItem() … Editar Clase Adicionar Clase Adicionar nueva funcionalidad:
  21. 21. Page Object – SOLID principios Single Responsibility principle Open Closed principle
  22. 22. Principios SOLID de la programación orientada a objetos Page Object – Refactorización Refactorización SOLID Page Object Screen Play
  23. 23. Agenda  Page Object  SOLID  Refactorización de Page Object  ScreenPlay Pattern  Demo
  24. 24. Page Object – Refactorización Antony Marcano http://antonymarcano.com/  Refactorización Page Object  Creador ScreenPlay Pattern
  25. 25. Page Object – Refactorización - OCP GridPage AddButton RemoveButton Checkbox CancelButton … AddItem() RemoveItem() Filter() AddInvalidItem() … AddItem AddButton Add() AddInvalidItem() RemoveButton Remove() RemoveItem
  26. 26. Page Object – Refactorización - SRP GridPage AddButton RemoveButton Checkbox CancelButton … AddItem() RemoveItem() Filter() AddInvalidItem() … GridPage GridTask AddButton RemoveButton Checkbox CancelButton … AddItem() RemoveItem() Filter() AddInvalidItem() …
  27. 27. Page Object – Refactorización GridPage AddButton RemoveButton Checkbox CancelButton … AddItem() RemoveItem() Filter() AddInvalidItem() … GridPage AddItem AddButton RemoveButton Checkbox CancelButton … Perform() RemoveItem Perform() Filter Perform() AddInvalidItem Perform()
  28. 28. …you extend the behavior of such modules by adding new code, not by changing old code that already works. Robert C. Martin Page Object – Refactorización
  29. 29. Page Object – Refactorización GridPage AddButton RemoveButton Checkbox CancelButton … AddItem() RemoveItem() Filter() AddInvalidItem() … GridPage AddItem AddButton RemoveButton Checkbox CancelButton … Perform() RemoveItem Perform() Filter Perform() AddInvalidItem Perform() Screen Tasks
  30. 30. Agenda  Page Object  SOLID  Refactorización de Page Object  ScreenPlay Pattern  Demo
  31. 31. ScreenPlay Pattern – Enfoque BDD Roles Goals Tasks Actions Caso de prueba Tipo de usuario Pasos del caso de prueba Click, Escribir
  32. 32. ScreenPlay Pattern Enfoque BDD SOLID ScreenPlay
  33. 33. ScreenPlay Pattern - Serenity BDD http://www.thucydides.info https://github.com/serenity-dojo/screenplay-exercises
  34. 34. ScreenPlay Pattern – Diagrama de Clases TestCase Tasks Actions Screen Goals Tasks Actions Screen
  35. 35. Agenda  Page Object  SOLID  Refactorización de Page Object  ScreenPlay Pattern  Demo
  36. 36. ScreenPlay Pattern – Demo https://github.com/beloquintana/screenplay-pattern https://verstandqa.com/ejercicios/
  37. 37. Page Object vs ScreenPlay Pattern Page Object ScreenPlay Simple Complejo Más propenso a malas prácticas de programación Basado en SOLID principles Con Ambos patrones podemos lograr automatizaciones mantenibles
  38. 38. Automatización de Pruebas Exitosa Buenas prácticas de programaciónPatrones de diseño https://pixers.fr/papiers-peints/la-route-vers-le-succes-43419281
  39. 39. Muchas Gracias
  40. 40. Patrones de diseño en la automatización: ¿PageObject o ScreenPlay? Ing. Abel Quintana López @beloquintana belo.quintana@gmail.com

×