2. Elias
Nogueira
<elias.nogueira@qualister.com.br>
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
3. 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
15. 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
16. 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
19. Ferramentas
Existem
diversas
ferramentas
para
automação
de
testes
em
UI
para
Android
e
iOS
Appium
hp://appium.io/
selendroid
hp://selendroid.io/
Robo,um
hps://code.google.com/p/roboSum/
calabash-‐andorid
hps://github.com/calabash/calabash-‐android
MonkeyTalk
hps://www.cloudmonkeymobile.com/monkeytalk
Espresso
hps://code.google.com/p/android-‐test-‐kit/wiki/Espresso
UiAutomator
hps://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
20. 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
21. 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
22. 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
24. 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
25. 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
26. 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
27. 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
28. 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
29. Conceito
Appium
Client
• São
as
bibliotecas
para
que
possamos
escrever
os
testes
em
diferentes
linguagens
de
programação
suportadas
30. 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
33. 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)
34. 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
35. O
Projeto
completo
está
no
GitHub
hps://github.com/qualister-‐consultoria/
workshop-‐appium-‐android