SlideShare une entreprise Scribd logo
1  sur  66
testando interfaces web
       @andrewsmedina
andrews medina


•?
andrews medina


• o que os outros pensam...
andrews medina


• o que eu penso...
andrews medina


• o que minha mãe pensa...
andrews medina


• como realmente é!
interfaces?
http://farm4.static.flickr.com/3293/3045994303_6f2a4f36d2.jpg
http://farm4.static.flickr.com/3522/3468280305_fb2681f996.jpg
testes?
teste + interface = ???

•   porque testar?

•   o que testar?

•   como testar?

•   quando testar?
porque testar?



•   garantir que a interface está tendo o comportamento esperado
o que testar?


•   css?

•   visual?

•   comportamento/funcionamento?
o que testar?


• css?
• visual?
• comportamento/funcionamento!
o que testar?


•   interface?

•   componentes?
o que testar?



• interface e componentes!
componente?
como testar?


•   componentes

•   interface
testando componentes


•   qUnit

•   jasmine
qUnit

•   jquey

•   unitário

•   api “feia”

•   ruim para testes assíncronos
jasmine

•   bdd

•   api “bonita”

•   inspirado no rspec

•   baseado em tópicos

•   bom para testes assíncronos
como rodar jasmine/qunit?



•   jasmine-splinter-runner
como rodar jasmine/qunit?


•   abrir o browser toda vez para rodar um teste?

•   jasmine/qunit + integração contínua (ci) ?
jasmine-splinter-runner



•   https://github.com/cobrateam/jasmine-splinter-runner
jasmine-splinter-runner


•   pip install jasmine-splinter-runner

•   jasmine-splinter URI
testando interfaces
•   selenium 1.0   •   htmlunit

•   pyccuracy      •   zombie.js

•   selenium 2.0   •   zope testbrowser

•   capybara       •   mechanize

•   splinter       •   phantomjs
selenium 1

•   lento

•   necessita de server

•   obsoleto

•   funcionalidades legais
selenium 2

•   não necessita server

•   vários browsers (firefox, ie, opera, chrome)

•   instável

•   diferença entre browsers (api)

•   features legais
zope testbrowser

•   rápido

•   headless

•   não renderiza js

•   api estável

•   trata formulários de forma especial
zombie.js

•   rápido

•   headless

•   suporta js

•   node.js

•   instável
htmlunit

•   rápido

•   headless

•   suporta js

