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