Más contenido relacionado Similar a Patrones de diseño en la automatización, PageObject o ScreenPlay (20) Patrones de diseño en la automatización, PageObject o ScreenPlay1. Patrones de diseño en la automatización:
¿PageObject o ScreenPlay?
Ing. Abel Quintana López
@beloquintana
belo.quintana@gmail.com
8. Page Object - Beneficios
PageObject
Test1
Test2
Test3
Interfaz gráfica
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. Page Object – Clases grandes
¿Cuál es el problema con tener clases con
muchas líneas de código?
11. Más líneas de código, Más complejo
Código repetido
Difícil de mantener
Page Object – Clases grandes
13. SOLID – Principios
Single responsibility principle
Open Closed principle
Liskov substitution principle
Interface segregation principle
Dependency inversion principle
14. SOLID – Principios
Buenas prácticas
Mas fácil de mantener y extender
Elimina malas prácticasRobert C. Martin
15. SOLID – Principios
Single responsibility principle
Open Closed principle
Liskov substitution principle
Interface segregation principle
Dependency inversion principle
18. SRP – Page Object
GridPage
AddButton
RemoveButton
Checkbox
CancelButton
…
AddItem()
RemoveItem()
Filter()
AddInvalidItem()
…
Responsabilidades
Localizar elementos web
Realizar tareas
20. Open Closed principle – (OCP)
GridPage
AddButton
RemoveButton
Checkbox
CancelButton
…
AddItem()
RemoveItem()
Filter()
AddInvalidItem()
…
Editar Clase
Adicionar Clase
Adicionar nueva funcionalidad:
21. Page Object – SOLID principios
Single Responsibility principle
Open Closed principle
22. Principios SOLID de la programación orientada a objetos
Page Object – Refactorización
Refactorización
SOLID
Page Object Screen Play
24. Page Object – Refactorización
Antony Marcano
http://antonymarcano.com/
Refactorización Page Object
Creador ScreenPlay Pattern
25. Page Object – Refactorización - OCP
GridPage
AddButton
RemoveButton
Checkbox
CancelButton
…
AddItem()
RemoveItem()
Filter()
AddInvalidItem()
…
AddItem
AddButton
Add()
AddInvalidItem()
RemoveButton
Remove()
RemoveItem
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. 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. …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. 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
31. ScreenPlay Pattern – Enfoque BDD
Roles
Goals
Tasks
Actions
Caso de prueba
Tipo de usuario
Pasos del caso de prueba
Click, Escribir
33. ScreenPlay Pattern - Serenity BDD
http://www.thucydides.info
https://github.com/serenity-dojo/screenplay-exercises
34. ScreenPlay Pattern – Diagrama de Clases
TestCase Tasks
Actions
Screen
Goals
Tasks
Actions
Screen
36. ScreenPlay Pattern – Demo
https://github.com/beloquintana/screenplay-pattern
https://verstandqa.com/ejercicios/
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. 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
40. Patrones de diseño en la automatización:
¿PageObject o ScreenPlay?
Ing. Abel Quintana López
@beloquintana
belo.quintana@gmail.com