SlideShare uma empresa Scribd logo
AUTOMAÇÃO DE TESTE PARA
REST | WEB | MOBILE
E L I A S N O G U E I R A
@ e l i a s n o g u e i r a
Elias Nogueira
@eliasnogueira
Sênior QA Engineer, Agile Coach & Trainer - Adaptworks
Professor de Pós Graduação – Unisinos/RS
Coordenador da Trilha de Teste - The Developers Conference
3
Validação intermediária entre
back e front end
Teste no serviço REST
Para garantir a estabilidade
durante os ciclos contínuos
Mock do serviço REST
Testes Funcionais e
Aceitação na interface Mobile
Teste na camada Mobile
Testes Funcionais e
Aceitação na Interface Web
Teste na camada Web
CONJUNTO DE FERRAMENTAS
A seleção das ferramentas corretas é um ponto chave no seu processo de automação
4
API REST
Documentação da API alvo dos testes
ExemploURLVerboO que faz
/api/person/api/personGETListar pessoas
/api/person/:id/api/person/27GETRetornar a pessoa pelo id
/api/person/api/personPOSTAdicionar as pessoas
/api/person/:id/api/person/33PUTAtualizar uma pessoa pelo id
/api/person/:id/api/person/52DELETERemover uma pessoa pelo id
5
AUTOMAÇÃO DE SERVIÇOS REST
Atualmente uma das camadas mais importantes da aplicação
Os testes são tão necessários quanto na camada visual
Sempre validar as transações de negócio
Em novos serviços, sempre validar manualmente primeiro
CURL (CLI)
PostMan (Google Chrome)
RESTClient (Firefox)
6
MOCK DE SERVIÇOS REST
A forma mais fácil e rápida de criar mocks em Java
Microframework com o poder do Java 8
Ótima pedida para criar micro serviços
Fácil implementação para criar serviços REST
http://sparkjava.com
7
MOCK DE SERVIÇOS REST
Porque você não vai testar em produção, correto?
Exemplo de um mock com com dados fixos
Usar dados fixos pode ser uma boa pedida para não ter
grandes manutenções no seu código de mock
8
MOCK DE SERVIÇOS REST
Porque você não vai testar em produção, correto?
Exemplo de um mock com com dados dinâmicos
Dependendo da complexidade de seu código e conjunto de massa
de dados podemos criar uma abordagem com dados pré-definidos
REST
ASSURED
DSL de fácil utilização para automatizar serviços REST
Sintaxe de give-when-then
https://github.com/jayway/rest-assured
10
O QUE EU PRECISO?
O que é necessário para escrever um teste com RESTAssured
Importar um conjunto de classes estáticas
Informar URL Base, contexto de acesso e porta (se necessário)
import static com.jayway.restassured.RestAssured.*;
import static org.hamcrest.Matchers.*;
baseURI = "http://localhost";
basePath = "/api";
port = 4567;
11
AUTOMAÇÃO DE SERVIÇOS REST
Nos métodos de pré e pós condição apontamos a URL principal, iniciamos e fechamos o Mock com Spark
Pré e Pós condição antes de cada testes
Abordagem obrigatória e automatizada para iniciar seus
testes utilizando o mock com Spark
12
AUTOMAÇÃO DE SERVIÇOS REST
O RESTAssured possui uma API fluente para automação dos serviços REST
Exemplo de um teste automatizado com RESTAssured
Um GET sendo enviado com ID 1 (when) e os dados de
retorno sendo validados na body do retorno (then)
SELENIUM
WEBDRIVER
API para automação em browser web reais
Diferentes linguagens suportadas
http://seleniumhq.org
Virando um padrão W3C
Simula um usuário real
14
O QUE EU PRECISO?
O que é necessário para escrever um teste com Selenium WebDriver
Browser alvo instalado
Alguma ferramenta de inspeção de código HTML
Nativa do browser
Firebug
[ProTip] Algum software para mudar a velocidade de conexão
15
INSPECIONANDO ELEMENTOS
Método para obter a forma de localizá-lo para interação futura
Botão de
inspeção
16
PROCESSO DE AUTOMAÇÃO
O Selenim WebDriver possui um pequeno processo simples e fácil de lembrar
Script de Teste
com Selenium
Inicialização do browser e controles
de navegação (back, forward,
refresh)
Navegação
Formas de localizar um elemento
web
id, name, cssSelector, xpath
Interrogação
Esperas por elementos dinâmicos
e/ou requisições assíncronas
baseadas em elementos
Sincronização
Forma de interagir com os elementos
click, clear, sendKeys, getText
Manipulação
1
2
3
4
17
AUTOMAÇÃO DE TESTE WEB
O Selenium WebDriver possui uma API de fácil entendimento
Exemplo de um teste automatizado com Selenium WebDriver
Exemplo completo com navegação, interrogação, manipulação e sincronização
18
1
2
3
4
Usar Page Objects para modularizar os testes
Abusar dos Padrões de Projeto para facilitar a manutenção
Execute o teste em uma velocidade de internet menor
Use XPATH somente quando necessário
DICAS PARA AUTOMAÇÃO WEB
Para uma automação de teste web mais profissional
19
DICA PARA SUITE DE TESTE WEB
É importante dividir os testes em suítes específicas para um maior retorno e velocidade de feedback
HEADLESS TEST ACCEPTANCE TEST FUNCTIONAL TEST
SUITE DE AUTOMAÇÃO DE
TESTE
1 2 3 4
DAR VELOCIDADE E FEEDBACK MAIS RÁPIDO NOS CICLOS CONTÍNUOS
VALIDAR O SISTEMA COMO A UTILIZACÃO DE UM USUÁRIO
VALIDAR NA PERSPECTIVA DE REGRAS DE NEGÓCIO
1
2
3
APPIUM
API para automação para dispositivos mobile
Suporta Android e iOS
http://appium.io
Executa em emuladores ou dispositivos
Teste em aplicações nativas ou híbridas
21
O QUE EU PRECISO?
O que é necessário para escrever um teste com Appium
Android SDK
Appium (via Appium.app ou Nodejs)
Configurar PATHS (tools / platform-tools)
SDK Platform + System Image
Emulador / Simulador ou Dispositivo
22
INSPECIONANDO COMPONENTES
Podemos inspecionar através do uiautomatorviewer
Botão de
inspeção
Componente
Inspecionado
Atributos do
componente
23
PROCESSO DE AUTOMAÇÃO
Série de passos para criação do script de automação com Appium
Script de Teste
com Appium
Definição de dados padrão
plataforma, dispositivo, app)
DesiredCapabilities
Abrir a conexão com o dispositivo
via Appium.app ou Nodejs
Sessão
Esperas por elementos dinâmicos
e/ou requisições assíncronas
baseadas em elementos
Sincronização
Localizar e interagir com componentes
Mesma forma do Selenium WebDriver
Interrogação e Manipulação
1
2
3
4
24
AUTOMAÇÃO DE TESTE MOBILE
Tirando o DesiredCapabilities e Sessão não é igual ao Selenium?
Exemplo de script para um app pré instalada
Exemplo completo de um teste em uma app Android
25
DICAS PARA AUTOMAÇÃO MOBILE
Para ter scripts de automação mobile mais profissional
1
2
3
4
Execute testes instalando a app e com ela pré instalada
Crie uma suíte focada no usuário final
Teste em diferentes redes (Wi-Fi, 3G…)
Teste requisitos não funcionais
Obrigado pela
presença!
Código completo de exemplo disponível no GitHub
http://eliasnogueira.com elias.nogueira@gmail.co
m
@eliasnogueira fb.com/elias.nogueira.teste
https://github.com/eliasnogueira/javaone-testing-automation

