SlideShare ist ein Scribd-Unternehmen logo
1 von 15
“Javascript também é
   código. Teste!”
Além dos bons motivos
já conhecidos
•   Diferenças entre navegadores
•   Complexidade nas interfaces
•   Volume de código
E porque o povo não testa?
Is paining
•   DOM
•   Interações do usuário
•   AJAX, animações
•   Múltiplos navegadores
•   Integração continua
Falando em soluções!
Test Driven Development .
Cool!
•   Trata sobre Design
•   Foco no “como” e não no “o quê”
•   Pode ser unitário, funcional e até BDD
•   Não substitui testes automatizados
•   Tem regras e é bom segui-las (pq?)
Test Driven Development.
Benefícios!
•   Falhas de design aparecem mais cedo
•   Fácil saber quando já cobrimos todos os
    requisitos
•   Baby Steps
•   Bom quando não se sabe o que quer
•   Melhor ainda quando já se sabe o que quer
Para ajudar. Um zilhão de
ferramentas!
•   Testes unitários: qUnit, YUITest, JSUnit
•   BDD: Screw.Unit, JSpec, JSSpec
•   Mock: qMock, Jack, Chameleon
•   Testes funcionais: YUITest (apenas o básico),
    Pyccuracy, Letuce, Cucumber
qUnit.
Porque?
Pros
   • Mantido pelo time do jQuery

   • Testes assíncronos

   • Setup e TearDown


Cons
   • Variáveis globais pra tudo que é lado

   • Poucos asserts
pyccuracy/lettuce/cucumber.
Porque?
Pros
   • Interação entre widgets

   • Mais rápido escrever os testes

   • Fácil integrar ao CI


Cons
   •  Não é atômico
chameleon
Porque?
Pros
   • Nós o mantemos

   • Fácil de usar

   • Integrado ao qUnit


Cons
   •  Faltam features
   •  Documentação de ciente
Ainda sobre mocks!
Faz sentido criar um mock
quando o objeto:
•   gera resultados não deterministicos
•   tem estados difíceis de criar ou reproduzir
•   ainda não existe ou pode ter o comportamento
    alterado
•   é necessário adicionar informações ou métodos,
    exclusivamente para os testes
•   ou simplesmente quer abstrair o resultado
O que esperar de uma
ferramenta de Mock?
•   Simular a chamada para um método
•   Adicionar expectativas
•   Validar se o esperado foi chamado
•   Informar, com clareza, falhas na expectativa
•   Deixa o teste legível, claro
Integração Contínua e
múltiplos navegadores?
•   Selenium grid
•   Hanoi
•   Yeti
•   TestSwarm
•   JsTestDriver
Obrigado!


Felipe Silva @felipe_silva
Marcio Duarte @Maethorin

Weitere ähnliche Inhalte

Was ist angesagt?

TDC 2013 SP | Arquitetura Java: Preciso de um Framework, mas qual usar?
TDC 2013 SP | Arquitetura Java: Preciso de um Framework, mas qual usar?TDC 2013 SP | Arquitetura Java: Preciso de um Framework, mas qual usar?
TDC 2013 SP | Arquitetura Java: Preciso de um Framework, mas qual usar?tdc-globalcode
 
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
 
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...tdc-globalcode
 
JavaCE Conference 2012: ExtJS 4 + VRaptor
JavaCE Conference 2012: ExtJS 4 + VRaptorJavaCE Conference 2012: ExtJS 4 + VRaptor
JavaCE Conference 2012: ExtJS 4 + VRaptorLoiane Groner
 
Testes Unitários: Começando a escrever testes no seu dia-a-dia
Testes Unitários: Começando a escrever testes no seu dia-a-diaTestes Unitários: Começando a escrever testes no seu dia-a-dia
Testes Unitários: Começando a escrever testes no seu dia-a-diaAlex Tercete
 
Arquitetura emergente - sobre cultura devops
Arquitetura emergente - sobre cultura devopsArquitetura emergente - sobre cultura devops
Arquitetura emergente - sobre cultura devopsGleicon Moraes
 
