SlideShare uma empresa Scribd logo
Test-Driven Development
com JavaScript
Rodrigo Branas – @rodrigobranas - http://www.agilecode.com.br
“Transformar equipes de desenvolvimento de software”
http://www.agilecode.com.br
Rodrigo Branas
rodrigo.branas@agilecode.com.br
http://www.agilecode.com.br
• Desenvolvendo Software na Gennera
• Criando treinamentos na Agile Code
• Escrevendo na Java Magazine e PacktPub
• Palestrando sobre desenvolvimento de
software em eventos, universidades e
empresas
Certificações
Formação Acadêmica
Ciências da Computação – UFSC
Gerenciamento de Projetos - FGV
SCJA, SCJP, SCJD, SCWCD, SCBCD, PMP, MCP e CSM
Experiência
Há mais de 12 anos desenvolvendo software na
plataforma Java com as empresas: EDS, HP, NET,
Citibank, GM, Dígitro, Softplan, OnCast, Senai,
VALE, RBS, Unimed, Globalcode, V.Office, Suntech,
WPlex e Gennera.
• Há mais de 5 anos liderando pessoas.
• Mais de 2000 horas em sala de aula.
• Mais de 100 apresentações em eventos.
• 6 artigos escritos para revistas.
• 1 livro.
• Mais de 500 profissionais treinados.
• Criação de 22 palestras.
• Criação de 10 treinamentos.
• Criação de mais de 3.000 slides.
Atualmente, qual é a cobertura de
testes nos projetos de vocês?
Qual é o problema em não ter de
testes automatizados?
Code and Pray
Trabalho braçal para testar várias
vezes a mesma coisa
Trabalhar em um castelo de cartas
Você tem medo do projeto em
que trabalha?
Onde entra o Agile nisso tudo?
Velocidade é a ausência de
desperdício – Amyr Klink
Se você trabalha para eliminar o
desperdício, aumentará gradativamente
a porcentagem de tempo que gasta
adicionando valor ao produto!
Test-Driven Development com JavaScript, Jasmine  Karma
Geralmente a gente pensa e vai
codificando, depois vê o que acontece
Geralmente a gente pensa e vai
codificando, depois vê o que acontece
Geralmente a gente pensa e vai
codificando, depois vê o que acontece
Geralmente a gente pensa e vai
codificando, depois vê o que acontece
É tudo uma questão de expectativa
Test-Driven Development com JavaScript, Jasmine  Karma
Jasmine
Para testar a nossa aplicação, vamos utilizar
o framework de testes Jasmine. Ele é fácil
de utilizar e se integra bem com
ferramentas de automação.
http://pivotal.github.io/jasmine
Executando os testes
Como você executa os testes em Java?
Test-Driven Development com JavaScript, Jasmine  Karma
Karma
O Karma é uma das ferramenta mais
utilizadas para a execução de testes escritos
em JavaScript. Ela é compatível com
principais frameworks de teste como o
Jasmine, Mocha e QUnit.
http://karma-runner.github.io
Processo de Instalação
Para instalar a ferramenta, basta digitar o
comando abaixo:
npm install -g karma karma-cli
Configuração
O Karma é configurado por meio do arquivo
karma.conf.js. Nele será especificado o
framework de teste, a localização dos arquivos
da aplicação e o ambiente de execução.
karma init
karma.conf.js
module.exports = function(config) {
config.set({
basePath: '',
frameworks: ['jasmine'],
files: ['js/*.js', 'test/*.js'],
exclude: [],
port: 8080,
colors: true,
logLevel: config.LOG_INFO,
autoWatch: true,
browsers: ['Chrome'],
singleRun: false
});
};
karma start
karma run
Calculadora de Strings
Vamos praticar
Vou usar esse negócio o tempo
todo?
Escrever o teste antes limita o escopo,
evitando codificar além do necessário
Já se pegou codificando várias
coisas diferentes ao mesmo tempo?
Escrever o teste antes não aumenta
o tempo de desenvolvimento?
Escrever o teste depois ou não escrever e
assumir um maior número de bugs para
corrigir, não aumenta o tempo de
desenvolvimento?
Evitar o refactoring por conta da falta de
testes leva a um código de baixa qualidade
e difícil de manter, não aumenta o tempo de
desenvolvimento?
Ter uma alta rotatividade por conta dos
problemas causados pela qualidade do
código, não aumenta o tempo de
desenvolvimento?
A dificuldade de entendimento por conta de
um código sem uma documentação
atualizada, como por exemplo um teste,
não aumenta o tempo de desenvolvimento?
Testar repetidas vezes a mesma coisa,
manualmente, não aumenta o tempo de
desenvolvimento?

