SlideShare uma empresa Scribd logo
1 de 55
Baixar para ler offline
Javascript
Alexandre Gomes
testando
Testes
Automatizados
TDDing com Javascript
TDDtest driven development
planejar
executaravaliar
intenção
códigomelhorias
vermelho
verderefactoring
intenção código melhorias
intenção código melhorias
intenção código melhorias
intenção código melhorias
TDDing com Javascript
TDDing com Javascript
https://weblogs.java.net/blog/johnsmart/archive/2014/01/04/bdd-unit-tests-and-power-fluent-assertions
http://jsunit.berlios.de/
TDDing com Javascript
TDDing com Javascript
TDDing com Javascript
TDDing com Javascript
TDDing com Javascript
Suite de Testes Cadastro de Usuários {
}
testeInclusaoDeUsuarioTudoCerto {
...
}
testeInclusaoDeUsuarioFaltandoDados {
...
}
descreva Cadastro de Usuários {
}
ela Deveria funcionar em um cenário normal {
...
}
ela Deveria dar erro se estiver faltando dados {
...
}
descreva Inclusão de Usuários {
}
descreva Exclusão de Usuários { ... }
• Cadastro de Usuários
• Inclusão
– Deveria funcionar em um cenário normal
– Deveria dar erro caso estejam faltando dados
– …
• Exclusão
– Expectativa 1
– Expectativa 2
– …
√
X
BDDbehaviour driven development
http://jasmine.github.io/
TDDing com Javascript
TDDing com Javascript
TDDing com Javascript
TDDing com Javascript
TDDing com Javascript
TDDing com Javascript
describe
it
it
it
it
o que eu estou testando
tem que se comportar assim
tem que se comportar assado
tem que fazer isso
tem que fazer aquilo
describe
it
it
it
it
o que eu estou testando
tem que se comportar assim
tem que se comportar assado
tem que fazer isso
tem que fazer aquilo
describe um caso especial
it tem que tomar cuidado
describe
it
it
it
it
o que eu estou testando
tem que se comportar assim
tem que se comportar assado
tem que fazer isso
tem que fazer aquilo
describe um caso especial
it
expect
tem que tomar cuidado
que alguma operação
toEqual ao resultado esperado
describe
it
it
it
it
o que eu estou testando
tem que se comportar assim
tem que se comportar assado
tem que fazer isso
tem que fazer aquilo
describe um caso especial
it
expect
tem que tomar cuidado
que alguma operação
toEqual ao resultado esperado
https://github.com/pivotal/jasmine/wiki/Matchers
TDDing com Javascript
TDDing com Javascript
TDDing com Javascript
TDDing com Javascript
TDDing com Javascript
DSLdomain driven language
Dado que Alguma circunstância
Quando alguma coisa acontecer
Então é esperado que algo aconteça
Given Alguma circunstância
When alguma coisa acontecer
Then é esperado que algo aconteça
http://martinfowler.com/bliki/GivenWhenThen.html
https://github.com/cucumber/cucumber/wiki/Given-When-Then
Given I am not logged in
When I log in as Liz with a password JBehaver
Then I should see a message, “Welcome, Liz!”
Given "the number 5"
When "all prime numbers less than it are requested"
Then "it should return [1,2,3,5] as a result"
http://jbehave.org/
Narrative:
As a Usuario
I want Preencher um pedido
So that Finalizar uma venda
Scenario: Verificar o saldo de produtos
Given O estoque tem 10 produtos
When Eu verifico que há a disponibilidade para vender 5 produtos
Then Deve retornar “true”
Scenario: Pedido preenchido com sucesso
Given O estoque tem 10 produtos
When Eu preencho um pedido com 3 produtos
Then Deve ser retornado que o status de preenchimento do pedido é
“true”
TDDing com Javascript
$ npm install cucumber
(node:37359) fs: re-evaluating native module sources is not supported. If you are using the graceful-fs module, please
update it to a more recent version.
node-labs@1.0.0 /Users/alegomes/GDrive/2016/unb/cic/mpca/Construção de Software/slides/NodeJS/_
└─┬ cucumber@1.0.0
├── base-64@0.1.0
├── callsite@1.0.0
├─┬ camel-case@1.2.2
│ ├─┬ sentence-case@1.1.3
│ │ └── lower-case@1.1.3
│ └── upper-case@1.1.3
├─┬ cli-table@0.3.1
│ └── colors@1.0.3
├── co@4.6.0
├── colors@1.1.2
├─┬ commander@2.9.0
│ └── graceful-readlink@1.0.1
├── cucumber-html@0.2.3
├─┬ duration@0.2.0
│ ├── d@0.1.1
│ └─┬ es5-ext@0.10.11
│ ├── es6-iterator@2.0.0
│ └── es6-symbol@3.0.2
├── gherkin@4.0.0
├─┬ glob@7.0.5
│ ├── fs.realpath@1.0.0
│ ├─┬ inflight@1.0.5
│ │ └── wrappy@1.0.2
│ ├─┬ minimatch@3.0.2
│ │ └─┬ brace-expansion@1.1.5
│ │ ├── balanced-match@0.4.1
│ │ └── concat-map@0.0.1
│ ├── once@1.3.3
│ └── path-is-absolute@1.0.0
├── is-generator@1.0.3
├── lodash@4.13.1
└── stack-chain@1.3.7
TDDing com Javascript
TDDing com Javascript
$ cucumber.js
TDDing com Javascript
$ cucumber.js
P&Raprender.unb.br

