test-driven development (tdd) - msp coding day
TRANSCRIPT
TDD – Test-Driven Development
Renato GroffeJulho/2016
Apresentação – Renato Groffe
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
Contatos Página no Facebook
https://www.facebook.com/RenatoGroffeSW
Perfil no Facebookhttps://www.facebook.com/renatogroff
LinkedInhttp://br.linkedin.com/in/renatogroffe
Recurso Utilizados 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
Agenda
Testes são realmente levados a sério?
Motivos que contribuem para a falta de testes 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
Negligência seguida de consequências desagradáveis...
Quais os impactos da falta de testes?
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
Software: esperado x entregue
Objetivos dos testes em um software
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
Os diferentes tipos de teste na área de software Teste de unidade
Teste de integração
Teste de sistema
Teste de aceitação
Teste de regressão
Testes de unidade: uma visão geral
◦ 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
Testes de unidade na plataforma .NET
.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)
Test-Driven Development
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
TDD e a implementação de softwares
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”
Como TDD funciona?
Ciclo Red-Green-Refactor (com a execução dos testes de unidade em todos os estágios)
Benefícios em se adotar TDD
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
TDD e boas práticas
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
Exemplo de implementação no Visual Studio 2015 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:
Exemplo de implementação no Visual Studio 2015
Link da solução de exemplo:https://github.com/renatogroffe/TDD_MSPCodingDay2
Considerações finais
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???
Referências Testes de Unidade no Visual Studio
http://www.devmedia.com.br/testes-unitarios-no-visual-studio-2012/27215
Test-Driven Developmenthttp://martinfowler.com/bliki/TestDrivenDevelopment.html
Unit Testhttp://martinfowler.com/bliki/UnitTest.html
Obrigado!!!