Mais conteúdo relacionado

Mais procurados (20)

Minicurso - Desenvolvendo aplicações web com JavaScript e AngularJS - Estácio...
Minicurso - Desenvolvendo aplicações web com JavaScript e AngularJS - Estácio...
Rodrigo Branas
 
Introdução ao AngularJS
Introdução ao AngularJS
Rodrigo Branas
 
Refactoring
Refactoring
Rodrigo Branas
 
HTTP, JSON, REST e AJAX com AngularJS
HTTP, JSON, REST e AJAX com AngularJS
Rodrigo Branas
 
#1 - Git - Introdução
#1 - Git - Introdução
Rodrigo Branas
 
Testes Automatizados
Testes Automatizados
Rodrigo Branas
 
A evolução do AngularJS
A evolução do AngularJS
Rodrigo Branas
 
Material Design simples e rapido com AngularJS
Material Design simples e rapido com AngularJS
Henrique Limas
 
Introdução ao AngularJS!
Introdução ao AngularJS!
Diullian Casagrande
 
Introdução ao LiveOak
Introdução ao LiveOak
jesuinoPower
 
Primeiros passos no Vue.js
Primeiros passos no Vue.js
Joel Rodrigues
 
Conectando jBPM com o mundo - TDC 2014 SP
Conectando jBPM com o mundo - TDC 2014 SP
jesuinoPower
 
jQuery
jQuery
Douglas Aguiar
 
Apresentação JQuery
Apresentação JQuery
Kassiano Pretto
 
Criando aplicações java fx em minutos
Criando aplicações java fx em minutos
Bruno Oliveira
 
JavaFX: Desktop para desenvolvedores WEB
JavaFX: Desktop para desenvolvedores WEB
jesuinoPower
 
Aprendendo Na Prática: Aplicativos Web com HTML5, Angular.js, Twitter Bootstr...
Aprendendo Na Prática: Aplicativos Web com HTML5, Angular.js, Twitter Bootstr...
Daniel Makiyama
 
Clean Architecture
Clean Architecture
Rodrigo Branas
 
O poder das Progressive Web Apps
O poder das Progressive Web Apps
Pedro Edson Silva Barros
 
Domain-Driven Design
Domain-Driven Design
Rodrigo Branas
 
Minicurso - Desenvolvendo aplicações web com JavaScript e AngularJS - Estácio...
Minicurso - Desenvolvendo aplicações web com JavaScript e AngularJS - Estácio...
Rodrigo Branas
 
Introdução ao AngularJS
Introdução ao AngularJS
Rodrigo Branas
 
HTTP, JSON, REST e AJAX com AngularJS
HTTP, JSON, REST e AJAX com AngularJS
Rodrigo Branas
 
#1 - Git - Introdução
#1 - Git - Introdução
Rodrigo Branas
 
A evolução do AngularJS
A evolução do AngularJS
Rodrigo Branas
 
Material Design simples e rapido com AngularJS
Material Design simples e rapido com AngularJS
Henrique Limas
 
Introdução ao LiveOak
Introdução ao LiveOak
jesuinoPower
 
