SlideShare une entreprise Scribd logo
1  sur  26
Télécharger pour lire hors ligne
ELIAS NOGUEIRA TATIANE NOGUEIRA
@eliasnogueira @tatianeaguirres
TATIANE NOGUEIRA
Consultant Developer @ Thoughtworks
@tatianeaguirres
linkedin.com/tatianeaguirres
ELIAS NOGUEIRA
Software Engineer in Test @ Sicredi
@eliasnogueira
linkedin.com/eliasnogueira
THE STACK
LANGUAGE TESTING INFRADATA GENERATION
javafaker
LOG & REPORTS
ExtentReports
PAGE OBJECT MODEL
• Page Objects
• Page Factory
• Abstraction
• Waiting Strategy
PARALLEL EXECUTION
• Infrastructure
• Containers
LOGS AND REPORTS
• Exception logs
• General reports
• Evidence
DATA GENERATION
• Fake
• Static creation
• Dynamic creation
PIPELINE
• Execution strategy
BASE ARCHITECTURE
• Clean Architecture
• Design Patters
• Testing Patterns
BASIC ITEMS FOR A TEST ARCHITECTURE
with focus on web automation
an abstract class that will take
care of commons actions in
your automated tests
FACTORY
the Design Pattern to create,
in our case, browser instances
LISTENER
a non-intrusive way to know
what is happening during the
test execution
BASE TEST
BASE ARCHITECTURE
to apply DRY and KISS
Smart use of inheritance
• test inherit common test actions
One test case per class
• provide an easy way to add more tests
• ease division of tests in suites
BASE TEST
CLASS
TEST 1
TEST 2
TEST N
• browser initialization/close
• open/close database, logs …
• connect/disconnect servers
• login/logout app
BASE TEST CLASS
Apply Factory Design Pattern will help us to create a browser instance and make easy the
parallel execution against many environments.
BROWSER
FACTORY
chrome firefox edge
FACTORY CLASS
safari
Using TestNG we can use some listeners that allow modifying (or just watch)
the test behaviors. Helpful o watch test lifecycle and do something.
LISTENERS
MY TEST
LISTENER
• test start
• test finish
• on test fail
• on test skipped
• on start
• on finish
• on success
TEST 1
@MyTestListener
TEST 2
@MyTestListener
TEST N
@MyTestListener
way to create more
readability service class
LOAD
STRATEGY
making the code wait for
async executions
FLUENT
INTERFACE
create tests in a fluent
way
PAGE
FACTORY
PAGE OBJECTS MODEL
more maintainability and readability
TESTSPAGE OBJECTSAPP PAGES
PAGE OBJECTS
Page Object is a class that serves as an interface to a page of your web page.
The class provides methods to do the page actions.
Tests will use these methods.
PAGE OBJECT
FLIGHT SELECTION
PAGE OBJECT
SEARCH
PAGE OBJECT
PAYMENT
SUCCESSFUL BOOK
INVALID DATES
SEARCH PAGE
FLIGHT SELECTION
PAGE
PAYMENT PAGE PAYMENT PROBLEM
LOAD STRATEGY
A Load Strategy is responsible for wait for a certain time by any event on the
web page, most of the time related to async requests (Ajax).
PAUSE
IMPLICITLY
any type of sleep that will
pause the execution
you’ll won’t know, in your
code witch action will wait
EXPLICITLY
AJAX LOCATORthe best choice to use with
Page Factory strategy
with this strategy you can see, in the
code, witch element will take time
FLUENT INTERFACE
Creates a method chaining to perform a series of actions to make the code
more readable and easy to use.
@Test
public void testWithoutFluentInterface() {
GeneralMenuPage menu = new GeneralMenuPage();
menu.clickinExperience();
menu.clickInOurFleet();
menu.clickInSeatingCharts();
}
@Test
public void testWithFluentInterface() {
GeneralMenuPage menu = new GeneralMenuPage();
menu.clickinExperience().clickInOurFleet().clickInSeatingCharts();
}
know all the exceptions to
solve the problems root-cause
GENERAL
REPORTS
evidence and
executive reports
EXCEPTION
LOGS
LOGS AND REPORTS
because we need to know about any error
By using any log strategy, saving a log file, we can understand the common
errors occurred during the test execution.
These errors can be of:
• assertion errors
• timeout exceptions
• locator exception
• an exception on your architecture
If you want to analyze test errors across teams a good way is using
Elasticsearch with Grafana/Kibana.
EXCEPTION LOGS
Generate xUnit reports to attach on your
CI/CD and, rapidly, see the test status.
GENERAL REPORTS
Create an executive report to provide
information and evidence about the test
execution.
This report may contain screenshots when
an error occurs to help to analyze the root
cause of a problem.
pass the responsibility of
non-sensitive data
generation to a framework
STATIC/DYNAMIC
GENERATION
create the sensitive data
and put under your control
FAKES
DATA GENERATION
solve one of the biggest problems
Ability to create an approach to generate non-sensitive data for your test
without the necessity to manually change the test data in each execution.
There’re a lot of tools to create these type of data.
FAKE GENERATION
Example with javafaker
Faker faker = new Faker(new Locale("pt-BR"));
faker.name().fullName();
faker.address().fullAddress();
faker.internet().emailAddress();
faker.business().creditCardNumber();
faker.date().birthday();
When the data cause different behaviors in your application.
STATIC / DYNAMIC GENERATION
A Static approach can be implemented with any kind of solution, like:
• Files
• CSV | JSON | TXT | YML
• Database
• Mock
A Dynamic approach can be created according to your context.
Used for remove the maintenance of test data
• Queries in a database
• Consume data from a static poll
run many tests at the same
time in a chosen target
GRID AND
AUTO-SCALE
using the proper containers,
we can speed up the test
execution
PARALLELISM
PARALLEL EXECUTION
to speed up your test execution
maven-surefire-
plugin
Have an ability to
control how many
threads we need
inside the pom.xml
Junit 4
Has an experimental
class called
ParallelComputer
TestNG
Control the
parallelism thought
the suites in any level
of tests (class,
methods, etc..)
Parallelism, under test, is the ability to perform the same test in different
conditions (browser, devices, etc...) or different tests at the same time.
PARALLELISM
GRID SCHEMA
Node Windows Node MacOSX Node Linux
Test Script Hub
send
capabilities
understands the capabilities
and send to proper node
WAYS TO CREATE A GRID
LOCAL
Uses machines inside an
infrastructure.
Can be a bare-metal desktop
or a virtual machine
CLOUD
Uses a cloud infrastructure
platform to create virtual
machines
CONTAINERS
Uses containers (locally or
cloud-based) to create the
infrastructure and support
orchestration
CONTAINERS TO AUTO-SCALE
• has containers for each aspect of the grid
• selenium-hub
• selenium-node-chrome
• selenium-node-firefox
• auto-scale based on hardware utilization
or with some in-house solution
• Uses a custom container
elgalu/selenium that provides:
• live Preview with VNC
• video recording
• dashboard
• automatic auto-scale containers
based on the number of tests
SELENIUM
create a pipeline for any
type of test execution
DIVIDE ALL TYPES
OF EXECUTION
PIPELINE
make the execution process clear
FUNCTIONAL TESTACCEPTANCE TESTSMOKE TEST
DIVIDE ALL TYPES OF EXECUTION
WEB PART IN THE PIPELINE
Most important tests
in a business
perspective
Most used user
scenarios
Assure that critical
functionalities
works
each build
your determination
e.g.: release
Your determination
e.g.: release
THANK YOU!
TATIANE NOGUEIRA
Consultant Developer @ Thoughtworks
@tatianeaguirres
linkedin.com/tatianeaguirres
ELIAS NOGUEIRA
Software Engineer in Test @ Sicredi
@eliasnogueira
linkedin.com/eliasnogueira
https://github.com/eliasnogueira/public-speaking

