Slides de apresentação realizada durante o MSP Coding Day, evento realizado em Santos-SP no dia 23/07/2016.
Tópicos abordados:
- 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 unitários e a plataforma .NET
- TDD: conceitos gerais
- Implementação de um exemplo prático
Tópicos abordados:
2. 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
3. Página no Facebook
https://www.facebook.com/RenatoGroffeSW
Perfil no Facebook
https://www.facebook.com/renatogroff
LinkedIn
http://br.linkedin.com/in/renatogroffe
4. Visual Studio 2015 Update 3
Visual Studio Unit Testing Framework
(também conhecido como MS Test)
5. 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
6.
7. 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
8.
9. 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
10.
11. 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
12. Teste de unidade
Teste de integração
Teste de sistema
Teste de aceitação
Teste de regressão
13. ◦ 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
14. .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)
15. 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
16. 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”
18. 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
19. 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
20. 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:
21. Link da solução de exemplo:
https://github.com/renatogroffe/TDD_MSPCodingDay2
22. 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?
24. 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