Por que você não escreve
Testes Unitários?
Alex Tercete
alex.tercete@vtex.com.br
Eu sei porque!
As quatro “desculpas”
Não sei do
que se trata
Não sei
como
Não tenho
tempo
Eu já
escrevo
Você provavelmente já faz testes
Clique, clique,
clique
Debug
Console
Application
Testes
automatizados
Escrever código
Como desenvolvemos atualmente
Camada de
apresentação
(UI)
Camada de
Serviço
Camada de
Lógica
Camada de
Acesso a Dados
“Clicar no botão”
Funcionou? DEBUG
Não
Comemorar!
Sim
Debug-Driven
Development
(DDD)
Uma nova forma de pensar
Camada X
Escrever teste
Implementar
funcionalidade
Terminou?
Não
Fim
Sim
Camada Y
Escrever teste
Implementar
funcionalidade
Terminou?
Não
Fim
Sim
Camada Z
Escrever teste
Implementar
funcionalidade
Terminou?
Não
Fim
Sim
Test-Driven
Development
(TDD)
Código que testa o código
Classe de Produção Classe de Testes
Test Doubles
Definição
• Código que testa o código
– O código testa o teste (?)
• Um por unidade de código
– Uma classe de teste por classe de código
– Vários métodos de teste por método de código
• Não interagem com elementos externos
• Automatizados
• Reproduzíveis
Mas isso não é
trabalho dobrado?
Uma análise do tempo gasto
Código sem testes
Código com testes
t
t
Benefícios
• Os erros aparecem cedo
– Reduz o ciclo de feedback
– Quem corrige é quem gerou
• Garante o comportamento correto do sistema
– Reduz a quantidade de erros
– Aumenta a “qualidade” dos erros
Benefícios (2)
• Rede de proteção
– Evita regressão
– Aumenta a confiança do desenvolvedor
– Encoraja refatoração
• Ajuda aos outros desenvolvedores
– Código mais limpo
– Documentação sempre atualizada
– Mais segurança pra mexer no código “dos outros”
Benefícios (3)
• Melhora o design do código
– Você escreve apenas o necessário para satisfazer
os requisitos dos testes
– O teste é seu primeiro “cliente”
• Continuous Delivery
– Mais segurança no deploy
Escrever testes unitário é fácil
[Test]
public void TesteDePotenciacao()
{
// Arrange
var calculadora = new Calculadora();
// Act
var resultado = calculadora.Eleva(3, 4);
// Assert
Assert.Equal(81, resultado);
}
O desafio é escrever código testável
Código testável
Teste
Código não testável
Tá, mas eu quero
ver um exemplo
disso na prática!
Test-First Development
• Escreva os testes antes de escrever o código
• Desenvolva a API que você gostaria de
consumir
• Antes de corrigir um erro, escreva um teste
que o exponha
• Nunca escreva código sem um teste falhando
Pontos de “costura”
• (Desnecessário)
• Construtor
• Propriedade
• Herde e sobrescreva
– Aumenta a legibilidade e a manutenibilidade do
teste
• Encapsule
– Reduz a manutenibilidade
O teste é mais
importante do que a
implementação
Nomenclatura
• Assembly.De.Codigo.Tests
– Vtex.Practices.ServiceModel.Tests
• ClasseDeCodigoTests
– HttpMethodResolverTests
• Metodo_de_testes_bem_descritivo
– Resolve_to_GET_when_using_HttpGet
Legibilidade
• Esconde os detalhes do Arrange
• Use somente uma linha no Act
• Não se preocupe tanto com DRY no Assert
Manutenibilidade
• Extraia a construção do objeto de teste
• Os testes não devem te atrasar
• Refatore o teste, também
Muito legal, mas por
onde eu começo?
Just Do It!
Um teste é melhor do que
nenhum
Priorize o núcleo do sistema
Comece pela parte mais fácil
• Métodos com entrada e saída bem definidas
• Métodos com poucas dependências
Erre bastante
• Pesquise
• Peça ajuda
• Aprenda
• Evolua
Ao estimar suas tarefas,
leve em conta o tempo
necessário para escrever os
testes
Mensagem final
Obrigado!
DÚVIDAS?
Referências
• http://elegantcode.com/2008/05/20/get-started-
writing-testable-code/
• http://www.martinfowler.com/bliki/TestDouble.h
tml
• http://googletesting.blogspot.com/2008/11/clean
-code-talks-unit-testing.html
• http://misko.hevery.com/attachments/Guide-
Writing%20Testable%20Code.pdf
• http://googletesting.blogspot.com/2008/08/by-
miko-hevery-so-you-decided-to.html
• http://hashbucket.wordpress.com/2009/01/12/u
nit-testing-internal-methods/
Livros