Contenu connexe

Tendances

Tendances (20)

Selenium Concepts
Selenium ConceptsSelenium Concepts
Selenium Concepts
 
Selenium WebDriver with Java
Selenium WebDriver with JavaSelenium WebDriver with Java
Selenium WebDriver with Java
 
Selenium
SeleniumSelenium
Selenium
 
Selenium- A Software Testing Tool
Selenium- A Software Testing ToolSelenium- A Software Testing Tool
Selenium- A Software Testing Tool
 
Cypress first impressions
Cypress first impressionsCypress first impressions
Cypress first impressions
 
Selenium with java
Selenium with javaSelenium with java
Selenium with java
 
Selenium
SeleniumSelenium
Selenium
 
testng
testngtestng
testng
 
Introduction to Integration Testing With Cypress
Introduction to Integration Testing With CypressIntroduction to Integration Testing With Cypress
Introduction to Integration Testing With Cypress
 
Selenium test automation
Selenium test automationSelenium test automation
Selenium test automation
 
Automation Testing by Selenium Web Driver
Automation Testing by Selenium Web DriverAutomation Testing by Selenium Web Driver
Automation Testing by Selenium Web Driver
 
Test Automation Using Python | Edureka
Test Automation Using Python | EdurekaTest Automation Using Python | Edureka
Test Automation Using Python | Edureka
 
