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.