26
AUTOMAÇÃO DE TESTE PARA REST | WEB | MOBILE ELIAS NOGUEIRA @eliasnogueira

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

Embed Size (px)

Citation preview

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

AUTOMAÇÃO DE TESTE PARAREST | 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

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

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

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

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 FERRAMENTASA seleção das ferramentas corretas é um ponto chave no seu processo de automação

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

4

API RESTDocumentação da API alvo dos testes

Exemplo URL Verbo O que faz

/api/person /api/person GET Listar pessoas

/api/person/:id /api/person/27 GET Retornar a pessoa pelo id

/api/person /api/person POST Adicionar as pessoas

/api/person/:id /api/person/33 PUT Atualizar uma pessoa pelo id

/api/person/:id /api/person/52 DELETE Remover uma pessoa pelo id

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

5

AUTOMAÇÃO DE SERVIÇOS RESTAtualmente 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)

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

6

MOCK DE SERVIÇOS RESTA 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

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

7

MOCK DE SERVIÇOS RESTPorque você não vai testar em produção, correto?

Exemplo de um mock com com dados fixosUsar dados fixos pode ser uma boa pedida para não ter

grandes manutenções no seu código de mock

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

8

MOCK DE SERVIÇOS RESTPorque você não vai testar em produção, correto?

Exemplo de um mock com com dados dinâmicosDependendo da complexidade de seu código e conjunto de massa

de dados podemos criar uma abordagem com dados pré-definidos

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

REST ASSURED

DSL de fácil utilização para automatizar serviços REST

Sintaxe de give-when-then

:// . / / -https github com jayway rest assured

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

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;

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

11

AUTOMAÇÃO DE SERVIÇOS RESTNos 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 testesAbordagem obrigatória e automatizada para iniciar seus

testes utilizando o mock com Spark

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

12

AUTOMAÇÃO DE SERVIÇOS RESTO RESTAssured possui uma API fluente para automação dos serviços REST

Exemplo de um teste automatizado com RESTAssuredUm GET sendo enviado com ID 1 (when) e os dados de

retorno sendo validados na body do retorno (then)

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

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

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

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 HTMLNativa do browserFirebug

[ProTip ]Algum software para mudar a velocidade de conexão

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

15

INSPECIONANDO ELEMENTOSMétodo para obter a forma de localizá-lo para interação futura

Botão de inspeção

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

16

PROCESSO DE AUTOMAÇÃOO 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çãoFormas de localizar um elemento webid, name, cssSelector, xpath

Interrogação

Esperas por elementos dinâmicos e/ou requisições

assíncronas baseadas em elementos

SincronizaçãoForma de interagir com os elementosclick, clear, sendKeys, getText

Manipulação

1 2

34

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

17

AUTOMAÇÃO DE TESTE WEBO Selenium WebDriver possui uma API de fácil entendimento

Exemplo de um teste automatizado com Selenium WebDriverExemplo completo com navegação, interrogação, manipulação e sincronização

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

18

12

34

Usar Page Objects para modularizar os testes

Abusar dos Padrões de Projeto para facilitar a manutençãoExecute o teste em uma velocidade de internet menorUse XPATH somente quando necessário

DICAS PARA AUTOMAÇÃO WEBPara uma automação de teste web mais profissional

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

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 TESTSUITE 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

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

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

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

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

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

22

INSPECIONANDO COMPONENTESPodemos inspecionar através do uiautomatorviewer

Botão de inspeção

Componente Inspecionado

Atributos do componente

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

23

PROCESSO DE AUTOMAÇÃOSérie de passos para criação do script de automação com Appium

Script de Teste com Appium

Definição de dados padrãoplataforma, dispositivo, app)

DesiredCapabilitiesAbrir a conexão com o dispositivovia Appium.app ou Nodejs

Sessão

Esperas por elementos dinâmicos e/ou requisições

assíncronas baseadas em elementos

SincronizaçãoLocalizar e interagir com componentesMesma forma do Selenium WebDriver

Interrogação e Manipulação

1 2

34

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

24

AUTOMAÇÃO DE TESTE MOBILETirando o DesiredCapabilities e Sessão não é igual ao Selenium?

Exemplo de script para um app pré instaladaExemplo completo de um teste em uma app Android

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

25

DICAS PARA AUTOMAÇÃO MOBILEPara ter scripts de automação mobile mais profissional

12

34

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

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

Obrigado pela presença!

Código completo de exemplo disponível no GitHub

http://eliasnogueira.com

[email protected]

@eliasnogueira

fb.com/elias.nogueira.teste

https://github.com/eliasnogueira/javaone-testing-automation