Automation Testing using Selenium
Automation Testing using SeleniumAutomation Testing using Selenium
Automation Testing using Selenium
 
Selenium Presentation at Engineering Colleges
Selenium Presentation at Engineering CollegesSelenium Presentation at Engineering Colleges
Selenium Presentation at Engineering Colleges
 
Selenium Page Object Model Using Page Factory | Selenium Tutorial For Beginne...
Selenium Page Object Model Using Page Factory | Selenium Tutorial For Beginne...Selenium Page Object Model Using Page Factory | Selenium Tutorial For Beginne...
Selenium Page Object Model Using Page Factory | Selenium Tutorial For Beginne...
 
Selenium WebDriver
Selenium WebDriverSelenium WebDriver
Selenium WebDriver
 
Setting up Page Object Model in Automation Framework
Setting up Page Object Model in Automation FrameworkSetting up Page Object Model in Automation Framework
Setting up Page Object Model in Automation Framework
 
Test automation process
Test automation processTest automation process
Test automation process
 
Hybrid Automation Framework Development introduction
Hybrid Automation Framework Development introductionHybrid Automation Framework Development introduction
Hybrid Automation Framework Development introduction
 
An overview of selenium webdriver
An overview of selenium webdriverAn overview of selenium webdriver
An overview of selenium webdriver
 

Similaire à Create an architecture for web test automation

Cerberus_Presentation1
Cerberus_Presentation1Cerberus_Presentation1
Cerberus_Presentation1
CIVEL Benoit
 
QUALITY ASSURANCE and VALIDATION ENGINEER
QUALITY ASSURANCE and VALIDATION ENGINEER QUALITY ASSURANCE and VALIDATION ENGINEER
QUALITY ASSURANCE and VALIDATION ENGINEER
Piyush Prakash
 
Testing Rapidly Changing Applications With Self-Testing Object-Oriented Selen...
Testing Rapidly Changing Applications With Self-Testing Object-Oriented Selen...Testing Rapidly Changing Applications With Self-Testing Object-Oriented Selen...
Testing Rapidly Changing Applications With Self-Testing Object-Oriented Selen...
seleniumconf
 
Into The Box 2018 | Assert control over your legacy applications
Into The Box 2018 | Assert control over your legacy applicationsInto The Box 2018 | Assert control over your legacy applications
Into The Box 2018 | Assert control over your legacy applications
Ortus Solutions, Corp
 
Kelly potvin nosurprises_odtug_oow12
Kelly potvin nosurprises_odtug_oow12Kelly potvin nosurprises_odtug_oow12
Kelly potvin nosurprises_odtug_oow12
Enkitec
 

Similaire à Create an architecture for web test automation (20)

1,2,3 … Testing : Is this thing on(line)? with Mike Martin
1,2,3 … Testing : Is this thing on(line)? with Mike Martin1,2,3 … Testing : Is this thing on(line)? with Mike Martin
1,2,3 … Testing : Is this thing on(line)? with Mike Martin
 
