SlideShare a Scribd company logo
1 of 11
TESTES AUTOMATIZADOS
Testes Unitários
Eu não vejo
nenhuma razão do
por que isso não
vai funcionar
Escrever sistema sem testes
automatizados é como trabalhar em um
painel de eletricidade com um garfo...
Ahhhh...
É por isso.
Por que testar?
 Como você sabe que o seu código funciona?
 Testes são uma maneira de ter certeza de que o SUT (System Under
Test) funciona
 Mas como você sabe que o seu Teste funciona?
 Será que você deve escrever teste para o seu teste?
 Então por que confiamos nos testes?
 Porque nós vimos ele falhar
 Se o teste não falhar, como temos certeza de que ele está testando
alguma coisa?
 TDD
 Test Driven Development
 Prega criar o teste antes do código
 Rodar o teste (vai falhar)
 Escrever o código para o teste passar
Tipos de Testes
 Testes de Carga
 Testes de UI
 Testes de Desempenho
 Testes de Integração
 Testes de Aceitação
 Testes Unitários
Teste Unitário x Teste Integração
 Teste de um único método
 Não deve depender de nenhuma outra unidade
 Banco de dados, arquivos de sistemas, arquivos de
configuração, WebServices, outras classes
Como você separa os
testes unitários dos testes
de integração?
Nomenclatura nos Testes
 Por que padronizar nomenclatura é importante?
 Facilita o entendimento sobre o que está sendo testado
 Facilita o desenvolvedor a escrever o teste
 Nome de classes de testes
 NomeClasseTestadaDeve
 NomeClasseTestada_NomeMetodo_Deve
 Nome de métodos de testes
 Deve ser uma ação que a classe testada deve fazer
 Exemplos
 ConversorTransmissaoDeve
 LancarExcecao_QuandoTransmissaoXmlNula
 ConverterTransmissao_QuandoTransmissaoXmlValida
 CalculadorPreco_Calcular_Deve
 RetornarPrecoPorKilo_QuandoUnidadeForPorKilo
 RetornarZero_QuandoItensVazio
Fases do Teste
 Existem 3 fases
 Criar o ambiente necessário para realizar o teste
 Instanciar classes, inicializar parametros
 Executar o método que está testando (SUT)
 Verificar se as condições esperadas foram satisfeitas
 Asserts
 Organizar o código do teste seguindo essas fases
 AAA - Arrange / Act / Assert
 Given / When / Then
 Vantagens
 Testes mais organizados
 Testes mais limpos
 Bater o olho e saber o que e como certa funcionalidade está sendo testada
 Exemplo teste sem a discriminação das 3 fases
 CRM
Como criar um código testável?
 SOLID
 Código difícil de testar
 ConversorTransmissao
 Refatorando
 Inversão de Dependência
 Mock
 Biblioteca Moq
Outro exemplo
Evitar
 Métodos estáticos
 DateTime.Now
 File.*
 Directory.*
 AppDomain.*
 Instanciar novas classes
Praticando
 Módulo Wowza
 Carrinho
 Sugestão DOJO

More Related Content

What's hot

Zend Framework Estrutura e TDD
Zend Framework Estrutura e TDDZend Framework Estrutura e TDD
Zend Framework Estrutura e TDD
PHP Day Curitiba
 
Por que você não escreve Testes Unitários?
Por que você não escreve Testes Unitários?Por que você não escreve Testes Unitários?
Por que você não escreve Testes Unitários?
Alex Tercete
 
Poo1 aula 2 - java - apresentação do netbeans e 1º programa
Poo1   aula 2 - java - apresentação do netbeans e 1º programaPoo1   aula 2 - java - apresentação do netbeans e 1º programa
Poo1 aula 2 - java - apresentação do netbeans e 1º programa
Denis Sobrenome
 

What's hot (20)

Boas práticas com TDD
Boas práticas com TDD Boas práticas com TDD
Boas práticas com TDD
 
ALM - Testes Manuais no Microsoft Test Manager
ALM - Testes Manuais no Microsoft Test ManagerALM - Testes Manuais no Microsoft Test Manager
ALM - Testes Manuais no Microsoft Test Manager
 
ALM - Testes Exploratórios no Microsoft Test Manager
ALM - Testes Exploratórios no Microsoft Test ManagerALM - Testes Exploratórios no Microsoft Test Manager
ALM - Testes Exploratórios no Microsoft Test Manager
 
A importância dos testes unitários: do código legado ao pipeline de testes em...
A importância dos testes unitários: do código legado ao pipeline de testes em...A importância dos testes unitários: do código legado ao pipeline de testes em...
A importância dos testes unitários: do código legado ao pipeline de testes em...
 
