testes para dispositivos móveis
TRANSCRIPT
[email protected] (48) 3285-5615 twitter.com/qualister facebook.com/qualister linkedin.com/company/qualister
Testes para Disposi,vos Móveis
Elias Nogueira @eliasnogueira
Elias Nogueira <[email protected]> Consultor de Teste e Qualidade de so0ware na Qualister Professor de Pós Graduação na Unisinos/RS e Uniasselvi/SC
eliasnogueira
qualister.com.br
br.linkedin.com/in/eliasnogueira
youtube.com/user/qualistervideos
Palestrante
Qualister
• Fundada em 2007 • Mais de 1.000 clientes em todo o Brasil • Mais de 50 cursos sobre teste de so0ware • Mais de 3.000 alunos formados • Áreas de atuação:
• Consultoria na área de teste qualidade de so0ware • Cursos • Revenda de ferramentas
Mais de 1.000 clientes
Parcerias internacionais
Tipos de Aplicações Neste tópico aprenderemos sobre os diferentes Spos de apps para disposiSvos móveis
Tipos de Apps Mobile
HTML/Browser Híbridas Nativas
Diferentes Tipos de Apps
Nativo iOS Híbrida Nativo Android
Desafios de Testes Neste tópico iremos ilustrar quais são os desafios para testar em plataformas e o desafio de testes nas apps.
Desafios -‐ Plataformas
Desafios -‐ Plataformas
Fragmentação das plataformas
[redução] 9 para 2 possibilidades Versões mais uSlizadas: h\p://developer.android.com/about/dashboards/
Versão Codenome API Distribuição
2.2 Froyo 8 0.3%
2.3.3 2.3.7 Gingerbread 10 4.6%
4.0.3 4.0.4
Ice Cream Sandwich
15 4.1%
4.1.x
Jelly Bean
16 13.0%
4.2.x 17 15.9%
4.3 18 4.7%
4.4 KitKat 19 39.3%
5.0 Lollipop
21 15.5%
5.1 22 2.6
Desafios -‐ Plataformas
Fragmentação das plataformas
1 (iphone) + 1 (iPad) possibilidades
Versões mais uSlizadas: h\ps://developer.apple.com/support/appstore/
Matriz de versões: h\p://iossupportmatrix.com/
Desafios -‐ DisposiSvos Fragmentação de Disposi,vos Android
• Mais de 24.903 disposiSvos disSntos • Diferentes fabricantes: Samsung, Motorola, HTC, LG, Sony,
Samsung (38%) iPhone
• 5 disposiSvos usados no mercado (4S, 5, 5c, 5s, 6) • 5 disposiSvos suportados oficialmente (5s, 6, 6 plus, 6s, 6s plus) • Mais uSlizados 4s, 5, 5s e 6
http://opensignal.com/reports/2015/08/android-fragmentation/
Desafios -‐ DisposiSvos Tamanho de Tela
Desafios -‐ Execução
Emuladores Cloud TesSng DisposiSvo Real • Muitos apps podem ser
testados em emuladores sem o invesSmento de hardware (smartphones)
• A grande maioria é free e empresas disponibilizam seus emuladores
• Os disposiSvos podem ser acessadas via web
• A aplicação pode ser instalada, testada e gerenciada
• É segura para as aSvidades de teste
• Vai trazer resultados mais realísScos
• Todas as possibilidades de teste poderão ser executadas incluindo as com dependência de hardware
Como resolver estes desafios?
• Obter estaSsScamente os disposiSvos mais uSlizados
• Logs do Console de Desenvolvedor
• Relato de erros de usuários
• Volume de vendas dos disposiSvos
Um pista...
http://www.tecmundo.com.br/pesquisa/78400-20-smartphones-mais-usados-brasil-leitores-tecmundo-2015.htm
Pirâmide de Automação de Teste
É importante automaSzar todos os níveis da app
Ferramentas
Existem diversas ferramentas para automação de testes em UI para Android e iOS
Appium h\p://appium.io/
selendroid h\p://selendroid.io/
Robo,um h\ps://code.google.com/p/roboSum/
calabash-‐andorid h\ps://github.com/calabash/calabash-‐android
MonkeyTalk h\ps://www.cloudmonkeymobile.com/monkeytalk
Espresso h\ps://code.google.com/p/android-‐test-‐kit/wiki/Espresso
UiAutomator h\ps://developer.android.com/tools/tesSng-‐support-‐library/index.html#UIAutomator
http://www.qualister.com.br/blog/comparativo-de-ferramentas-para-automacao-de-teste-em-android
Ferramentas
Existem diversas ferramentas para automação de testes em UI para Android e iOS
Robo,um UiAutomator Espresso Calabash Appium
Mobile Web Sim (Android) Não Não Sim
(Android) Sim
(iOS e Android)
Linguagem Java Java Java Ruby Muitas
Ferramenta para criação de teste
RoboSum Recorder
UiAutomatorViewer Hierarchy Viewer CLI Appium.app
UiAutomatorViewer
APIs suportadas Todas >=16 8,10,15-‐19 Todas Todas
Comunidade Contributors Google Google Pequena ASva
Introdução a Appium
Appium é uma ferramenta open source para automaSzar: • Aplicações mobile naSvas ou híbridas para iOS, Android
• Aplicações web mobile para os browsers naSvos do iOS, Android ou Google Chrome
Introdução a Appium
Appium também é mulS-‐plataforma, ou seja, podemos escrever um único código que executa em iOS, Android usando a mesma API
Arquitetura
WebDriver Interface Json Wired Protocol
Android (4.2+) UiAutomator
iOS (até 8.1) UIAutomator
Selendroid (<2.3+) InstrumetaSon (para disposiSvos anSgos)
Design
• O Appium, na verdade, é um HTTP Server que cria e gerencia sessões do WebDriver
• O WebDriver é hoje um padrão W3C para automação de teste web
• O Appium inicia um “caso de teste / script” que inicia um servidor de teste e espera os comandos enviados por ele para o disposiSvo
Conceito
Arquitetura Cliente/Servidor
• Appium é um servidor web que expõe uma API REST
• Ele recebe conexões de um cliente, espera por comandos, executa os comandos em um disposiSvo móvel e responde com uma resposta HTTP com o resultado do comando
• Com isso podemos ter diferentes linguagens de programação para escrever os testes e rodar os testes em máquinas totalmente separadas
Conceito
Sessão
• Toda a comunicação com um disposiSvo é aberta através de uma sessão (session) para cada biblioteca (linguagem) uSlizada
• Esta requisição é um POST com um objeto JSON enviando as capacidades desejadas (Desired Capabili>es)
• Neste ponto o servidor responde com um ID de sessão e passa a receber comandos (requests) por esse ID entre o servidor e o disposiSvo
Conceito
Desired Capabili,es
• É um conjunto de comandos enviados para os servidor com capacidades específicas para cada sessão
• Com ela podemos informar que desejamos uma sessão (disposiSvo) que seja um IOS ou Android, e até mesmo especificar a versão de ambos
Conceito
Appium Server
• É um servidor escrito em node.js que pode ser instalado via NPM ou como uma aplicação para o Sistema Operacional
• Com ele instalado no Sistema Operacional poderemos ter diversas funções, como inspeção e testes de comandos no disposiSvo
• O Appium.app, aplicação desktop, já tem o node.js embuSdo para a execução do servidor do Appium
Conceito
Appium Client
• São as bibliotecas para que possamos escrever os testes em diferentes linguagens de programação suportadas
Dispositivo
Script de Teste
Execução Local (localhost)
Appium Server
AppiumDriver
Desired Capabilites
Caso de Teste
4723 Appium DesiredCapabilities
http://localhost:4723/wd/hub
Sessão
Script
Dinâmica Neste tópico falaremos sobre a dinâmica de automação com o Appium
Dinâmica A seguinte dinâmica será adotada:
• Apresentação de cada ponto sobre Appium • Instalação da app • Inserção das DesiredCapabili>es • Inserção da interação com a app • Inserção das validações
• Execução do script • Exercício(s)
Passos de Automação Nós executaremos os seguintes passos para automaSzar os testes:
1. Executar o teste manualmente no disposiSvo
2. Desenvolver o script 1. Informar a app que será testada 2. Informar as capacidades 3. Criar a conexão com Appium 4. Desenvolver o script (interação com os componentes) 5. Colocar as validações
3. Executando o script automaSzado 1. Abrir e iniciar o Appium.app 2. Executar o script de teste
O Projeto completo está no GitHub h\ps://github.com/qualister-‐consultoria/
workshop-‐appium-‐android
[email protected] (48) 3285-5615 twitter.com/qualister facebook.com/qualister linkedin.com/company/qualister