Test-Driven Development Erick Sasse Gerente de Tecnologia Cadena Sistemas

  • View
    108

  • Download
    2

Embed Size (px)

Text of Test-Driven Development Erick Sasse Gerente de Tecnologia Cadena Sistemas

  • Slide 1
  • Test-Driven Development Erick Sasse Gerente de Tecnologia Cadena Sistemas
  • Slide 2
  • Interface O que TDD Como Funciona Frameworks de Apoio (xUnit) Benefcios Perguntas
  • Slide 3
  • O que TDD Uma tcnica muito utilizada em Extreme Programming (XP). Pode ser usado sem XP. Todas as classes tem testes unitrios que so executados regularmente. Testes unitrios so testes estruturados que executam os mtodos das classes e checam os resultados.
  • Slide 4
  • Extreme Programming Abordagem gil de desenvolvimento Funciona melhor para grupos pequenos e mdios Baseada em 4 princpios: Simplicidade Comunicao Feedback Coragem
  • Slide 5
  • Slide 6
  • Como funciona? Antes de escrever cdigo, pense no que ele far. Escreva um teste que use os mtodos que voc ainda nem escreveu. Por que escrever teste antes? Desta forma voc cobre praticamente 100% do seu cdigo com testes, pois s escreve cdigo que usado pelos testes. Voc escreve os testes, e eles so executados repetidamente durante todo o processo de desenvolvimento do aplicativo.
  • Slide 7
  • O Ciclo do TDD Comece com um teste que no compila porque o mtodo que voc est testando ainda no existe. Escreva o mnimo de cdigo para que ele compile criando o mtodo sem implementao por exemplo. Compile o teste. Veja ele falhar. Implemente o cdigo. Execute o teste. Veja o teste passar. Melhore o cdigo (refactoring). Execute o teste para certificar-se que tudo continua funcionando.
  • Slide 8
  • Refactoring Refactoring o processo de alterar e otimizar o cdigo de maneira que seu comportamento externo no seja alterado. Em cdigo que est funcionando no se mexe? TDD permite que este medo deixe de ter fundamento, pois ele atua como uma rede de segurana, capturando qualquer bug que seja inserido durante o refactoring.
  • Slide 9
  • Benefcios Melhor cdigo Menos bugs (encontrados mais rapidamente) Cdigo mais simples Melhor design Cdigo evolui com o tempo ao contrrio de degradar como no processo normal. Melhor uso de orientao a objetos Voc acaba desenvolvendo classes menos acopladas e mais coesas Estimula a separao da lgica de negcios da camada de apresentao Menos stress Mais confiana no cdigo Alteraes mais simples Fundamental para prtica de Refactoring
  • Slide 10
  • O Ciclo do TDD
  • Slide 11
  • Frameworks de Apoio (xUnit) Fornecem classes que facilitam a escrita e execuo dos testes:.Net Framework (C#, VB.NET, Delphi.NET) NUnit (www.nunit.org)www.nunit.org MbUnit (www.mbunit.org/)www.mbunit.org/ JUnit (Java) DUnit (Delphi Win32) xUnit (www.xprogramming.com/software.htm)www.xprogramming.com/software.htm Fceis de aprender
  • Slide 12
  • NUnit Pode ser usada em qualquer linguagem.NET O xUnit mais popular para.Net Portada inicialmente a partir do JUnit Aproveita vantagens exclusivas da plataforma.Net (atributos, etc) Compatvel com Mono Permite automatizar processo incluindo testes no build gerando logs (inclusive XML). www.nunit.org
  • Slide 13
  • Estrutura de uma classe de testes [TestFixture] public class MinhaClasseTeste() { [Test] public void Teste1(); { /*... */ } [Test] public void Teste2(); { /*... */ } }
  • Slide 14
  • Atributos NUnit Obrigatrios [TestFixture] Usado para indicar que uma classe contm mtodos de teste [Test] Usado para indicar que o mtodo dentro de um test fixture um teste.
  • Slide 15
  • Atributos NUnit (cont.) Opcionais [TestFixtureSetUp] Mtodo de inicializao. Executado apenas uma vez, antes dos testes comearem. Inicializao de objetos, etc. [TestFixtureTearDown] Mtodo executado apenas uma vez, aps todos os testes tenha sido executados. Melhor lugar para liberar objetos criados na [TestFixtureSetUp]. Vrios outros atributos na documentao.
  • Slide 16
  • Onde Usar Qualquer cdigo que inclua lgica. Testar limites do aplicativo (stress) Qualquer coisa que possa falhar! Muito mais difcil testar GUI, principalmente pginas web. Entenda a tcnica, pratique um pouco e decida como voc pode tirar proveito dela.
  • Slide 17
  • Melhores Prticas Crie um projeto de testes separado dentro de sua soluo. Separe suas classes em um ou mais class libraries separadas do projeto. No compile o cdigo de teste junto com os binrios do projeto projeto. MinhaSolucao MeuProjeto MinhaClasse1.cs MinhaClasse2.cs MeuProjetoTestes MinhaClasse1Testes.cs MinhaClasse2Testes.cs
  • Slide 18
  • Dicas TDD est se tornando uma habilidade cada vez mais requisitada (EUA) TDD parece difcil, estranho, e pouco intuitivo no comeo. Aceite e no desanime.
  • Slide 19
  • Referncia Livro: Kent Becks Test Driven Development: By Example www.extremeprogramming.org www.yahoogroups.com/group/testdrivendevelopment www.yahoogroups.com/group/xpers www.testdriven.com www.xispe.com.br Google: TDD, Test-Drive Development, etc.
  • Slide 20
  • Filosofia Purista Any program feature without an automated test simply doesnt exist. -- Kent Beck
  • Slide 21
  • Obrigado! Perguntas? erick.sasse@cadena.com.br www.cadena.com.br www.ericksasse.com.br Assert.IsTrue(Voce.VaiTentarTDD);