Mais conteúdo relacionado

Semelhante a TDDing com Javascript

GraphQL e APIs: como manter a qualidade?
GraphQL e APIs: como manter a qualidade?GraphQL e APIs: como manter a qualidade?
GraphQL e APIs: como manter a qualidade?Qaladies
 
Hibernate efetivo (IA-2014 / Disturbing the Mind)
Hibernate efetivo (IA-2014 / Disturbing the Mind)Hibernate efetivo (IA-2014 / Disturbing the Mind)
Hibernate efetivo (IA-2014 / Disturbing the Mind)Rafael Ponte
 
T08_T09_LM3: Estruturas de repetição (2013-2014)
T08_T09_LM3: Estruturas de repetição (2013-2014)T08_T09_LM3: Estruturas de repetição (2013-2014)
T08_T09_LM3: Estruturas de repetição (2013-2014)Carlos Santos
 
Testes unitários como ferramentas de design de código
Testes unitários como ferramentas de design de códigoTestes unitários como ferramentas de design de código
Testes unitários como ferramentas de design de códigoPaula Grangeiro
 
Pacote web java script
Pacote web   java scriptPacote web   java script
Pacote web java scriptJoão Henrique
 
[PHPConferenceBR] Automação de testes com Codeception
[PHPConferenceBR] Automação de testes com Codeception[PHPConferenceBR] Automação de testes com Codeception
[PHPConferenceBR] Automação de testes com CodeceptionJúlio de Lima
 
pepinos do cliente no código de testes da aplicação com OSS
pepinos do cliente no código de testes da aplicação com OSSpepinos do cliente no código de testes da aplicação com OSS
pepinos do cliente no código de testes da aplicação com OSSRodrigo Urubatan
 
[38º GURU SP] Automação de Testes Web em Ruby com Cucumber e Webdriver
[38º GURU SP] Automação de Testes Web em Ruby com Cucumber e Webdriver[38º GURU SP] Automação de Testes Web em Ruby com Cucumber e Webdriver
[38º GURU SP] Automação de Testes Web em Ruby com Cucumber e WebdriverJúlio de Lima
 
Fisl 16 – Nem tudo o que reluz é ouro. hackeando as principais dicas de desen...
Fisl 16 – Nem tudo o que reluz é ouro. hackeando as principais dicas de desen...Fisl 16 – Nem tudo o que reluz é ouro. hackeando as principais dicas de desen...
Fisl 16 – Nem tudo o que reluz é ouro. hackeando as principais dicas de desen...Thiago Dieb
 