Cerberus : Framework for Manual and Automated Testing (Web Application)
Cerberus : Framework for Manual and Automated Testing (Web Application)Cerberus : Framework for Manual and Automated Testing (Web Application)
Cerberus : Framework for Manual and Automated Testing (Web Application)
 
Cerberus_Presentation1
Cerberus_Presentation1Cerberus_Presentation1
Cerberus_Presentation1
 
Test automation lesson
Test automation lessonTest automation lesson
Test automation lesson
 
Continuous Delivery - Automate & Build Better Software with Travis CI
Continuous Delivery - Automate & Build Better Software with Travis CIContinuous Delivery - Automate & Build Better Software with Travis CI
Continuous Delivery - Automate & Build Better Software with Travis CI
 
Writing Well Abstracted Automation on Foundations of Jello
Writing Well Abstracted Automation on Foundations of JelloWriting Well Abstracted Automation on Foundations of Jello
Writing Well Abstracted Automation on Foundations of Jello
 
QUALITY ASSURANCE and VALIDATION ENGINEER
QUALITY ASSURANCE and VALIDATION ENGINEER QUALITY ASSURANCE and VALIDATION ENGINEER
QUALITY ASSURANCE and VALIDATION ENGINEER
 
Testing Rapidly Changing Applications With Self-Testing Object-Oriented Selen...
Testing Rapidly Changing Applications With Self-Testing Object-Oriented Selen...Testing Rapidly Changing Applications With Self-Testing Object-Oriented Selen...
Testing Rapidly Changing Applications With Self-Testing Object-Oriented Selen...
 
JLove - Replicating production on your laptop using the magic of containers
JLove - Replicating production on your laptop using the magic of containersJLove - Replicating production on your laptop using the magic of containers
JLove - Replicating production on your laptop using the magic of containers
 
jDriver Presentation
jDriver PresentationjDriver Presentation
jDriver Presentation
 
How to Build Your Own Test Automation Framework?
How to Build Your Own Test Automation Framework?How to Build Your Own Test Automation Framework?
How to Build Your Own Test Automation Framework?
 
Jonathon Wright - Intelligent Performance Cognitive Learning (AIOps)
Jonathon Wright - Intelligent Performance Cognitive Learning (AIOps)Jonathon Wright - Intelligent Performance Cognitive Learning (AIOps)
Jonathon Wright - Intelligent Performance Cognitive Learning (AIOps)
 
Into The Box 2018 | Assert control over your legacy applications
Into The Box 2018 | Assert control over your legacy applicationsInto The Box 2018 | Assert control over your legacy applications
Into The Box 2018 | Assert control over your legacy applications
 
Managing Millions of Tests Using Databricks
Managing Millions of Tests Using DatabricksManaging Millions of Tests Using Databricks
Managing Millions of Tests Using Databricks
 
Getting your mobile test automation process in place - using Cucumber and Cal...
Getting your mobile test automation process in place - using Cucumber and Cal...Getting your mobile test automation process in place - using Cucumber and Cal...
Getting your mobile test automation process in place - using Cucumber and Cal...
 
Working Software Over Comprehensive Documentation
Working Software Over Comprehensive DocumentationWorking Software Over Comprehensive Documentation
Working Software Over Comprehensive Documentation
 
JBCN_Testing_With_Containers
JBCN_Testing_With_ContainersJBCN_Testing_With_Containers
JBCN_Testing_With_Containers
 
Kelly potvin nosurprises_odtug_oow12
Kelly potvin nosurprises_odtug_oow12Kelly potvin nosurprises_odtug_oow12
Kelly potvin nosurprises_odtug_oow12
 
Automate across Platform, OS, Technologies with TaaS
Automate across Platform, OS, Technologies with TaaSAutomate across Platform, OS, Technologies with TaaS
Automate across Platform, OS, Technologies with TaaS
 
Ensuring Performance in a Fast-Paced Environment (CMG 2014)
Ensuring Performance in a Fast-Paced Environment (CMG 2014)Ensuring Performance in a Fast-Paced Environment (CMG 2014)
Ensuring Performance in a Fast-Paced Environment (CMG 2014)
 

