Test-Driven Development (TDD) - MSP Coding Day

  • View
    201

  • Download
    2

Embed Size (px)

Text of Test-Driven Development (TDD) - MSP Coding Day

TDD Test-Driven DevelopmentRenato GroffeJulho/2016

1

Apresentao Renato Groffe

Mais de 15 anos de experincia na rea de Tecnologia

Ps-graduao em Engenharia de Software nfase em SOA

Cursando MBA em Business Intelligence (FIAP)

Graduao em Sistemas de Informao

Tcnico em Processamento de Dados

MCP, Microsoft Specialist, MCTS, OCA, ITIL, COBIT

2

ContatosPgina no Facebookhttps://www.facebook.com/RenatoGroffeSW

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

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

3

Recurso UtilizadosVisual Studio 2015 Update 3

Visual Studio Unit Testing Framework (tambm conhecido como MS Test)

4

Motivos que contribuem para a falta de testes

Quais os impactos da falta de testes?

Viso geral dos diferentes tipos de testes na rea de software

Testes de unidade e a plataforma .NET

TDD: conceitos gerais

Implementao de um exemplo prtico

Agenda

5

Testes so realmente levados a srio?

6

Motivos que contribuem para a falta de testesA realizao de testes muitas vezes negligenciada:

Falta de planejamento

Tempo escasso

Equipes reduzidas e sobrecarregadas

Falta de hbito

Excesso de confiana de alguns profissionais

7

Negligncia seguida de consequncias desagradveis...

8

Quais os impactos da falta de testes?Retrabalho

Custos que excedem o oramento

Conflitos entre membros de uma equipe tcnica ou junto rea de negcios

Prejuzos imagem da equipe ou empresa responsvel por um projeto

9

Software: esperado x entregue

10

Objetivos dos testes em um softwareGarantir que o produto atende aquilo que foi especificado para o projeto

Verificao do correto funcionamento de uma aplicao

Deteco de falhas e defeitos que poderiam passar em branco at a subida em Produo

11

Os diferentes tipos de teste na rea de softwareTeste de unidade

Teste de integrao

Teste de sistema

Teste de aceitao

Teste de regresso

12

Testes de unidade: uma viso geral

So automatizados e repetveis

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 acionveis

Rapidez na execuo

13

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)

possvel integrar a utilizao destes frameworks ao processo de build de uma aplicao (VSTS, por exemplo)

14

Test-Driven DevelopmentDesenvolvimento baseado na codificao de testes de unidade

Abordagem que tem incio em 2002, com a publicao 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

15

TDD e a implementao de softwaresConstruo de solues de uma maneira que facilite a execuo de testes de unidade

Codificao de testes antes mesmo da implementao evitando assim a elaborao de testes viciados

16

Como TDD funciona?Ciclo Red-Green-Refactor (com a execuo dos testes de unidade em todos os estgios)

17

Benefcios em se adotar TDDCdigo mais claro

Uma forma de se documentar o cdigo

Um rpido feedback

Uma maior cobertura de diferentes trechos de cdigo

Falhas so apontadas durante o desenvolvimento

18

TDD e boas prticasA adoo de TDD acaba por favorecer uma melhor assimilao de boas prticas:

Separao de Responsabilidades

Maior coeso (evitando classes faz-tudo)

Menor acoplamento

19

Exemplo de implementao no Visual Studio 2015Clculo de juros compostos (arredondar para 2 casas decimais):

Total a ser Pago = Vl. Emprstimo * ((1 + Taxa Juros Mensal) ^ Nm. Meses)

Casos de teste:Classe a ser criada:

20

Exemplo de implementao no Visual Studio 2015Link da soluo de exemplo:https://github.com/renatogroffe/TDD_MSPCodingDay2

21

Consideraes finaisQuando aplicar TDD?

Testando todas as funcionalidades da aplicao, sem excees?

Considerando apenas funcionalidades mais significativas do ponto de vista do negcio?

22

Dvidas???

23

RefernciasTestes de Unidade no Visual Studiohttp://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

24

Obrigado!!!

25