Você está na página 1de 70

TDD com Dragon Ball

Laís Lima @ Front End Developer


Laís Lima - SP
Designer/Front End Developer

@laislima_dev @laislima_dev @laislimadev


Agenda
● O universo de testes
● Por que testar?
● Tipos de testes automatizados
● Ferramentas
● Vamos escrever um teste?
O universo dos testes
Testar um software não é apenas subir para o ambiente de teste e
pedir para um humano interagir com o mesmo a fim de verificar se
tudo está funcionando.
A sprint está
rolando
normalmente...
Em plena quarta-feira às 17:59
"Galera estou conseguindo cadastrar um CPF 000.000.000-00"
Você para o que estava fazendo para:
- Tentar refletir o erro na sua máquina
- Debugar código
- Pesquisar
- Escrever código
- Resolver problema
- Testar
- Colocar em produção
Essa falha pode nos custar

mais de 8000
Não deveria ser
assim...
Testes podem fazer parte do
processo de desenvolvimento
No começo pode demorar para o time se adaptar, mas logo se torna
hábito e ajuda o time a desenvolver um código melhor.
Testes unitários (ou de unidade)
Testa a menor unidade da sua aplicação, geralmente funções.
Testes de integração
Teste de API's, componentes e módulos combinados.
Testes de end to end
Você testa a aplicação de ponta a ponta.
Todos os cenários possíveis.
Funciona, mas a Chichi
não consegue subir...

Testes de usabilidade
Esse sim é onde o usuário irá
testar a aplicação manualmente.
JEST
mock
s TD spies
D
sp dumm
Code ies
Ferramentas Covera
ec
s
que podem te ajudar ge
t e s t
Mo c h a stubs
r
BDDu n
npm
TDD (Test Driven Development)
Criador do Extreme Programming, Kent Beck também criou o TDD, um
ciclo de 3 etapas: Escreva o teste, faça o teste passar e refatore!
https://tdd.caelum.com.br/
Code Coverage
Praticando TDD o seu código fica 100% coberto por testes.
Ferramentas para testar sua
aplicação em NodeJs
Mocha, Jest e Jasmine são frameworks que executarão seu teste e
rodam em cima do NodeJS.
Bibliotecas de asserção
Assert, Expect, Should e Chai, validam o resultado do seu teste com
o que realmente deveria ser.
Mocks, spies, stubs, dummies e
fakes
São maneiras de escrever seus testes nas quais alguns dados
fingem ser o que não são para poder executar. Dados falsos, objetos
estáticos, funções que não fazem nada ou retornam um objeto
'mockado'
Vamos escrever testes?
Teremos uma lista de esferas e precisaremos interagir com elas para
invocar o Shenlong
Usaremos o JEST
1. Preciso saber quantas esferas eu
tenho para poder invocar o
Shenlong
2. Rodamos o teste, ele falha, vamos
escrever o código desse teste
3. Vamos ver se precisamos refatorar…
Acredito que por enquanto não, então
vamos em frente!
4. Preciso de um método que dirá se o
Shenlong está visível ou não
5. Por enquanto okay
Agora precisamos saber quais esferas
temos, para isso precisamos retornar o
nome delas em uma lista
6. Precisamos inserir esferas na lista
7. Ta, e se eu encontrar mais de uma
esfera e precisar inseri-las na lista?
Vamos escrever o teste
8. Ops, funcionou mas acredito seria
bom dar uma refatorada no método
anterior
9. Começamos a ter problemas pois o
teste atual entra em conflito com
anterior pois alteraram a mesma lista
10. Vamos fazer um método que limpa a
nossa lista antes de cada teste
11. Agora não posso invocar o Shenlong
sem as 7 esferas
12. Não deve invocar o Shenlong sem as
palavras mágicas
13. AGORA É SUCESSO!
Vamos invocar o Shenlong
Escreva um código inquebrável
Seja criativo, tente quebrar a sua função o quanto puder, assim
deixará sua aplicação a prova de balas e lembre-se da pirâmide:
Um belo dia...
Levou ao próprio Kent Beck e Martin Fowler a discutirem
sobre o assunto a fim de entenderem os outros pontos
de vista
TDD não é bala de prata e não vai
resolver todos os seus problemas
DESVANTAGENS:
● Aumento de esforço
● Aumento de complexidade
● Intrusividade no código principal
● Testar tudo é quase impossível
O tempo e o esforço que são
investidos em testes também devem
ser avaliados. Isso afeta diretamente
a qualidade, mas a qualidade tem o
seu preço. Quem irá pagar o preço da
qualidade?
Luiz Ricardo
USE TDD COM
MODERAÇÃO

FLW VLW!
Referências
https://labs.bawi.io/automa%C3%A7%C3%A3o-de-testes-end-to-end-utilizando-o-nightwatchjs-64ae424e682f

https://www.youtube.com/watch?v=CeohElY3IfY

https://www.eduardopires.net.br/2012/06/ddd-tdd-bdd/

https://www.primecontrol.com.br/automacao-de-testes/

https://medium.com/@felippeduarte/dubl%C3%AAs-de-teste-mock-stub-dummy-fake-e-spy-80a5cb5fc3c2

https://medium.com/trainingcenter/testes-unit%C3%A1rios-mocks-stubs-spies-e-todas-essas-palavras-dif%C3%ADceis-f2765ac87cc8

https://martinfowler.com/articles/is-tdd-dead/
https://dhh.dk/2014/tdd-is-dead-long-live-testing.html
http://luizricardo.org/2014/05/o-tdd-esta-morto/

https://github.com/lalizita/shenlong-invocation-tests
Laís Lima - SP
Designer/Front End Developer

@laislima_dev @laislima_dev @laislimadev

Você também pode gostar