Mais conteúdo relacionado

Mais procurados

[MTC 2021] Criando testes automatizados rápidos e robustos com cypress - Walm...
[MTC 2021] Criando testes automatizados rápidos e robustos com cypress - Walm...[MTC 2021] Criando testes automatizados rápidos e robustos com cypress - Walm...
[MTC 2021] Criando testes automatizados rápidos e robustos com cypress - Walm...
minastestingconference
 
Rest assured
Rest assuredRest assured
Rest assured
Varun Deshpande
 
testng
testngtestng
Testes em uma arquitetura com messageria/streaming (Kafka)
Testes em uma arquitetura com messageria/streaming (Kafka)Testes em uma arquitetura com messageria/streaming (Kafka)
Testes em uma arquitetura com messageria/streaming (Kafka)
Robson Agapito Correa
 
Todas as abordagens de testes dentro do ágil
Todas as abordagens de testes dentro do ágilTodas as abordagens de testes dentro do ágil
Todas as abordagens de testes dentro do ágil
Elias Nogueira
 
Karate for Complex Web-Service API Testing by Peter Thomas
Karate for Complex Web-Service API Testing by Peter ThomasKarate for Complex Web-Service API Testing by Peter Thomas
Karate for Complex Web-Service API Testing by Peter Thomas
intuit_india
 