Fisl 16 - Nem tudo o que reluz é ouro. hackeando as principais dicas de dese...
Fisl 16 - Nem tudo o que reluz é ouro. hackeando as principais dicas de dese...Fisl 16 - Nem tudo o que reluz é ouro. hackeando as principais dicas de dese...
Fisl 16 - Nem tudo o que reluz é ouro. hackeando as principais dicas de dese...As Zone
 
Maratona Windows Phone 7
Maratona Windows Phone 7Maratona Windows Phone 7
Maratona Windows Phone 7Felipe Pimentel
 
Microsoft S2B - C# ASP.NET
Microsoft S2B - C# ASP.NETMicrosoft S2B - C# ASP.NET
Microsoft S2B - C# ASP.NETphilipsoares
 
Node VM and ChildProcess: Executando códigos não confiáveis no seu servidor
Node VM and ChildProcess: Executando códigos não confiáveis no seu servidorNode VM and ChildProcess: Executando códigos não confiáveis no seu servidor
Node VM and ChildProcess: Executando códigos não confiáveis no seu servidortdc-globalcode
 
Node VM and ChildProcess: Executando códigos não confiáveis no seu servidor
Node VM and ChildProcess: Executando códigos não confiáveis no seu servidorNode VM and ChildProcess: Executando códigos não confiáveis no seu servidor
Node VM and ChildProcess: Executando códigos não confiáveis no seu servidorEvandro Eisinger
 
Como ser programador durante o dia e mesmo assim dormir bem à noite
Como ser programador durante o dia e mesmo assim dormir bem à noiteComo ser programador durante o dia e mesmo assim dormir bem à noite
Como ser programador durante o dia e mesmo assim dormir bem à noiteComunidade NetPonto
 
Desenvolvendo com Silverlight para WP7 Mango [Update]
Desenvolvendo com Silverlight para WP7 Mango [Update]Desenvolvendo com Silverlight para WP7 Mango [Update]
Desenvolvendo com Silverlight para WP7 Mango [Update]Felipe Pimentel
 
S2 b desenvolvimento de sistemas [reparado]
S2 b   desenvolvimento de sistemas [reparado]S2 b   desenvolvimento de sistemas [reparado]
S2 b desenvolvimento de sistemas [reparado]Milena Rebouças
 

Semelhante a TDDing com Javascript (20)

GraphQL e APIs: como manter a qualidade?
GraphQL e APIs: como manter a qualidade?GraphQL e APIs: como manter a qualidade?
GraphQL e APIs: como manter a qualidade?
 
Hibernate efetivo (IA-2014 / Disturbing the Mind)
Hibernate efetivo (IA-2014 / Disturbing the Mind)Hibernate efetivo (IA-2014 / Disturbing the Mind)
Hibernate efetivo (IA-2014 / Disturbing the Mind)
 
T08_T09_LM3: Estruturas de repetição (2013-2014)
T08_T09_LM3: Estruturas de repetição (2013-2014)T08_T09_LM3: Estruturas de repetição (2013-2014)
T08_T09_LM3: Estruturas de repetição (2013-2014)
 
Testes unitários como ferramentas de design de código
Testes unitários como ferramentas de design de códigoTestes unitários como ferramentas de design de código
Testes unitários como ferramentas de design de código
 
Pacote web java script
Pacote web   java scriptPacote web   java script
Pacote web java script
 
[PHPConferenceBR] Automação de testes com Codeception
[PHPConferenceBR] Automação de testes com Codeception[PHPConferenceBR] Automação de testes com Codeception
[PHPConferenceBR] Automação de testes com Codeception
 
pepinos do cliente no código de testes da aplicação com OSS
pepinos do cliente no código de testes da aplicação com OSSpepinos do cliente no código de testes da aplicação com OSS
pepinos do cliente no código de testes da aplicação com OSS
 
[38º GURU SP] Automação de Testes Web em Ruby com Cucumber e Webdriver
[38º GURU SP] Automação de Testes Web em Ruby com Cucumber e Webdriver[38º GURU SP] Automação de Testes Web em Ruby com Cucumber e Webdriver
[38º GURU SP] Automação de Testes Web em Ruby com Cucumber e Webdriver
 