Introdução ao desenvolvimento front end usando bootstrap e angular js
Introdução ao desenvolvimento front end usando bootstrap e angular jsIntrodução ao desenvolvimento front end usando bootstrap e angular js
Introdução ao desenvolvimento front end usando bootstrap e angular jsCloves Moreira Junior
 
Simple singleton pattern
Simple singleton patternSimple singleton pattern
Simple singleton patternDennis Calazans
 
Coders on beer javascript de ponta a ponta
Coders on beer   javascript de ponta a pontaCoders on beer   javascript de ponta a ponta
Coders on beer javascript de ponta a pontaKirmayr tomaz
 
Acelere - e melhore! - o feedback com testes automatizados rápidos - igor abade
Acelere - e melhore! - o feedback com testes automatizados rápidos - igor abadeAcelere - e melhore! - o feedback com testes automatizados rápidos - igor abade
Acelere - e melhore! - o feedback com testes automatizados rápidos - igor abadeIgor Abade
 
QCon SP 2015 - Advogados do diabo: como a arquitetura emergente de sua aplica...
QCon SP 2015 - Advogados do diabo: como a arquitetura emergente de sua aplica...QCon SP 2015 - Advogados do diabo: como a arquitetura emergente de sua aplica...
QCon SP 2015 - Advogados do diabo: como a arquitetura emergente de sua aplica...Gleicon Moraes
 
JavaScript e o perfil do desenvolvedor front end das atualidades mais atuais
JavaScript e o perfil do desenvolvedor front end das atualidades mais atuaisJavaScript e o perfil do desenvolvedor front end das atualidades mais atuais
JavaScript e o perfil do desenvolvedor front end das atualidades mais atuaisWilliam Oliveira
 
Especificação por Exemplos e Testers
Especificação por Exemplos e TestersEspecificação por Exemplos e Testers
Especificação por Exemplos e TestersJose Papo, MSc
 

Was ist angesagt? (20)

Conheça o ASP.NET MVC 3
Conheça o ASP.NET MVC 3Conheça o ASP.NET MVC 3
Conheça o ASP.NET MVC 3
 
TDC 2013 SP | Arquitetura Java: Preciso de um Framework, mas qual usar?
TDC 2013 SP | Arquitetura Java: Preciso de um Framework, mas qual usar?TDC 2013 SP | Arquitetura Java: Preciso de um Framework, mas qual usar?
TDC 2013 SP | Arquitetura Java: Preciso de um Framework, mas qual usar?
 
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)
 
Curso HTML 5 - Aula Inicial
Curso HTML 5 - Aula InicialCurso HTML 5 - Aula Inicial
Curso HTML 5 - Aula Inicial
 
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
 
A saga do desenvolvedor java
A saga do desenvolvedor javaA saga do desenvolvedor java
A saga do desenvolvedor java
 
Vanilla js
Vanilla jsVanilla js
Vanilla js
 
Vanilla JS
Vanilla JSVanilla JS
Vanilla JS
 
JavaCE Conference 2012: ExtJS 4 + VRaptor
JavaCE Conference 2012: ExtJS 4 + VRaptorJavaCE Conference 2012: ExtJS 4 + VRaptor
JavaCE Conference 2012: ExtJS 4 + VRaptor
 
Testes Unitários: Começando a escrever testes no seu dia-a-dia
Testes Unitários: Começando a escrever testes no seu dia-a-diaTestes Unitários: Começando a escrever testes no seu dia-a-dia
Testes Unitários: Começando a escrever testes no seu dia-a-dia
 
Arquitetura emergente - sobre cultura devops
Arquitetura emergente - sobre cultura devopsArquitetura emergente - sobre cultura devops
Arquitetura emergente - sobre cultura devops
 
Porque PHP?
Porque PHP?Porque PHP?
Porque PHP?
 
Introdução ao desenvolvimento front end usando bootstrap e angular js
Introdução ao desenvolvimento front end usando bootstrap e angular jsIntrodução ao desenvolvimento front end usando bootstrap e angular js
Introdução ao desenvolvimento front end usando bootstrap e angular js
 
Simple singleton pattern
Simple singleton patternSimple singleton pattern
Simple singleton pattern
 
