mocking test

Download Mocking Test

Post on 07-Aug-2015

544 views

Category:

Software

2 download

Embed Size (px)

TRANSCRIPT

  1. 1. Renato Groffe Julho/2015
  2. 2. Mais de 15 anos de experincia na rea de Tecnologia Ps-graduao em Engenharia de Software nfase em SOA Cursando MBA em Business Intelligence (FIAP) Graduao em Sistemas de Informao Tcnico em Processamento de Dados MTAC (Microsoft Technical Audience Contributor), MCP, Microsoft Specialist, MCTS, OCA, ITIL, COBIT
  3. 3. Pgina no Facebook https://www.facebook.com/RenatoGroffeSW Canal .NET https://www.facebook.com/canaldotnet Perfil no Facebook https://www.facebook.com/renatogroff LinkedIn http://br.linkedin.com/in/renatogroffe
  4. 4. Visual Studio 2013 (preferencialmente com o Update 4) Moq Visual Studio Unit Testing Framework (tambm conhecido como MS Test)
  5. 5. Cenrios comuns dentro do desenvolvimento de software Testes unitrios, TDD, BDD: uma viso geral Dificuldades tcnicas na implementao e execuo de testes unitrios Dummy objects, fake, stubs e mocks Implementao de um exemplo prtico em .NET
  6. 6. Presses por rpida entrega Prazos muito curtos Equipes reduzidas Mudanas frequentes em requisitos reas de Negcio e Tcnica no falam mesma lngua Testes no so levados to a srio como se deveria
  7. 7. Metodologias geis XP (Extreme Programming) e Scrum so os exemplos mais famosos Testes unitrios automatizados Validaes em objetos e mtodos (unidades) Alternativas na plataforma .NET: Visual Studio Unit Testing Framework (MS Test) NUnit (http://www.nunit.org/) xUnit.net (https://github.com/xunit)
  8. 8. TDD Test-Driven Development Testes unitrios codificados antes mesmo da implementao das partes que sero submetidas a anlises evita-se assim a elaborao de testes viciados
  9. 9. BDD Behavior-Driven Development Testes baseados em user stories (histrias) Vocabulrio compartilhado entre reas de negcio e tcnica (linguagem ubqua) Frameworks permitem que as user stories sejam executadas como testes automatizados uma alternativa muito utilizada em .NET o SpecFlow
  10. 10. A implementao de uma funcionalidade segue um ciclo chamado Red-Green-Refactor (os testes unitrios so executados em todos os estgios)
  11. 11. Teste de aceitao User story que serve de base para a implementao de uma funcionalidade e posterior validao da mesma
  12. 12. Dependncias entre diferentes partes de um software Inexistncia de ambientes com configuraes especficas para testes Integraes com parceiros que no disponibilizam condies adequadas para testes
  13. 13. Dummy objects criao de objetos/parmetros obrigatrios, mas que no afetaro o andamento de um teste Fake objects implementaes para a gerao de objetos necessrios, porm descartadas em produo Stubs foco na verificao de estados/valores, no resultam em falhas nos testes Mocks enfatizam a interao entre objetos (comportamento), com possveis falhas de execuo
  14. 14. Moq Framework open source Simplifica a utilizao de Mocks e Stubs na validao de solues construdas em .NET Permite definir o retorno de mtodos, propriedades e at a gerao de excees em tempo de execuo Dispensa a criao de Fakes e outras estruturas que seriam descartadas posteriormente
  15. 15. Estruturas definidas no namespace Moq Importar no projeto de testes o package deste framework que se encontra no NuGet Empregado em conjunto com frameworks como MS Test, Nunit, xUnit.net, SpecFlow
  16. 16. Utilizar a classe genrica Mock em conjunto com o tipo a ser simulado (normalmente uma interface) Mtodo Setup configura o mtodo ou propriedade a ser simulado Mtodo Returns retorno a ser devolvido pelo elemento que se est simulando Mtodo Throws exceo que ocorre ao se invocar um mtodo ou propriedade Acessar a propriedade Object da instncia genrica do tipo Mock, a fim de obter a referncia que simula um comportamento
  17. 17. Alguns exemplos sobre como configurar um Mock Object (uma referncia mais completa pode ser encontra no site do Moq):
  18. 18. Consulta a um servio de crdito (via CPF) status possveis: Parmetro de envio invlido Erro de comunicao Pessoa fsica sem Pendncias Pessoa fsica inadimplente A ideia por trs do uso de Mock Objects nesta situao evitar consultas a um tipo de servio que pago as empresas que fornecem os dados no costumam disponibilizar ambientes para testes
  19. 19. Representao esquemtica das classes a serem utilizadas:
  20. 20. Link para download da soluo de exemplo: https://gallery.technet.microsoft.com/Exemplo-de-utilizao-dos-9537c977
  21. 21. Dvidas, sugestes???
  22. 22. Mocks no so Stubs http://www.infoq.com/br/articles/mocks-Arent-Stubs Moq Quickstart https://github.com/Moq/moq4/wiki/Quickstart Unit Testing with Mock Objects https://msdn.microsoft.com/en-us/library/ff650441.aspx
  23. 23. Obrigado!!!