Primeiros passos no Vue.js
Primeiros passos no Vue.js
Joel Rodrigues
 
Conectando jBPM com o mundo - TDC 2014 SP
Conectando jBPM com o mundo - TDC 2014 SP
jesuinoPower
 
Criando aplicações java fx em minutos
Criando aplicações java fx em minutos
Bruno Oliveira
 
JavaFX: Desktop para desenvolvedores WEB
JavaFX: Desktop para desenvolvedores WEB
jesuinoPower
 
Aprendendo Na Prática: Aplicativos Web com HTML5, Angular.js, Twitter Bootstr...
Aprendendo Na Prática: Aplicativos Web com HTML5, Angular.js, Twitter Bootstr...
Daniel Makiyama
 

Destaque (15)

JavaScript - Date
JavaScript - Date
Rodrigo Branas
 
JavaScript - Expressões Regulares
JavaScript - Expressões Regulares
Rodrigo Branas
 
Node.js - #7 - Core Modules - http - Parte 1 - Rodrigo Branas
Node.js - #7 - Core Modules - http - Parte 1 - Rodrigo Branas
Rodrigo Branas
 
Técnicas de Refactoring
Técnicas de Refactoring
Rodrigo Branas
 
#2 - Git - DAG
#2 - Git - DAG
Rodrigo Branas
 
Clean Code
Clean Code
Rodrigo Branas
 
Node.js - #5 - Process - Rodrigo Branas
Node.js - #5 - Process - Rodrigo Branas
Rodrigo Branas
 
Node.js - #6 - Core Modules - net - Rodrigo Branas
Node.js - #6 - Core Modules - net - Rodrigo Branas
Rodrigo Branas
 
Node.js - #2 - Sistema de Módulos - Rodrigo Branas
Node.js - #2 - Sistema de Módulos - Rodrigo Branas
Rodrigo Branas
 
XP - Extreme Programming
XP - Extreme Programming
Rodrigo Branas
 
Criando serviços com AngularJS
Criando serviços com AngularJS
Rodrigo Branas
 
HTTP Interceptors com AngularJS
HTTP Interceptors com AngularJS
Rodrigo Branas
 
Utilizando diretivas com AngularJS
Utilizando diretivas com AngularJS
Rodrigo Branas
 
Evoluindo a arquitetura de uma aplicação com AngularJS
Evoluindo a arquitetura de uma aplicação com AngularJS
Rodrigo Branas
 
Construindo Diretivas com AngularJS
Construindo Diretivas com AngularJS
Rodrigo Branas
 
JavaScript - Expressões Regulares
JavaScript - Expressões Regulares
Rodrigo Branas
 
Node.js - #7 - Core Modules - http - Parte 1 - Rodrigo Branas
Node.js - #7 - Core Modules - http - Parte 1 - Rodrigo Branas
Rodrigo Branas
 
Técnicas de Refactoring
Técnicas de Refactoring
Rodrigo Branas
 
Node.js - #5 - Process - Rodrigo Branas
Node.js - #5 - Process - Rodrigo Branas
Rodrigo Branas
 
Node.js - #6 - Core Modules - net - Rodrigo Branas
Node.js - #6 - Core Modules - net - Rodrigo Branas
Rodrigo Branas
 
Node.js - #2 - Sistema de Módulos - Rodrigo Branas
Node.js - #2 - Sistema de Módulos - Rodrigo Branas
Rodrigo Branas
 
XP - Extreme Programming
XP - Extreme Programming
Rodrigo Branas
 
Criando serviços com AngularJS
Criando serviços com AngularJS
Rodrigo Branas
 
HTTP Interceptors com AngularJS
HTTP Interceptors com AngularJS
Rodrigo Branas
 
Utilizando diretivas com AngularJS
Utilizando diretivas com AngularJS
Rodrigo Branas
 