Coders on beer javascript de ponta a ponta
Coders on beer   javascript de ponta a pontaCoders on beer   javascript de ponta a ponta
Coders on beer javascript de ponta a ponta
 
Acelere - e melhore! - o feedback com testes automatizados rápidos - igor abade
Acelere - e melhore! - o feedback com testes automatizados rápidos - igor abadeAcelere - e melhore! - o feedback com testes automatizados rápidos - igor abade
Acelere - e melhore! - o feedback com testes automatizados rápidos - igor abade
 
QCon SP 2015 - Advogados do diabo: como a arquitetura emergente de sua aplica...
QCon SP 2015 - Advogados do diabo: como a arquitetura emergente de sua aplica...QCon SP 2015 - Advogados do diabo: como a arquitetura emergente de sua aplica...
QCon SP 2015 - Advogados do diabo: como a arquitetura emergente de sua aplica...
 
JavaScript e o perfil do desenvolvedor front end das atualidades mais atuais
JavaScript e o perfil do desenvolvedor front end das atualidades mais atuaisJavaScript e o perfil do desenvolvedor front end das atualidades mais atuais
JavaScript e o perfil do desenvolvedor front end das atualidades mais atuais
 
Ria e Java FX
Ria e Java FXRia e Java FX
Ria e Java FX
 
Especificação por Exemplos e Testers
Especificação por Exemplos e TestersEspecificação por Exemplos e Testers
Especificação por Exemplos e Testers
 

Ähnlich wie Front-end javascript unit testing and mock

Oficina de Teste de Usabilidade
Oficina de Teste de UsabilidadeOficina de Teste de Usabilidade
Oficina de Teste de UsabilidadeUTFPR
 
Zend Framework Estrutura e TDD
Zend Framework Estrutura e TDDZend Framework Estrutura e TDD
Zend Framework Estrutura e TDDPHP Day Curitiba
 
Qualidade no desenvolvimento de Software com TDD e PHPUnit
Qualidade no desenvolvimento de Software com TDD e PHPUnitQualidade no desenvolvimento de Software com TDD e PHPUnit
Qualidade no desenvolvimento de Software com TDD e PHPUnitDomingos Teruel
 
Carreira de Desenvolvimento
Carreira de DesenvolvimentoCarreira de Desenvolvimento
Carreira de DesenvolvimentoAlvaro Viebrantz
 
Lightining Talk - Testes Unitários
Lightining Talk - Testes UnitáriosLightining Talk - Testes Unitários
Lightining Talk - Testes UnitáriosDiogo Salaberri
 
Velozes e furiosos com extreme programming.
Velozes e furiosos com extreme programming. Velozes e furiosos com extreme programming.
Velozes e furiosos com extreme programming. Alessandro Binhara
 
Modelagem Ágil - UaiJug TechDays 2013 - Uberlândia MG
Modelagem Ágil - UaiJug TechDays 2013 - Uberlândia MGModelagem Ágil - UaiJug TechDays 2013 - Uberlândia MG
Modelagem Ágil - UaiJug TechDays 2013 - Uberlândia MGNeubio Ferreira
 
Scrum Gathering Rio 2014 - Melhorando sua Estratégia de Testes Automatizados
Scrum Gathering Rio 2014 - Melhorando sua Estratégia de Testes AutomatizadosScrum Gathering Rio 2014 - Melhorando sua Estratégia de Testes Automatizados
Scrum Gathering Rio 2014 - Melhorando sua Estratégia de Testes AutomatizadosStefan Teixeira
 
Boas práticas no desenvolvimento de software através do uso de TDD
Boas práticas no desenvolvimento de software através do uso de TDDBoas práticas no desenvolvimento de software através do uso de TDD
Boas práticas no desenvolvimento de software através do uso de TDDJony Ferreira dos Santos
 
Selenium Workshop
Selenium Workshop Selenium Workshop
Selenium Workshop Thoughtworks
 
Testes de integração em microservices
Testes de integração em microservicesTestes de integração em microservices
Testes de integração em microservicesClaudenir Freitas
 
