Renato Groffe Julho/2016
 Mais de 15 anos de experiência na área de Tecnologia  Pós-graduação em Engenharia de Software – ênfase em SOA  Cursando MBA em Business Intelligence (FIAP)  Graduação em Sistemas de Informação  Técnico em Processamento de Dados  MCP, Microsoft Specialist, MCTS, OCA, ITIL, COBIT
 Página no Facebook https://www.facebook.com/RenatoGroffeSW  Perfil no Facebook https://www.facebook.com/renatogroff  LinkedIn http://br.linkedin.com/in/renatogroffe
 Visual Studio 2015 Update 3  Visual Studio Unit Testing Framework (também conhecido como MS Test)
 Motivos que contribuem para a falta de testes  Quais os impactos da falta de testes?  Visão geral dos diferentes tipos de testes na área de software  Testes de unidade e a plataforma .NET  TDD: conceitos gerais  Implementação de um exemplo prático
 A realização de testes é muitas vezes negligenciada: ◦ Falta de planejamento ◦ Tempo escasso ◦ Equipes reduzidas e sobrecarregadas ◦ Falta de hábito ◦ Excesso de confiança de alguns profissionais
 Retrabalho  Custos que excedem o orçamento  Conflitos entre membros de uma equipe técnica ou junto à área de negócios  Prejuízos à imagem da equipe ou empresa responsável por um projeto
 Garantir que o produto atende aquilo que foi especificado para o projeto ◦ Verificação do correto funcionamento de uma aplicação ◦ Detecção de falhas e defeitos que poderiam passar em branco até a subida em Produção
 Teste de unidade  Teste de integração  Teste de sistema  Teste de aceitação  Teste de regressão