Evoluindo a arquitetura de uma aplicação com AngularJS
Evoluindo a arquitetura de uma aplicação com AngularJS
Rodrigo Branas
 
Construindo Diretivas com AngularJS
Construindo Diretivas com AngularJS
Rodrigo Branas
 
Anúncio

Semelhante a Test-Driven Development com JavaScript, Jasmine Karma (20)

[DevOps Carioca] Testes Automatizados
[DevOps Carioca] Testes Automatizados
Samanta Cicilia
 
Samanta Cicilia - MTC - Importância de Testes Automatizados para Continuous D...
Samanta Cicilia - MTC - Importância de Testes Automatizados para Continuous D...
minastestingconference
 
Importância de Testes Automatizados para Continuous Delivery & DevOps
Importância de Testes Automatizados para Continuous Delivery & DevOps
Samanta Cicilia
 
Automação de testes para equipes agile
Automação de testes para equipes agile
Alini Rebonatto
 
[DevOps Summit]Importância de testes automatizados para sustentar Continuous...
[DevOps Summit]Importância de testes automatizados para sustentar Continuous...
Samanta Cicilia
 
Mini curso de testes ágeis
Mini curso de testes ágeis
Qualister
 
Agile Testing - Qualidade do Discovery ao Deploy
Agile Testing - Qualidade do Discovery ao Deploy
Eduardo Cini
 
Teste Ágil - Fazendo pirâmides com node.js
Teste Ágil - Fazendo pirâmides com node.js
Diogo Andrade Miranda
 
Testes de Software & Ferramentas de Testes
Testes de Software & Ferramentas de Testes
Paulo César M Jeveaux
 
TDD
TDD
João Victorino
 
Unit Test JavaScript
Unit Test JavaScript
Dan Vitoriano
 
Introdução a testes automatizados
Introdução a testes automatizados
Thiago Ghisi
 
DevQA | Da zona de conforto ao comprometimento com a qualidade
DevQA | Da zona de conforto ao comprometimento com a qualidade
Kamilla Queiroz Xavier
 
Greenbar - Testes automatizados na sua empresa
Greenbar - Testes automatizados na sua empresa
Rafael Ponte
 
Meus 50 Cents sobre Teste de Software
Meus 50 Cents sobre Teste de Software
Vanilton Pinheiro
 
CNQS - Testes Automatizados & Continuous Delivery
CNQS - Testes Automatizados & Continuous Delivery
Samanta Cicilia
 
Testes com javascript
Testes com javascript
Laís Lima
 
Agile testing coach - Agile Trends Floripa
Agile testing coach - Agile Trends Floripa
Walmyr Lima e Silva Filho
 
DevQA - Da zona de conforto ao comprometimento com a qualidade
DevQA - Da zona de conforto ao comprometimento com a qualidade
Kamilla Queiroz Xavier
 
[GUTS-RS] Agile Tester 3.0
[GUTS-RS] Agile Tester 3.0
GUTS-RS
 
[DevOps Carioca] Testes Automatizados
[DevOps Carioca] Testes Automatizados
Samanta Cicilia
 
Samanta Cicilia - MTC - Importância de Testes Automatizados para Continuous D...
Samanta Cicilia - MTC - Importância de Testes Automatizados para Continuous D...
minastestingconference
 
Importância de Testes Automatizados para Continuous Delivery & DevOps
Importância de Testes Automatizados para Continuous Delivery & DevOps
Samanta Cicilia
 
Automação de testes para equipes agile
Automação de testes para equipes agile
Alini Rebonatto
 
[DevOps Summit]Importância de testes automatizados para sustentar Continuous...
[DevOps Summit]Importância de testes automatizados para sustentar Continuous...
Samanta Cicilia
 
Mini curso de testes ágeis
Mini curso de testes ágeis
Qualister
 
Agile Testing - Qualidade do Discovery ao Deploy
Agile Testing - Qualidade do Discovery ao Deploy
Eduardo Cini
 
