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 ...
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 U...
Tipos de Testes
 Testes de Carga
 Testes de UI
 Testes de Desempenho
 Testes de Integração
 Testes de Aceitação
 Tes...
Teste Unitário x Teste Integração
 Teste de um único método
 Não deve depender de nenhuma outra unidade
 Banco de dados...
Nomenclatura nos Testes
 Por que padronizar nomenclatura é importante?
 Facilita o entendimento sobre o que está sendo t...
Fases do Teste
 Existem 3 fases
 Criar o ambiente necessário para realizar o teste
 Instanciar classes, inicializar par...
Como criar um código testável?
 SOLID
 Código difícil de testar
 ConversorTransmissao
 Refatorando
 Inversão de Depen...
Outro exemplo
Evitar
 Métodos estáticos
 DateTime.Now
 File.*
 Directory.*
 AppDomain.*
 Instanciar novas classes
Praticando
 Módulo Wowza
 Carrinho
 Sugestão DOJO
Próximos SlideShares
Carregando em…5
×

Testes Unitários

360 visualizações

Publicada em

Apresentação de Testes Unitários para a equipe de desenvolvimento da WebCasters

Publicada em: Tecnologia
  • Seja o primeiro a comentar

Testes Unitários

  1. 1. TESTES AUTOMATIZADOS Testes Unitários
  2. 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. 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. 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. 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. 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. 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. 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
  9. 9. Outro exemplo
  10. 10. Evitar  Métodos estáticos  DateTime.Now  File.*  Directory.*  AppDomain.*  Instanciar novas classes
  11. 11. Praticando  Módulo Wowza  Carrinho  Sugestão DOJO

×