TDC2015: Testes em APIs REST com Rest-Assured
TDC2015: Testes em APIs REST com Rest-AssuredTDC2015: Testes em APIs REST com Rest-Assured
TDC2015: Testes em APIs REST com Rest-Assured
Júlio de Lima
 
API Testing Using REST Assured with TestNG
API Testing Using REST Assured with TestNGAPI Testing Using REST Assured with TestNG
API Testing Using REST Assured with TestNG
Siddharth Sharma
 
The Future of QA at Atlassian
The Future of QA at AtlassianThe Future of QA at Atlassian
The Future of QA at Atlassian
Atlassian
 
DevCamp - O papel de um testador em uma equipe ágil
DevCamp - O papel de um testador em uma equipe ágilDevCamp - O papel de um testador em uma equipe ágil
DevCamp - O papel de um testador em uma equipe ágil
Elias Nogueira
 
Modern CI/CD Pipeline Using Azure DevOps
Modern CI/CD Pipeline Using Azure DevOpsModern CI/CD Pipeline Using Azure DevOps
Modern CI/CD Pipeline Using Azure DevOps
GlobalLogic Ukraine
 
Junit
JunitJunit
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
Elias Nogueira
 
Como criar testes rápidos e robustos com Cypress
Como criar testes rápidos e robustos com CypressComo criar testes rápidos e robustos com Cypress
Como criar testes rápidos e robustos com Cypress
Walmyr Lima e Silva Filho
 
Test Automation Framework Designs
Test Automation Framework DesignsTest Automation Framework Designs
Test Automation Framework Designs
Sauce Labs
 
Inverting The Testing Pyramid
Inverting The Testing PyramidInverting The Testing Pyramid
Inverting The Testing Pyramid
Naresh Jain
 
Testes E2E em Cypress com JS
Testes E2E em Cypress com JSTestes E2E em Cypress com JS
Testes E2E em Cypress com JS
Nàtali Cabral
 
Karate - powerful and simple framework for REST API automation testing
Karate - powerful and simple framework for REST API automation testingKarate - powerful and simple framework for REST API automation testing
Karate - powerful and simple framework for REST API automation testing
Roman Liubun
 
Karate - Web-Service API Testing Made Simple
Karate - Web-Service API Testing Made SimpleKarate - Web-Service API Testing Made Simple
Karate - Web-Service API Testing Made Simple
VodqaBLR
 
Software Testing Maturity Model and Assessment by Abstracta
Software Testing Maturity Model and Assessment by AbstractaSoftware Testing Maturity Model and Assessment by Abstracta
Software Testing Maturity Model and Assessment by Abstracta
Kalei White
 

Mais procurados (20)

[MTC 2021] Criando testes automatizados rápidos e robustos com cypress - Walm...
[MTC 2021] Criando testes automatizados rápidos e robustos com cypress - Walm...[MTC 2021] Criando testes automatizados rápidos e robustos com cypress - Walm...
[MTC 2021] Criando testes automatizados rápidos e robustos com cypress - Walm...
 
Rest assured
Rest assuredRest assured
Rest assured
 
testng
testngtestng
testng
 
Testes em uma arquitetura com messageria/streaming (Kafka)
Testes em uma arquitetura com messageria/streaming (Kafka)Testes em uma arquitetura com messageria/streaming (Kafka)
Testes em uma arquitetura com messageria/streaming (Kafka)
 
Todas as abordagens de testes dentro do ágil
Todas as abordagens de testes dentro do ágilTodas as abordagens de testes dentro do ágil
Todas as abordagens de testes dentro do ágil
 
Karate for Complex Web-Service API Testing by Peter Thomas
Karate for Complex Web-Service API Testing by Peter ThomasKarate for Complex Web-Service API Testing by Peter Thomas
Karate for Complex Web-Service API Testing by Peter Thomas
 
