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