Plus de Elias Nogueira

Plus de Elias Nogueira (20)

Criando uma arquitetura para seus testes de API com RestAssured
Criando uma arquitetura para seus testes de API com RestAssuredCriando uma arquitetura para seus testes de API com RestAssured
Criando uma arquitetura para seus testes de API com RestAssured
 
De a máxima cobertura nos seus testes de API
De a máxima cobertura nos seus testes de APIDe a máxima cobertura nos seus testes de API
De a máxima cobertura nos seus testes de API
 
Automação e virtualização de serviços
Automação e virtualização de serviçosAutomação e virtualização de serviços
Automação e virtualização de serviços
 
Usando containers com auto-escala de testes
Usando containers com auto-escala de testesUsando containers com auto-escala de testes
Usando containers com auto-escala de testes
 
Coach por Imersão - Buscando a excelência técnica com o time
Coach por Imersão - Buscando a excelência técnica com o timeCoach por Imersão - Buscando a excelência técnica com o time
Coach por Imersão - Buscando a excelência técnica com o time
 
O Agile Coach pode (e muitas vezes deve) ser técnico
O Agile Coach pode (e muitas vezes deve) ser técnicoO Agile Coach pode (e muitas vezes deve) ser técnico
O Agile Coach pode (e muitas vezes deve) ser técnico
 
Paralelize seus testes web e mobile para ter feedbacks mais rápidos
Paralelize seus testes web e mobile para ter feedbacks mais rápidosParalelize seus testes web e mobile para ter feedbacks mais rápidos
Paralelize seus testes web e mobile para ter feedbacks mais rápidos
 
Como 4 Agile Coaches trabalham em uma Transformação Ágil
Como 4 Agile Coaches trabalham em uma Transformação Ágil Como 4 Agile Coaches trabalham em uma Transformação Ágil
Como 4 Agile Coaches trabalham em uma Transformação Ágil
 
Papel do QA na Transformação Ágil
Papel do QA na Transformação ÁgilPapel do QA na Transformação Ágil
Papel do QA na Transformação Ágil
 
BDD não é automação de teste - Scrum Gathering
BDD não é automação de teste - Scrum GatheringBDD não é automação de teste - Scrum Gathering
BDD não é automação de teste - Scrum Gathering
 
Como criar e executar testes paralelos web usando Selenium e containers
Como criar e executar testes paralelos web usando Selenium e containersComo criar e executar testes paralelos web usando Selenium e containers
Como criar e executar testes paralelos web usando Selenium e containers
 
Improve Yourself -- Learn the Skills, Join the Community - Tests
Improve Yourself -- Learn the Skills, Join the Community - TestsImprove Yourself -- Learn the Skills, Join the Community - Tests
Improve Yourself -- Learn the Skills, Join the Community - Tests
 
Confie no seu pipeline: Teste automaticamente um aplicativo Java de ponta a p...
Confie no seu pipeline: Teste automaticamente um aplicativo Java de ponta a p...Confie no seu pipeline: Teste automaticamente um aplicativo Java de ponta a p...
Confie no seu pipeline: Teste automaticamente um aplicativo Java de ponta a p...
 
BDD não é Automação de Testes
BDD não é Automação de TestesBDD não é Automação de Testes
BDD não é Automação de Testes
 
Criando uma grid para execução de testes paralelo com Appium
Criando uma grid para execução de testes paralelo com AppiumCriando uma grid para execução de testes paralelo com Appium
Criando uma grid para execução de testes paralelo com Appium
 
Como ter sucesso ministrando uma palestra técnica
Como ter sucesso ministrando uma palestra técnicaComo ter sucesso ministrando uma palestra técnica
Como ter sucesso ministrando uma palestra técnica
 
Quais são os steps de que deve conter na sua pipeline?
Quais são os steps de que deve conter na sua pipeline?Quais são os steps de que deve conter na sua pipeline?
Quais são os steps de que deve conter na sua pipeline?
 
