Testes Unitrios: Come§ando a escrever testes no seu dia-a-dia

  • View
    248

  • Download
    0

Embed Size (px)

Text of Testes Unitrios: Come§ando a escrever testes no seu dia-a-dia

  • 1. Testes Unitrios Comeando a escrever testes no seu dia-a-dia Alex Tercete alex.matos@chemtech.com.br 27 de abril de 2011

2. Espera a... Voc j falou disso! 3. O que mudou? Chemtech Coding Dojo Uso na prtica SIMONS, ONS (Importao Automtica) Viva 2.0, Coca-Cola (Aplicativo do Twitter) GERCAD, ONS (*) 4. Escrever cdigo Como desenvolvemos atualmente Camada de apresentao (Web, UI) Camada de Servio Camada de Lgica Camada de Acesso a Dados Clicar no boto Funcionou? DEBUG No Comemorar! Sim 5. Debug-Driven Development (DDD) 6. Uma nova forma de pensar Camada X Escrever teste Implementar funcionalidade Terminou? No Fim Sim Camada Y Escrever teste Implementar funcionalidade Terminou? No Fim Sim Camada Z Escrever teste Implementar funcionalidade Terminou? No Fim Sim 7. Test-Driven Development (TDD) 8. Mas isso no trabalho dobrado? 9. Uma anlise do tempo gasto no DDD Clicar no boto Levantar servidor de desenvolvimento Compilar pginas .aspx, .jsf, etc. Acessar manualmente a pgina e realizar os passos para execuo da funcionalidade Executar query no banco Debug Adicionar/remover breakpoints e watches Depurar o cdigo linha a linha Pacincia Ateno 10. Os benefcios do TDD Cdigo desacoplado e com bom design Robustez Evita problemas de regresso Aumenta a confiana do desenvolvedor 11. Por que ainda no estou fazendo isso? 12. Escrever testes unitrios fcil [Fact] public void TesteDePotenciacao() { // Arrange var calculadora = new Calculadora(); // Act var resultado = calculadora.Eleva(3, 4); // Assert Assert.Equal(81, resultado); } 13. O desafio escrever cdigo testvel 14. Escrever cdigo testvel difcil Quebra de hbitos antigos Aprender nova forma de pensar/trabalhar Algumas tecnologias so naturalmente mais difceis de testar Interface Grfica Stored Procedures Componentes de terceiros etc. 15. A mudana no instantnea No incio voc vai escrever cdigo mais ou menos testvel Voc vai errar Voc vai desejar ter feito as coisas de forma diferente Voc vai evoluir Voc no vai mais conseguir desenvolver de outra maneira 16. T, mas eu quero ver um exemplo disso na prtica! 17. Um exemplo Ideias?! 18. Organizando seu Projeto Separar o projeto/pacote contendo os testes .Testes Acessando mtodos internos Properties/AssemblyInfo.cs [assembly: InternalsVisibleTo(".Testes")] 19. Test Doubles Dummy Nunca usado Fake Implementao do objeto real, mas com atalhos Stubs No fazem nada Spies Stubs que registram informaes sobre as chamadas Mocks Imitaes do objeto real, para chamadas especficas 20. Depurando os testes unitrios GUI Runner Debug > Attach to Process... Rodar testes 21. Como comear? 22. O que voc pode fazer Just Do It! Estime o tempo das suas tarefas levando em conta os testes unitrios Comece testando o que for mais fcil D prioridade lgica principal da aplicao Mostre aos seus colegas os benefcios que os testes unitrios podem trazer Pesquise, estude e pea ajuda 23. Vivemos na era da informao 24. Referncias http://elegantcode.com/2008/05/20/get-started- writing-testable-code/ http://www.martinfowler.com/bliki/TestDouble.html 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/unit- testing-internal-methods/ 25. Dvidas?