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...
3
Validação intermediária entre
back e front end
Teste no serviço REST
Para garantir a estabilidade
durante os ciclos cont...
4
API REST
Documentação da API alvo dos testes
ExemploURLVerboO que faz
/api/person/api/personGETListar pessoas
/api/perso...
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...
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 pedi...
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...
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
Depend...
REST
ASSURED
DSL de fácil utilização para automatizar serviços REST
Sintaxe de give-when-then
https://github.com/jayway/re...
10
O QUE EU PRECISO?
O que é necessário para escrever um teste com RESTAssured
Importar um conjunto de classes estáticas
I...
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...
12
AUTOMAÇÃO DE SERVIÇOS REST
O RESTAssured possui uma API fluente para automação dos serviços REST
Exemplo de um teste au...
SELENIUM
WEBDRIVER
API para automação em browser web reais
Diferentes linguagens suportadas
http://seleniumhq.org
Virando ...
14
O QUE EU PRECISO?
O que é necessário para escrever um teste com Selenium WebDriver
Browser alvo instalado
Alguma ferram...
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 Sel...
17
AUTOMAÇÃO DE TESTE WEB
O Selenium WebDriver possui uma API de fácil entendimento
Exemplo de um teste automatizado com S...
18
1
2
3
4
Usar Page Objects para modularizar os testes
Abusar dos Padrões de Projeto para facilitar a manutenção
Execute ...
19
DICA PARA SUITE DE TESTE WEB
É importante dividir os testes em suítes específicas para um maior retorno e velocidade de...
APPIUM
API para automação para dispositivos mobile
Suporta Android e iOS
http://appium.io
Executa em emuladores ou disposi...
21
O QUE EU PRECISO?
O que é necessário para escrever um teste com Appium
Android SDK
Appium (via Appium.app ou Nodejs)
Co...
22
INSPECIONANDO COMPONENTES
Podemos inspecionar através do uiautomatorviewer
Botão de
inspeção
Componente
Inspecionado
At...
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ç...
24
AUTOMAÇÃO DE TESTE MOBILE
Tirando o DesiredCapabilities e Sessão não é igual ao Selenium?
Exemplo de script para um app...
25
DICAS PARA AUTOMAÇÃO MOBILE
Para ter scripts de automação mobile mais profissional
1
2
3
4
Execute testes instalando a ...
Obrigado pela
presença!
Código completo de exemplo disponível no GitHub
http://eliasnogueira.com elias.nogueira@gmail.co
m...
Próximos SlideShares
Carregando em…5
×

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

1.307 visualizações

Publicada em

Palestra sobre Automação de Teste para REST, Web e Mobile utilizando APIs Java ministrada no JavaOne Latin America em 29/06/2016

Publicada em: Software

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

  1. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 15 INSPECIONANDO ELEMENTOS Método para obter a forma de localizá-lo para interação futura Botão de inspeção
  16. 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. 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. 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. 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. 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. 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. 22 INSPECIONANDO COMPONENTES Podemos inspecionar através do uiautomatorviewer Botão de inspeção Componente Inspecionado Atributos do componente
  23. 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. 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. 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. 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

×