Menos teste e mais qualidade - como equilibrar essa equação?
Menos teste e mais qualidade - como equilibrar essa equação?Menos teste e mais qualidade - como equilibrar essa equação?
Menos teste e mais qualidade - como equilibrar essa equação?Igor Abade
 
Integração Contínua com Hudson
Integração Contínua com HudsonIntegração Contínua com Hudson
Integração Contínua com HudsonLuis Reis
 
Como não ferrar com a user experience - Campus Party 2012
Como não ferrar com a user experience - Campus Party 2012 Como não ferrar com a user experience - Campus Party 2012
Como não ferrar com a user experience - Campus Party 2012 Juliana Gaiba
 

Ähnlich wie Front-end javascript unit testing and mock (20)

Oficina de Teste de Usabilidade
Oficina de Teste de UsabilidadeOficina de Teste de Usabilidade
Oficina de Teste de Usabilidade
 
Zend Framework Estrutura e TDD
Zend Framework Estrutura e TDDZend Framework Estrutura e TDD
Zend Framework Estrutura e TDD
 
Qualidade no desenvolvimento de Software com TDD e PHPUnit
Qualidade no desenvolvimento de Software com TDD e PHPUnitQualidade no desenvolvimento de Software com TDD e PHPUnit
Qualidade no desenvolvimento de Software com TDD e PHPUnit
 
JMeter
JMeterJMeter
JMeter
 
Carreira de Desenvolvimento
Carreira de DesenvolvimentoCarreira de Desenvolvimento
Carreira de Desenvolvimento
 
Lightining Talk - Testes Unitários
Lightining Talk - Testes UnitáriosLightining Talk - Testes Unitários
Lightining Talk - Testes Unitários
 
Teste de usabilidade
Teste de usabilidadeTeste de usabilidade
Teste de usabilidade
 
Teste de usabilidade
Teste de usabilidadeTeste de usabilidade
Teste de usabilidade
 
Velozes e furiosos com extreme programming.
Velozes e furiosos com extreme programming. Velozes e furiosos com extreme programming.
Velozes e furiosos com extreme programming.
 
Introdução ao TDD
Introdução ao TDDIntrodução ao TDD
Introdução ao TDD
 
Modelagem Ágil - UaiJug TechDays 2013 - Uberlândia MG
Modelagem Ágil - UaiJug TechDays 2013 - Uberlândia MGModelagem Ágil - UaiJug TechDays 2013 - Uberlândia MG
Modelagem Ágil - UaiJug TechDays 2013 - Uberlândia MG
 
#Moving br workshop
#Moving br workshop#Moving br workshop
#Moving br workshop
 
Scrum Gathering Rio 2014 - Melhorando sua Estratégia de Testes Automatizados
Scrum Gathering Rio 2014 - Melhorando sua Estratégia de Testes AutomatizadosScrum Gathering Rio 2014 - Melhorando sua Estratégia de Testes Automatizados
Scrum Gathering Rio 2014 - Melhorando sua Estratégia de Testes Automatizados
 
Boas práticas no desenvolvimento de software através do uso de TDD
Boas práticas no desenvolvimento de software através do uso de TDDBoas práticas no desenvolvimento de software através do uso de TDD
Boas práticas no desenvolvimento de software através do uso de TDD
 
Selenium Workshop
Selenium Workshop Selenium Workshop
Selenium Workshop
 
Integração Contínua
Integração ContínuaIntegração Contínua
Integração Contínua
 
Testes de integração em microservices
Testes de integração em microservicesTestes de integração em microservices
Testes de integração em microservices
 
Menos teste e mais qualidade - como equilibrar essa equação?
Menos teste e mais qualidade - como equilibrar essa equação?Menos teste e mais qualidade - como equilibrar essa equação?
Menos teste e mais qualidade - como equilibrar essa equação?
 
Integração Contínua com Hudson
Integração Contínua com HudsonIntegração Contínua com Hudson
Integração Contínua com Hudson
 
Como não ferrar com a user experience - Campus Party 2012
Como não ferrar com a user experience - Campus Party 2012 Como não ferrar com a user experience - Campus Party 2012
Como não ferrar com a user experience - Campus Party 2012
 