Automação de Teste Funcionais - Selenium
Automação de Teste Funcionais - SeleniumAutomação de Teste Funcionais - Selenium
Automação de Teste Funcionais - Selenium
 
O poder do TDD
O poder do TDDO poder do TDD
O poder do TDD
 
Zend Framework Estrutura e TDD
Zend Framework Estrutura e TDDZend Framework Estrutura e TDD
Zend Framework Estrutura e TDD
 
Introdução ao TDD
Introdução ao TDDIntrodução ao TDD
Introdução ao TDD
 
Curso treinamento automação de testes com selenium
Curso treinamento automação de testes com seleniumCurso treinamento automação de testes com selenium
Curso treinamento automação de testes com selenium
 
Testes Unitários/Integrados
Testes Unitários/IntegradosTestes Unitários/Integrados
Testes Unitários/Integrados
 
Por que você não escreve Testes Unitários?
Por que você não escreve Testes Unitários?Por que você não escreve Testes Unitários?
Por que você não escreve Testes Unitários?
 
Por que automatizar testes de software?
Por que automatizar testes de software?Por que automatizar testes de software?
Por que automatizar testes de software?
 
Poo1 aula 2 - java - apresentação do netbeans e 1º programa
Poo1   aula 2 - java - apresentação do netbeans e 1º programaPoo1   aula 2 - java - apresentação do netbeans e 1º programa
Poo1 aula 2 - java - apresentação do netbeans e 1º programa
 
Pensando em java univali turbinando seus testes
Pensando em java univali   turbinando seus testesPensando em java univali   turbinando seus testes
Pensando em java univali turbinando seus testes
 
Apresentação PhpDescribe
Apresentação PhpDescribeApresentação PhpDescribe
Apresentação PhpDescribe
 
Selenium Workshop
Selenium Workshop Selenium Workshop
Selenium Workshop
 
Introdução a tdd
Introdução a tddIntrodução a tdd
Introdução a tdd
 
PHPExperience 2016 - Pirâmide de Testes
PHPExperience 2016 - Pirâmide de TestesPHPExperience 2016 - Pirâmide de Testes
PHPExperience 2016 - Pirâmide de Testes
 
Testes: existe vida antes do TDD
Testes: existe vida antes do TDDTestes: existe vida antes do TDD
Testes: existe vida antes do TDD
 
PHP Expericence 2015 - Testes Unitários - Existe vida antes do TDD
PHP Expericence 2015 - Testes Unitários - Existe vida antes do TDDPHP Expericence 2015 - Testes Unitários - Existe vida antes do TDD
PHP Expericence 2015 - Testes Unitários - Existe vida antes do TDD
 

Similar to Testes Unitários

Similar to Testes Unitários (20)

Desenvolvimento Dirigido por Testes
Desenvolvimento Dirigido por TestesDesenvolvimento Dirigido por Testes
Desenvolvimento Dirigido por Testes
 
1 2 3 - Testando - Automatizando os testes de software
1 2 3 - Testando - Automatizando os testes de software1 2 3 - Testando - Automatizando os testes de software
1 2 3 - Testando - Automatizando os testes de software
 
Test-Driven Development - Introdução ao método de construção de software guia...
Test-Driven Development - Introdução ao método de construção de software guia...Test-Driven Development - Introdução ao método de construção de software guia...
Test-Driven Development - Introdução ao método de construção de software guia...
 
Introdução a Automação de Teste de Software
Introdução a Automação de Teste de SoftwareIntrodução a Automação de Teste de Software
Introdução a Automação de Teste de Software
 
TDD - Test Driven Development
TDD - Test Driven DevelopmentTDD - Test Driven Development
TDD - Test Driven Development
 
TDD (Resumo)
TDD (Resumo)TDD (Resumo)
TDD (Resumo)
 
Introdução ao TDD
Introdução ao TDDIntrodução ao TDD
Introdução ao TDD
 
O que seus testes garantem, o funcionamento do código ou das funcionalidades ...
O que seus testes garantem, o funcionamento do código ou das funcionalidades ...O que seus testes garantem, o funcionamento do código ou das funcionalidades ...
O que seus testes garantem, o funcionamento do código ou das funcionalidades ...
 
Aula12 T EES UFS Testes de SW
Aula12  T EES  UFS  Testes de SWAula12  T EES  UFS  Testes de SW
Aula12 T EES UFS Testes de SW
 