TDC2015: Testes em APIs REST com Rest-Assured
TDC2015: Testes em APIs REST com Rest-AssuredTDC2015: Testes em APIs REST com Rest-Assured
TDC2015: Testes em APIs REST com Rest-Assured
 
API Testing Using REST Assured with TestNG
API Testing Using REST Assured with TestNGAPI Testing Using REST Assured with TestNG
API Testing Using REST Assured with TestNG
 
The Future of QA at Atlassian
The Future of QA at AtlassianThe Future of QA at Atlassian
The Future of QA at Atlassian
 
DevCamp - O papel de um testador em uma equipe ágil
DevCamp - O papel de um testador em uma equipe ágilDevCamp - O papel de um testador em uma equipe ágil
DevCamp - O papel de um testador em uma equipe ágil
 
Modern CI/CD Pipeline Using Azure DevOps
Modern CI/CD Pipeline Using Azure DevOpsModern CI/CD Pipeline Using Azure DevOps
Modern CI/CD Pipeline Using Azure DevOps
 
Junit
JunitJunit
Junit
 
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
 
Como criar testes rápidos e robustos com Cypress
Como criar testes rápidos e robustos com CypressComo criar testes rápidos e robustos com Cypress
Como criar testes rápidos e robustos com Cypress
 
Test Automation Framework Designs
Test Automation Framework DesignsTest Automation Framework Designs
Test Automation Framework Designs
 
Inverting The Testing Pyramid
Inverting The Testing PyramidInverting The Testing Pyramid
Inverting The Testing Pyramid
 
Testes E2E em Cypress com JS
Testes E2E em Cypress com JSTestes E2E em Cypress com JS
Testes E2E em Cypress com JS
 
Karate - powerful and simple framework for REST API automation testing
Karate - powerful and simple framework for REST API automation testingKarate - powerful and simple framework for REST API automation testing
Karate - powerful and simple framework for REST API automation testing
 
Karate - Web-Service API Testing Made Simple
Karate - Web-Service API Testing Made SimpleKarate - Web-Service API Testing Made Simple
Karate - Web-Service API Testing Made Simple
 
Software Testing Maturity Model and Assessment by Abstracta
Software Testing Maturity Model and Assessment by AbstractaSoftware Testing Maturity Model and Assessment by Abstracta
Software Testing Maturity Model and Assessment by Abstracta
 

Semelhante a Automação de Teste para REST, Web e Mobile

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
Elias Nogueira
 
CNQS - Testes Automatizados & Continuous Delivery
CNQS - Testes Automatizados & Continuous DeliveryCNQS - Testes Automatizados & Continuous Delivery
CNQS - Testes Automatizados & Continuous Delivery
Samanta Cicilia
 
Teste de Performance - 3º Encontro da ALATS
Teste de Performance - 3º Encontro da ALATSTeste de Performance - 3º Encontro da ALATS
Teste de Performance - 3º Encontro da ALATS
Fabrício Campos
 
Tipos de automação de teste
Tipos de automação de testeTipos de automação de teste
Tipos de automação de teste
Marcos Pessoa
 
QAOps - Agile Trends 2021
QAOps - Agile Trends 2021QAOps - Agile Trends 2021
QAOps - Agile Trends 2021
Mayara Fernandes
 
Desenvolvimento web ágil com python e web2py
Desenvolvimento web ágil com python e web2pyDesenvolvimento web ágil com python e web2py
Desenvolvimento web ágil com python e web2py
Relsi Maron
 
Caipira agil automacao front end selenium
Caipira agil automacao front end seleniumCaipira agil automacao front end selenium
Caipira agil automacao front end selenium
Qualister
 
Desafio Rest API
Desafio Rest APIDesafio Rest API
Desafio Rest API
Reinaldo Junior
 
Testando sua aplicação asp.net mvc de forma automatizada de ponta a ponta
Testando sua aplicação asp.net mvc de forma automatizada de ponta a pontaTestando sua aplicação asp.net mvc de forma automatizada de ponta a ponta
Testando sua aplicação asp.net mvc de forma automatizada de ponta a ponta
tdc-globalcode
 
[DevOps Carioca] Testes Automatizados
[DevOps Carioca] Testes Automatizados[DevOps Carioca] Testes Automatizados
[DevOps Carioca] Testes Automatizados
Samanta Cicilia
 
