behaviour driven development

Post on 23-Jun-2015

958 Views

Category:

Technology

0 Downloads

Preview:

Click to see full reader

DESCRIPTION

Apresentação sobre automação de testes, rspec e cucumbe feita para alunos da UFPB.

TRANSCRIPT

MAURÍCIO LINHARES

Behaviour driven development e

automação com Rspec e Cucumber

Quem?

Maurício Linhares Consultor da Hoodiny (Miami, FL) JUG Leader do PBJUG Atualmente Ruby Zealot Ex Java Zealot Instrutor na LinuxFi Ex vocalista de banda de Heavy Metal Jogador de RPG de mesa e boardgames nas horas

vagas

Referências

David Chelimsky et al. The RSpec Book: Behaviour Driven Development with RSpec, Cucumber and Friends. Pragmatic Bookshelf, 2010.

Tom Poppendieck, Mary Poppendieck. Lean Software Development: An Agile Toolkit. Addisson-Wesley Professional, 2003.

O que?

O que está na moda em testes?O que é TDD/BDD e especificações

executáveis?Estado da arte em BDD: Ruby, Rspec e

CucumberPra onde nós vamos?

Why Ruby?

Está na moda HOJE (mesmo sendo mais velha do que o Java);

Puramente OO, com raízes em Smalltalk;

Easily hacked – metaprogramação is a breeze;

Baixo nível de ruído sintático;

Automação de testes

Por que automatizar?

Quanto custa automatizar?

O que as ferramentas de automatização fazem?

Até onde a automação resolve o problema?

Test Driven Development

Redescoberta por Kent Beck;

Cíclica: Test Code Refactor

Keep It Simple, Stupid

Lean Software Development: An Agile Toolkit

Concurrent software development means starting development when only partial requirements are known and developing in short iterations that provide the feedback that causes the system to emerge. Concurrent development makes it possible to delay commitment until the last responsible moment, that is, the moment at which failing to make a decision eliminates an important alternative.

Colocando os chapéus

Designer

Desenvolvedor

Refatorador

Testador

Problemas?

Test Driven Development

Foco no que os objetos são e não no que eles fazem;

Design começa a perder importância pra dar lugar a testes;

E no final...

A sua suíte de testes vira...

Die, Zombies! Die!

Behaviour Driven Development

Iniciado por Dan North, com os primeiros trabalhos sobre JBehave;

É visto como o próximo passo natural para as práticas de Test Driven Development;

A ferramenta de prova de conceito “não pegou” (Jbehave);

Behaviour Driven Development

Volta do foco no que o objeto faz;

Não importa muito quem ele é;

Você normalmente não se preocupa com o que o objeto é, mas sim com as mensagens que ele recebe;

RSpec e Cucumber viram principais exemplos;

It’s all about design

Removendo o “test” para que não se perca o foco do trabalho;

Reforço da idéia de especificações executáveis no lugar de documentação estática;

Colocar o cliente como “produtor” e validador das especificações;

Conhecendo o RSpec

Ferramenta de BDD mais comum na comunidade Ruby;

Representa a primeira fuga sintática das amarras de ferramentas baseadas no Xunit framework;

Exemplos contém descrições em linguagem natural;

Exemplo de uso do RSpec

describe Bowling do it "should score 0 for gutter game" do bowling = Bowling.new 20.times { bowling.hit(0) } bowling.score.should == 0 endend

O mesmo código em JUnit

public class BowlingTest {

public void testScoreZeroForGutterGame() { Bowling bowling = new Bowling(); for ( int x = 0; x < 20 ) { bowling.hit( 0 );

} Assert.assertEquals( 0, bowling.getScore()); }

}

IMPLEMENTANDO UMA LISTA ENCADEADA SEGUINDO AS PREMISSAS DO BDD COM

RSPEC

Como fazer?

Cucumber e testes de browser

Testes escritos em linguagem natural;

O texto funciona como documentação da funcionalidade e pode ser inicialmente montado junto com o cliente;

Define o escopo da funcionalidade de forma clara para todos os envolvidos;

TESTES DE ACEITAÇÃO COM CUCUMBER

Como fazer?

Nem tudo são flores

Testes, specs, exemplos não garantem que a sua aplicação está livre de bugs;

Não garantem que você fez o que o cliente queria (ou o que gera mais valor pra ele);

O objetivo principal é ter confiança que o código funciona e que a aplicação pode evoluir sem maiores preocupações;

ESSA É A HORA QUE TODO MUNDO FICA CALADO E VAI PRA CASA MAIS CEDO

Dúvidas?

top related