testes para dispositivos móveis

36
[email protected] (48) 3285-5615 twitter.com/qualister facebook.com/qualister linkedin.com/company/qualister Testes para Disposi,vos Móveis Elias Nogueira @eliasnogueira

Upload: qualister

Post on 15-Apr-2017

866 views

Category:

Technology


5 download

TRANSCRIPT

Page 1: Testes para dispositivos móveis

[email protected] (48) 3285-5615 twitter.com/qualister facebook.com/qualister linkedin.com/company/qualister

Testes  para  Disposi,vos  Móveis  

 Elias  Nogueira  @eliasnogueira  

Page 2: Testes para dispositivos móveis

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  

Page 3: Testes para dispositivos móveis

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  

Page 4: Testes para dispositivos móveis

Mais  de  1.000  clientes  

Page 5: Testes para dispositivos móveis

Parcerias  internacionais  

Page 6: Testes para dispositivos móveis

Tipos  de  Aplicações  Neste  tópico  aprenderemos  sobre  os  diferentes  Spos  de  apps  para  disposiSvos  móveis  

Page 7: Testes para dispositivos móveis

Tipos  de  Apps  Mobile  

HTML/Browser Híbridas Nativas

Page 8: Testes para dispositivos móveis

Diferentes  Tipos  de  Apps  

Nativo iOS Híbrida Nativo Android

Page 9: Testes para dispositivos móveis

Desafios  de  Testes  Neste  tópico  iremos  ilustrar  quais  são  os  desafios  para  testar  em  plataformas  e  o  desafio  de  testes  nas  apps.  

Page 10: Testes para dispositivos móveis

Desafios  -­‐  Plataformas  

Page 11: Testes para dispositivos móveis

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  

Page 12: Testes para dispositivos móveis

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/  

Page 13: Testes para dispositivos móveis

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/

Page 14: Testes para dispositivos móveis

Desafios  -­‐  DisposiSvos  Tamanho  de  Tela      

Page 15: Testes para dispositivos móveis

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  

Page 16: Testes para dispositivos móveis

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  

Page 17: Testes para dispositivos móveis

Um  pista...  

http://www.tecmundo.com.br/pesquisa/78400-20-smartphones-mais-usados-brasil-leitores-tecmundo-2015.htm

Page 18: Testes para dispositivos móveis

Pirâmide  de  Automação  de  Teste  

É  importante  automaSzar  todos  os  níveis  da  app  

Page 19: Testes para dispositivos móveis

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

Page 20: Testes para dispositivos móveis

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  

Page 21: Testes para dispositivos móveis

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  

Page 22: Testes para dispositivos móveis

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  

Page 23: Testes para dispositivos móveis

Arquitetura  

WebDriver  Interface  Json  Wired  Protocol  

Android  (4.2+)    UiAutomator  

iOS  (até  8.1)  UIAutomator  

Selendroid  (<2.3+)  InstrumetaSon  (para  disposiSvos  anSgos)  

Page 24: Testes para dispositivos móveis

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  

Page 25: Testes para dispositivos móveis

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  

Page 26: Testes para dispositivos móveis

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  

Page 27: Testes para dispositivos móveis

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  

Page 28: Testes para dispositivos móveis

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  

Page 29: Testes para dispositivos móveis

Conceito  

Appium  Client    

•  São  as  bibliotecas  para  que  possamos  escrever  os  testes  em  diferentes  linguagens  de  programação  suportadas  

Page 30: Testes para dispositivos móveis

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  

Page 31: Testes para dispositivos móveis

Script  

Page 32: Testes para dispositivos móveis

Dinâmica  Neste  tópico  falaremos  sobre  a  dinâmica  de  automação  com  o  Appium  

Page 33: Testes para dispositivos móveis

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)  

 

Page 34: Testes para dispositivos móveis

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  

Page 35: Testes para dispositivos móveis

O  Projeto  completo  está  no  GitHub  h\ps://github.com/qualister-­‐consultoria/

workshop-­‐appium-­‐android  

Page 36: Testes para dispositivos móveis

[email protected] (48) 3285-5615 twitter.com/qualister facebook.com/qualister linkedin.com/company/qualister