Automação de Teste em Front End - Caipira Ágil
Automação de Teste em Front End - Caipira ÁgilAutomação de Teste em Front End - Caipira Ágil
Automação de Teste em Front End - Caipira Ágil
Elias Nogueira
 
Workshop ASP.NET MVC 5
Workshop ASP.NET MVC 5Workshop ASP.NET MVC 5
Workshop ASP.NET MVC 5
Andre A. Verissimo da Silva
 
Automatizando uma app Híbrida
Automatizando uma app HíbridaAutomatizando uma app Híbrida
Automatizando uma app Híbrida
Elias Nogueira
 
Palestra sobre Automação de Testes com Rest-Assured
Palestra sobre Automação de Testes com Rest-AssuredPalestra sobre Automação de Testes com Rest-Assured
Palestra sobre Automação de Testes com Rest-Assured
Qualister
 
Solucionando a Teoria do Caos com Cypress.io
Solucionando a Teoria do Caos com Cypress.ioSolucionando a Teoria do Caos com Cypress.io
Solucionando a Teoria do Caos com Cypress.io
Patrick Monteiro
 
Testando aplicações DataSnap
Testando aplicações DataSnapTestando aplicações DataSnap
Testando aplicações DataSnap
Andreano Lanusse
 
[DevOps Summit]Importância de testes automatizados para sustentar Continuous...
[DevOps Summit]Importância de testes automatizados para sustentar Continuous...[DevOps Summit]Importância de testes automatizados para sustentar Continuous...
[DevOps Summit]Importância de testes automatizados para sustentar Continuous...
Samanta Cicilia
 
Introdução ASP.NET Core
Introdução ASP.NET CoreIntrodução ASP.NET Core
Introdução ASP.NET Core
lacerda2
 
Apresentação acadêmica RASEA
Apresentação acadêmica RASEAApresentação acadêmica RASEA
Apresentação acadêmica RASEA
Cleverson Sacramento
 
Escalando sua aplicação Web com Beanstalk
Escalando sua aplicação Web com BeanstalkEscalando sua aplicação Web com Beanstalk
Escalando sua aplicação Web com Beanstalk
Amazon Web Services LATAM
 

Semelhante a Automação de Teste para REST, Web e Mobile (20)

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
 
CNQS - Testes Automatizados & Continuous Delivery
CNQS - Testes Automatizados & Continuous DeliveryCNQS - Testes Automatizados & Continuous Delivery
CNQS - Testes Automatizados & Continuous Delivery
 
Teste de Performance - 3º Encontro da ALATS
Teste de Performance - 3º Encontro da ALATSTeste de Performance - 3º Encontro da ALATS
Teste de Performance - 3º Encontro da ALATS
 
Tipos de automação de teste
Tipos de automação de testeTipos de automação de teste
Tipos de automação de teste
 
QAOps - Agile Trends 2021
QAOps - Agile Trends 2021QAOps - Agile Trends 2021
QAOps - Agile Trends 2021
 
Desenvolvimento web ágil com python e web2py
Desenvolvimento web ágil com python e web2pyDesenvolvimento web ágil com python e web2py
Desenvolvimento web ágil com python e web2py
 
Caipira agil automacao front end selenium
Caipira agil automacao front end seleniumCaipira agil automacao front end selenium
Caipira agil automacao front end selenium
 
Desafio Rest API
Desafio Rest APIDesafio Rest API
Desafio Rest API
 
Testando sua aplicação asp.net mvc de forma automatizada de ponta a ponta
Testando sua aplicação asp.net mvc de forma automatizada de ponta a pontaTestando sua aplicação asp.net mvc de forma automatizada de ponta a ponta
Testando sua aplicação asp.net mvc de forma automatizada de ponta a ponta
 
[DevOps Carioca] Testes Automatizados
[DevOps Carioca] Testes Automatizados[DevOps Carioca] Testes Automatizados
[DevOps Carioca] Testes Automatizados
 
Automação de Teste em Front End - Caipira Ágil
Automação de Teste em Front End - Caipira ÁgilAutomação de Teste em Front End - Caipira Ágil
Automação de Teste em Front End - Caipira Ágil
 
Workshop ASP.NET MVC 5
Workshop ASP.NET MVC 5Workshop ASP.NET MVC 5
Workshop ASP.NET MVC 5
 