Tem que testar mesmo?
Tem que testar mesmo?Tem que testar mesmo?
Tem que testar mesmo?
 
Testes em todos os niveis de planejamento
Testes em todos os niveis de planejamentoTestes em todos os niveis de planejamento
Testes em todos os niveis de planejamento
 
Coaching the Agile Coach
Coaching the Agile CoachCoaching the Agile Coach
Coaching the Agile Coach
 

Dernier

EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
Earley Information Science
 

Dernier (20)

04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Tech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfTech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdf
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
Evaluating the top large language models.pdf
Evaluating the top large language models.pdfEvaluating the top large language models.pdf
Evaluating the top large language models.pdf
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 

Create an architecture for web test automation

  • 1. ELIAS NOGUEIRA TATIANE NOGUEIRA @eliasnogueira @tatianeaguirres
  • 2. TATIANE NOGUEIRA Consultant Developer @ Thoughtworks @tatianeaguirres linkedin.com/tatianeaguirres ELIAS NOGUEIRA Software Engineer in Test @ Sicredi @eliasnogueira linkedin.com/eliasnogueira
  • 3. THE STACK LANGUAGE TESTING INFRADATA GENERATION javafaker LOG & REPORTS ExtentReports
  • 4. PAGE OBJECT MODEL • Page Objects • Page Factory • Abstraction • Waiting Strategy PARALLEL EXECUTION • Infrastructure • Containers LOGS AND REPORTS • Exception logs • General reports • Evidence DATA GENERATION • Fake • Static creation • Dynamic creation PIPELINE • Execution strategy BASE ARCHITECTURE • Clean Architecture • Design Patters • Testing Patterns BASIC ITEMS FOR A TEST ARCHITECTURE with focus on web automation
  • 5. an abstract class that will take care of commons actions in your automated tests FACTORY the Design Pattern to create, in our case, browser instances LISTENER a non-intrusive way to know what is happening during the test execution BASE TEST BASE ARCHITECTURE to apply DRY and KISS
  • 6. Smart use of inheritance • test inherit common test actions One test case per class • provide an easy way to add more tests • ease division of tests in suites BASE TEST CLASS TEST 1 TEST 2 TEST N • browser initialization/close • open/close database, logs … • connect/disconnect servers • login/logout app BASE TEST CLASS
  • 7. Apply Factory Design Pattern will help us to create a browser instance and make easy the parallel execution against many environments. BROWSER FACTORY chrome firefox edge FACTORY CLASS safari
  • 8. Using TestNG we can use some listeners that allow modifying (or just watch) the test behaviors. Helpful o watch test lifecycle and do something. LISTENERS MY TEST LISTENER • test start • test finish • on test fail • on test skipped • on start • on finish • on success TEST 1 @MyTestListener TEST 2 @MyTestListener TEST N @MyTestListener
  • 9. way to create more readability service class LOAD STRATEGY making the code wait for async executions FLUENT INTERFACE create tests in a fluent way PAGE FACTORY PAGE OBJECTS MODEL more maintainability and readability
  • 10. TESTSPAGE OBJECTSAPP PAGES PAGE OBJECTS Page Object is a class that serves as an interface to a page of your web page. The class provides methods to do the page actions. Tests will use these methods. PAGE OBJECT FLIGHT SELECTION PAGE OBJECT SEARCH PAGE OBJECT PAYMENT SUCCESSFUL BOOK INVALID DATES SEARCH PAGE FLIGHT SELECTION PAGE PAYMENT PAGE PAYMENT PROBLEM
  • 11. LOAD STRATEGY A Load Strategy is responsible for wait for a certain time by any event on the web page, most of the time related to async requests (Ajax). PAUSE IMPLICITLY any type of sleep that will pause the execution you’ll won’t know, in your code witch action will wait EXPLICITLY AJAX LOCATORthe best choice to use with Page Factory strategy with this strategy you can see, in the code, witch element will take time
  • 12. FLUENT INTERFACE Creates a method chaining to perform a series of actions to make the code more readable and easy to use. @Test public void testWithoutFluentInterface() { GeneralMenuPage menu = new GeneralMenuPage(); menu.clickinExperience(); menu.clickInOurFleet(); menu.clickInSeatingCharts(); } @Test public void testWithFluentInterface() { GeneralMenuPage menu = new GeneralMenuPage(); menu.clickinExperience().clickInOurFleet().clickInSeatingCharts(); }
  • 13. know all the exceptions to solve the problems root-cause GENERAL REPORTS evidence and executive reports EXCEPTION LOGS LOGS AND REPORTS because we need to know about any error
  • 14. By using any log strategy, saving a log file, we can understand the common errors occurred during the test execution. These errors can be of: • assertion errors • timeout exceptions • locator exception • an exception on your architecture If you want to analyze test errors across teams a good way is using Elasticsearch with Grafana/Kibana. EXCEPTION LOGS
  • 15. Generate xUnit reports to attach on your CI/CD and, rapidly, see the test status. GENERAL REPORTS Create an executive report to provide information and evidence about the test execution. This report may contain screenshots when an error occurs to help to analyze the root cause of a problem.
  • 16. pass the responsibility of non-sensitive data generation to a framework STATIC/DYNAMIC GENERATION create the sensitive data and put under your control FAKES DATA GENERATION solve one of the biggest problems
  • 17. Ability to create an approach to generate non-sensitive data for your test without the necessity to manually change the test data in each execution. There’re a lot of tools to create these type of data. FAKE GENERATION Example with javafaker Faker faker = new Faker(new Locale("pt-BR")); faker.name().fullName(); faker.address().fullAddress(); faker.internet().emailAddress(); faker.business().creditCardNumber(); faker.date().birthday();
  • 18. When the data cause different behaviors in your application. STATIC / DYNAMIC GENERATION A Static approach can be implemented with any kind of solution, like: • Files • CSV | JSON | TXT | YML • Database • Mock A Dynamic approach can be created according to your context. Used for remove the maintenance of test data • Queries in a database • Consume data from a static poll
  • 19. run many tests at the same time in a chosen target GRID AND AUTO-SCALE using the proper containers, we can speed up the test execution PARALLELISM PARALLEL EXECUTION to speed up your test execution
  • 20. maven-surefire- plugin Have an ability to control how many threads we need inside the pom.xml Junit 4 Has an experimental class called ParallelComputer TestNG Control the parallelism thought the suites in any level of tests (class, methods, etc..) Parallelism, under test, is the ability to perform the same test in different conditions (browser, devices, etc...) or different tests at the same time. PARALLELISM
  • 21. GRID SCHEMA Node Windows Node MacOSX Node Linux Test Script Hub send capabilities understands the capabilities and send to proper node
  • 22. WAYS TO CREATE A GRID LOCAL Uses machines inside an infrastructure. Can be a bare-metal desktop or a virtual machine CLOUD Uses a cloud infrastructure platform to create virtual machines CONTAINERS Uses containers (locally or cloud-based) to create the infrastructure and support orchestration
  • 23. CONTAINERS TO AUTO-SCALE • has containers for each aspect of the grid • selenium-hub • selenium-node-chrome • selenium-node-firefox • auto-scale based on hardware utilization or with some in-house solution • Uses a custom container elgalu/selenium that provides: • live Preview with VNC • video recording • dashboard • automatic auto-scale containers based on the number of tests SELENIUM
  • 24. create a pipeline for any type of test execution DIVIDE ALL TYPES OF EXECUTION PIPELINE make the execution process clear
  • 25. FUNCTIONAL TESTACCEPTANCE TESTSMOKE TEST DIVIDE ALL TYPES OF EXECUTION WEB PART IN THE PIPELINE Most important tests in a business perspective Most used user scenarios Assure that critical functionalities works each build your determination e.g.: release Your determination e.g.: release
  • 26. THANK YOU! TATIANE NOGUEIRA Consultant Developer @ Thoughtworks @tatianeaguirres linkedin.com/tatianeaguirres ELIAS NOGUEIRA Software Engineer in Test @ Sicredi @eliasnogueira linkedin.com/eliasnogueira https://github.com/eliasnogueira/public-speaking