•   java :-(
webkit

•   rápido

•   headless

•   suporta js

•   phantomjs, ghost.py
headless ou não headless?
headless

• rápido
• não consome muitos recursos (memória x processamento)
• difícil de debugar
• mas não é um browser...
não headless


•   lento

•   usa o browser

•   fácil de debugar (você pode ver o que está acontecendo)
headless + não headless
headless


•   TDD

•   executar os testes localmente
não headless


•   escrever os testes

•   rodar os testes em uma máquina de integração contínua (ci)
headless + não headless?



•   #comofaz???
headless + não headless?


•   capybara

•   splinter
capybara

•   api

•   ruby

•   drivers: firefox

•   third party drivers: webkit, chrome, zombie.js...
capybara


•   seletores css, xpath, tag, name

•   ajax

•   javascript
splinter

•   api

•   python

•   drivers: chrome, firefox, zope testbrowser

•   em andamento: webkit, zombie.js
splinter
•   seletores css, xpath, tag, name

•   ajax

•   javascript

•   cookies

•   iframes, alerts

•   http status code
bônus!


•   http://sikuli.org/

•   http://needle.readthedocs.org/
perguntas?
 @andrewsmedina
andrewsmedina.com

Contenu connexe

Similaire à testando interfaces web

Testes Unitários com JavaScript utilizando Jasmine Framework
Testes Unitários com JavaScript utilizando Jasmine FrameworkTestes Unitários com JavaScript utilizando Jasmine Framework
Testes Unitários com JavaScript utilizando Jasmine FrameworkYuri Adams
 
Construindo aplicações Desktop com HTML, CSS e JS - Rio.JS Conference 2013
Construindo aplicações Desktop com HTML, CSS e JS - Rio.JS Conference 2013Construindo aplicações Desktop com HTML, CSS e JS - Rio.JS Conference 2013
Construindo aplicações Desktop com HTML, CSS e JS - Rio.JS Conference 2013javamanrj
 
escalando aplicações django
escalando aplicações djangoescalando aplicações django
escalando aplicações djangoAndrews Medina
 
Python - Programando em alto nível
Python - Programando em alto nívelPython - Programando em alto nível
Python - Programando em alto nívelIgor Sobreira
 
Praticando o Desapego: quando ignorar a dívida técnica
Praticando o Desapego: quando ignorar a dívida técnicaPraticando o Desapego: quando ignorar a dívida técnica
Praticando o Desapego: quando ignorar a dívida técnicaIvayr Farah Netto
 
Phonegap - self RJ
Phonegap - self RJPhonegap - self RJ
Phonegap - self RJjavamanrj
 
Voce se preocupa com performance ou é sempre problema da infra
Voce se preocupa com performance ou é sempre problema da infraVoce se preocupa com performance ou é sempre problema da infra
Voce se preocupa com performance ou é sempre problema da infraCDS
 
OWASP Floripa - Web Spiders: Automação para Web Hacking by Antonio Costa aka ...
OWASP Floripa - Web Spiders: Automação para Web Hacking by Antonio Costa aka ...OWASP Floripa - Web Spiders: Automação para Web Hacking by Antonio Costa aka ...
OWASP Floripa - Web Spiders: Automação para Web Hacking by Antonio Costa aka ...Magno Logan
 
Workshop ExtJS4
Workshop ExtJS4Workshop ExtJS4
Workshop ExtJS4javamanrj
 
WordCampBH 2015 - O mínimo essencial para o bom desempenho do seu projeto em ...
WordCampBH 2015 - O mínimo essencial para o bom desempenho do seu projeto em ...WordCampBH 2015 - O mínimo essencial para o bom desempenho do seu projeto em ...
WordCampBH 2015 - O mínimo essencial para o bom desempenho do seu projeto em ...Sergio Costa
 
Zend Framework Estrutura e TDD
Zend Framework Estrutura e TDDZend Framework Estrutura e TDD
Zend Framework Estrutura e TDDPHP Day Curitiba
 
QConRio 2014 - Uso de Headless Browsers em Testes Automatizados
QConRio 2014 - Uso de Headless Browsers em Testes AutomatizadosQConRio 2014 - Uso de Headless Browsers em Testes Automatizados
QConRio 2014 - Uso de Headless Browsers em Testes AutomatizadosStefan Teixeira
 
Cocoaheads RJ - Como você faz? (Douglas Fischer - 26/03/2015)
Cocoaheads RJ - Como você faz? (Douglas Fischer - 26/03/2015)Cocoaheads RJ - Como você faz? (Douglas Fischer - 26/03/2015)
Cocoaheads RJ - Como você faz? (Douglas Fischer - 26/03/2015)Douglas Fischer
 
Carreira de Desenvolvimento
Carreira de DesenvolvimentoCarreira de Desenvolvimento
Carreira de DesenvolvimentoAlvaro Viebrantz
 
WordCamp Salvador 2014 - O essencial para o bom desempenho do seu projeto em ...
WordCamp Salvador 2014 - O essencial para o bom desempenho do seu projeto em ...WordCamp Salvador 2014 - O essencial para o bom desempenho do seu projeto em ...
WordCamp Salvador 2014 - O essencial para o bom desempenho do seu projeto em ...Sergio Costa
 
Workshop Performance Rails
Workshop Performance RailsWorkshop Performance Rails
Workshop Performance RailsVitor Pellegrino
 

Similaire à testando interfaces web (20)

Testes Unitários com JavaScript utilizando Jasmine Framework
Testes Unitários com JavaScript utilizando Jasmine FrameworkTestes Unitários com JavaScript utilizando Jasmine Framework
Testes Unitários com JavaScript utilizando Jasmine Framework
 
Construindo aplicações Desktop com HTML, CSS e JS - Rio.JS Conference 2013
Construindo aplicações Desktop com HTML, CSS e JS - Rio.JS Conference 2013Construindo aplicações Desktop com HTML, CSS e JS - Rio.JS Conference 2013
Construindo aplicações Desktop com HTML, CSS e JS - Rio.JS Conference 2013
 
Javascript Cross-browser
Javascript Cross-browserJavascript Cross-browser
Javascript Cross-browser
 
escalando aplicações django
escalando aplicações djangoescalando aplicações django
escalando aplicações django
 
Python - Programando em alto nível
Python - Programando em alto nívelPython - Programando em alto nível
Python - Programando em alto nível
 
Praticando o Desapego: quando ignorar a dívida técnica
Praticando o Desapego: quando ignorar a dívida técnicaPraticando o Desapego: quando ignorar a dívida técnica
Praticando o Desapego: quando ignorar a dívida técnica
 
Phonegap - self RJ
Phonegap - self RJPhonegap - self RJ
Phonegap - self RJ
 
Voce se preocupa com performance ou é sempre problema da infra
Voce se preocupa com performance ou é sempre problema da infraVoce se preocupa com performance ou é sempre problema da infra
Voce se preocupa com performance ou é sempre problema da infra
 
De 0 a DevOps
De 0 a DevOpsDe 0 a DevOps
De 0 a DevOps
 
Frameworks PHP
Frameworks PHPFrameworks PHP
Frameworks PHP
 
OWASP Floripa - Web Spiders: Automação para Web Hacking by Antonio Costa aka ...
OWASP Floripa - Web Spiders: Automação para Web Hacking by Antonio Costa aka ...OWASP Floripa - Web Spiders: Automação para Web Hacking by Antonio Costa aka ...
OWASP Floripa - Web Spiders: Automação para Web Hacking by Antonio Costa aka ...
 
Workshop ExtJS4
Workshop ExtJS4Workshop ExtJS4
Workshop ExtJS4
 
WordCampBH 2015 - O mínimo essencial para o bom desempenho do seu projeto em ...
WordCampBH 2015 - O mínimo essencial para o bom desempenho do seu projeto em ...WordCampBH 2015 - O mínimo essencial para o bom desempenho do seu projeto em ...
WordCampBH 2015 - O mínimo essencial para o bom desempenho do seu projeto em ...
 
Zend Framework Estrutura e TDD
Zend Framework Estrutura e TDDZend Framework Estrutura e TDD
Zend Framework Estrutura e TDD
 
QConRio 2014 - Uso de Headless Browsers em Testes Automatizados
QConRio 2014 - Uso de Headless Browsers em Testes AutomatizadosQConRio 2014 - Uso de Headless Browsers em Testes Automatizados
QConRio 2014 - Uso de Headless Browsers em Testes Automatizados
 
Docker + Django
Docker + DjangoDocker + Django
Docker + Django
 
Cocoaheads RJ - Como você faz? (Douglas Fischer - 26/03/2015)
Cocoaheads RJ - Como você faz? (Douglas Fischer - 26/03/2015)Cocoaheads RJ - Como você faz? (Douglas Fischer - 26/03/2015)
Cocoaheads RJ - Como você faz? (Douglas Fischer - 26/03/2015)
 
Carreira de Desenvolvimento
Carreira de DesenvolvimentoCarreira de Desenvolvimento
Carreira de Desenvolvimento
 
WordCamp Salvador 2014 - O essencial para o bom desempenho do seu projeto em ...
WordCamp Salvador 2014 - O essencial para o bom desempenho do seu projeto em ...WordCamp Salvador 2014 - O essencial para o bom desempenho do seu projeto em ...
WordCamp Salvador 2014 - O essencial para o bom desempenho do seu projeto em ...
 
Workshop Performance Rails
Workshop Performance RailsWorkshop Performance Rails
Workshop Performance Rails
 

Plus de Andrews Medina

Escalando aplicações web
Escalando aplicações webEscalando aplicações web
Escalando aplicações webAndrews Medina
 
Design de código: princípios e práticas para ter um código sustentável
Design de código: princípios e práticas para ter um código sustentávelDesign de código: princípios e práticas para ter um código sustentável
Design de código: princípios e práticas para ter um código sustentávelAndrews Medina
 
desenvolvendo jogos para android
desenvolvendo jogos para androiddesenvolvendo jogos para android
desenvolvendo jogos para androidAndrews Medina
 
técnica de desenvolvimento de jogos para web
técnica de desenvolvimento de jogos para webtécnica de desenvolvimento de jogos para web
técnica de desenvolvimento de jogos para webAndrews Medina
 
realtime - passado, presente e futuro
realtime - passado, presente e futurorealtime - passado, presente e futuro
realtime - passado, presente e futuroAndrews Medina
 
Haskell para pythonistas
Haskell para pythonistasHaskell para pythonistas
Haskell para pythonistasAndrews Medina
 
animações e jogos além do canvas
animações e jogos além do canvasanimações e jogos além do canvas
animações e jogos além do canvasAndrews Medina
 
Desenvolvimento de Jogos em Python
Desenvolvimento de Jogos em PythonDesenvolvimento de Jogos em Python
Desenvolvimento de Jogos em PythonAndrews Medina
 

Plus de Andrews Medina (11)

Python 3
Python 3Python 3
Python 3
 
Escalando aplicações web
Escalando aplicações webEscalando aplicações web
Escalando aplicações web
 
Design de código: princípios e práticas para ter um código sustentável
Design de código: princípios e práticas para ter um código sustentávelDesign de código: princípios e práticas para ter um código sustentável
Design de código: princípios e práticas para ter um código sustentável
 
Python 3 - tutorial
Python 3 - tutorialPython 3 - tutorial
Python 3 - tutorial
 
desenvolvendo jogos para android
desenvolvendo jogos para androiddesenvolvendo jogos para android
desenvolvendo jogos para android
 
técnica de desenvolvimento de jogos para web
técnica de desenvolvimento de jogos para webtécnica de desenvolvimento de jogos para web
técnica de desenvolvimento de jogos para web
 
realtime - passado, presente e futuro
realtime - passado, presente e futurorealtime - passado, presente e futuro
realtime - passado, presente e futuro
 
Haskell para pythonistas
Haskell para pythonistasHaskell para pythonistas
Haskell para pythonistas
 
animações e jogos além do canvas
animações e jogos além do canvasanimações e jogos além do canvas
animações e jogos além do canvas
 
Desenvolvimento de Jogos em Python
Desenvolvimento de Jogos em PythonDesenvolvimento de Jogos em Python
Desenvolvimento de Jogos em Python
 
Django Show
Django ShowDjango Show
Django Show
 

Dernier

Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsDanilo Pinotti
 
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx2m Assessoria
 
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx2m Assessoria
 
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docxATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx2m Assessoria
 
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx2m Assessoria
 
Programação Orientada a Objetos - 4 Pilares.pdf
Programação Orientada a Objetos - 4 Pilares.pdfProgramação Orientada a Objetos - 4 Pilares.pdf
Programação Orientada a Objetos - 4 Pilares.pdfSamaraLunas
 
Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploDanilo Pinotti
 
ATIVIDADE 1 - SISTEMAS DISTRIBUÍDOS E REDES - 52_2024.docx
ATIVIDADE 1 - SISTEMAS DISTRIBUÍDOS E REDES - 52_2024.docxATIVIDADE 1 - SISTEMAS DISTRIBUÍDOS E REDES - 52_2024.docx
ATIVIDADE 1 - SISTEMAS DISTRIBUÍDOS E REDES - 52_2024.docx2m Assessoria
 
Luís Kitota AWS Discovery Day Ka Solution.pdf
Luís Kitota AWS Discovery Day Ka Solution.pdfLuís Kitota AWS Discovery Day Ka Solution.pdf
Luís Kitota AWS Discovery Day Ka Solution.pdfLuisKitota
 

Dernier (9)

Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object Calisthenics
 
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
 
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
 
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docxATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
 
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
 
Programação Orientada a Objetos - 4 Pilares.pdf
Programação Orientada a Objetos - 4 Pilares.pdfProgramação Orientada a Objetos - 4 Pilares.pdf
Programação Orientada a Objetos - 4 Pilares.pdf
 
Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemplo
 
ATIVIDADE 1 - SISTEMAS DISTRIBUÍDOS E REDES - 52_2024.docx
ATIVIDADE 1 - SISTEMAS DISTRIBUÍDOS E REDES - 52_2024.docxATIVIDADE 1 - SISTEMAS DISTRIBUÍDOS E REDES - 52_2024.docx
ATIVIDADE 1 - SISTEMAS DISTRIBUÍDOS E REDES - 52_2024.docx
 
Luís Kitota AWS Discovery Day Ka Solution.pdf
Luís Kitota AWS Discovery Day Ka Solution.pdfLuís Kitota AWS Discovery Day Ka Solution.pdf
Luís Kitota AWS Discovery Day Ka Solution.pdf
 

testando interfaces web

Notes de l'éditeur

  1. \n
  2. \n
  3. \n
  4. \n
  5. \n
  6. \n
  7. \n
  8. \n
  9. \n
  10. \n
  11. \n
  12. \n
  13. \n
  14. \n
  15. \n
  16. \n
  17. \n
  18. \n
  19. \n
  20. \n
  21. \n
  22. \n
  23. \n
  24. \n
  25. \n
  26. \n
  27. \n
  28. \n
  29. \n
  30. \n
  31. \n
  32. \n
  33. \n
  34. \n
  35. \n
  36. \n
  37. \n
  38. \n
  39. \n
  40. \n
  41. \n
  42. \n
  43. \n
  44. \n
  45. \n
  46. \n
  47. \n
  48. \n
  49. \n
  50. \n
  51. \n
  52. \n
  53. \n
  54. \n
  55. \n
  56. \n
  57. \n
  58. \n
  59. \n
  60. \n
  61. \n
  62. \n
  63. \n
  64. \n
  65. \n
  66. \n