Automatizando uma app Híbrida
Automatizando uma app HíbridaAutomatizando uma app Híbrida
Automatizando uma app Híbrida
 
Palestra sobre Automação de Testes com Rest-Assured
Palestra sobre Automação de Testes com Rest-AssuredPalestra sobre Automação de Testes com Rest-Assured
Palestra sobre Automação de Testes com Rest-Assured
 
Solucionando a Teoria do Caos com Cypress.io
Solucionando a Teoria do Caos com Cypress.ioSolucionando a Teoria do Caos com Cypress.io
Solucionando a Teoria do Caos com Cypress.io
 
Testando aplicações DataSnap
Testando aplicações DataSnapTestando aplicações DataSnap
Testando aplicações DataSnap
 
[DevOps Summit]Importância de testes automatizados para sustentar Continuous...
[DevOps Summit]Importância de testes automatizados para sustentar Continuous...[DevOps Summit]Importância de testes automatizados para sustentar Continuous...
[DevOps Summit]Importância de testes automatizados para sustentar Continuous...
 
Introdução ASP.NET Core
Introdução ASP.NET CoreIntrodução ASP.NET Core
Introdução ASP.NET Core
 
Apresentação acadêmica RASEA
Apresentação acadêmica RASEAApresentação acadêmica RASEA
Apresentação acadêmica RASEA
 
Escalando sua aplicação Web com Beanstalk
Escalando sua aplicação Web com BeanstalkEscalando sua aplicação Web com Beanstalk
Escalando sua aplicação Web com Beanstalk
 

Mais de Elias Nogueira

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
Elias Nogueira
 
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
Elias Nogueira
 
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
Elias Nogueira
 
Create an architecture for web test automation
Create an architecture for web test automationCreate an architecture for web test automation
Create an architecture for web test automation
Elias Nogueira
 
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
Elias Nogueira
 
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
Elias Nogueira
 
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
Elias Nogueira
 
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
Elias Nogueira
 
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
Elias Nogueira
 
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
Elias Nogueira
 
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
Elias Nogueira
 
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?
Elias Nogueira
 
Tem que testar mesmo?
Tem que testar mesmo?Tem que testar mesmo?
Tem que testar mesmo?
Elias Nogueira
 
Coaching the Agile Coach
Coaching the Agile CoachCoaching the Agile Coach
Coaching the Agile Coach
Elias Nogueira
 
Java Test Automation for REST, Web and Mobile
Java Test Automation for REST, Web and MobileJava Test Automation for REST, Web and Mobile
Java Test Automation for REST, Web and Mobile
Elias Nogueira
 
Trust Your Pipeline - Automatically Testing and End-to-End Java Application
Trust Your Pipeline - Automatically Testing and End-to-End Java ApplicationTrust Your Pipeline - Automatically Testing and End-to-End Java Application
Trust Your Pipeline - Automatically Testing and End-to-End Java Application
Elias Nogueira
 
O que é um Agile Coach
O que é um Agile CoachO que é um Agile Coach
O que é um Agile Coach
Elias Nogueira
 
Criando uma grid para execução de teste automatizado funcional e e2e
Criando uma grid para execução de teste automatizado funcional e e2eCriando uma grid para execução de teste automatizado funcional e e2e
Criando uma grid para execução de teste automatizado funcional e e2e
Elias Nogueira
 
A importancia de testes em todos os aspectos
A importancia de testes em todos os aspectosA importancia de testes em todos os aspectos
A importancia de testes em todos os aspectos
Elias Nogueira
 
Testes de ponta a ponta
Testes de ponta a pontaTestes de ponta a ponta
Testes de ponta a ponta
Elias Nogueira
 

Mais de Elias Nogueira (20)

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
 
Create an architecture for web test automation
Create an architecture for web test automationCreate an architecture for web test automation
Create an architecture for web test automation
 
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
 
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
 
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?
 
Coaching the Agile Coach
Coaching the Agile CoachCoaching the Agile Coach
Coaching the Agile Coach
 
Java Test Automation for REST, Web and Mobile
Java Test Automation for REST, Web and MobileJava Test Automation for REST, Web and Mobile
Java Test Automation for REST, Web and Mobile
 
