Testes e mocks: Em Visual Studio com .NET

download Testes e mocks: Em Visual Studio com .NET

If you can't read please download the document

description

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

Transcript of Testes e mocks: Em Visual Studio com .NET

  • 1. Testes e Mocks

2. Razes e problemas Difcil manter Difcil evoluir Bugs persistentes Correo gera outros bugs Medo de mexer no cdigo Perda de tempo 3. O que so testes Forma de garantir que o software funciona Atende aos propsitos de negcio Funciona como esperado Maneira verificvel de garantir que o software atende as necessidades de negcio e que funciona como esperado 4. Testers So importantes Executar a aplicao demora Feedback demora Bom para encontrar bugs Cdigo construdo sobre bug gera mais bugs 5. Por que no testar ? Demora.. Eu sou senior.. Estamos sem tempo .. 6. Por que no testar? Acredite: voc no o bom o bastante!! Testar pode consumir tempo, mas necessrio. Deixar de testar no te faz mais rpido, d apenas uma falsa sensao de velocidade. 7. Produtividade ao longo do tempo 8. Uncle Bob (Robert C. Martin) Desenvolvedores que no testa como um cirurgio que no lava as mos 9. Uncle Bob (Robert C. Martin) 10. O que um teste unitrio? Pedao de cdigo que executa outro pedao de cdigo. Verifica se tudo esta correto Teste uma coisa por vez No toque em nada externo (DB,file, etc) um trabalho do desenvolvedor Escreva e v refatorando cdigo 11. Benefcios dos testes unitrios Pequeno, justo, dissociado Executam de forma automatizada So repetveis Qualquer um pode executar Provm FeedBack quase instantneo Refatorao segura Documenta os requisitos Permite a integrao contunua 12. Benefcios dos testes unitrios O valor dos teste aumenta com o tempo Auxiliam o design da funcionalidade Escrever teste tem de ser fcil Esta difcil ? Esta errado!! Refatore Ajudam a realizar alteraes Ajudam com regresses Algo que funcionava e no 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 cdigo ser consumido Para de codificar quando requerimento encontrado Difcil inicialmente Foco no cdigo Pensa no algoritmo Mais refatorao necessria Fcil de iniciar 15. Quando escrever os teste Antes (TDD, BFF) Depois/Durante code Foco no requerimento Pensa sobre como o cdigo ser consumido Para de codificar quando requerimento encontrado Difcil inicialmente Foco no cdigo Pensa no algortimo Mais refatorao necessria Fcil de iniciar 16. Anatomia AAA Teste so curtos seguem o padro AAA Arrange Setup de cdigo e pr-requisitos, prepara o ambiente para o teste Configura as variveis, objetos, monta relaes Em algumas situaes o Arrange pode ser reaproveitado Exercita o mtodo em teste [Setup] [TestInitialise] [FixtureSetup] 17. Arrange Extenso 18. Anatomia AAA ACT execuo do SUT a chamada para o mtodo que esta sendo testado a execuo da operao a ser testada Um teste deve atuar independente dos outros Um Act com muitos mtodos sinal de problema 19. Anatomia AAA Assert a verificao do resultado Neste ponto faz-se a anlise 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 Assees mais legveis Mais opes de Asseres 21. Coloque para fora as dependencias Envolva a dependncia 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 cdigo 22. TDD Basicamente deve se seguir o mantra: RED, GREEN , Refactor Escreva um teste que falhe Faa o teste passar Refatore/melhore o cdigo 23. TDD Escrever os teste antes do cdigo de produo Escrever cdigo que o teste pediu Resultados Teste Melhor design Menos acoplamento Classes e mtodos coesos Clareza no cdigo Por que teste ante? O teste o primeiro cliente do seu cdigo Faa como voc gostaria que fosse 24. Exemplo de cdigo ERP 25. O que Mocking? Cria objetos falsos para voc Coloque e inspecione os valores no objeto falso Inspecione os mtodos chamados e argumentos no objeto falso 26. Stub vs Mock Server para gerenciamos dependncias nos testes Ambos so objetos fake, imitam objetos reais So muito parecidos mas tm propsitos diferentes 27. Stubs Substitui de forma controlvel uma dependncias externas Mantm o teste em nossas mos Repetvel Rpido Isolado Um stub no far o teste falhar Asserts no so feitos contra os Stubs Fornece algum estado para o SUT 28. Mocks um objeto que reage s interaes 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 mtodos Checa os argumentos usados Testa Interaes! 30. Stubs e Mocks Indispensveis Sem eles testar doloroso e custoso Cri-los na mo 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 No h retrabalho Lidam com vrios tipos de configurao sem causar odores Frameworks Rhino.Mocks Typemock Isolator Moq