Fisl 16 – Nem tudo o que reluz é ouro. hackeando as principais dicas de desen...
Fisl 16 – Nem tudo o que reluz é ouro. hackeando as principais dicas de desen...Fisl 16 – Nem tudo o que reluz é ouro. hackeando as principais dicas de desen...
Fisl 16 – Nem tudo o que reluz é ouro. hackeando as principais dicas de desen...
 
Fisl 16 - Nem tudo o que reluz é ouro. hackeando as principais dicas de dese...
Fisl 16 - Nem tudo o que reluz é ouro. hackeando as principais dicas de dese...Fisl 16 - Nem tudo o que reluz é ouro. hackeando as principais dicas de dese...
Fisl 16 - Nem tudo o que reluz é ouro. hackeando as principais dicas de dese...
 
Maratona Windows Phone 7
Maratona Windows Phone 7Maratona Windows Phone 7
Maratona Windows Phone 7
 
Jj08 otimizacao
Jj08 otimizacaoJj08 otimizacao
Jj08 otimizacao
 
Microsoft S2B - C# ASP.NET
Microsoft S2B - C# ASP.NETMicrosoft S2B - C# ASP.NET
Microsoft S2B - C# ASP.NET
 
Node VM and ChildProcess: Executando códigos não confiáveis no seu servidor
Node VM and ChildProcess: Executando códigos não confiáveis no seu servidorNode VM and ChildProcess: Executando códigos não confiáveis no seu servidor
Node VM and ChildProcess: Executando códigos não confiáveis no seu servidor
 
Node VM and ChildProcess: Executando códigos não confiáveis no seu servidor
Node VM and ChildProcess: Executando códigos não confiáveis no seu servidorNode VM and ChildProcess: Executando códigos não confiáveis no seu servidor
Node VM and ChildProcess: Executando códigos não confiáveis no seu servidor
 
Como ser programador durante o dia e mesmo assim dormir bem à noite
Como ser programador durante o dia e mesmo assim dormir bem à noiteComo ser programador durante o dia e mesmo assim dormir bem à noite
Como ser programador durante o dia e mesmo assim dormir bem à noite
 
Testes de software de A a Z
Testes de software de A a ZTestes de software de A a Z
Testes de software de A a Z
 
JavaScript
JavaScriptJavaScript
JavaScript
 
Desenvolvendo com Silverlight para WP7 Mango [Update]
Desenvolvendo com Silverlight para WP7 Mango [Update]Desenvolvendo com Silverlight para WP7 Mango [Update]
Desenvolvendo com Silverlight para WP7 Mango [Update]
 
S2 b desenvolvimento de sistemas [reparado]
S2 b   desenvolvimento de sistemas [reparado]S2 b   desenvolvimento de sistemas [reparado]
S2 b desenvolvimento de sistemas [reparado]
 

Mais de Alexandre Gomes

Construção de Software - 1º/2017
Construção de Software - 1º/2017Construção de Software - 1º/2017
Construção de Software - 1º/2017Alexandre Gomes
 
Programação Funcional com Javascript
Programação Funcional com JavascriptProgramação Funcional com Javascript
Programação Funcional com JavascriptAlexandre Gomes
 
UnB/PPCA/CS2016 - Projeto 2
UnB/PPCA/CS2016 - Projeto 2UnB/PPCA/CS2016 - Projeto 2
UnB/PPCA/CS2016 - Projeto 2Alexandre Gomes
 
Javascript do jeito certo
Javascript do jeito certoJavascript do jeito certo
Javascript do jeito certoAlexandre Gomes
 
Construção de Software - 1º/2016
Construção de Software - 1º/2016Construção de Software - 1º/2016
Construção de Software - 1º/2016Alexandre Gomes
 
