Testes e mocks: Em Visual Studio com .NET

  • 125 views
Uploaded on

O objetivos é apresentar conceitos e o uso de teste automatizados usando praticas de TDD e Solid apresentando as ferramentas de Mock.

O objetivos é apresentar conceitos e o uso de teste automatizados usando praticas de TDD e Solid apresentando as ferramentas de Mock.

More in: Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
125
On Slideshare
0
From Embeds
0
Number of Embeds
1

Actions

Shares
Downloads
6
Comments
0
Likes
0

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. Testes e Mock´s
  • 2. Razões e problemas  Difícil manter  Difícil evoluir  Bugs persistentes  Correção gera outros bugs  Medo de mexer no código  Perda de tempo
  • 3. O que são testes  Forma de garantir que o software funciona ◦ Atende aos propósitos de negócio ◦ Funciona como esperado  Maneira verificável de garantir que o software atende „as necessidades de negócio e que funciona como esperado
  • 4. Testers  São importantes  Executar a aplicação demora  Feedback demora  Bom para encontrar bugs  Código construído sobre bug gera mais bugs
  • 5. Por que não testar ?  Demora..  Eu sou senior..  Estamos sem tempo ..
  • 6. Por que não testar?  Acredite: você não é o bom o bastante!!  Testar pode consumir tempo, mas é necessário.  Deixar de testar não te faz mais rápido, dá apenas uma falsa sensação de velocidade.
  • 7. Produtividade ao longo do tempo
  • 8. Uncle Bob (Robert C. Martin) “Desenvolvedores que não testa é como um cirurgião que não lava as mãos”
  • 9. Uncle Bob (Robert C. Martin)
  • 10. O que é um teste unitário?  Pedaço de código que executa outro pedaço de código.  Verifica se tudo esta correto  Teste uma coisa por vez  Não toque em nada externo (DB,file, etc)  É um trabalho do desenvolvedor  Escreva e vá refatorando código
  • 11. Benefícios dos testes unitários  Pequeno, justo, dissociado  Executam de forma automatizada  São repetíveis  Qualquer um pode executar  Provém FeedBack quase instantâneo  Refatoração segura  Documenta os requisitos  Permite a integração contuínua
  • 12. Benefícios dos testes unitários  O valor dos teste aumenta com o tempo  Auxiliam o design da funcionalidade ◦ Escrever teste tem de ser fácil ◦ Esta difícil ? Esta errado!! Refatore  Ajudam a realizar alterações  Ajudam com regressões ◦ Algo que funcionava e não funciona mais
  • 13. Units Test  E as desvantagens ....
  • 14. Quando escrever os teste Antes (TDD, BFF) Depois/Durante code  Foco no requerimento  Pensa sobre como o código será consumido  Para de codificar quando requerimento é encontrado  Difícil inicialmente  Foco no código  Pensa no algoritmo  Mais refatoração é necessária  Fácil de iniciar
  • 15. Quando escrever os teste Antes (TDD, BFF) Depois/Durante code  Foco no requerimento  Pensa sobre como o código será consumido  Para de codificar quando requerimento é encontrado  Difícil inicialmente  Foco no código  Pensa no algorítimo  Mais refatoração é necessária  Fácil de iniciar
  • 16. Anatomia AAA  Teste são curtos seguem o padrão AAA  Arrange ◦ Setup de código e pré-requisitos, prepara o ambiente para o teste ◦ Configura as variáveis, objetos, monta relações ◦ Em algumas situações o Arrange pode ser reaproveitado ◦ Exercita o método em teste  [Setup]  [TestInitialise]  [FixtureSetup]
  • 17. Arrange Extenso
  • 18. Anatomia AAA  ACT ◦ É execução do SUT ◦ É a chamada para o método que esta sendo testado ◦ É a execução da operação a ser testada ◦ Um teste deve atuar independente dos outros ◦ Um Act com muitos métodos é sinal de problema
  • 19. Anatomia AAA  Assert ◦ É a verificação do resultado ◦ Neste ponto faz-se a análise do resultado do ACT como era esperado ◦ Um teste no geral tem apenas Um Assert ◦ Mais de um Assert no teste mascara erros
  • 20.  Frameworks de Teste ◦ NUNIT ◦ Portado no junit ◦ 100% escrito em C# ◦ Um dos frameworks mais usados ◦ Interface Fluentes ◦ Asseções mais legíveis ◦ Mais opções de Asserções
  • 21. Coloque para fora as dependencias  Envolva a dependência com uma Interface  Crie um campo privado tipo de interface  Adicione a interface com argumento no construtor  Assimile o campo privado ao argumento no construtor  Use um novo campo privado no código
  • 22. TDD  Basicamente deve se seguir o mantra: ◦ RED, GREEN , Refactor  Escreva um teste que falhe  Faça o teste passar  Refatore/melhore o código
  • 23. TDD  Escrever os teste antes do código de produção  Escrever código que o teste pediu  Resultados ◦ Teste ◦ Melhor design  Menos acoplamento  Classes e métodos coesos  Clareza no código  Por que teste ante? ◦ O teste é o primeiro cliente do seu código ◦ Faça como você gostaria que fosse
  • 24. Exemplo de código ERP
  • 25. O que é Mocking?  Cria objetos falsos para você  Coloque e inspecione os valores no objeto falso  Inspecione os métodos chamados e argumentos no objeto falso
  • 26. Stub vs Mock  Server para gerenciamos dependências nos testes  Ambos são objetos fake, “imitam” objetos reais  São muito parecidos mas têm propósitos diferentes
  • 27. Stubs  Substitui de forma controlável uma dependências externas  Mantém o teste em nossas mãos ◦ Repetível ◦ Rápido ◦ Isolado  Um stub não fará o teste falhar  Asserts não são feitos contra os Stubs  Fornece algum estado para o SUT
  • 28. Mocks  É um objeto que reage às interações com o SUT  Tem poder para falhar o teste  Assert é realizado contra o mock  Um mock por teste ◦ SRP até no teste!!!!
  • 29. Stub vs Mock STUB MOCK  GET/SET proriedades  Set metodos e retorna valores  Testa o estado!  Checa a chamada de métodos  Checa os argumentos usados  Testa Interações!
  • 30. Stubs e Mocks  Indispensáveis  Sem eles testar é doloroso e custoso  Criá-los na mão é doloroso e custoso  Gera muito retrabalho  Gasta-se muito tempo  Testar fica chato
  • 31. Framework de Mock  Frameworks de isolamento  Criam Mocks e Stubs de forma simples  Não há retrabalho  Lidam com vários tipos de configuração sem causar odores  Frameworks ◦ Rhino.Mocks ◦ Typemock Isolator ◦ Moq