Teste Ágil - Fazendo pirâmides com node.js
Teste Ágil - Fazendo pirâmides com node.js
Diogo Andrade Miranda
 
Testes de Software & Ferramentas de Testes
Testes de Software & Ferramentas de Testes
Paulo César M Jeveaux
 
Unit Test JavaScript
Unit Test JavaScript
Dan Vitoriano
 
Introdução a testes automatizados
Introdução a testes automatizados
Thiago Ghisi
 
DevQA | Da zona de conforto ao comprometimento com a qualidade
DevQA | Da zona de conforto ao comprometimento com a qualidade
Kamilla Queiroz Xavier
 
Greenbar - Testes automatizados na sua empresa
Greenbar - Testes automatizados na sua empresa
Rafael Ponte
 
Meus 50 Cents sobre Teste de Software
Meus 50 Cents sobre Teste de Software
Vanilton Pinheiro
 
CNQS - Testes Automatizados & Continuous Delivery
CNQS - Testes Automatizados & Continuous Delivery
Samanta Cicilia
 
Testes com javascript
Testes com javascript
Laís Lima
 
DevQA - Da zona de conforto ao comprometimento com a qualidade
DevQA - Da zona de conforto ao comprometimento com a qualidade
Kamilla Queiroz Xavier
 
[GUTS-RS] Agile Tester 3.0
[GUTS-RS] Agile Tester 3.0
GUTS-RS
 
Anúncio

Mais de Rodrigo Branas (8)

Node.js - #4 - Timers - Rodrigo Branas
Node.js - #4 - Timers - Rodrigo Branas
Rodrigo Branas
 
Node.js - #3 - Global Objects - Rodrigo Branas
Node.js - #3 - Global Objects - Rodrigo Branas
Rodrigo Branas
 
Node.js - #1 - Introdução - Rodrigo Branas
Node.js - #1 - Introdução - Rodrigo Branas
Rodrigo Branas
 
#6 - Git - Desfazendo as coisas
#6 - Git - Desfazendo as coisas
Rodrigo Branas
 
#5 - Git - Contribuindo com um repositório remoto
#5 - Git - Contribuindo com um repositório remoto
Rodrigo Branas
 
#4 - Git - Stash
#4 - Git - Stash
Rodrigo Branas
 
#3 - Git - Branching e Merging
#3 - Git - Branching e Merging
Rodrigo Branas
 
Desvendando a linguagem JavaScript
Desvendando a linguagem JavaScript
Rodrigo Branas
 
Node.js - #4 - Timers - Rodrigo Branas
Node.js - #4 - Timers - Rodrigo Branas
Rodrigo Branas
 
Node.js - #3 - Global Objects - Rodrigo Branas
Node.js - #3 - Global Objects - Rodrigo Branas
Rodrigo Branas
 
Node.js - #1 - Introdução - Rodrigo Branas
Node.js - #1 - Introdução - Rodrigo Branas
Rodrigo Branas
 
#6 - Git - Desfazendo as coisas
#6 - Git - Desfazendo as coisas
Rodrigo Branas
 
#5 - Git - Contribuindo com um repositório remoto
#5 - Git - Contribuindo com um repositório remoto
Rodrigo Branas
 
#3 - Git - Branching e Merging
#3 - Git - Branching e Merging
Rodrigo Branas
 
Desvendando a linguagem JavaScript
Desvendando a linguagem JavaScript
Rodrigo Branas
 

Último (13)

A-Historia-do-Java-Uma-Linguagem-que-Transformou-o-Cenario-da-Programacao.pptx
A-Historia-do-Java-Uma-Linguagem-que-Transformou-o-Cenario-da-Programacao.pptx
destruidorschirmer
 
Certified SAFe 6 Lean Portfolio Manager
Certified SAFe 6 Lean Portfolio Manager
Adail Viana Neto
 