Plano de Ensino de Tópicos Avançados em Engenharia de Software
Plano de Ensino de Tópicos Avançados em Engenharia de SoftwarePlano de Ensino de Tópicos Avançados em Engenharia de Software
Plano de Ensino de Tópicos Avançados em Engenharia de SoftwareAlexandre Gomes
 
Construção de Software - 1º semestre de 2014
Construção de Software - 1º semestre de 2014Construção de Software - 1º semestre de 2014
Construção de Software - 1º semestre de 2014Alexandre Gomes
 
Laboratório de Métodos Ágeis 1/2014 - Apresentação
Laboratório de Métodos Ágeis 1/2014 - ApresentaçãoLaboratório de Métodos Ágeis 1/2014 - Apresentação
Laboratório de Métodos Ágeis 1/2014 - ApresentaçãoAlexandre Gomes
 
OpenData, Web Semântica e afins.
OpenData, Web Semântica e afins.OpenData, Web Semântica e afins.
OpenData, Web Semântica e afins.Alexandre Gomes
 
Javascript do jeito certo
Javascript do jeito certoJavascript do jeito certo
Javascript do jeito certoAlexandre Gomes
 
Javascript orientado a testes
Javascript orientado a testesJavascript orientado a testes
Javascript orientado a testesAlexandre Gomes
 

Mais de Alexandre Gomes (20)

Construção de Software - 1º/2017
Construção de Software - 1º/2017Construção de Software - 1º/2017
Construção de Software - 1º/2017
 
Aprendendo a Aprender
Aprendendo a AprenderAprendendo a Aprender
Aprendendo a Aprender
 
Programação Funcional com Javascript
Programação Funcional com JavascriptProgramação Funcional com Javascript
Programação Funcional com Javascript
 
UnB/PPCA/CS2016 - Projeto 2
UnB/PPCA/CS2016 - Projeto 2UnB/PPCA/CS2016 - Projeto 2
UnB/PPCA/CS2016 - Projeto 2
 
Javascript do jeito certo
Javascript do jeito certoJavascript do jeito certo
Javascript do jeito certo
 
Construção de Software - 1º/2016
Construção de Software - 1º/2016Construção de Software - 1º/2016
Construção de Software - 1º/2016
 
Plano de Ensino de Tópicos Avançados em Engenharia de Software
Plano de Ensino de Tópicos Avançados em Engenharia de SoftwarePlano de Ensino de Tópicos Avançados em Engenharia de Software
Plano de Ensino de Tópicos Avançados em Engenharia de Software
 
O Pensamento Ágil
O Pensamento ÁgilO Pensamento Ágil
O Pensamento Ágil
 
Manifesto 2.0
Manifesto 2.0Manifesto 2.0
Manifesto 2.0
 
Construção de Software - 1º semestre de 2014
Construção de Software - 1º semestre de 2014Construção de Software - 1º semestre de 2014
Construção de Software - 1º semestre de 2014
 
Business Modeling
Business ModelingBusiness Modeling
Business Modeling
 
Design Thinking
Design ThinkingDesign Thinking
Design Thinking
 
Manifesto Ágil
Manifesto ÁgilManifesto Ágil
Manifesto Ágil
 
Laboratório de Métodos Ágeis 1/2014 - Apresentação
Laboratório de Métodos Ágeis 1/2014 - ApresentaçãoLaboratório de Métodos Ágeis 1/2014 - Apresentação
Laboratório de Métodos Ágeis 1/2014 - Apresentação
 
Scraping by examples
Scraping by examplesScraping by examples
Scraping by examples
 
Scraping by examples
Scraping by examplesScraping by examples
Scraping by examples
 
OpenData, Web Semântica e afins.
OpenData, Web Semântica e afins.OpenData, Web Semântica e afins.
OpenData, Web Semântica e afins.
 
Javascript do jeito certo
Javascript do jeito certoJavascript do jeito certo
Javascript do jeito certo
 
Javascript orientado a testes
Javascript orientado a testesJavascript orientado a testes
Javascript orientado a testes
 
Escolhas 2.0
Escolhas 2.0Escolhas 2.0
Escolhas 2.0
 

TDDing com Javascript