Upload
marcio-habigzang-brufatto
View
1.085
Download
0
Embed Size (px)
Citation preview
Anderson Cella
Benhur Griffante
Márcio H. Brufatto
TEST-DRIVEN DEVELOPMENT (TDD)E
BEHAVIOR DRIVEN DEVELOPMENT
TEST-DRIVEN DEVELOPMENT (TDD)ou
DESENVOLVIMENTO DIRIGIDO POR TESTES
HISTÓRIA
• O TDD foi criado por Kenk Beck em 2003.
• A utilização do TDD iniciou com o eXtremme Programming.
O QUE É TDD?
É uma técnica de desenvolvimento de software que se baseia em ciclos de repetição curtos, onde o desenvolvedor cria um caso de teste e depois cria o código para o teste criado.
PROCESSO TDD
Design
Test
Implementação
Test
CICLO TDDRed | Green | Refactor
Red
Refactor Green
REFACTOR
Melhorar o código.
VANTAGENS• Testando primeiro, você sabe exatamente o que seu
sofware precisa fazer;
• Foco: Escrever o código mais simples que resolve o problema;
• Saber quando parar: Teste define quando se atinge o “suficiente”;
• Código mais limpo e organizado;
• Identificar o mais cedo possível problemas de regressão;
• Segurança e refactoring sem medo.
TIPOS DE TESTES
• Teste Unitário
• Teste de Integração
• Teste de Sistema
• Teste de regressão
FERRAMENTAS• .NET: MSTest (Visual Studio), Nunit, csUnit, xUnit.net
• Java: JUnit, Jtest
• Ruby: Test::Unit
• Python: PyUnit
• PHP: PHPUnit, SimpleTest
• JavaScript: JSUnit
• cppUnit
• Cunit
• Delphi: Dunit
• DBFit
• DBUnit
FERRAMENTAS
• HTMLUnit• HTTPUnit• Jmock• Moq• NDbUnit• Nunit• OUNIT• TestNG• VB: VBUnit• XTUnit
BEHAVIOR DRIVEN DEVELOPMENT (BDD)ou
DESENVOLVIMENTO GUIADO POR COMPORTAMENTO
HISTÓRIA• Foi originalmente concebido em 2003, por Dan North
como uma resposta à Test Driven Development.
FRAMEWORKS• Jbehave Java
• Rbehave Ruby
• Cucumber Rspec
O QUE É BDD?
Técnica de desenvolvimento ágil que encoraja colaboração entre desenvolvedores, setores de qualidade e pessoas não-técnicas.
OBJETIVO
Objetivo do BDD é juntar o todas as boas práticas existentes sob uma só bandeira com uma terminologia consistente e sem ambiguidades.
ATINGINDO O OBJETIVO
• Definido um vocabulário comum (Ubiquitous Language);
• Une quem entende de tecnologia com as pessoas que entendem do negócio.
Linguagem do usuário/cliente . Manter uma única linguagem de domínio que seja entendível tanto para os desenvolvedores quanto para o cliente.
UBIQUITOUS LANGUAGE
PRÍNCIPIOS• A área de negócios e a de tecnologia precisam se
referir a mesma parte do sistema da mesma forma- Tudo é comportamento
• Toda parte do sistema precisa ter um valor identificável e verificável para o negócio- Valor de negócio
• Analisar, projetar e planejar tudo de cima a baixo tem retorno decrescente.- O suficiente é suficiente
• Melhor entendimento do negócio do cliente;
• Desenvolvedor, cliente e analista se entendem;
• Redução em erros de entendimento do negócio.
VANTAGENS
TIPOS DE TESTE• Teste Unitário
• Teste de Integração
• Teste de Sistema
• Teste de regressão
• Teste de aceitação
FERRAMENTAS• Java: JBee, Bumblebee, beanSpec, Concordion,
easyb, Instinct, JavaStubs, Jbehave, JDave;
• ASSpec: ActionScript 3;
• Bdoc: RubyonRails;
• C++: CppSpec, Spec-cpp;
• ColdFusion: cfSpec;
• C: Cspec;
• Delphi: dSpec;
FERRAMENTAS• Tecnologias Web: Cucumber;
• Groovy: easyb, Gspec, tepec;
• JavaFX: JFXtras Test;
• JavaScript: Jspec, JSSpec;
• .NET: NBehave , Nspec, Nspecify, Nunit, Specter, StoryQ ;
• PHP: PHPSpec;
• Python: Pyccuracy, Pyhistorian, PyCukes;
CONCLUSÃO• Qualidade no produto final
• Fácil de executar mudanças
• Diminuição de erros em códigos
• Melhor entendimento do negócio
• Todos “falam a mesma língua”
• Criação de padrão
BIBLIOGRAFIAShttp://jefferson.eti.br/?p=96 BDD
http://domaindrivendesign.org/node/132 Ubiquitous Language
http://www.handersonfrota.com.br/ubiquitous-language/ Ubiquitous Language
http://www.slideshare.net/ Slides
http://pt.wikipedia.org/wiki/Test_Driven_Development TDD
http://pt.wikipedia.org/wiki/Behavior_Driven_Development BDD
LIVROS INDICADOS
OBRIGADO !
RSPEC &
CUCUMBER
INSTALAÇÃO TDD & BDD NO RAILS• RSpec
• gem install rspec rspec-rails
• Para utilizar com Rails:
• Dentro do projeto: script/generate rspec
• Cucumber
• gem install cucumber
• Para utilizar com Rails:
• Dentro do projeto: script/generate cucumber
EXEMPLO RSPECscript/generate rspec_model List title:string description:string
EXEMPLO CUCUMBERPara que seja possível executar uma User Storie utilizando o Cucumber, ela precisa ter uma estrutura básica.• Para o cucumber, todas as User Stories referentes a uma
funcionalidade do sistema estarão agrupadas em um arquivo com a extensão .feature
• No início de cada arquivo existe um resumo da funcionalidade com um formato bem simples: um título, qual o problema a ser resolvido, qual ator trabalha nesta história e qual o resultado desejado.
• Logo depois são definidos os cenários, que são as histórias em si, cada arquivo tem pelo menos um cenário.
EXEMPLO CUCUMBER• Cada história, ou cenário é composto por uma descrição ou
título, uma ou mais pré condições, uma ou mais ações e uma ou mais verificações.
EXEMPLO CUCUMBER
Palavras chave apresentadas são:• Feature• Scenario• Given• And• When• Then
EXEMPLO CUCUMBEREstas mesmas palavras podem ser traduzidas para o portugues como:• Funcionalidade• Cenário• Dado• E• Quando• Então
SITES DAS FERRAMENTAS
http://cukes.info Cucumber
http://rspec.info RSPEC