◦ São automatizados e repetíveis ◦ Podem ser implementados facilmente ◦ Uma vez escritos, os testes devem ser mantidos para reuso futuro ◦ Qualquer profissional de software deve ser capaz de executá-los ◦ Facilmente acionáveis ◦ Rapidez na execução
 .NET Framework conta com diversas alternativas: ◦ Visual Studio Unit Testing Framework (MS Test) ◦ NUnit (http://www.nunit.org/) ◦ xUnit.net (https://github.com/xunit)  É possível integrar a utilização destes frameworks ao processo de build de uma aplicação (VSTS, por exemplo)
 Desenvolvimento baseado na codificação de testes de unidade  Abordagem que tem “início” em 2002, com a publicação do livro “Test-Driven Development: By Example” por Kent Beck (“pai” do XP - Extreme Programming)  SUT (“System Under Test”) ou CUT (“Class Under Test” ou “Code Under Test”) → alguns termos comuns dentro de TDD
 Construção de soluções de uma maneira que facilite a execução de testes de unidade  Codificação de testes antes mesmo da implementação → evitando assim a elaboração de testes “viciados”
 Ciclo Red-Green-Refactor (com a execução dos testes de unidade em todos os estágios)
 Código mais claro  Uma forma de se documentar o código  Um rápido feedback  Uma maior cobertura de diferentes trechos de código  Falhas são apontadas durante o desenvolvimento
 A adoção de TDD acaba por favorecer uma melhor assimilação de boas práticas: ◦ Separação de Responsabilidades ◦ Maior coesão (evitando classes “faz-tudo”) ◦ Menor acoplamento
 Cálculo de juros compostos (arredondar para 2 casas decimais): Total a ser Pago = Vl. Empréstimo * ((1 + Taxa Juros Mensal) ^ Núm. Meses)  Casos de teste:  Classe a ser criada:
 Link da solução de exemplo: https://github.com/renatogroffe/TDD_MSPCodingDay2
 Quando aplicar TDD? ◦ Testando todas as funcionalidades da aplicação, sem exceções? ◦ Considerando apenas funcionalidades mais significativas do ponto de vista do negócio?
Dúvidas???
 Testes de Unidade no Visual Studio http://www.devmedia.com.br/testes-unitarios-no-visual-studio- 2012/27215  Test-Driven Development http://martinfowler.com/bliki/TestDrivenDevelopment.html  Unit Test http://martinfowler.com/bliki/UnitTest.html
Obrigado!!!

Test-Driven Development (TDD) - MSP Coding Day

  • 1.
  • 2.
     Mais de15 anos de experiência na área de Tecnologia  Pós-graduação em Engenharia de Software – ênfase em SOA  Cursando MBA em Business Intelligence (FIAP)  Graduação em Sistemas de Informação  Técnico em Processamento de Dados  MCP, Microsoft Specialist, MCTS, OCA, ITIL, COBIT
  • 3.
     Página noFacebook https://www.facebook.com/RenatoGroffeSW  Perfil no Facebook https://www.facebook.com/renatogroff  LinkedIn http://br.linkedin.com/in/renatogroffe
  • 4.
     Visual Studio2015 Update 3  Visual Studio Unit Testing Framework (também conhecido como MS Test)
  • 5.
     Motivos quecontribuem para a falta de testes  Quais os impactos da falta de testes?  Visão geral dos diferentes tipos de testes na área de software  Testes de unidade e a plataforma .NET  TDD: conceitos gerais  Implementação de um exemplo prático
  • 7.
     A realizaçãode testes é muitas vezes negligenciada: ◦ Falta de planejamento ◦ Tempo escasso ◦ Equipes reduzidas e sobrecarregadas ◦ Falta de hábito ◦ Excesso de confiança de alguns profissionais
  • 9.
     Retrabalho  Custosque excedem o orçamento  Conflitos entre membros de uma equipe técnica ou junto à área de negócios  Prejuízos à imagem da equipe ou empresa responsável por um projeto
  • 11.
     Garantir queo produto atende aquilo que foi especificado para o projeto ◦ Verificação do correto funcionamento de uma aplicação ◦ Detecção de falhas e defeitos que poderiam passar em branco até a subida em Produção
  • 12.
     Teste deunidade  Teste de integração  Teste de sistema  Teste de aceitação  Teste de regressão
  • 13.
    ◦ São automatizadose repetíveis ◦ Podem ser implementados facilmente ◦ Uma vez escritos, os testes devem ser mantidos para reuso futuro ◦ Qualquer profissional de software deve ser capaz de executá-los ◦ Facilmente acionáveis ◦ Rapidez na execução
  • 14.
     .NET Frameworkconta com diversas alternativas: ◦ Visual Studio Unit Testing Framework (MS Test) ◦ NUnit (http://www.nunit.org/) ◦ xUnit.net (https://github.com/xunit)  É possível integrar a utilização destes frameworks ao processo de build de uma aplicação (VSTS, por exemplo)
  • 15.
     Desenvolvimento baseadona codificação de testes de unidade  Abordagem que tem “início” em 2002, com a publicação do livro “Test-Driven Development: By Example” por Kent Beck (“pai” do XP - Extreme Programming)  SUT (“System Under Test”) ou CUT (“Class Under Test” ou “Code Under Test”) → alguns termos comuns dentro de TDD
  • 16.
     Construção desoluções de uma maneira que facilite a execução de testes de unidade  Codificação de testes antes mesmo da implementação → evitando assim a elaboração de testes “viciados”
  • 17.
     Ciclo Red-Green-Refactor(com a execução dos testes de unidade em todos os estágios)
  • 18.
     Código maisclaro  Uma forma de se documentar o código  Um rápido feedback  Uma maior cobertura de diferentes trechos de código  Falhas são apontadas durante o desenvolvimento
  • 19.
     A adoçãode TDD acaba por favorecer uma melhor assimilação de boas práticas: ◦ Separação de Responsabilidades ◦ Maior coesão (evitando classes “faz-tudo”) ◦ Menor acoplamento
  • 20.
     Cálculo dejuros compostos (arredondar para 2 casas decimais): Total a ser Pago = Vl. Empréstimo * ((1 + Taxa Juros Mensal) ^ Núm. Meses)  Casos de teste:  Classe a ser criada:
  • 21.
     Link dasolução de exemplo: https://github.com/renatogroffe/TDD_MSPCodingDay2
  • 22.
     Quando aplicarTDD? ◦ Testando todas as funcionalidades da aplicação, sem exceções? ◦ Considerando apenas funcionalidades mais significativas do ponto de vista do negócio?
  • 23.
  • 24.
     Testes deUnidade no Visual Studio http://www.devmedia.com.br/testes-unitarios-no-visual-studio- 2012/27215  Test-Driven Development http://martinfowler.com/bliki/TestDrivenDevelopment.html  Unit Test http://martinfowler.com/bliki/UnitTest.html
  • 25.