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

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

  • 1.
    AUTOMAÇÃO DE TESTEPARA 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 QAEngineer, 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 backe 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 daAPI 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ÇOSREST 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ÇOSREST 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ÇOSREST 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ÇOSREST 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ácilutilização para automatizar serviços REST Sintaxe de give-when-then https://github.com/jayway/rest-assured
  • 10.
    10 O QUE EUPRECISO? 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ÇOSREST 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ÇOSREST 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çãoem browser web reais Diferentes linguagens suportadas http://seleniumhq.org Virando um padrão W3C Simula um usuário real
  • 14.
    14 O QUE EUPRECISO? 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 paraobter a forma de localizá-lo para interação futura Botão de inspeção
  • 16.
    16 PROCESSO DE AUTOMAÇÃO OSelenim 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 TESTEWEB 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 Objectspara 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 SUITEDE 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çãopara 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 EUPRECISO? 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 inspecionaratravés do uiautomatorviewer Botão de inspeção Componente Inspecionado Atributos do componente
  • 23.
    23 PROCESSO DE AUTOMAÇÃO Sériede 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 TESTEMOBILE 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ÇÃOMOBILE 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 completode 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