BDD on Laravel



Guilherme Guitte (Guitte)

Quem sou eu?


Guilherme Guitte (Guitte)

Fatec Sorocaba

Desenvolvedor Web

Já trabalhei com Ruby on Rails

Trabalho na Leroy Merlin (Laravel4)

BDD on Laravel


Antes de falar de BDD...

TDD: Conceito e prática (rapidamente).


Depois...

BDD: Conceito e prática
TDD vs BDD

TDD

O que é?


Resumidamente: Processo de desenvolvimento de software em que testes automatizados são escritos antes/durante
no desenvolvimento do código.

    Quem "criou"?

Kent Beck em 1999, já apresentava este conceito em XP.

TDD

How it works?

TDD


Objetivos do TDD

  • "Start simply"
  • "Write automated tests"
  • "Refactor to add design decisions one at a time"
 
             (Test-Driven Development by Example: Kent beck)

TDD: Benefícios





Flexibilidade a mudanças

TDD:Benefícios


"Legacy code is code without tests." - Michael Feathersa


TDD:Benefícios


Encoraja refatoração


TDD: Benefícios







"TDD doesn't drive a good design. TDD gives you immediate feedback about what is likely to be bad design." 

Kent Beck

TDD: Benefícios







Te diz quando certas coisas pararam de funcionar.

TDD: Na prática







Rapidamente...

TDD: Limites




  


Os testes tendem ter foco no funcionamento interno.

TDD: Limites



BDD


O que é?

Resumidamente: Processo de desenvolvimento de software em que testes automatizados são escritos antes/durante
no desenvolvimento do código.



Mas pera ai...


Igual ao TDD!?

BDD







Sim... igual porém  com um foco diferente.

BDD

Foca no negócio


BDD





Porque isso? Qual a utilidade de usar BDD?

BDD







Behavioral specification

BDD







"Living Documentation"

BDD








Uncle Bob Martin: "Specification, not Verification".

BDD






Verificação ou testes só afirmam que o código funciona.

BDD







Especificação define o que o código deve fazer.

BDD



Exemplo: Imagine que sua aplicação é um importante visualizador de relatórios, e para cada caso de ordenação dos elementos você use os algoritmos de ordenação:

  • Merge Sort
  • Bubble Sort
  • Insertion Sort
  • Shell Sort
  • Comb Sort
  • Quicksort

BDD


 Se você disser que:



"Chefinho implementei os algoritmos de ordenação X Y Z mas qual você prefere?"



Seu chefe...

BDD

BDD


Seu chefe irá disser:

"Se ordena tá ótimo... Só isso que me importa"



Moral da história:

O cliente se preocupa com ele vai mexer pra realizar o trabalho dele.


BDD


Outside In




BDD







Na prática...

TDD vs BDD


Quem ganha?

TDD vs BDD






Ninguém...

TDD vs BDD




TDD tem como foco atingir todos os possíveis casos de "baixo nível" já o BDD tem como foco criar uma especificação de como deve funcionar o sistema na visão do 'cliente'.







Obrigado!




Links



Github: https://github.com/GuilhermeGuitte

behat docs: http://docs.behat.org/

behat-laravel: https://github.com/GuilhermeGuitte/behat-laravel

bdd on laravel

By guilhermeguitte

bdd on laravel

  • 2,321