Front-end javascript unit testing and mock

  • 1. “Javascript também é código. Teste!”
  • 2. Além dos bons motivos já conhecidos • Diferenças entre navegadores • Complexidade nas interfaces • Volume de código
  • 3. E porque o povo não testa? Is paining • DOM • Interações do usuário • AJAX, animações • Múltiplos navegadores • Integração continua
  • 5. Test Driven Development . Cool! • Trata sobre Design • Foco no “como” e não no “o quê” • Pode ser unitário, funcional e até BDD • Não substitui testes automatizados • Tem regras e é bom segui-las (pq?)
  • 6. Test Driven Development. Benefícios! • Falhas de design aparecem mais cedo • Fácil saber quando já cobrimos todos os requisitos • Baby Steps • Bom quando não se sabe o que quer • Melhor ainda quando já se sabe o que quer
  • 7. Para ajudar. Um zilhão de ferramentas! • Testes unitários: qUnit, YUITest, JSUnit • BDD: Screw.Unit, JSpec, JSSpec • Mock: qMock, Jack, Chameleon • Testes funcionais: YUITest (apenas o básico), Pyccuracy, Letuce, Cucumber
  • 8. qUnit. Porque? Pros • Mantido pelo time do jQuery • Testes assíncronos • Setup e TearDown Cons • Variáveis globais pra tudo que é lado • Poucos asserts
  • 9. pyccuracy/lettuce/cucumber. Porque? Pros • Interação entre widgets • Mais rápido escrever os testes • Fácil integrar ao CI Cons • Não é atômico
  • 10. chameleon Porque? Pros • Nós o mantemos • Fácil de usar • Integrado ao qUnit Cons • Faltam features • Documentação de ciente
  • 12. Faz sentido criar um mock quando o objeto: • gera resultados não deterministicos • tem estados difíceis de criar ou reproduzir • ainda não existe ou pode ter o comportamento alterado • é necessário adicionar informações ou métodos, exclusivamente para os testes • ou simplesmente quer abstrair o resultado
  • 13. O que esperar de uma ferramenta de Mock? • Simular a chamada para um método • Adicionar expectativas • Validar se o esperado foi chamado • Informar, com clareza, falhas na expectativa • Deixa o teste legível, claro
  • 14. Integração Contínua e múltiplos navegadores? • Selenium grid • Hanoi • Yeti • TestSwarm • JsTestDriver

Hinweis der Redaktion

  1. Nenhuma mudança é pequena de fato; Permite refactor; Viabiliza integração contínua; Paz de espirito;
  2. As interações com usuários são complexas, dependem de controlarmos eventos o tempo inteiro. Requisições que podem ser assincronas e ainda termos que ter uma URL em algum canto que funcione e retorne algo. Navegadores: o que funciona em um pode não funcionar em outro. Como integrar nossos testes em nosso CI?
  3. Desenhar bem! E é disso que TDD trata: Design. Definir como seu código será usado. Interfaces com o mundo exterior. Isso não é o quê... Você pode fazer TDD tanto inside-out ou outside-in. Você ainda vai precisar criar mais testes para melhorar sua cobertura e ter a Paz de espírito Pq ver o teste quebrar? Pq implementar mais simples? Pq ver o teste passar? Pq refatorar?
  4. O que vc idealizou pode não ser tão simples de consumir. O “como” mantém o foco no requisito e não no código em sí. Sabedoria popular... Economia de esforço... Carpem Diem... Próximo passo o mais curto possível É complexo, é chato, é desconhecido? Baby steps torna mais digerível... Já sabe o que quer. Economize o cérebro deixando a metodologia trabalhar pra você.
  5. Muitas foram descontinuadas, outras tantas possuem documentação deficiente. (open source) YUITest é possível fazer testes funcionais básicos apenas. SYN, para auxiliaem testes funcionais.
  6. Curva de aprendizado menor, comparado com os demais frameworks de teste unitário; Integração com inúmeras bibliotecas de mock; jqUnit: Surgiu para acabar com a bagunça de variáveis globais. Poucos asserts: equals, ok, same CODAR
  7. Testes de ace
  8. CODAR.