Mais conteúdo relacionado

PPTX
Introdução a testes de software utilizando selenium
PPTX
Automatização de testes funcionais com selenium etapa 1
PDF
98796699 selenium-framework
PPTX
Curso treinamento automação de testes com selenium
PDF
Selenium
PPT
Automacão de Testes Funcionais com Selenium
PDF
13º É dia de Java: Automação de Testes Funcionais com Selenium Web driver
PDF
Selenium: visão geral
Introdução a testes de software utilizando selenium
Automatização de testes funcionais com selenium etapa 1
98796699 selenium-framework
Curso treinamento automação de testes com selenium
Selenium
Automacão de Testes Funcionais com Selenium
13º É dia de Java: Automação de Testes Funcionais com Selenium Web driver
Selenium: visão geral

Mais procurados (20)

PPTX
Hands On Selenium
PPTX
Automação de Teste Funcionais - Selenium
PPTX
PDF
Automação de testes funcionais com selenium webdriver
PDF
Testes com TestLink e Selenium
PDF
Teste de aplicações web com selenium
PPTX
Testes Unitários: Começando a escrever testes no seu dia-a-dia
PDF
Testando aplicações Flex com Selenium
PPTX
Não existe feedback melhor do que o do seu código
PPT
Selenium ide apresentação
PDF
Selenium Workshop
PPTX
Meetup SP - O QA & a Especificação Por Exemplo
PPTX
[DevOps Carioca] Testes Automatizados
PPTX
TDD na Prática
PPTX
TDD - Desenvolvendo softwares orientado à testes
PDF
TOTVS - Agile Testing e a Importância de se ter Estratégia de Testes
PPT
Desenvolvimento Guiado Por Testes
PDF
Selenium
PDF
Coders On Beer + Ministry Of Testing - Agile Testing
PPT
Testlink apresentacao
Hands On Selenium
Automação de Teste Funcionais - Selenium
Automação de testes funcionais com selenium webdriver
Testes com TestLink e Selenium
Teste de aplicações web com selenium
Testes Unitários: Começando a escrever testes no seu dia-a-dia
Testando aplicações Flex com Selenium
Não existe feedback melhor do que o do seu código
Selenium ide apresentação
Selenium Workshop
Meetup SP - O QA & a Especificação Por Exemplo
[DevOps Carioca] Testes Automatizados
TDD na Prática
TDD - Desenvolvendo softwares orientado à testes
TOTVS - Agile Testing e a Importância de se ter Estratégia de Testes
Desenvolvimento Guiado Por Testes
Selenium
Coders On Beer + Ministry Of Testing - Agile Testing
Testlink apresentacao
Anúncio

Semelhante a Por que você não escreve Testes Unitários? (20)

PPTX
Desenvolvimento Dirigido por Testes
PPTX
Testes de unidade - RP Tec Com
PPTX
6. apresentacao rp tec com 2018 igor rozani e felipe muniz
PPTX
1 2 3 - Testando - Automatizando os testes de software
PPTX
Test-Driven Development
PPTX
Unit test & TDD
PPTX
Test-Driven Development (TDD) utilizando o framework xUnit.net
PPTX
TDD (Resumo)
PDF
TDD com Python
PPTX
Testes unitários
PPTX
Introdução a TDD
PPTX
Testes e mocks: Em Visual Studio com .NET
PPTX
Introdução a tdd
PPT
Test driven development
PPTX
TDD (Test-Driven Development)
PDF
Test-Driven Development with PHP
PPTX
Tdd x testes unidades
PPTX
O poder do TDD
PDF
Por quê você deve utilizar TDD?
PPTX
Testes de Unidade, por que você deve começar a fazer? - Javaneiros
Desenvolvimento Dirigido por Testes
Testes de unidade - RP Tec Com
6. apresentacao rp tec com 2018 igor rozani e felipe muniz
1 2 3 - Testando - Automatizando os testes de software
Test-Driven Development
Unit test & TDD
Test-Driven Development (TDD) utilizando o framework xUnit.net
TDD (Resumo)
TDD com Python
Testes unitários
Introdução a TDD
Testes e mocks: Em Visual Studio com .NET
Introdução a tdd
Test driven development
TDD (Test-Driven Development)
Test-Driven Development with PHP
Tdd x testes unidades
O poder do TDD
Por quê você deve utilizar TDD?
Testes de Unidade, por que você deve começar a fazer? - Javaneiros
Anúncio

Por que você não escreve Testes Unitários?