Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Testes em JS Como Você Nunca Viu Antes
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
Lucas Fernandes da Costa
November 26, 2016
Programming
370
0
Share
Testes em JS Como Você Nunca Viu Antes
My slides for the presentation in JSDay Recife 2017, which happened at Nov. 26th, 2016.
Lucas Fernandes da Costa
November 26, 2016
More Decks by Lucas Fernandes da Costa
See All by Lucas Fernandes da Costa
Types, tests, and why flat-earthers are bad at QA (HolyJS)
lucasfcosta
0
76
What did we Learn with JavaScript Fatigue? (FrontMania)
lucasfcosta
1
83
How I'm still not using GUIs in 2019
lucasfcosta
0
71
Programming with Birds - There is a Bluebird in My Talk That Wants to Get Out (LambdAle 2018)
lucasfcosta
0
140
What can we learn with JavaScript Fatigue? - FrontEnd United
lucasfcosta
2
230
What Can We Learn With JavaScript Fatigue? - The Conf SP
lucasfcosta
0
110
What Can We Learn With JavaScript Fatigue? - NebraskaJS
lucasfcosta
2
130
JavaScript Behind the Scenes: Meta Programming (FluentConf 2017)
lucasfcosta
0
160
Testes em JavaScript: A Maneira Correta
lucasfcosta
0
81
Other Decks in Programming
See All in Programming
Augmenting AI with the Power of Jakarta EE
ivargrimstad
0
310
色即是空、空即是色、データサイエンス
kamoneggi
1
200
気づいたらRubyで100作品 ー クリエイティブコーディングが生活の一部になるまで / 100 Ruby Sketches Later: How Creative Coding Became Part of My Life
chobishiba
3
460
Zod v4 Codec でスキーマに型変換を埋め込む REST API 設計 #TSKaigi2026
ryutaro_yako
0
160
誰も頼んでない機能を出荷した話
zekutax
0
150
tsserverとは何だったのか、これからどうなるのか
nowaki28
1
410
AI駆動開発で崩れていくコードベースを立て直す
kyoko_nr_nr
1
390
Old Dog, New Tricks: The Java 25 Reinvention - JNation
bazlur_rahman
0
130
LLM Plugin for Node-REDの利用方法と開発について
404background
0
130
柔軟なPDFレイアウトエディタを支える型システム設計 — Discriminated UnionとConditional Typeの実践
minako__ph
4
1.1k
Claspは野良GASの夢をみるか
takter00
0
130
inferと仲良くなる10分間
ryokatsuse
1
270
Featured
See All Featured
Skip the Path - Find Your Career Trail
mkilby
1
130
How Software Deployment tools have changed in the past 20 years
geshan
0
34k
Navigating Team Friction
lara
192
16k
The innovator’s Mindset - Leading Through an Era of Exponential Change - McGill University 2025
jdejongh
PRO
1
180
Code Review Best Practice
trishagee
74
20k
Leveraging LLMs for student feedback in introductory data science courses - posit::conf(2025)
minecr
1
270
The Limits of Empathy - UXLibs8
cassininazir
1
340
Navigating the Design Leadership Dip - Product Design Week Design Leaders+ Conference 2024
apolaine
1
330
Organizational Design Perspectives: An Ontology of Organizational Design Elements
kimpetersen
PRO
1
710
What Being in a Rock Band Can Teach Us About Real World SEO
427marketing
0
240
The browser strikes back
jonoalderson
0
1.1k
Leveraging Curiosity to Care for An Aging Population
cassininazir
1
250
Transcript
Testes em JavaScript Como você nunca viu antes @lfernandescosta @lucasfcosta
lucasfcosta.com
‣ Sistemas de Informação @UFSC ‣ FullStack Developer @MyTapp ‣
ChaiJS Core Maintainer ‣ Apaixonado por Open Source Quem sou eu?
‣ Sistemas de Informação @UFSC ‣ FullStack Developer @MyTapp ‣
ChaiJS Core Maintainer ‣ Apaixonado por Open Source Quem sou eu? Internacionalmente conhecido por causar prejuízo em buffet livre de sushi
Quem sou eu? @lfernandescosta @lucasfcosta lucasfcosta.com
Por que testar?
Qualidade do código
Ok, todo mundo sabe disso Qualidade do código
Agilidade Melhores estimativas Mais feedback Mais rápido
< Redução de custos
QA + Trabalho Proativo - Trabalho Reativo
Validação ‣ Feedback rápido ‣ Prova que o código está
correto OS DOIS LADOS DO TDD TDD
Validação Unde omnis iste. ‣ Feedback rápido ‣ Prova que
o código está correto OS DOIS LADOS DO TDD Especificação TDD ‣ Demonstra o que aquela peça deve fazer ‣ Demonstra os resultados esperados
Validação Unde omnis iste. ‣ Feedback rápido ‣ Prova que
o código está correto OS DOIS LADOS DO TDD Especificação TDD ‣ Demonstra o que aquela peça deve fazer ‣ Demonstra os resultados esperados O teste serve como spec
Requisitos mais claros Primeiro você pensa
Requisitos mais claros Primeiro você pensa Depois você coda
Test Driven Design
Program to an interface, not an implementation
Program to an interface, not an implementation Menos acoplamento
"TDD Should be Fun" - James Sinclair
Feedback Loop Metas de Longo Prazo Recompensas Rápidas VS.
Feedback Loop Metas de Longo Prazo Recompensas Rápidas VS. ‣
Feedback positivo constante e rápido
Feedback Loop Metas de Longo Prazo Recompensas Rápidas VS. ‣
Feedback positivo constante e rápido ‣ Reduz o medo, prova que você está no caminho certo
Feedback Loop Metas de Longo Prazo Recompensas Rápidas VS. ‣
Feedback positivo constante e rápido ‣ Você sabe que está no caminho certo DIVERSÃO
Bons motivos para testar:
Bons motivos para testar: 1 Agilidade
Bons motivos para testar: 1 Agilidade 2 Redução de custos
Bons motivos para testar: 1 Agilidade 2 3 Redução de
custos QA Proativo
Bons motivos para testar: 1 Agilidade 2 4 3 Redução
de custos Especificação QA Proativo
Bons motivos para testar: 1 Agilidade 2 4 5 3
Redução de custos Especificação QA Proativo Test Driven Design
Bons motivos para testar: 1 Agilidade 2 4 5 6
3 Redução de custos Especificação QA Proativo Diversão Test Driven Design
Como escrever bons testes?
Só automatizar não é o suficiente
Automated crap is still crap
Você não pode provar que seu software funciona
Você não pode provar que seu software funciona Você só
pode provar que ele não funciona
Desenvolvimento em pequenos passos
Desenvolvimento em pequenos passos Mais segurança
Passos do tamanho da sua segurança
Passos do tamanho da sua segurança
"Qual tamanho devem ter meus testes?"
"Qual tamanho devem ter meus testes?"
"Qual tamanho devem ter meus testes?" O necessário
"Qual tamanho devem ter meus testes?" O necessário Somente o
necessário
"Qual tamanho devem ter meus testes?" O necessário Somente o
necessário O extraordinário é demais
Isolamento Teste unitário testa apenas uma unidade (função)
Isolamento Teste unitário testa apenas uma unidade (função) Quando algo
falhar, sabemos pontualmente o que falhou
Isolamento
Independência Um teste depende apenas de uma “peça”
Independência Um teste depende apenas de uma “peça” Um defeito
causa falha em um teste
Independência Stubs
Independência
Foco Um teste tem apenas um objetivo
Foco Um teste tem apenas um objetivo Faça o mínimo
de asserções por teste
Foco Evite testes "frouxos"
Foco Evite testes "frouxos"
Foco Evite testes "frouxos" Quantos testes passam nisso?
Foco
Desacoplamento O teste não depende da implementação
Desacoplamento O teste não depende da implementação Program to an
interface, not an implementation
Desacoplamento Você paga por testes em manutenção
Para fazer bons testes:
Para fazer bons testes: 1 Isolamento
Para fazer bons testes: 1 Isolamento 2 Independência
Para fazer bons testes: 1 Isolamento 2 3 Independência Foco
Para fazer bons testes: 1 Isolamento 2 3 4 Independência
Foco Desacoplamento
Estou no caminho certo?
Testes que falham são testes que produzem informações
Testes que falham são testes que produzem informações Se arrisque
Code coverage é bom
Code coverage é bom Mas não é tudo
100% Code Coverage function incrementaIndice(arr, i) ➡ Soma 1 ao
valor de índices já existentes ➡ Se o valor naquele índice é indefinido ele passa a ser 1
100% Code Coverage
100% Code Coverage Asserções
100% Code Coverage Asserções Possibilidades de entrada
Medindo Coverage
Medindo Coverage
Cross-platform
Cross-platform Diferentes implementações
Cross-platform Diferentes implementações Diferentes features suportadas
Cross-platform Tenha fallbacks
O ecossistema parece grande…
O ecossistema parece grande…
O ecossistema parece grande… Mas é simples
The UNIX Philosophy
Mais possibilidades The UNIX Philosophy
Mais possibilidades Aprendizado gradual The UNIX Philosophy
Recapitulando:
Recapitulando: 1 Mocha
Recapitulando: 1 2 Mocha Chai
Recapitulando: 1 2 3 Mocha Chai Sinon
Recapitulando: 1 2 4 3 Mocha Chai Sinon Istanbul
Recapitulando: 1 2 4 5 3 Mocha Chai Sinon Istanbul
Karma
Valeu, Recife!
Valeu, Recife! Free software is great software