Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Argentesting 2018 - Patrones de diseño en la automatización: ¿PageObject o ScreenPlay?

949 views

Published on

Taller ofrecido por Abel Quintana López (de Uruguay) durante la 3ra edición del Argentesting 2018

Los patrones de diseño son soluciones probadas y documentadas a problemas comunes en el desarrollo de software. Cuando implementamos nuestros frameworks de pruebas automatizadas los usamos para evitar problemas ya conocidos como el alto costo de mantenimiento de los test, código duplicado y flaky test.

El principal objetivo de este taller es analizar en profundidad el patrón más usado para las automatizaciones con Selenium (PageObject) y mostrar a través de ejercicios prácticos sus ventajas y desventajas en comparación con otra alternativa, el patrón ScreenPlay, que a diferencia del anterior si cumple con principios básicos de la programación orientada a objeto.

Durante este taller veremos como en la práctica la refactorización del patrón PageObject nos lleva a otro patrón de diseño de igual propósito conocido como ScreenPlay Pattern. La comparación entre ambos patrones nos ayudará a determinar si debemos continuar usando PageObject o usar uno u otro según el contexto. El objetivo es mostrar a la audiencia las debilidades que pueden tener sus pruebas automatizadas cuando usan el patrón PageObject y como pueden mejorar sus frameworks de pruebas automatizadas siendo consciente de estas desventajas.

Ademas, se analizara otra alternativa(ScreenPlay Pattern) que puede sustituir el patrón PageObject cumpliendo con los “SOLID principles”.

Requerimientos
No hay máquinas en el aula. Cada asistente debe llevar su propia notebook con: Sistema operativo Window con Visual Studio instalado.

El software con que vamos a estar trabajando es Visual Studio (preferentemente 2017), en este caso no nos serviría Visual Studio Code.


Abel Quintana López
https://www.linkedin.com/in/abel-quintana-lopez-371a31b9/

Published in: Technology
  • Be the first to comment

  • Be the first to like this

Argentesting 2018 - 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. Patrones de diseño Automatización de pruebasFramework Automatización Patrones de Diseño
  3. 3. Agenda  Page Object  SOLID  Refactorización de Page Object  ScreenPlay Pattern Ejercicio práctico
  4. 4. Agenda  Page Object  SOLID  Refactorización de Page Object  ScreenPlay Pattern Ejercicio práctico
  5. 5. Page Object  Representa componentes web  Evita duplicación de código  Automatizaciones mantenibles
  6. 6. Page Object - Ejemplo
  7. 7. Page Object - Beneficios PageObject Test1 Test2 Test3 Interfaz gráfica
  8. 8. Page Object – Problema más común Clases grandes  Atributos Localizadores PageFactory  Métodos Interacción página web Algoritmos de validación
  9. 9. Page Object – Clases grandes ¿Cuál es el problema con tener clases con muchas líneas de código?
  10. 10.  Más líneas de código, Más complejo  Código repetido  Difícil de mantener Page Object – Clases grandes
  11. 11. Agenda  Page Object  SOLID  Refactorización de Page Object  ScreenPlay Pattern Ejercicio práctico
  12. 12. SOLID – Principios Single responsibility principle Open Closed principle Liskov substitution principle Interface segregation principle Dependency inversion principle
  13. 13. SOLID – Principios  Buenas prácticas  Mas fácil de mantener y extender  Elimina malas prácticasRobert C. Martin
  14. 14. SOLID – Principios Single responsibility principle Open Closed principle Liskov substitution principle Interface segregation principle Dependency inversion principle
  15. 15. Single responsibility principle (SRP) A class should have only one reason to change. Robert C. Martin
  16. 16. SRP – Page Object
  17. 17. SRP – Page Object GridPage AddButton RemoveButton Checkbox CancelButton … AddItem() RemoveItem() Filter() AddInvalidItem() … Responsabilidades Localizar elementos web Realizar tareas
  18. 18. Open Closed principle – (OCP)  Abierta por extensión  Cerrada por modificación Clase
  19. 19. Open Closed principle – (OCP) GridPage AddButton RemoveButton Checkbox CancelButton … AddItem() RemoveItem() Filter() AddInvalidItem() … Editar Clase Adicionar Clase Adicionar nueva funcionalidad:
  20. 20. Page Object – SOLID principios Single Responsibility principle Open Closed principle
  21. 21. Principios SOLID de la programación orientada a objetos Page Object – Refactorización Refactorización SOLID Page Object Screen Play
  22. 22. Agenda  Page Object  SOLID  Refactorización de Page Object  ScreenPlay Pattern Ejercicio práctico
  23. 23. Page Object – Refactorización Antony Marcano http://antonymarcano.com/  Refactorización Page Object  Creador ScreenPlay Pattern
  24. 24. Page Object – Refactorización - OCP GridPage AddButton RemoveButton Checkbox CancelButton … AddItem() RemoveItem() Filter() AddInvalidItem() … AddItem AddButton Add() AddInvalidItem() RemoveButton Remove() RemoveItem
  25. 25. Page Object – Refactorización - SRP GridPage AddButton RemoveButton Checkbox CancelButton … AddItem() RemoveItem() Filter() AddInvalidItem() … GridPage GridTask AddButton RemoveButton Checkbox CancelButton … AddItem() RemoveItem() Filter() AddInvalidItem() …
  26. 26. 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()
  27. 27. …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
  28. 28. 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
  29. 29. Agenda  Page Object  SOLID  Refactorización de Page Object  ScreenPlay Pattern Ejercicio práctico
  30. 30. ScreenPlay Pattern – Enfoque BDD Roles Goals Tasks Actions Caso de prueba Tipo de usuario Pasos del caso de prueba Click, Escribir
  31. 31. ScreenPlay Pattern Enfoque BDD SOLID ScreenPlay
  32. 32. ScreenPlay Pattern - Serenity BDD http://www.thucydides.info hhttps://github.com/serenity-dojo/screenplay-exercises
  33. 33. ScreenPlay Pattern – Diagrama de Clases TestCase Tasks Actions Screen Goals Tasks Actions Screen
  34. 34. Agenda  Page Object  SOLID  Refactorización de Page Object  ScreenPlay Pattern Ejercicio práctico
  35. 35. ScreenPlay Pattern – Ejercicio Práctico https://github.com/beloquintana/screenplayexercises http://verstandqa.com/ejercicios/
  36. 36. ScreenPlay Pattern – Ejercicio Práctico Automatizar el siguiente caso de prueba:  Adicionar Empleado
  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

×