modelo apresentação power point de TCC para se inspirar
modelo apresentação power point de TCC para se inspirar
marianaabelhao2024
 
Certified SAFe 6 Agilist
Certified SAFe 6 Agilist
Adail Viana Neto
 
Capítulo 7 - Redes de computadores multimídia.ppt
Capítulo 7 - Redes de computadores multimídia.ppt
ssuser0a4331
 
Como Criar uma Partição Bootável no HD Interno.pptx
Como Criar uma Partição Bootável no HD Interno.pptx
vieirapatricio94
 
A-Historia-da-Programacao-Orientada-a-Objetos.pptx
A-Historia-da-Programacao-Orientada-a-Objetos.pptx
destruidorschirmer
 
POAN-1 trabalho de antena de microfita.pptx
POAN-1 trabalho de antena de microfita.pptx
joaquimpaulo2306
 
SISTEMAS OPERACIONAIS DE COMPUTADORES PARTE 1
SISTEMAS OPERACIONAIS DE COMPUTADORES PARTE 1
jarlisonsantos1985
 
G.6 Avarias Mais Comuns em Computadores TIC2.pptx
G.6 Avarias Mais Comuns em Computadores TIC2.pptx
vieirapatricio94
 
PPT - Capítulo 6 - Redes sem fio e redes móveis.ppt
PPT - Capítulo 6 - Redes sem fio e redes móveis.ppt
ssuser0a4331
 
Joao Claudio Nunes Carvalho-Classificacao de filmes do Netflix.docx
Joao Claudio Nunes Carvalho-Classificacao de filmes do Netflix.docx
ssuser1712ed
 
Breve Histórico do Computador [2 de 2].pdf
Breve Histórico do Computador [2 de 2].pdf
jarlisonsantos1985
 
A-Historia-do-Java-Uma-Linguagem-que-Transformou-o-Cenario-da-Programacao.pptx
A-Historia-do-Java-Uma-Linguagem-que-Transformou-o-Cenario-da-Programacao.pptx
destruidorschirmer
 
Certified SAFe 6 Lean Portfolio Manager
Certified SAFe 6 Lean Portfolio Manager
Adail Viana Neto
 
modelo apresentação power point de TCC para se inspirar
modelo apresentação power point de TCC para se inspirar
marianaabelhao2024
 
Capítulo 7 - Redes de computadores multimídia.ppt
Capítulo 7 - Redes de computadores multimídia.ppt
ssuser0a4331
 
Como Criar uma Partição Bootável no HD Interno.pptx
Como Criar uma Partição Bootável no HD Interno.pptx
vieirapatricio94
 
A-Historia-da-Programacao-Orientada-a-Objetos.pptx
A-Historia-da-Programacao-Orientada-a-Objetos.pptx
destruidorschirmer
 
POAN-1 trabalho de antena de microfita.pptx
POAN-1 trabalho de antena de microfita.pptx
joaquimpaulo2306
 
SISTEMAS OPERACIONAIS DE COMPUTADORES PARTE 1
SISTEMAS OPERACIONAIS DE COMPUTADORES PARTE 1
jarlisonsantos1985
 
G.6 Avarias Mais Comuns em Computadores TIC2.pptx
G.6 Avarias Mais Comuns em Computadores TIC2.pptx
vieirapatricio94
 
PPT - Capítulo 6 - Redes sem fio e redes móveis.ppt
PPT - Capítulo 6 - Redes sem fio e redes móveis.ppt
ssuser0a4331
 
Joao Claudio Nunes Carvalho-Classificacao de filmes do Netflix.docx
Joao Claudio Nunes Carvalho-Classificacao de filmes do Netflix.docx
ssuser1712ed
 
Breve Histórico do Computador [2 de 2].pdf
Breve Histórico do Computador [2 de 2].pdf
jarlisonsantos1985
 

Test-Driven Development com JavaScript, Jasmine Karma