Trust Your Pipeline - Automatically Testing and End-to-End Java Application
Trust Your Pipeline - Automatically Testing and End-to-End Java ApplicationTrust Your Pipeline - Automatically Testing and End-to-End Java Application
Trust Your Pipeline - Automatically Testing and End-to-End Java Application
 
O que é um Agile Coach
O que é um Agile CoachO que é um Agile Coach
O que é um Agile Coach
 
Criando uma grid para execução de teste automatizado funcional e e2e
Criando uma grid para execução de teste automatizado funcional e e2eCriando uma grid para execução de teste automatizado funcional e e2e
Criando uma grid para execução de teste automatizado funcional e e2e
 
A importancia de testes em todos os aspectos
A importancia de testes em todos os aspectosA importancia de testes em todos os aspectos
A importancia de testes em todos os aspectos
 
Testes de ponta a ponta
Testes de ponta a pontaTestes de ponta a ponta
Testes de ponta a ponta
 

Automação de Teste para REST, Web e Mobile

  • 1. AUTOMAÇÃO DE TESTE PARA REST | WEB | MOBILE E L I A S N O G U E I R A @ e l i a s n o g u e i r a
  • 2. Elias Nogueira @eliasnogueira Sênior QA Engineer, Agile Coach & Trainer - Adaptworks Professor de Pós Graduação – Unisinos/RS Coordenador da Trilha de Teste - The Developers Conference
  • 3. 3 Validação intermediária entre back e front end Teste no serviço REST Para garantir a estabilidade durante os ciclos contínuos Mock do serviço REST Testes Funcionais e Aceitação na interface Mobile Teste na camada Mobile Testes Funcionais e Aceitação na Interface Web Teste na camada Web CONJUNTO DE FERRAMENTAS A seleção das ferramentas corretas é um ponto chave no seu processo de automação
  • 4. 4 API REST Documentação da API alvo dos testes ExemploURLVerboO que faz /api/person/api/personGETListar pessoas /api/person/:id/api/person/27GETRetornar a pessoa pelo id /api/person/api/personPOSTAdicionar as pessoas /api/person/:id/api/person/33PUTAtualizar uma pessoa pelo id /api/person/:id/api/person/52DELETERemover uma pessoa pelo id
  • 5. 5 AUTOMAÇÃO DE SERVIÇOS REST Atualmente uma das camadas mais importantes da aplicação Os testes são tão necessários quanto na camada visual Sempre validar as transações de negócio Em novos serviços, sempre validar manualmente primeiro CURL (CLI) PostMan (Google Chrome) RESTClient (Firefox)
  • 6. 6 MOCK DE SERVIÇOS REST A forma mais fácil e rápida de criar mocks em Java Microframework com o poder do Java 8 Ótima pedida para criar micro serviços Fácil implementação para criar serviços REST http://sparkjava.com
  • 7. 7 MOCK DE SERVIÇOS REST Porque você não vai testar em produção, correto? Exemplo de um mock com com dados fixos Usar dados fixos pode ser uma boa pedida para não ter grandes manutenções no seu código de mock
  • 8. 8 MOCK DE SERVIÇOS REST Porque você não vai testar em produção, correto? Exemplo de um mock com com dados dinâmicos Dependendo da complexidade de seu código e conjunto de massa de dados podemos criar uma abordagem com dados pré-definidos
  • 9. REST ASSURED DSL de fácil utilização para automatizar serviços REST Sintaxe de give-when-then https://github.com/jayway/rest-assured
  • 10. 10 O QUE EU PRECISO? O que é necessário para escrever um teste com RESTAssured Importar um conjunto de classes estáticas Informar URL Base, contexto de acesso e porta (se necessário) import static com.jayway.restassured.RestAssured.*; import static org.hamcrest.Matchers.*; baseURI = "http://localhost"; basePath = "/api"; port = 4567;
  • 11. 11 AUTOMAÇÃO DE SERVIÇOS REST Nos métodos de pré e pós condição apontamos a URL principal, iniciamos e fechamos o Mock com Spark Pré e Pós condição antes de cada testes Abordagem obrigatória e automatizada para iniciar seus testes utilizando o mock com Spark
  • 12. 12 AUTOMAÇÃO DE SERVIÇOS REST O RESTAssured possui uma API fluente para automação dos serviços REST Exemplo de um teste automatizado com RESTAssured Um GET sendo enviado com ID 1 (when) e os dados de retorno sendo validados na body do retorno (then)
  • 13. SELENIUM WEBDRIVER API para automação em browser web reais Diferentes linguagens suportadas http://seleniumhq.org Virando um padrão W3C Simula um usuário real
  • 14. 14 O QUE EU PRECISO? O que é necessário para escrever um teste com Selenium WebDriver Browser alvo instalado Alguma ferramenta de inspeção de código HTML Nativa do browser Firebug [ProTip] Algum software para mudar a velocidade de conexão
  • 15. 15 INSPECIONANDO ELEMENTOS Método para obter a forma de localizá-lo para interação futura Botão de inspeção
  • 16. 16 PROCESSO DE AUTOMAÇÃO O Selenim WebDriver possui um pequeno processo simples e fácil de lembrar Script de Teste com Selenium Inicialização do browser e controles de navegação (back, forward, refresh) Navegação Formas de localizar um elemento web id, name, cssSelector, xpath Interrogação Esperas por elementos dinâmicos e/ou requisições assíncronas baseadas em elementos Sincronização Forma de interagir com os elementos click, clear, sendKeys, getText Manipulação 1 2 3 4
  • 17. 17 AUTOMAÇÃO DE TESTE WEB O Selenium WebDriver possui uma API de fácil entendimento Exemplo de um teste automatizado com Selenium WebDriver Exemplo completo com navegação, interrogação, manipulação e sincronização
  • 18. 18 1 2 3 4 Usar Page Objects para modularizar os testes Abusar dos Padrões de Projeto para facilitar a manutenção Execute o teste em uma velocidade de internet menor Use XPATH somente quando necessário DICAS PARA AUTOMAÇÃO WEB Para uma automação de teste web mais profissional
  • 19. 19 DICA PARA SUITE DE TESTE WEB É importante dividir os testes em suítes específicas para um maior retorno e velocidade de feedback HEADLESS TEST ACCEPTANCE TEST FUNCTIONAL TEST SUITE DE AUTOMAÇÃO DE TESTE 1 2 3 4 DAR VELOCIDADE E FEEDBACK MAIS RÁPIDO NOS CICLOS CONTÍNUOS VALIDAR O SISTEMA COMO A UTILIZACÃO DE UM USUÁRIO VALIDAR NA PERSPECTIVA DE REGRAS DE NEGÓCIO 1 2 3
  • 20. APPIUM API para automação para dispositivos mobile Suporta Android e iOS http://appium.io Executa em emuladores ou dispositivos Teste em aplicações nativas ou híbridas
  • 21. 21 O QUE EU PRECISO? O que é necessário para escrever um teste com Appium Android SDK Appium (via Appium.app ou Nodejs) Configurar PATHS (tools / platform-tools) SDK Platform + System Image Emulador / Simulador ou Dispositivo
  • 22. 22 INSPECIONANDO COMPONENTES Podemos inspecionar através do uiautomatorviewer Botão de inspeção Componente Inspecionado Atributos do componente
  • 23. 23 PROCESSO DE AUTOMAÇÃO Série de passos para criação do script de automação com Appium Script de Teste com Appium Definição de dados padrão plataforma, dispositivo, app) DesiredCapabilities Abrir a conexão com o dispositivo via Appium.app ou Nodejs Sessão Esperas por elementos dinâmicos e/ou requisições assíncronas baseadas em elementos Sincronização Localizar e interagir com componentes Mesma forma do Selenium WebDriver Interrogação e Manipulação 1 2 3 4
  • 24. 24 AUTOMAÇÃO DE TESTE MOBILE Tirando o DesiredCapabilities e Sessão não é igual ao Selenium? Exemplo de script para um app pré instalada Exemplo completo de um teste em uma app Android
  • 25. 25 DICAS PARA AUTOMAÇÃO MOBILE Para ter scripts de automação mobile mais profissional 1 2 3 4 Execute testes instalando a app e com ela pré instalada Crie uma suíte focada no usuário final Teste em diferentes redes (Wi-Fi, 3G…) Teste requisitos não funcionais
  • 26. Obrigado pela presença! Código completo de exemplo disponível no GitHub http://eliasnogueira.com elias.nogueira@gmail.co m @eliasnogueira fb.com/elias.nogueira.teste https://github.com/eliasnogueira/javaone-testing-automation