Aula12 TEES UFS Testes de SW
Aula12 TEES UFS Testes de SWAula12 TEES UFS Testes de SW
Aula12 TEES UFS Testes de SW
 
O que é Teste de Software?
O que é Teste de Software?O que é Teste de Software?
O que é Teste de Software?
 
Palestra tdd - rsjug
Palestra tdd - rsjugPalestra tdd - rsjug
Palestra tdd - rsjug
 
Treinamento Testes Unitários - parte 1
Treinamento Testes Unitários - parte 1Treinamento Testes Unitários - parte 1
Treinamento Testes Unitários - parte 1
 
Introdução ao design de teste de software
Introdução ao design de teste de softwareIntrodução ao design de teste de software
Introdução ao design de teste de software
 
Testes de Software.ppt
Testes de Software.pptTestes de Software.ppt
Testes de Software.ppt
 
Como criar testes rápidos e robustos com Cypress
Como criar testes rápidos e robustos com CypressComo criar testes rápidos e robustos com Cypress
Como criar testes rápidos e robustos com Cypress
 
Apresentacao Testes de Unidade
Apresentacao Testes de UnidadeApresentacao Testes de Unidade
Apresentacao Testes de Unidade
 
Paletra sobre TDD, ocorrida no #DevDojo
Paletra sobre TDD, ocorrida no #DevDojoPaletra sobre TDD, ocorrida no #DevDojo
Paletra sobre TDD, ocorrida no #DevDojo
 
ybr789try
ybr789tryybr789try
ybr789try
 
Testes de software
Testes de softwareTestes de software
Testes de software
 

Recently uploaded

Recently uploaded (6)

ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
 
Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object Calisthenics
 
Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemplo
 
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
 
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docxATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
 
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
 

Testes Unitários

  • 2. Eu não vejo nenhuma razão do por que isso não vai funcionar Escrever sistema sem testes automatizados é como trabalhar em um painel de eletricidade com um garfo... Ahhhh... É por isso.
  • 3. Por que testar?  Como você sabe que o seu código funciona?  Testes são uma maneira de ter certeza de que o SUT (System Under Test) funciona  Mas como você sabe que o seu Teste funciona?  Será que você deve escrever teste para o seu teste?  Então por que confiamos nos testes?  Porque nós vimos ele falhar  Se o teste não falhar, como temos certeza de que ele está testando alguma coisa?  TDD  Test Driven Development  Prega criar o teste antes do código  Rodar o teste (vai falhar)  Escrever o código para o teste passar
  • 4. Tipos de Testes  Testes de Carga  Testes de UI  Testes de Desempenho  Testes de Integração  Testes de Aceitação  Testes Unitários
  • 5. Teste Unitário x Teste Integração  Teste de um único método  Não deve depender de nenhuma outra unidade  Banco de dados, arquivos de sistemas, arquivos de configuração, WebServices, outras classes Como você separa os testes unitários dos testes de integração?
  • 6. Nomenclatura nos Testes  Por que padronizar nomenclatura é importante?  Facilita o entendimento sobre o que está sendo testado  Facilita o desenvolvedor a escrever o teste  Nome de classes de testes  NomeClasseTestadaDeve  NomeClasseTestada_NomeMetodo_Deve  Nome de métodos de testes  Deve ser uma ação que a classe testada deve fazer  Exemplos  ConversorTransmissaoDeve  LancarExcecao_QuandoTransmissaoXmlNula  ConverterTransmissao_QuandoTransmissaoXmlValida  CalculadorPreco_Calcular_Deve  RetornarPrecoPorKilo_QuandoUnidadeForPorKilo  RetornarZero_QuandoItensVazio
  • 7. Fases do Teste  Existem 3 fases  Criar o ambiente necessário para realizar o teste  Instanciar classes, inicializar parametros  Executar o método que está testando (SUT)  Verificar se as condições esperadas foram satisfeitas  Asserts  Organizar o código do teste seguindo essas fases  AAA - Arrange / Act / Assert  Given / When / Then  Vantagens  Testes mais organizados  Testes mais limpos  Bater o olho e saber o que e como certa funcionalidade está sendo testada  Exemplo teste sem a discriminação das 3 fases  CRM
  • 8. Como criar um código testável?  SOLID  Código difícil de testar  ConversorTransmissao  Refatorando  Inversão de Dependência  Mock  Biblioteca Moq
  • 10. Evitar  Métodos estáticos  DateTime.Now  File.*  Directory.*  AppDomain.*  Instanciar novas classes
  • 11. Praticando  Módulo Wowza  Carrinho  Sugestão DOJO