test-driven development (tdd) - msp coding day

25
TDD – Test-Driven Development Renato Groffe Julho/2016

Upload: renato-groff

Post on 10-Jan-2017

224 views

Category:

Software


2 download

TRANSCRIPT

Page 1: Test-Driven Development (TDD) - MSP Coding Day

TDD – Test-Driven Development

Renato GroffeJulho/2016

Page 2: Test-Driven Development (TDD) - MSP Coding Day

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

Page 3: Test-Driven Development (TDD) - MSP Coding Day

Contatos Página no Facebook

https://www.facebook.com/RenatoGroffeSW

Perfil no Facebookhttps://www.facebook.com/renatogroff

LinkedInhttp://br.linkedin.com/in/renatogroffe

Page 4: Test-Driven Development (TDD) - MSP Coding Day

Recurso Utilizados Visual Studio 2015 Update 3

Visual Studio Unit Testing Framework (também conhecido como MS Test)

Page 5: Test-Driven Development (TDD) - MSP Coding Day

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

Page 6: Test-Driven Development (TDD) - MSP Coding Day

Testes são realmente levados a sério?

Page 7: Test-Driven Development (TDD) - MSP Coding Day

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

Page 8: Test-Driven Development (TDD) - MSP Coding Day

Negligência seguida de consequências desagradáveis...

Page 9: Test-Driven Development (TDD) - MSP Coding Day

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

Page 10: Test-Driven Development (TDD) - MSP Coding Day

Software: esperado x entregue

Page 11: Test-Driven Development (TDD) - MSP Coding Day

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

Page 12: Test-Driven Development (TDD) - MSP Coding Day

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

Page 13: Test-Driven Development (TDD) - MSP Coding Day

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

Page 14: Test-Driven Development (TDD) - MSP Coding Day

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)

Page 15: Test-Driven Development (TDD) - MSP Coding Day

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

Page 16: Test-Driven Development (TDD) - MSP Coding Day

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”

Page 17: Test-Driven Development (TDD) - MSP Coding Day

Como TDD funciona?

Ciclo Red-Green-Refactor (com a execução dos testes de unidade em todos os estágios)

Page 18: Test-Driven Development (TDD) - MSP Coding Day

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

Page 19: Test-Driven Development (TDD) - MSP Coding Day

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

Page 20: Test-Driven Development (TDD) - MSP Coding Day

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:

Page 21: Test-Driven Development (TDD) - MSP Coding Day

Exemplo de implementação no Visual Studio 2015

Link da solução de exemplo:https://github.com/renatogroffe/TDD_MSPCodingDay2

Page 22: Test-Driven Development (TDD) - MSP Coding Day

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?

Page 23: Test-Driven Development (TDD) - MSP Coding Day

Dúvidas???

Page 24: Test-Driven Development (TDD) - MSP Coding Day

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

Page 25: Test-Driven Development (TDD) - MSP Coding Day

Obrigado!!!