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

Preview:

Citation preview

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

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

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

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)

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

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

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

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

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)

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

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

15

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

Botão de inspeção

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

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

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

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

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 COMPONENTESPodemos inspecionar através do uiautomatorviewer

Botão de inspeção

Componente Inspecionado

Atributos do componente

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

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

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

Obrigado pela presença!

Código completo de exemplo disponível no GitHub

http://eliasnogueira.com

elias.nogueira@gmail.com

@eliasnogueira

fb.com/elias.nogueira.teste

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